2025-04-27 07:49:33 -04:00

138607 lines
5.0 MiB
Raw Permalink Blame History

Interrupt List Release 55 Last change 28sep97
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------!---FILELIST-------------------------
Please redistribute the following files unmodified as a group, in a quartet of
archives named INTER55A through INTER55D (preferably the original authenticated
PKZIP archives):
INTERRUP.1ST the read-me file, containing credits, availability info
INTERRUP.A INT 00 through INT 12 \
INTERRUP.B INT 13 through INT 15/11 \
INTERRUP.C INT 15/12 through INT 16/6E \
INTERRUP.D INT 16/6F through INT 1A/AF \
INTERRUP.E INT 1A/B0 through INT 21/2A \ total 2311 pages at
INTERRUP.F INT 21/2B through INT 21/56 \ 60 lines per page,
INTERRUP.G INT 21/57 through INT 21/E2 \ 2462 with INTPRINT -p
INTERRUP.H INT 21/E3 through INT 21/F1 >(8497 entries)
INTERRUP.I INT 21/F2 through INT 29 / (3721 tables)
INTERRUP.J INT 2A through INT 2F/26 /
INTERRUP.K INT 2F/27 through INT 2F/B8 /
INTERRUP.L INT 2F/B9 through INT 32 /
INTERRUP.M INT 33 through INT 60 /
INTERRUP.N INT 61 through INT 66 /
INTERRUP.O INT 67 through INT 7D /
INTERRUP.P INT 7E through INT FF /
INTERRUP.PRI a brief introduction to interrupts
INTPRINT.COM a simple formatter that also generates a list summary
INTPRINT.DOC instructions for INTPRINT
OVERVIEW.LST brief listing of major uses of each interrupt
86BUGS.LST a listing of CPU bugs and undocumented features
BIBLIO.LST bibliography of information sources for the list
CMOS.LST a description of the CMOS RAM data bytes
FARCALL.LST APIs available through FAR CALLs
GLOSSARY.LST a glossary of terms, abbreviations, and acronyms
MEMORY.LST format of the BIOS data area
OPCODES.LST a listing of recent and undocumented CPU instructions
PORTS.LST a listing of I/O ports
CATEGORY.KEY descriptions of divider-line category letters
COMBINE.COM combine the pieces of the list into a single file
COMBINE.DOC documentation for COMBINE
The following files should be distributed in an archive called INTER55E:
86BUGSnn.ZIP programs to test for CPU bugs
COMBINE.ASM source code for COMBINE.COM
INT.* invoke interrupts from commandline
INTHLP??.ZIP Interrupt Helper viewer for the interrupt list
INTLIST.E Epsilon extension for handling list
INTPRINT.C source code for INTPRINT
INTSUM??.ZIP interrupt list browser (Interrupt Summary)
IVIEW*.ZIP another interrupt list browser
The following should be distributed in an archive called INTER55F:
INT2RTF.ZIP Slava Gostrenko's Windows Help converter
INT2WHLP.ZIP convert list into Windows Help database
INTERRUP.ICO icon for interrupt list
HINTSRCH.ZIP WinHelp DLL for full-text searches of interrupt list
WH_ED*.ZIP WinHelp-file editor
Finally, the following should be distributed in an archive called INTER55G:
IL2ME???.ZIP convert list into Multi-Edit help database
INT2GUID.* convert list into TurboPower GUIDE or POPHELP database
INT2HLP.ZIP convert list into QuickHelp database
INT2IPF.ZIP convert list into OS/2 .IPF database
INT2QH.* program to convert list into QuickHelp database
INT2TPH.ZIP convert to Turbo/Borland Pascal help file (.TPH)
INTHELP.* convert list into TurboPower GUIDE database
RB2NG???.ZIP convert list into Norton Guides database
--------!---CONTACT_INFO---------------------
If you notice any mistakes or omissions, please let me know! It is only with
YOUR help that the list can continue to grow at the current rate. Please send
all changes to me rather than distributing a modified version of the list.
Please read the file INTERRUP.1ST before asking me any questions. You may find
that they have already been addressed.
Ralf Brown
Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
UUCP: {uunet,harvard}!pobox.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:ralf@pobox.com
I reply to all e-mail submissions and inquiries, but some of my replies bounce
because of bad return paths. If you don't get a response from me within a
reasonable period of time, send it again with a better return path (many
mailers are improperly configured and do not produce a valid From: address).
--------!---Note-----------------------------
See INTERRUP.1ST for the key to system abbreviations and a list of the
trademarks mentioned here.
--------!---DISCLAIMER-----------------------
DISCLAIMER: THIS MATERIAL IS PROVIDED "AS IS". I verify the information
contained in this list to the best of my ability, but I cannot be held
responsible for any problems caused by use or misuse of the information,
especially for those functions not officially documented. If it is marked
"internal" or undocumented, you should check it carefully to make sure it
works the same way in your version of the software (and please let me know
whether or not it works the same way). Information marked with "???" is
known to be incomplete or guesswork.
--------!---FLAGS----------------------------
The use of -> instead of = signifies that the indicated register or register
pair contains a pointer to the specified item, rather than the item itself.
One or more letters may follow the interrupt number; they have the following
meanings: U - undocumented function, u - partially documented function,
P - available only in protected mode, R - available only in real or V86 mode,
C - callout or callback (usually hooked rather than called),
O - obsolete (no longer present in current versions)
--------!---CATEGORIES-----------------------
The ninth column of the divider line preceding an entry usually contains a
classification code (the entry has not been classified if that character is
a dash). The codes currently in use are:
A - applications, a - access software (screen readers, etc),
B - BIOS, b - vendor-specific BIOS extensions,
C - CPU-generated, c - caches/spoolers,
D - DOS kernel, d - disk I/O enhancements,
E - DOS extenders, e - electronic mail, F - FAX,
f - file manipulation, G - debuggers/debugging tools, g - games,
H - hardware, h - vendor-specific hardware,
I - IBM workstation/terminal emulators, i - system info/monitoring,
J - Japanese, j - joke programs,
K - keyboard enhancers, k - file/disk compression,
l - shells/command interpreters,
M - mouse/pointing device, m - memory management,
N - network, n - non-traditional input devices,
O - other operating systems,
P - printer enhancements, p - power management,
Q - DESQview/TopView and Quarterdeck programs,
R - remote control/file access, r - runtime support,
S - serial I/O, s - sound/speech,
T - DOS-based task switchers/multitaskers, t - TSR libraries
U - resident utilities, u - emulators,
V - video, v - virus/antivirus,
W - MS Windows,
X - expansion bus BIOSes, x - non-volatile config storage
y - security, * - reserved (and not otherwise classified)
--------C-00---------------------------------
INT 00 C - CPU-generated - DIVIDE ERROR
Desc: generated if the divisor of a DIV or IDIV instruction is zero or the
quotient overflows the result register; DX and AX will be unchanged.
Notes: on an 8086/8088, the return address points to the following instruction
on an 80286+, the return address points to the divide instruction
an 8086/8088 will generate this interrupt if the result of a division
is 80h (byte) or 8000h (word)
SeeAlso: INT 04
--------G-00---------------------------------
INT 00 - Zenith - ROM DEBUGGER
Desc: invokes the ROM Debugger when at the BIOS level; equivalent to
pressing Ctrl-Alt-Ins on booting.
Note: since DOS revectors INT 00, it is necessary to restore this vector to
its original ROM BIOS value in order to invoke the debugger once DOS
loads
SeeAlso: INT 03"Columbia"
--------C-01---------------------------------
INT 01 C - CPU-generated - SINGLE STEP
Desc: generated after each instruction if TF (trap flag) is set; TF is
cleared on invoking the single-step interrupt handler
Notes: interrupts are prioritized such that external interrupts are invoked
after the INT 01 pushes CS:IP/FLAGS and clears TF, but before the
first instruction of the handler executes
used by debuggers for single-instruction execution tracing, such as
MS-DOS DEBUG's T command
SeeAlso: INT 03"CPU"
--------C-01---------------------------------
INT 01 C - CPU-generated (80386+) - DEBUGGING EXCEPTIONS
Desc: generated by the CPU on various occurrences which may be of interest
to a debugger program
Note: events which may trigger the interrupt:
Instruction address breakpoint fault - will return to execute inst
Data address breakpoint trap - will return to following instruction
General detect fault, debug registers in use
Task-switch breakpoint trap
undocumented 386/486 opcode F1h - will return to following instruc
SeeAlso: INT 03"CPU"
--------H-02---------------------------------
INT 02 C - external hardware - NON-MASKABLE INTERRUPT
Desc: generated by the CPU when the input to the NMI pin is asserted
Notes: return address points to start of interrupted instruction on 80286+
on the 80286+, further NMIs are disabled until the next IRET
instruction, but one additional NMI is remembered by the hardware
and will be serviced after the IRET instruction reenables NMIs
maskable interrupts may interrupt the NMI handler if interrupts are
enabled
although the Intel documentation states that this interrupt is
typically used for power-failure procedures, it has many other uses
on IBM-compatible machines:
Memory parity error: all except Jr, CONV, and some machines
without memory parity
Breakout switch on hardware debuggers
Coprocessor interrupt: all except Jr and CONV
Keyboard interrupt: Jr, CONV
I/O channel check: CONV, PS50+
Disk-controller power-on request: CONV
System suspend: CONV
Real-time clock: CONV
System watch-dog timer, time-out interrupt: PS50+
DMA timer time-out interrupt: PS50+
Low battery: HP 95LX
Module pulled: HP 95LX
--------m-02----SI0714-----------------------
INT 02 U - STB RAPIDMAP.SYS - ???
SI = 0714h
ES:DI -> ???
Return: ???
SeeAlso: INT 67/AX=6100h"STB",PORT 00E1h"STB"
--------C-03---------------------------------
INT 03 C - CPU-generated - BREAKPOINT
Desc: generated by the one-byte breakpoint instruction (opcode CCh)
Notes: used by debuggers to implement breakpoints, such as MS-DOS DEBUG's G
command
also used by Turbo Pascal versions 1,2,3 when {$U+} specified
return address points to byte following the breakpoint instruction
called by Novell DOS 7 EMM386 after displaying an exception error
message (GPF, illegal opcodes, etc.) and before waiting for user
input
called by QEMM-386 if the user presses 'I' (undocumented) when prompted
after an exception error message
SeeAlso: INT 01"CPU"
--------G-03---------------------------------
INT 03 - Columbia PCs (desktop,VP portables) - ROM DEBUGGER
Desc: invokes the ROM Debugger if INT 03 has not been revectored; equivalent
to pressing Esc on booting.
SeeAlso: INT 00"Zenith",INT 03"Realia"
--------G-03---------------------------------
INT 03 - Realia COBOL - DEBUGGER SUPPORT
Note: Realia COBOL checks for a signature eight bytes prior to the interrupt
handler when it starts up
BUG: if the offset of the INT 03 vector is less than 8, the compiler and
all executables generated by it will crash the system
SeeAlso: INT 03"Columbia"
--------G-03---------------------------------
INT 03 U - Watcom WVIDEO, Watcom WD - OUTPUT DEBUGGING MESSAGE
STACK: DWORD selector
DWORD offset of ASCIZ message to display
Notes: the INT 03h instruction which invokes the debugger must be followed by
a JMP SHORT and the signature string "WVIDEO"
to check whether this interface is available, define a public byte
variable named ___WD_Present, which the debugger will set to 01h
before running the program
SeeAlso: AX=0910h
--------U-03---------------------------------
INT 03 - DTown Utilities - POP UP
Program: DTown Software Development's DTown Utilities contains various tools
which are useful to programmers, such as a memory viewer and
disassembler
Note: DTU pops up on INT 03 (if not hooked by a debugger) to allow the
user to inspect memory or code when the machine crashes; various
memory managers will invoke INT 03 when displaying a CPU exception
error message (either automatically or when the user presses a
particular key)
SeeAlso: INT 2D/AL=20h"DTown"
--------G-030910-----------------------------
INT 03 - Soft-ICE - BACK DOOR COMMANDS - DISPLAY STRING IN Soft-ICE WINDOW
AX = 0910h
SI = magic value 4647h ('FG')
DI = magic value 4A4Dh ('JM')
DS:DX -> ASCIZ string to display (max 100 bytes, 0Dh OK)
Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
SeeAlso: INT 03"WVIDEO"
--------G-030911-----------------------------
INT 03 - Soft-ICE - BACK DOOR COMMANDS - EXECUTE Soft-ICE COMMAND
AX = 0911h
SI = magic value 4647h ('FG')
DI = magic value 4A4Dh ('JM')
DS:DX -> ASCIZ command string (max 100 bytes, 0Dh OK)
Return: nothing
SeeAlso: AX=0912h,AX=0913h
--------G-030912-----------------------------
INT 03 - Soft-ICE - BACK DOOR COMMANDS - GET BREAKPOINT INFORMATION
AX = 0912h
SI = magic value 4647h ('FG')
DI = magic value 4A4Dh ('JM')
Return: BH = entry number of last breakpoint set
BL = type of last breakpoint set (see #0001)
DH = entry number of last breakpoint to be triggered
DL = type of last triggered breakpoint (see #0001)
Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
SeeAlso: AX=0911h,AX=0913h,AX=0914h
(Table 0001)
Values for Soft-ICE breakpoint type:
00h BPM (breakpoint register types)
01h I/O
02h INTerrupt
03h BPX (INT 03-style breakpoint)
04h reserved
05h range
--------G-030913-----------------------------
INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - SET Soft-ICE BREAKPOINT
AX = 0913h
SI = magic value 4647h ('FG')
DI = magic value 4A4Dh ('JM')
DS:DX -> breakpoint structure (see #0002)
Return: AX = status
00h successful
BX = breakpoint number
03h breakpoint table full
06h memory limit error
07h I/O limit error
09h range limit error
16h duplicate breakpoint
SeeAlso: AX=0911h,AX=0912h,AX=0914h
Format of Soft-ICE breakpoint structure:
Offset Size Description (Table 0002)
00h BYTE breakpoint type (see #0003)
01h DWORD breakpoint address 1
(lower range limit for memory BPs,
interrupt number for interrupt BPs,
address of BP for execution BPs,
I/O address (only word) for I/O BPs)
05h DWORD breakpoint address 2
(upper range limit for memory BPs,
optional value to check for for interrupt BPs,
overlay number (0 = root) for execution BPs)
09h DWORD breakpoint address 3
0Dh BYTE breakpoint mode 1 (see #0004)
(for interrupt BPs = register to check
00h no value checking
01h check AL
02h check AH
03h check AX)
0Eh BYTE breakpoint mode 2 (see #0004)
0Fh BYTE breakpoint size (00h byte, 01h word, 03h dword)
10h BYTE breakpoint pass count before program stop
11h BYTE breakpoint state
Note: all unused fields should contain zeros
(Table 0003)
Values for Soft-ICE breakpoint type:
00h memory location
01h memory range
03h I/O
04h interrupt
05h execution break
(Table 0004)
Values for Soft-ICE breakpoint mode:
01h read
02h write
04h execution
--------G-030914-----------------------------
INT 03 - Soft-ICE v2.5x - BACK DOOR COMMANDS - REMOVE Soft-ICE BREAKPOINT
AX = 0914h
SI = magic value 4647h ('FG')
DI = magic value 4A4Dh ('JM')
BX = breakpoint number (returned by AX=0913h)
Return: BX = ???
Program: Soft-ICE is a debugger by Nu-Mega Technologies, Inc.
SeeAlso: AX=0912h,AX=0913h
--------C-04---------------------------------
INT 04 C - CPU-generated - INTO DETECTED OVERFLOW
Desc: the INTO instruction will generate this interrupt if OF (Overflow Flag)
is set; otherwise, INTO is effectively a NOP
Note: may be used for convenient overflow testing (to prevent errors from
propagating) instead of JO or a JNO/JMP combination
SeeAlso: INT 00"CPU"
--------B-05---------------------------------
INT 05 - PRINT SCREEN
Desc: dump the current text screen to the first printer
Notes: normally invoked by the INT 09 handler when PrtSc key is pressed, but
may be invoked directly by applications
byte at 0050h:0000h contains status used by default handler
00h not active
01h PrtSc in progress
FFh last PrtSc encountered error
default handler is at F000h:FF54h in IBM PC and 100%-compatible BIOSes
since the BOUND instruction also calls INT 05h, but returns control
to the BOUND instruction, a failed BOUND check will cause an infinite
loop of PrtScreens unless the INT 05 handler is aware of the problem
and checks whether the interrupt was invoked by a BOUND instruction
BUG: some old BIOSes/applications appear to destroy BP on return
SeeAlso: INT 10/AH=12h/BL=20h,INT 4A"Tandy 2000",INT 5E"TI Professional"
SeeAlso: INT 80"Phar Lap"
--------C-05---------------------------------
INT 05 C - CPU-generated (80186+) - BOUND RANGE EXCEEDED
Desc: generated by BOUND instruction when the value to be tested is less than
the indicated lower bound or greater than the indicated upper bound.
Note: returning from this interrupt re-executes the failing BOUND instruction
--------P-05454A-----------------------------
INT 05 U - PSPS v2.01 - EJECT PAGE
AX = 454Ah ('EJ')
Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
Technologies
Note: sends a ^D to the current printer
SeeAlso: AX=4E57h,AX=5053h,AX=554Eh
--------P-054E57-----------------------------
INT 05 U - PSPS v2.01 - SET PARAMETERS
AX = 4E57h ('NW')
ES:SI -> 11-byte buffer containing new settings
Return: buffer filled
SeeAlso: AX=454Ah,AX=5053h,INT 17/AH=63h
--------P-055053-----------------------------
INT 05 U - PSPS v2.01 - GET PARAMETERS
AX = 5053h ('PS')
ES:SI -> 11-byte buffer for settings
Return: buffer filled
SeeAlso: AX=4E57h,AX=554Eh,INT 17/AH=64h
--------P-05554E-----------------------------
INT 05 U - PSPS v2.01 - UNINSTALL
AX = 554Eh ('UN')
Program: PSPS is shareware PostScript PrintScreen utility by A.N.D.
Technologies
SeeAlso: AX=454Ah,AX=4E57h,INT 17/AH=62h
--------C-06---------------------------------
INT 06 C - CPU-generated (80286+) - INVALID OPCODE
Desc: this interrupt is generated when the CPU attempts to execute an
invalid opcode (most protected-mode instructions are considered
invalid in real mode) or a BOUND, LDS, LES, or LIDT instruction
which specifies a register rather than a memory address
Notes: return address points to beginning of invalid instruction
with proper programming, this interrupt may be used to emulate
instructions which do not exist; many 386 BIOSes emulate the 80286
undocumented LOADALL instruction which was removed from the 80386+
generated by the 80386+ when the LOCK prefix is used with instructions
other than BTS, BTR, BTC, XCHG, XADD (486), CMPXCHG (486), INC, DEC,
NOT, NEG, ADD, ADC, SUB, SBB, AND, OR, or XOR, or any instruction
not accessing memory.
SeeAlso: INT 0C"CPU",INT 0D"CPU"
--------b-06---------------------------------
INT 06 C - HP 95LX - SLEEP/WAKEUP
Desc: this interrupt is called just before going into light or deep
(shutdown) sleep and just after returning from light or deep sleep
SeeAlso: INT 0B"HP 95LX",INT 15/AX=4DD4h,INT 15/AH=4Eh
--------V-06---------------------------------
INT 06 U - no-name clone - GRAPHICS CHARACTER TABLE (NOT A VECTOR!)
Desc: points at graphics data for characters 00h-7Fh of the current font
SeeAlso: INT 43"EGA",INT 44"VIDEO"
--------C-07---------------------------------
INT 07 C - CPU-generated (80286+) - PROCESSOR EXTENSION NOT AVAILABLE
Desc: this interrupt is automatically called if a coprocessor instruction is
encountered when no coprocessor is installed
Note: can be used to emulate a numeric coprocessor in software
SeeAlso: INT 09"CPU"
--------H-08---------------------------------
INT 08 C - IRQ0 - SYSTEM TIMER
Desc: generated 18.2 times per second by channel 0 of the 8254 system timer,
this interrupt is used to keep the time-of-day clock updated
Notes: programs which need to be invoked regularly should use INT 1C unless
they need to reprogram the timer while still keeping the time-of-day
clock running at the proper rate
default handler is at F000h:FEA5h in IBM PC and 100%-compatible BIOSes
may be masked by setting bit 0 on I/O port 21h
SeeAlso: INT 1C,INT 4A"SYSTEM",INT 50"DESQview",INT 58"DoubleDOS",INT 70"IRQ8"
SeeAlso: INT 78"GO32",INT D8"Screen Thief",MEM 0040h:0040h
--------C-08---------------------------------
INT 08 C - CPU-generated (80286+) - DOUBLE EXCEPTION DETECTED
Desc: called when multiple exceptions occur on one instruction, or an
exception occurs in an exception handler
Notes: called in protected mode if an interrupt above the defined limit of
the interrupt vector table occurs
return address points at beginning of instruction with errors or the
beginning of the instruction which was about to execute when the
external interrupt caused the exception
if an exception occurs in the double fault handler, the CPU goes into
SHUTDOWN mode (which circuitry in the PC/AT converts to a reset);
this "triple fault" is a faster way of returning to real mode on
many 80286 machines than the standard keyboard controller reset
--------H-09---------------------------------
INT 09 C - IRQ1 - KEYBOARD DATA READY
Desc: this interrupt is generated when data is received from the keyboard.
This is normally a scan code (from either a keypress *or* a key
release), but may also be an ACK or NAK of a command on AT-class
keyboards.
Notes: this IRQ may be masked by setting bit 1 on I/O port 21h
if the BIOS supports an enhanced (101/102-key) keyboard, it calls
INT 15/AH=4Fh after reading the scan code (see #0005) from the
keyboard and before further processing; all further processing uses
the scan code returned from INT 15/AH=4Fh
the default interrupt handler is at F000h:E987h in 100%-compatible
BIOSes
the interrupt handler performs the following actions for certain
special keystrokes:
Ctrl-Break clear keyboard buffer, place word 0000h in buffer,
invoke INT 1B, and set flag at 0040h:0071h
SysReq invoke INT 15/AH=85h (SysReq is often labeled SysRq)
Ctrl-Numlock place system in a tight wait loop until next INT 09
Ctrl-Alt-Del jump to BIOS startup code (either F000h:FFF0h or the
destination of the jump at that address)
Shift-PrtSc invoke INT 05
Ctrl-Alt-Plus (HP Vectra) enable keyclick
Ctrl-Alt-Plus (many clones) set clock speed to high
Ctrl-Alt-Minus (HP Vectra) reduce keyclick volume
Ctrl-Alt-Minus (many clones) set clock speed to low
Ctrl-Alt-SysReq (HP Vectra) generate hard reset
Ctrl-Alt-S (many clones) run BIOS setup program
Ctrl-Alt-Esc (many clones) run BIOS setup program
Ctrl-Alt-Ins (many clones) run BIOS setup program
Ctrl-Alt-LeftShift-GrayMinus (some clones) turn off system cache
Ctrl-Alt-LeftShift-GrayPlus (some clones) turn on system cache
DR DOS hooks this interrupt to control the cursor shape (underscore/
half block) for overwrite/insert mode
DR Multiuser DOS hooks this interrupt for cursor shape control and to
control whether Ctrl-Alt-Del reboots the current session or the
entire system
SeeAlso: INT 05"PRINT SCREEN",INT 0B"HP 95LX",INT 15/AH=4Fh,INT 15/AH=85h
SeeAlso: INT 16/AH=00h,INT 16/AH=10h,INT 1B,INT 2F/AX=A901h,INT 4A/AH=00h"TI"
SeeAlso: INT 51"DESQview",INT 59"DoubleDOS",INT 79"GO32"
(Table 0005)
Values for keyboard make/break (scan) code:
01h Esc 31h N
02h 1 ! 32h M
03h 2 @ 33h , < 63h F16
04h 3 # 34h . > 64h F17
05h 4 $ 35h / ? 65h F18
06h 5 % 36h Right Shift 66h F19
07h 6 ^ 37h Grey* 67h F20
08h 7 & 38h Alt 68h F21 (Fn) [*]
09h 8 * 39h SpaceBar 69h F22
0Ah 9 ( 3Ah CapsLock 6Ah F23
0Bh 0 ) 3Bh F1 6Bh F24
0Ch - _ 3Ch F2 6Ch --
0Dh = + 3Dh F3 6Dh EraseEOF
0Eh Backspace 3Eh F4
0Fh Tab 3Fh F5 6Fh Copy/Play
10h Q 40h F6
11h W 41h F7
12h E 42h F8 72h CrSel
13h R 43h F9 73h <delta> [*]
14h T 44h F10 74h ExSel
15h Y 45h NumLock 75h --
16h U 46h ScrollLock 76h Clear
17h I 47h Home
18h O 48h UpArrow
19h P 49h PgUp
1Ah [ { 4Ah Grey-
1Bh ] } 4Bh LeftArrow
1Ch Enter 4Ch Keypad 5
1Dh Ctrl 4Dh RightArrow
1Eh A 4Eh Grey+
1Fh S 4Fh End
20h D 50h DownArrow
21h F 51h PgDn
22h G 52h Ins
23h H 53h Del
24h J 54h SysReq ---non-key codes---
25h K 00h kbd buffer full
26h L 56h left \| (102-key)
27h ; : 57h F11 AAh self-test complete
28h ' " 58h F12 E0h prefix code
29h ` ~ E1h prefix code
2Ah Left Shift 5Ah PA1 EEh ECHO
2Bh \ | 5Bh F13 (LWin) F0h prefix code (key break)
2Ch Z 5Ch F14 (RWin) FAh ACK
2Dh X 5Dh F15 (Menu) FCh diag failure (MF-kbd)
2Eh C FDh diag failure (AT-kbd)
2Fh V FEh RESEND
30h B FFh kbd error/buffer full
Notes: scan codes 56h-E1h are only available on the extended (101/102-key)
keyboard and Host Connected (122-key) keyboard; scan codes 5Bh-5Dh
are only available on the 122-key keyboard and the Microsoft Natural
Keyboard; scan codes 5Eh-76h are only available on the 122-key
keyboard
in the default configuration, break codes are the make scan codes with
the high bit set; make codes 60h,61h,70h, etc. are not available
because the corresponding break codes conflict with prefix codes
(code 2Ah is available because the self-test result code AAh is only
sent on keyboard initialization). An alternate keyboard
configuration can be enabled on AT and later systems with enhanced
keyboards, in which break codes are the same as make codes, but
prefixed with an F0h scan code
prefix code E0h indicates that the following make/break code is for a
"gray" duplicate to a key which existed on the original PC keyboard;
prefix code E1h indicates that the following make code has no
corresponding break code (currently only the Pause key generates no
break code)
the Microsoft Natural Keyboard sends make codes 5Bh, 5Ch, and 5Dh
(all with an E0h prefix) for the Left Windows, Right Windows, and
Menu keys on the bottom row
the German "Cherry G81-3000 SAD/04" keyboard contains contacts for
four additional keys, which can be made available by a user
modification; the three new keys located directly below the cursor
pad's Delete, End, and PgDn keys send make codes 66h-68h (F19-F21);
the fourth new key, named <delta>, sends make code 73h
the SysReq key is often labeled SysRq
the "Accord" ergonomic keyboard with optional touchpad (no other
identification visible on keyboard or in owner's booklet) has an
additional key above the Grey- key marked with a left-pointing
triangle and labeled "Fn" in the owner's booklet which returns
scan codes E0h 68h on make and E0h E8h on break
SeeAlso: #0526 at INT 16/AX=6F07h,#2885 at INT 4A/AH=05h
--------C-09---------------------------------
INT 09 C - CPU-generated (80286,80386) - PROCESSOR EXTENSION PROTECTION ERROR
Desc: called if the coprocessor attempts to access memory outside a segment
boundary; it may occur at an arbitrary time after the coprocessor
instruction was issued
Notes: until the condition is cleared or the coprocessor is reset, the only
coprocessor instruction which may be used is FNINIT; WAIT or other
coprocessor instructions will cause a deadlock because the
coprocessor is still busy waiting for data
for the 486+, a coprocessor protection error generates an INT 0D
SeeAlso: INT 07"CPU"
--------*-09---------------------------------
INT 09 P - internal hardware - RESERVED BY Intel (80486)
Note: this exception has been moved to INT 0D
SeeAlso: INT 09"CPU",INT 0D
--------H-0A---------------------------------
INT 0A C - IRQ2 - LPT2 (PC), VERTICAL RETRACE INTERRUPT (EGA,VGA)
Notes: the TOPS and PCnet adapters use this interrupt request line by default
DOS 3.2 revectors IRQ2 to a stack-switching routine
on ATs and above, the physical data line for IRQ2 is labeled IRQ9 and
connects to the slave 8259. The BIOS redirects the interrupt for
IRQ9 back here.
under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
many VGA boards do not implement the vertical retrace interrupt,
including the IBM VGA Adapter where the traces are either cut or
removed
SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
--------H-0A---------------------------------
INT 0A C - IRQ2 - Tandy 1000-series HARD DISK
Notes: this interrupt may be masked by setting bit 2 on I/O port 21h
the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the
1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the
1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable
for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are
DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and
RSX-HD use IRQ14. Tandy systems which use IRQ2 for the hard disk
interrupt use IRQ5 for vertical retrace.
SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71
--------H-0A---------------------------------
INT 0A - IRQ2 - ROLAND MPU MIDI INTERFACE
Note: newer Roland cards and MIDI interfaces by other manufacturers use
a jumper-selectable IRQ, but software and hardware generally defaults
to IRQ2
SeeAlso: INT 52"DESQview",INT 5A"DoubleDOS",INT 71,INT 7A"GO32"
--------C-0A---------------------------------
INT 0A CP - CPU-generated (80286+) - INVALID TASK STATE SEGMENT
Desc: automatically called during a task switch if the new TSS specified by
the task gate is invalid for any of the following reasons:
TSS limit is less than 43 (80286) or 103 (80386/80486)
LDT selector invalid or segment not present
null SS selector, or SS selector outside LDT/GDT limit
stack segment is read-only
stack segment DPL differs from new CPL, or RPL <> CPL
CS selector is outside LDT/GDT limit or not code
non-conforming code segment's DPL differs from CPL
conforming code segment's DPL > CPL
DS/ES selectors outside LDT/GDT limit or not readable segments
Note: the handler must use a task gate in order to have a valid TSS under
which to execute; it must also reset the busy bit in the new TSS
SeeAlso: INT 0B"CPU"
--------H-0B---------------------------------
INT 0B C - IRQ3 - SERIAL COMMUNICATIONS (COM2)
Desc: automatically asserted by the UART when COM2 needs attention, if the
UART has been programmed to generate interrupts
Notes: the TOPS and PCnet adapters use this interrupt request line as an
alternate
on PS/2s, COM2 through COM8 share this interrupt; on many PC's, COM4
shares this interrupt
may be masked by setting bit 3 on I/O port 21h
SeeAlso: INT 0C"COM1",INT 53"DESQview",INT 5B"DoubleDOS",INT 7B"GO32"
--------C-0B---------------------------------
INT 0B CP - CPU-generated (80286+) - SEGMENT NOT PRESENT
Desc: generated when loading a segment register if the segment descriptor
indicates that the segment is not currently in memory, unless the
segment is an LDT (see INT 0A"CPU") or stack segment (see
INT 0C"CPU") needed by a task switch
Note: may be used to implement virtual memory by loading in segments as they
are accessed, clearing the "not present" bit after loading
SeeAlso: INT 0A"CPU",INT 0E"CPU"
--------h-0B---------------------------------
INT 0B - HP 95LX - LOW-LEVEL KEYBOARD HANDLER
Desc: this is the lowest-level keyboard handler on an HP 95LX palmtop
Note: debounces key, places the keycode in I/O register 60h, and calls INT 09
SeeAlso: INT 09,INT 0D"HP 95LX",INT 15/AX=4DD4h
--------H-0C---------------------------------
INT 0C C - IRQ4 - SERIAL COMMUNICATIONS (COM1)
Desc: automatically asserted by the UART when COM1 needs attention, if the
UART has been programmed to generate interrupts
BUG: 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
Notes: on many PC's, COM3 shares this interrupt
may be masked by setting bit 4 on I/O port 21h
SeeAlso: INT 0B"COM2",INT 54"DESQview",INT 5C"DoubleDOS",INT 7C"GO32"
--------C-0C---------------------------------
INT 0C C - CPU-generated (80286+) - STACK FAULT
Desc: this interrupt is generated in protected mode on a stack overflow or
underflow, or if an inter-level transition or task switch references
a stack segment marked "not present"; it is generated in real mode
on accessing a word operand at SS:FFFFh
Note: the 80286 will shut down in real mode if SP=1 before a push. On the
PC AT and compatibles, external circuitry generates a reset on
shutdown.
SeeAlso: INT 0B"CPU",INT 0D"CPU"
--------I-0C---------------------------------
INT 0C - IBM SYSTEM 36/38 WORKSTATION EMULATION - API POINTER
Desc: the IBM System 36/38 emulator may be invoked through a private API,
whose entry point address (see #0006) is offset 100h in the segment
pointed at by this vector
(Table 0006)
Call the System 36/38 emulator API entry point with:
AH = function
03h update screen
05h select next session
AL = session number (00h-03h)
Return: AL = session type code
00h not active
01h display session
02h printer session
FEh invalid session number
DS = requested session's data segment (0 if not active)
(see #0007)
Return: ???
Format of System 36/38 emulator's data area:
Offset Size Description (Table 0007)
13Eh BYTE bit flags for status line indicators turned on since this byte
last zerod
13Fh BYTE bit flags for status line indicators turned off since this
byte last set to FFh
140h WORD offset of EBCDIC to ASCII translation
146h WORD offset of EBCDIC screen buffer
148h WORD offset of EC (engineering change) level signature
150h BYTE "KEYI"
151h BYTE 5250 key scan code to be sent to remote
15Bh BYTE "SYSAV"
15Dh BYTE 5250 cursor column
15Eh BYTE 5250 cursor row
167h BYTE "DVCTAD"
178h BYTE "FLAGS"
184h BYTE "SESSNOAD"
193h BYTE "STNAD"
198h BYTE "NSDS"
Note: offsets are from the interrupt handler's segment
--------H-0D---------------------------------
INT 0D C - IRQ5 - FIXED DISK (PC,XT), LPT2 (AT), reserved (PS/2)
Notes: under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
the Tandy 1000, 1000A, and 1000HD use IRQ2 for the hard disk; the
1000EX, HX, RLX, RLX-HD, RLX-B, RLX-HD-B use IRQ5 instead; the
1000RL, RL-HD, SL, SL/2, TL, TL/2, and TL/3 are jumper-selectable
for either IRQ2 or IRQ5 (default IRQ5); the 1000SX and TX are
DIP-switch selectable for IRQ2 or IRQ5 (default IRQ2); the RSX and
RSX-HD use IRQ14. Tandy systems which use IRQ2 for the hard disk
interrupt use IRQ5 for vertical retrace.
may be masked by setting bit 5 on I/O port 21h
SeeAlso: INT 0E"IRQ6",INT 0F"IRQ7",INT 55"DESQview",INT 5D"DoubleDOS"
SeeAlso: INT 7D"GO32"
--------H-0D---------------------------------
INT 0D C - IRQ5 - Tandy 1000 60 Hz RAM REFRESH
Desc: used to ensure that the dynamic RAM retains its contents in earlier
1000-series models; later models use normal DMA for RAM refresh
(some early models have no DMA unless it is added via an expansion
card)
SeeAlso: INT 55
--------h-0D---------------------------------
INT 0D - HP 95LX - INFRARED INTERRUPT
Desc: this interrupt is used to perform communications over the infrared
data link
SeeAlso: INT 0B"HP 95LX",INT 0E"HP 95LX",INT 15/AX=4DD4h
--------C-0D---------------------------------
INT 0D C - CPU-generated (80286+) - GENERAL PROTECTION VIOLATION
Desc: the CPU generates this interrupt when it detects a protection violation
which does not fit under any other category having a separate
interrupt
Notes: called in real mode when
an instruction accesses a memory operand extending beyond offset
FFFFh (i.e. WORD at FFFFh or DWORD at FFFDh or higher) in segment
CS, DS, ES, FG, or GS
a PUSH MEM or POP MEM instruction contains an invalid bit encoding
in the second byte
an instruction exceeds the maximum length allowed (10 bytes for
80286, 15 bytes for 80386/80486)
an instruction wraps from offset FFFFh to offset 0000h
called in protected mode on protection violations not covered by INT 06
through INT 0C, including
segment limit violations
write to read-only segments
accesses using null DS or ES selectors
accesses to segments with privilege greater than CPL
wrong descriptor type
called on 80486 protected-mode floating-point protection fault
SeeAlso: INT 09"80486",INT 0C"STACK"
--------H-0E---------------------------------
INT 0E C - IRQ6 - DISKETTE CONTROLLER
Desc: this interrupt is generated by the floppy disk controller on
completion of an operation
Notes: default handler is at F000h:EF57h in IBM PC and 100%-compatible BIOSes
may be masked by setting bit 6 on I/O port 21h
SeeAlso: INT 0D"IRQ5",INT 56"DESQview",INT 5E"DoubleDOS",INT 7E"GO32"
--------C-0E---------------------------------
INT 0E C - CPU-generated (80386+ native mode) - PAGE FAULT
Desc: this interrupt is generated in protected and virtual-86 modes on
attempting to access a 4K memory page whose page table entry has
the "present" bit cleared
Notes: used to implement virtual memory--when the page fault occurs, the
operating system can load the appropriate page from disk
a protected-mode program written in the Flat memory model will often
generate this interrupt (typically reported as an Exception #14 or
Exception 0E with a register dump) when dereferencing an
uninitialized or corrupted pointer
SeeAlso: INT 0B"CPU"
--------h-0E---------------------------------
INT 0E C - HP 95LX - EXTERNAL CARD INTERRUPT
SeeAlso: INT 0D"HP 95LX",INT 0F"HP 95LX",INT 15/AX=4DD4h
--------H-0F---------------------------------
INT 0F C - IRQ7 - PARALLEL PRINTER
Desc: this interrupt is generated by the LPT1 printer adapter when the
printer becomes ready
Notes: most printer adapters do not reliably generate this interrupt
the 8259 interrupt controller generates an interrupt corresponding to
IRQ7 when an error condition occurs
SeeAlso: INT 0D"IRQ5",INT 57"DESQview",INT 5F"DoubleDOS",INT 7F"GO32"
SeeAlso: MEM 0040h:006Bh
--------h-0F---------------------------------
INT 0F C - HP 95LX - REAL-TIME CLOCK
SeeAlso: INT 0E"HP 95LX",INT 15/AX=4DD4h,INT 70"IRQ8"
--------C-10---------------------------------
INT 10 C - CPU-generated (80286+) - COPROCESSOR ERROR
Desc: this interrupt is generated by the CPU when the -ERROR pin is asserted
by the coprocessor
Note: AT's and clones usually wire the coprocessor to use IRQ13, but not all
get it right
SeeAlso: INT 09"hardware",INT 75
--------V-1000-------------------------------
INT 10 - VIDEO - SET VIDEO MODE
AH = 00h
AL = desired video mode (see #0009)
Return: AL = video mode flag (Phoenix, AMI BIOS)
20h mode > 7
30h modes 0-5 and 7
3Fh mode 6
AL = CRT controller mode byte (Phoenix 386 BIOS v1.10)
Desc: specify the display mode for the currently active display adapter
Notes: IBM standard modes do not clear the screen if the high bit of AL is set
(EGA or higher only)
the Tseng ET4000 chipset is used by the Orchid Prodesigner II, Diamond
SpeedSTAR VGA, Groundhog Graphics Shadow VGA, Boca Super X VGA,
Everex EV-673, etc.
the installation check for Ahead adapters is the signature "AHEAD" at
C000h:0025h
the installation check for Paradise adapters is the signature "VGA=" at
C000h:007Dh
the installation check for Oak Tech OTI-037/057/067/077 chipsets is the
signature "OAK VGA" at C000h:0008h
the installation check for ATI adapters is the signature "761295520" at
C000h:0031h; the byte at C000h:0043h indicates the chipset revision:
31h for 18800
32h for 18800-1
33h for 18800-2
34h for 18800-4
35h for 18800-5
62h for 68800AX (Mach32) (see also #0656)
the two bytes at C000h:0040h indicate the adapter type
"22" EGA Wonder
"31" VGA Wonder
"32" EGA Wonder800+
the byte at C000h:0042h contains feature flags
bit 1: mouse port present
bit 4: programmable video clock
the byte at C000h:0044h contains additional feature flags if chipset
byte > 30h (see #0008)
the installation check for Genoa video adapters is the signature
77h XXh 99h 66h at C000h:NNNNh, where NNNNh is stored at C000h:0037h
and XXh is
00h for Genoa 6200/6300
11h for Genoa 6400/6600
22h for Genoa 6100
33h for Genoa 5100/5200
55h for Genoa 5300/5400
for SuperEGA BIOS v2.41+, C000h:0057h contains the product level
for SuperEGA BIOS v3.0+, C000h:0070h contains the signature
"EXTMODE", indicating support for extended modes
SeeAlso: AX=0070h,AX=007Eh,AX=10E0h,AX=10F0h,AH=40h,AX=6F05h,AH=FFh"GO32"
SeeAlso: INT 33/AX=0028h,INT 5F/AH=00h,INT 62/AX=0001h,MEM 0040h:0049h
Index: installation check;Tseng ET4000|installation check;Ahead video cards
Index: installation check;Oak Technologies|installation check;ATI video cards
Index: installation check;Paradise video|installation check;Genoa video cards
Bitfields for ATI additional feature flags:
Bit(s) Description (Table 0008)
0 70 Hz non-interlaced display
1 Korean (double-byte) characters
2 45 MHz memory clock rather than 40 MHz
3 zero wait states
4 paged ROMs
6 no 8514/A monitor support
7 HiColor DAC
(Table 0009)
Values for video mode:
text/ text pixel pixel colors disply scrn system
grph resol box resolution pages addr
00h = T 40x25 8x8 320x200 16gray 8 B800 CGA,PCjr,Tandy
= T 40x25 8x14 320x350 16gray 8 B800 EGA
= T 40x25 8x16 320x400 16 8 B800 MCGA
= T 40x25 9x16 360x400 16 8 B800 VGA
01h = T 40x25 8x8 320x200 16 8 B800 CGA,PCjr,Tandy
= T 40x25 8x14 320x350 16 8 B800 EGA
= T 40x25 8x16 320x400 16 8 B800 MCGA
= T 40x25 9x16 360x400 16 8 B800 VGA
02h = T 80x25 8x8 640x200 16gray 4 B800 CGA,PCjr,Tandy
= T 80x25 8x14 640x350 16gray 8 B800 EGA
= T 80x25 8x16 640x400 16 8 B800 MCGA
= T 80x25 9x16 720x400 16 8 B800 VGA
03h = T 80x25 8x8 640x200 16 4 B800 CGA,PCjr,Tandy
= T 80x25 8x14 640x350 16/64 8 B800 EGA
= T 80x25 8x16 640x400 16 8 B800 MCGA
= T 80x25 9x16 720x400 16 8 B800 VGA
= T 80x43 8x8 640x350 16 4 B800 EGA,VGA [17]
= T 80x50 8x8 640x400 16 4 B800 VGA [17]
04h = G 40x25 8x8 320x200 4 . B800 CGA,PCjr,EGA,MCGA,VGA
05h = G 40x25 8x8 320x200 4gray . B800 CGA,PCjr,EGA
= G 40x25 8x8 320x200 4 . B800 MCGA,VGA
06h = G 80x25 8x8 640x200 2 . B800 CGA,PCjr,EGA,MCGA,VGA
= G 80x25 . . mono . B000 HERCULES.COM on HGC [14]
07h = T 80x25 9x14 720x350 mono var B000 MDA,Hercules,EGA
= T 80x25 9x16 720x400 mono . B000 VGA
08h = T 132x25 8x8 1056x200 16 . B800 ATI EGA/VGA Wonder [2]
= T 132x25 8x8 1056x200 mono . B000 ATI EGA/VGA Wonder [2]
= G 20x25 8x8 160x200 16 . . PCjr, Tandy 1000
= G 80x25 8x16 640x400 color . . Tandy 2000
= G 90x43 8x8 720x348 mono . B000 Hercules + MSHERC.COM
= G 90x45 8x8 720x360 mono . B000 Hercules + HERKULES [11]
= G 90x29 8x12 720x348 mono . . Hercules + HERCBIOS [15]
09h = G 40x25 8x8 320x200 16 . . PCjr, Tandy 1000
= G 80x25 8x16 640x400 mono . . Tandy 2000
= G 90x43 8x8 720x348 mono . . Hercules + HERCBIOS [15]
0Ah = G 80x25 8x8 640x200 4 . . PCjr, Tandy 1000
0Bh = reserved (EGA BIOS internal use)
= G 80x25 8x8 640x200 16 . . Tandy 1000 SL/TL [13]
0Ch = reserved (EGA BIOS internal use)
0Dh = G 40x25 8x8 320x200 16 8 A000 EGA,VGA
0Eh = G 80x25 8x8 640x200 16 4 A000 EGA,VGA
0Fh = G 80x25 8x14 640x350 mono 2 A000 EGA,VGA
10h = G 80x25 8x14 640x350 4 2 A000 64k EGA
= G . . 640x350 16 . A000 256k EGA,VGA
11h = G 80x30 8x16 640x480 mono . A000 VGA,MCGA,ATI EGA,ATI VIP
12h = G 80x30 8x16 640x480 16/256K . A000 VGA,ATI VIP
= G 80x30 8x16 640x480 16/64 . A000 ATI EGA Wonder
= G . . 640x480 16 . . UltraVision+256K EGA
13h = G 40x25 8x8 320x200 256/256K . A000 VGA,MCGA,ATI VIP
14h = T 132x25 Nx16 . 16 . B800 XGA, IBM Enhanced VGA [3]
= T 132x25 8x16 1056x400 16/256K . . Cirrus CL-GD5420/5422/5426
= G 80x25 8x8 640x200 . . . Lava Chrome II EGA
= G . . 640x400 16 . . Tecmar VGA/AD
15h = G 80x25 8x14 640x350 . . . Lava Chrome II EGA
16h = G 80x25 8x14 640x350 . . . Lava Chrome II EGA
= G . . 800x600 16 . . Tecmar VGA/AD
17h = T 132x25 . . . . . Tecmar VGA/AD
= T 80x43 8x8 640x348 16 4 B800 Tseng ET4000 BIOS [10]
= G 80x34 8x14 640x480 . . . Lava Chrome II EGA
18h = T 80x30 9x16 720x480 16 1 A000 Realtek RTVGA [12]
= T 132x25 . . mono . B000 Cirrus 5320 chipset
= T 132x44 8x8 1056x352 mono . B000 Tseng Labs EVA
= T 132x44 9x8 1188x352 4gray 2 B000 Tseng ET3000 chipset
= T 132x44 8x8 1056x352 16/256 2 B000 Tseng ET4000 chipset
= G 80x34 8x14 640x480 . . . Lava Chrome II EGA
= G 1024x768 16 . . Tecmar VGA/AD
19h = T 80x43 9x11 720x473 16 1 A000 Realtek RTVGA [12]
= T 132x25 8x14 1056x350 mono . B000 Tseng Labs EVA
= T 132x25 9x14 1188x350 4gray 4 B000 Tseng ET3000 chipset
= T 132x25 8x14 1056x350 16/256 4 B000 Tseng ET4000 chipset
= T 132x34 . . mono . B000 Cirrus 5320 chipset
1Ah = T 80x60 9x8 720x480 16 1 A000 Realtek RTVGA [12]
= T 132x28 8x13 1056x364 mono . B000 Tseng Labs EVA
= T 132x28 9x13 1188x364 4gray 4 B000 Tseng ET3000 chipset
= T 132x28 8x13 1056x364 16/256 4 B000 Tseng ET4000 chipset
= T 132x44 . . mono . B000 Cirrus 5320 chipset
= G . . 640x350 256 . . Tecmar VGA/AD
1Bh = T 132x25 9x14 1188x350 16 1 A000 Realtek RTVGA [12]
= G . . 640x400 256 . . Tecmar VGA/AD
1Ch = T 132x25 . . . . . Cirrus 5320 chipset
= T 132x30 9x16 1188x480 16 1 A000 Realtek RTVGA [12]
= G . . 640x480 256 . . Tecmar VGA/AD
1Dh = T 132x43 . . . . . Cirrus 5320 chipset
= T 132x43 9x11 1188x473 16 1 A000 Realtek RTVGA [12]
= G . . 800x600 256 . . Tecmar VGA/AD
1Eh = T 132x44 . . . . . Cirrus 5320 chipset
= T 132x60 9x8 1188x480 16 1 A000 Realtek RTVGA [12]
1Fh = G 100x75 8x8 800x600 16 1 A000 Realtek RTVGA
20h = T 132x25 . . 16 . . Avance Logic AL2101
= G 40x16 . 240x128 mono . B000 HP 95LX/100LX/200LX
= G 120x45 8x16 960x720 16 1 A000 Realtek RTVGA
21h = T 80x25 . . mono . B000 HP 200LX
= T 132x30 . . 16 . . Avance Logic AL2101
= T 132x44 9x9 1188x396 16/256K . B800 WD90C
= T 132x44 9x9 1188x396 16 . B800 Diamond Speedstar 24X
= T 132x60 . . 16 2 B800 Tseng ET4000 chipset [10]
= G 80x43 8x8 720x348 mono . B000 DESQview 2.x+Hercules [4]
= G 128x48 8x16 1024x768 16 1 A000 Realtek RTVGA [12]
22h = T 132x43 . . . . . Allstar Peacock (VGA)
= T 132x43 . . 16 . . Avance Logic AL2101
= T 132x44 8x8 1056x352 . . B800 Tseng Labs EVA
= T 132x44 9x8 1188x352 16/256K 2 B800 Tseng ET3000 chipset
= T 132x44 8x8 1056x352 16/256K 2 B800 Tseng ET4000 chipset
= T 132x44 8x8 1056x352 . . . Ahead Systems EGA2001
= T 132x44 8x8 1056x352 16 2 B800 Ahead B
= T 132x44 8x9 1056x398 16 . . STB Lightspeed ET4000/W32P
= T 132x44 . . 16 . . Orchid Prodesigner VGA
= G 80x43 8x8 720x348 mono . B800 DESQview 2.x+Hercules [4]
= G 96x64 8x16 768x1024 16 1 A000 Realtek RTVGA
23h = T 132x25 6x14 792x350 . . B800 Tseng Labs EVA
= T 132x25 9x14 1188x350 16/256K 4 B800 Tseng ET3000 chipset
= T 132x25 8x14 1056x350 16/256 4 B800 Tseng ET4000 chipset
= T 132x25 8x14 1056x350 . . . Ahead Systems EGA2001
= T 132x25 8x14 1056x350 16 4 B800 Ahead B
= T 132x25 8x8 1056x200 16 . B800 ATI EGA Wonder,ATI VIP
= T 132x25 . . . . . Cirrus 5320 chipset
= T 132x28 . . . . . Allstar Peacock (VGA)
= T 132x28 . . 16 . . Orchid Prodesigner VGA
= T 132x60 . . 16 . . Avance Logic AL2101
= G 128x48 8x16 1024x768 4 1 A000 Realtek RTVGA
24h = T 80x30 . . 16 . . Avance Logic AL2101
= T 132x25 . . . . . Allstar Peacock (VGA)
= T 132x25 . . 16 . . Orchid Prodesigner VGA
= T 132x28 6x13 792x364 . . B800 Tseng Labs EVA
= T 132x28 9x13 1188x364 16/256K 4 B800 Tseng ET3000 chipset
= T 132x28 8x12 1056x336 16 1 B800 Ahead B
= T 132x28 8x13 1056x364 16/256K 4 B800 Tseng ET4000 chipset
= T 132x28 8x14 1056x392 16 . . STB Lightspeed ET4000/W32P
= T 132x28 . . . . . Cirrus 5320 chipset
= G 64x32 8x16 512x512 256 1 A000 Realtek RTVGA
25h = T 80x43 . . 16 . . Avance Logic AL2101
= G 80x60 8x8 640x480 . . A000 Tseng Labs EVA
= G 80x60 8x8 640x480 16/256K 1 A000 Tseng ET3000/4000 chipset
= G . . 640x480 16 . . VEGA VGA
= G 80x60 8x8 640x480 16 . A000 Orchid Prodesigner VGA
= G 80x60 8x8 640x480 16 1 A000 Ahead B (same as 26h)
= G . . 640x480 16 . . NEC GB-1
= G . . 640x480 16 . . Cirrus 5320 chipset
= G . . 640x400 256 . . Realtek RTVGA
26h = T 80x60 8x8 640x480 . . . Tseng Labs EVA
= T 80x60 8x8 640x480 16/256K 3 B800 Tseng ET3000/4000 chipset
= T 80x60 . . . . . Allstar Peacock (VGA)
= T 80x60 . . 16 . . Orchid ProDesigner VGA
= T 80x60 . . 16 . . Avance Logic AL2101
= G 80x60 8x8 640x480 . . . Ahead Systems EGA2001
= G 80x60 8x8 640x480 16 1 A000 Ahead B (same as 25h)
= G . . 640x480 256 . . Realtek RTVGA
27h = T 132x25 8x8 1056x200 mono . B000 ATI EGA Wonder,ATI VIP
= G . . 720x512 16 . . VEGA VGA
= G . . 720x512 16 . . Genoa
= G 100x75 8x8 800x600 256 1 A000 Realtek RTVGA [12]
= G . . 960x720 16 . . Avance Logic AL2101
28h = T ???x??? . . . . . VEGA VGA
= G . . 512x512 256 . . Avance Logic AL2101
= G . . 1024x768 256 . . Realtek RTVGA (1meg)
29h = G . . 640x400 256 . . Avance Logic AL2101
= G . . 800x600 16 . . VEGA VGA
= G 100x37 8x16 800x600 16 . A000 Orchid
= G . . 800x600 16 . A000 STB,Genoa,Sigma
= G . . 800x600 16 . . Allstar Peacock (VGA)
= G 100x37 8x16 800x600 16/256K 1 A000 Tseng ET3000/4000 chipset
= G . . 800x600 ??? . . EIZO MDB10
= G . . 800x600 16 . . Cirrus 5320 chipset
= G NA . 800x600 16 . . Compaq QVision 1024/1280
= G . . 1024x1024 256 . . Realtek RTVGA BIOS v3.C10
2Ah = T 100x40 . . . . . Allstar Peacock (VGA)
= T 100x40 8x16 800x640 16 . . Orchid Prodesigner VGA
= T 100x40 8x15 800x600 16/256K 4 B800 Tseng ET3000/4000 chipset
= T 100x40 8x15 800x600 16 . . STB Lightspeed ET4000/W32P
= G . . 640x480 256 . . Avance Logic AL2101
= G . . 1280x1024 16 . . Realtek RTVGA
2Bh = G . . 800x600 16 . . Avance Logic AL2101
2Ch = G . . 800x600 256 . . Avance Logic AL2101
2Dh = G . . 640x350 256 . . VEGA VGA
= G . . 640x350 256/256K . A000 Orchid, Genoa, STB
= G 80x25 8x14 640x350 256/256K 1 A000 Tseng ET3000/4000 chipset
= G . . 640x350 256 . . Cirrus 5320 chipset
= G 80x25 8x14 640x350 256 . . STB Lightspeed ET4000/W32P
= G . . 768x1024 16 . . Avance Logic AL2101
2Eh = G . . 640x480 256 . . VEGA VGA
= G 80x30 8x16 640x480 256/256K . A000 Orchid
= G . . 640x480 256/256K . A000 STB,Genoa,Sigma
= G 80x30 8x16 640x480 256/256K 1 A000 Tseng ET3000/4000 chipset
= G . . 640x480 256/256K . . Compaq QVision 1024/1280
= G . . 768x1024 256 . . Avance Logic AL2101
2Fh = T 160x50 8x8 1280x400 16 4 B800 Ahead B (Wizard/3270)
= G . . 720x512 256 . . VEGA VGA
= G . . 720x512 256 . . Genoa
= G 80x25 8x16 640x400 256/256K 1 A000 Tseng ET4000 chipset
= G . . 1024x768 4 . . Avance Logic AL2101
30h = G . . 800x600 256 . . VEGA VGA
= G 100x37 8x16 800x600 256/256K . A000 Orchid
= G . . 800x600 256/256K . A000 STB,Genoa,Sigma
= G . . 720x350 2 . . 3270 PC
= G . . 800x600 256 . . Cardinal
= G . . . . . B800 AT&T 6300
= G 100x37 8x16 800x600 256/256K 1 A000 Tseng ET3000/4000 chipset
= G . . 1024x768 16 . . Avance Logic AL2101
31h = G . . 1024x768 256 . . Avance Logic AL2101
32h = T 80x34 8x10 . 16 4 B800 Ahead B (Wizard/3270)
= G . . 640x480 256 . . Compaq QVision 1024/1280
33h = T 132x44 8x8 . 16 . B800 ATI EGA Wonder,ATI VIP
= T 80x34 8x8 . 16 4 B800 Ahead B (Wizard/3270)
34h = T 80x66 8x8 . 16 4 B800 Ahead B (Wizard/3270)
= G . . 800x600 256 . . Compaq QVision 1024/1280
36h = G . . 960x720 16 . . VEGA VGA, STB
= G . . 960x720 16 . A000 Tseng ET3000 only
= G . . 1280x1024 16 . . Avance Logic AL2101
37h = T 132x44 8x8 . mono . B800 ATI EGA Wonder,ATI VIP
= G . . 1024x768 16 . . VEGA VGA
= G 128x48 8x16 1024x768 16 . A000 Orchid
= G . . 1024x768 16 . A000 STB,Genoa,Sigma
= G . . 1024x768 16 . . Definicon
= G 128x48 8x16 1024x768 16 1 A000 Tseng ET3000/4000 chipset
= G . . 1024x768 16 . . Compaq QVision 1024/1280
= G . . 1280x1024 256 . . Avance Logic AL2101
38h = G . . 1024x768 256 . . STB VGA/EM-16 Plus (1MB)
= G 128x48 8x16 1024x768 256/256K 1 A000 Tseng ET4000 chipset
= G . . 1024x768 256 . . Orchid ProDesigner II
= G . . 1024x768 256 . . Compaq QVision 1024/1280
39h = G . . 1280x1024 16 . . Compaq QVision 1280
3Ah = G . . 1280x1024 256 . . Compaq QVision 1280
3Bh = G . . 512x480 256 . . Compaq QVision 1024/1280
3Ch = G . . 640x400 64K . . Compaq QVision 1024/1280
3Dh = G . . 1280x1024 16 . . Definicon
= G 128x64 8x16 1280x1024 16 1 A000 Tseng ET4000 v3.00 [1,7]
3Eh = G . . 1280x961 16 . . Definicon
= G . . 640x480 64K . . Compaq QVision 1024/1280
3Fh = G . . 1280x1024 256 . . Hercules ??? (ET4000W32)
= G . . 800x600 64K . . Compaq QVision 1024/1280
40h = T 80x43 . . . . . VEGA VGA, Tecmar VGA/AD
= T 80x43 . . . . . Video7 V-RAM VGA
= T 80x43 . . . . . Tatung VGA
= T 100x30 . . 16 . . MORSE VGA
= T 100x30 . . . . . Cirrus 510/520 chipset
= T 80x25 . 720x350 mono . . Genoa SuperEGA BIOS 3.0+
= G . . 320x200 64K . . Avance Logic AL2101
= G 80x25 8x16 640x400 2 1 B800 AT&T 6300, AT&T VDC600
= G 80x25 8x16 640x400 2 1 B800 Olivetti Quaderno
= G 80x25 8x16 640x400 2 1 B800 Compaq Portable
= G . . 1024x768 64K . . Compaq QVision 1280
41h = T 132x25 . . . . . VEGA VGA
= T 132x25 . . . . . Tatung VGA
= T 132x25 . . . . . Video7 V-RAM VGA
= T 100x50 . . 16 . . MORSE VGA
= T 100x50 . . . . . Cirrus 510/520 chipset
= T 80x34 9x14 720x476 16/256K . B800 WD90C
= T 80x34 9x14 . 16 . B800 Diamond Speedstar 24X
= G . . 512x512 64K . . Avance Logic AL2101
= G . . 640x200 16 1 . AT&T 6300
= G 80x25 . 720x348 mono . B000 Genoa SuperEGA BIOS 3.0+
42h = T 132x43 . . . . . VEGA VGA
= T 132x43 . . . . . Tatung VGA
= T 132x43 . . . . . Video7 V-RAM VGA
= T 80x34 9x10 . 4 4 B800 Ahead B (Wizard/3270)
= T 100x60 . . 16 . . MORSE VGA
= T 100x60 . . . . . Cirrus 510/520 chipset
= G 80x25 8x16 640x400 16 . . AT&T 6300, AT&T VDC600
= G . . 640x400 64K . . Avance Logic AL2101
= G 80x25 . 720x348 mono . B800 Genoa SuperEGA BIOS 3.0+
43h = T 80x60 . . . . . VEGA VGA
= T 80x60 . . . . . Tatung VGA
= T 80x60 . . . . . Video7 V-RAM VGA
= T 80x45 9x8 . 4 4 B800 Ahead B (Wizard/3270)
= T 100x75 . . 16 . . MORSE VGA
= T 80x29 . 720x348 mono . . Genoa SuperEGA BIOS 3.0+
= G . . 640x200 of 640x400 viewport AT&T 6300 (unsupported)
= G . . 640x480 64K . . Avance Logic AL2101
44h = disable VDC and DEB output . AT&T 6300
= T 100x60 . . . . . VEGA VGA
= T 100x60 . . . . . Tatung VGA
= T 100x60 . . . . . Video7 V-RAM VGA
= T 80x32 . 720x352 mono . . Genoa SuperEGA BIOS 3.0+
= G . . 800x600 64K . . Avance Logic AL2101
45h = T 132x28 . . . . . Tatung VGA
= T 132x28 . . . . . Video7 V-RAM VGA
= T 80x44 . 720x352 mono . . Genoa SuperEGA BIOS 3.0+
46h = T 132x25 8x14 . mono . . Genoa 6400
= T 132x25 9x14 . mono . . Genoa SuperEGA BIOS 3.0+
= G 100x40 8x15 800x600 2 . . AT&T VDC600
47h = T 132x29 8x12 . mono . . Genoa 6400
= T 132x29 9x12 . mono . . Genoa SuperEGA BIOS 3.0+
= T 132x28 9x16 1188x448 16/256K . B800 WD90C
= T 132x28 9x16 . 16 . B800 Diamond Speedstar 24X
= G 100x37 8x16 800x600 16 . . AT&T VDC600
48h = T 132x32 8x12 . mono . . Genoa 6400
= T 132x32 9x11 . mono . . Genoa SuperEGA BIOS 3.0+
= G 80x50 8x8 640x400 2 . B800 AT&T 6300, AT&T VDC600
= G 80x50 8x8 640x400 2 . B800 Olivetti Quaderno
49h = T 132x44 8x8 . mono . . Genoa 6400
= T 132x44 9x8 . mono . . Genoa SuperEGA BIOS 3.0+
= G 80x30 8x16 640x480 . . . Lava Chrome II EGA
= G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
4Bh = G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
4Dh = T 120x25 . . . . . VEGA VGA
= G . . 512x480 16M . . Compaq QVision 1024/1280
= G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1
4Eh = T 120x43 . . . . . VEGA VGA
= T 80x60 8x8 . 16/256K . B800 Oak OTI-067/OTI-077 [8]
= G . . 640x400 16M . . Compaq QVision 1024/1280
= G 144x54 8x16 1152x864 . . A000 Diamond Stealth64 Video 2xx1
4Fh = T 132x25 . . . . . VEGA VGA
= T 132x60 . . . . . some Oak Tech VGA [8]
= G . . 640x480 16M . . Compaq QVision 1280
50h = T 80x30 8x16 . 16/256K . B800 Trident TVGA 8800/8900
= T 80x34 . . . . . Lava Chrome II EGA
= T 80x43 . . mono . . VEGA VGA
= T 132x25 9x14 . mono . . Ahead Systems EGA2001
= T 132x25 9x14 . 4 4 B800 Ahead B
= T 132x25 8x14 . 16 8 B800 OAK Technologies VGA-16
= T 132x25 8x14 . 16/256K . B800 Oak OTI-037/067/077 [8]
= T 132x25 8x14 1056x350 16 8 B800 UM587 chipset
= T 132x30 . . 16 . . MORSE VGA
= T 132x30 . . . . . Cirrus 510/520 chipset
= G 80x30 8x16 640x480 16 . . Paradise EGA-480
= G 80x30 8x16 640x480 16 . . NEL Electronics BIOS
= G . . 640x480 mono??? . . Taxan 565 EGA
= G 40x25 8x8 320x200 . . . Genoa SuperEGA BIOS 3.0+
51h = T 80x30 8x16 . . . . Paradise EGA-480
= T 80x30 9x16 . . . . NEL Electronics BIOS
= T 80x30 . . . . . Lava Chrome II EGA
= T 80x43 8x11 . 16/256K . B800 Trident TVGA 8800/8900
= T 132x25 . . mono . . VEGA VGA
= T 132x28 9x12 . 4 4 B800 Ahead B
= T 132x43 8x8 . 16 5 B800 OAK Technologies VGA-16
= T 132x43 8x8 . 16/256K . B800 Oak OTI-037/067/077
= T 132x43 8x8 1056x344 16 5 B800 UM587 chipset
= T 132x50 . . 16 . . MORSE VGA
= T 132x50 . . . . . Cirrus 510/520 chipset
= G 80x34 8x14 640x480 16 . . ATI EGA Wonder
= G 80x25 8x8 640x200 . . . Genoa SuperEGA BIOS 3.0+
52h = T 80x60 . . . . . Lava Chrome II EGA
= T 80x60 8x8 . 16/256K . B800 Trident TVGA 8800/8900
= T 132x43 . . mono . . VEGA VGA
= T 132x44 9x8 . mono . . Ahead Systems EGA2001
= T 132x44 9x8 . 4 2 B800 Ahead B
= T 132x60 . . 16 . . MORSE VGA
= T 132x60 . . . . . Cirrus 510/520 chipset
= G 80x25 8x19 640x480 16 1 A000 AX VGA (Kanji&superimpose)
= G 94x29 8x14 752x410 16 . . ATI EGA Wonder
= G 100x75 8x8 800x600 16 1 A000 OAK Technologies VGA-16
= G 100x75 8x8 800x600 16 . A000 Oak OTI-037 chipset [8]
= G 100x37 8x16 800x600 16 . A000 Oak OTI-067/077 chips [8]
= G 100x75 8x8 800x600 16 . A000 UM587 chipset
= G 128x30 8x16 1024x480 16 . . NEL Electronics BIOS
53h = T 80x25 8x16 . . . . NEL Electronics BIOS
= T 80x60 . . 16 . . MORSE VGA
= T 80x60 . . . . . Cirrus 510/520 chipset
= T 132x25 8x14 . 16/256K . B800 Trident TVGA 8800/8900
= T 132x43 . . . . . Lava Chrome II EGA
= G 80x25 8x19 640x480 16 1 A000 AX VGA (Kanji, no superimp.)
= G . . 640x480 256 . . Oak VGA
= G 80x30 8x16 640x480 256 . A000 Oak OTI-067/OTI-077 [8]
= G 100x40 8x14 800x560 16 . . ATI EGA Wonder,ATI VIP
= G . . . . . . AX PC
54h = T 132x25 . . . . . Lava Chrome II EGA
= T 132x30 8x16 . 16/256K . B800 Trident TVGA 8800/8900
= T 132x43 8x8 . . . . Paradise EGA-480
= T 132x43 8x8 . . . . NEL Electronics BIOS
= T 132x43 7x9 . 16/256K . B800 Paradise VGA
= T 132x43 8x9 . 16/256K . B800 Paradise VGA on multisync
= T 132x43 . . . . . Taxan 565 EGA
= T 132x43 . . . . . AST VGA Plus
= T 132x43 . . . . . Hewlett-Packard D1180A
= T 132x43 7x9 . 16 . . AT&T VDC600
= T 132x43 9x9 1188x387 16/256K . B800 WD90C
= T 132x43 9x9 1188x387 16/256K . B800 Diamond Speedstar 24X
= T 132x43 9x9 1188x387 16/256K . B800 Diamond Stealth 24
= T 132x43 8x8 . . . B800 Diamond Stealth64 Video 2xx1
= T 132x43 8x8 1056x350 16/256K . . Cirrus CL-GD5420/5422/5426
= T 132x50 8x8 . 16 . A000 NCR 77C22 [9]
= G 100x42 8x14 800x600 16 . A000 ATI EGA Wonder, VGA Wonder
= G 100x42 8x14 800x600 16 . A000 ATI Ultra 8514A, ATI XL
= G . . 800x600 256 . A000 Oak VGA
= G 100x37 8x16 800x600 256 . A000 Oak OTI-067/077 chips [8]
55h = T 80x66 8x8 . 16/256K . A000 ATI VIP
= T 132x25 8x14 . . . . Paradise EGA-480
= T 132x25 8x14 . . . . NEL Electronics BIOS
= T 132x25 7x16 . 16/256K . B800 Paradise VGA
= T 132x25 8x16 . 16/256K . B800 Paradise VGA on multisync
= T 132x25 . . . . . Taxan 565 EGA
= T 132x25 . . . . . AST VGA Plus
= T 132x25 . . . . . Hewlett-Packard D1180A
= T 132x25 7x16 . 16 . . AT&T VDC600
= T 132x25 8x16 . 16 . A000 NCR 77C22 [9]
= T 132x25 9x16 1188x400 16/256K . B800 WD90C
= T 132x25 9x16 1188x400 16/256K . B800 Diamond Speedstar 24X
= T 132x25 9x16 1188x400 16/256K . B800 Diamond Stealth 24
= T 132x25 8x16 . . . B800 Diamond Stealth64 Video 2xx1
= T 132x25 8x14 1056x350 16/256K . . Cirrus CL-GD5420/5422/5426
= T 132x43 8x11 . 16/256K . B800 Trident TVGA 8800/8900
= G 94x29 8x14 752x410 . . . Lava Chrome II EGA
= G 128x48 8x16 1024x768 16/256K . A000 ATI VGA Wonder v4+ [5]
= G . . 1024x768 16/256K . . ATI VGA Wonder Plus
= G . . 1024x768 16/256K . . ATI Ultra 8514A,ATI XL
= G 128x48 8x16 1024x768 4 . A000 Oak OTI-067/077 chips [8]
56h = T 132x43 8x8 . 3??? 2 B000 NSI Smart EGA+
= T 132x43 7x9 . 4 . B000 Paradise VGA
= T 132x43 8x9 . 4 . B000 Paradise VGA on multisync
= T 132x43 . . mono . . Taxan 565 EGA
= T 132x43 7x9 . 2 . . AT&T VDC600
= T 132x43 9x8 . . . . NEL Electronics BIOS
= T 132x50 8x8 . 4 . A000 NCR 77C22 [9]
= T 132x60 8x8 . 16/256K . B800 Trident TVGA 8800/8900
= G . . 1024x768 16 . A000 Oak VGA
= G 128x48 8x16 1024x768 16 . A000 Oak OTI-067/077 chips [8]
57h = T 132x25 8x14 . 3??? 4 B000 NSI Smart EGA+
= T 132x25 7x16 . 4 . B000 Paradise VGA
= T 132x25 8x16 . 4 . B000 Paradise VGA on multisync
= T 132x25 9x14 . . . . NEL Electronics BIOS
= T 132x25 . . mono . . Taxan 565 EGA
= T 132x25 7x16 . 2 . . AT&T VDC600
= T 132x25 9x14 . 16/256K . B800 Trident TVGA 8800/8900
= T 132x25 8x16 . 4 . A000 NCR 77C22 [9]
= G 96x48 8x16 768x1024 16 . A000 Oak OTI-067/077 chips [8]
58h = T 80x33 8x14 . 16 . B800 ATI EGA Wonder,ATI VIP
= T 80x32 9x16 . 16 . . Genoa 6400
= T 80x43 8x8 . . . . NEL Electronics BIOS
= T 132x30 9x16 . 16/256K . B800 Trident TVGA 8800/8900
= G 100x75 8x8 800x600 16/256K . A000 Paradise VGA
= G 100x75 8x8 800x600 16 . . AT&T VDC600
= G 100x75 8x8 800x600 16 . A000 NCR 77C22 [9]
= G 100x75 8x8 800x600 16 . A000 Diamond Speedstar 24X
= G 100x75 8x8 800x600 16/256K . A000 Paradise VGA, WD90C
= G . . 800x600 16 . . AST VGA Plus, Compaq VGA
= G . . 800x600 16 . . Dell VGA
= G . . 800x600 16 . . Hewlett-Packard D1180A
= G . . 800x600 ??? . . ELT VGA PLUS 16
= G 100x37 8x16 800x600 16/256K . A000 Cirrus CL-GD5420/5422/5426
= G 160x64 8x16 1280x1024 16 . A000 Oak OTI-077 chipset [8]
59h = T 80x43 9x8 . . . . NEL Electronics BIOS
= T 80x66 8x8 . 16/256K . A000 ATI VIP
= T 132x43 9x11 . 16/256K . B800 Trident TVGA 8800/8900
= G 100x75 8x8 800x600 2 . A000 Paradise VGA
= G 100x75 8x8 800x600 2 . . AT&T VDC600
= G . . 800x600 2 . . AST VGA Plus, Compaq VGA
= G . . 800x600 2 . . Dell VGA
= G . . 800x600 2 . . Hewlett-Packard D1180A
= G 100x75 8x8 800x600 2 . A000 NCR 77C22 [9]
= G 128x48 8x16 1024x768 256 . A000 Oak OTI-077 chipset [8]
5Ah = T 80x60 8x8 . . . . NEL Electronics BIOS
= T 132x60 9x8 . 16/256K . B800 Trident TVGA 8800/8900
= G 128x48 8x16 1024x768 2 . A000 NCR 77C22 [9]
5Bh = T 80x30 8x16 . . . B800 ATI VGA Wonder (undoc)
= G . . 640x350 256 . . Genoa 6400
= G 80x25 8x16 640x400 32K . A000 Oak OTI-067/077 chips [8]
= G . . 800x600 16 . . Maxxon, SEFCO TVGA, Imtec
= G 100x75 8x8 800x600 16/256K . A000 Trident TVGA 8800, 8900
= G . . 800x600 ??? . . Vobis MVGA
= G 100x37 8x16 800x600 . . . NEL Electronics BIOS
= G 128x48 8x16 1024x768 16 . A000 NCR 77C22 [1,9]
5Ch = T 100x37 8x16 . . . . NEL Electronics BIOS
= G . . 640x400 256 . . Logix, ATI Prism Elite
= G . . 640x400 256 . . Maxxon, SEFCO TVGA, Imtec
= G 80x25 8x16 640x400 256/256K . A000 Zymos Poach, Hi Res 512
= G 80x25 8x16 640x400 256/256K . A000 Trident TVGA 8800/8900
= G 80x30 8x16 640x480 256 . . Genoa 6400
= G 80x30 8x16 640x480 32K . A000 Oak OTI-077 chipset [8]
= G 100x75 8x8 800x600 256 . A000 NCR 77C22 [9]
= G 100x75 8x8 800x600 256/256K . A000 WD90C
= G 100x75 8x8 800x600 256/256K . A000 Diamond Speedstar 24X
= G 100x37 8x16 800x600 256/256K . A000 Cirrus CL-GD5420/5422/5426
5Dh = T 100x75 8x8 . . . . NEL Electronics BIOS
= G 80x25 8x14 640x350 64K . . STB Lightspeed ET4000/W32P
= G . . 640x480 256 . . Logix, ATI Prism Elite
= G . . 640x480 256 . . Maxxon, SEFCO TVGA, Imtec
= G 80x30 8x16 640x480 256/256K . A000 Zymos Poach, Hi Res 512
= G 80x30 8x16 640x480 256/256K . A000 Trident TVGA 8800 (512K)
= G 128x48 8x16 1024x768 16 . A000 NCR 77C22 [9]
= G 128x48 8x16 1024x768 16/256K . A000 WD90C
= G 128x48 8x16 1024x768 16 . A000 Diamond Speedstar 24X
= G 128x48 8x16 1024x768 16/256K . A000 Cirrus CL-GD5420/5422/5426
5Eh = G . . 640x400 256 . . Paradise VGA,VEGA VGA
= G . . 640x400 256 . . AST VGA Plus, NCR 77C22
= G . . 640x400 256 . . Compaq VGA, Dell VGA
= G 80x25 8x16 640x400 256 . . AT&T VDC600
= G 80x25 8x16 640x400 256 . A000 NCR 77C22 [9]
= G 80x25 8x16 640x400 256/256K . A000 WD90C
= G 80x25 8x16 640x400 256/256K . A000 Diamond Speedstar 24X
= G . . 800x600 16 . . Logix, ATI Prism Elite
= G 100x37 8x16 800x600 16 . . NEL Electronics BIOS
= G 100x75 8x8 800x600 256 . . Genoa 6400
= G 100x75 8x8 800x600 256/256K . A000 Zymos Poach, Trident 8900
= G 100x75 8x8 800x600 256/256K . A000 Hi Res 512
5Fh = G 80x25 8x16 640x400 64K . . STB Lightspeed ET4000/W32P
= G . . 640x480 256 . . Paradise VGA
= G . . 640x480 256 . . AST VGA Plus, NCR 77C22
= G . . 640x480 256 . . Compaq VGA, Dell VGA
= G . . 640x480 256 . . Hewlett-Packard D1180A
= G 80x30 8x16 640x480 256 . . AT&T VDC600 (512K)
= G 80x30 8x16 640x480 256 . A000 NCR 77C22 [9]
= G 80x30 8x16 640x480 256/256K . A000 WD90C
= G 80x30 8x16 640x480 256/256K . A000 Diamond Speedstar 24X
= G 80x30 8x16 640x480 256/256K . A000 Cirrus CL-GD5420/5422/5426
= G . . 1024x768 16 . . Logix, ATI Prism Elite
= G . . 1024x768 16 . . Maxxon, Imtec
= G 128x48 8x16 1024x768 16 . . Genoa 6400
= G 128x48 8x16 1024x768 16/256K . A000 Zymos Poach, Hi Res 512
= G 128x48 8x16 1024x768 16/256K . A000 Trident TVGA 88/8900 512K
60h = T 132x25 8x14 . 16/64 8 B800 Quadram Ultra VGA
= T 132x25 8x14 . 16 . . Genoa 6400
= T 132x25 8x14 . 16 . . Genoa SuperEGA BIOS 3.0+
= T 132x25 . . . . . Cirrus 5320 chipset
= T 132x25 . . 16 . . Chips&Technologies chipset
= G 80x??? . ???x400 . . . Corona/Cordata BIOS 4.10+
= G 80x25 8x16 640x400 256 1 A000 Ahead A, Ahead B
= G . . 752x410 . . . VEGA VGA
= G . . 752x410 16 . . Tatung VGA
= G . . 752x410 16 . . Video7 V-RAM VGA
= G 128x48 8x16 1024x768 4/256K . A000 Trident TVGA 8900
= G 128x48 8x16 1024x768 256/256K . A000 WD90C
= G 128x48 8x16 1024x768 256/256K . A000 Diamond Speedstar 24X
= G 128x48 8x16 1024x768 256/256K . A000 Cirrus CL-GD5420/5422/5426
= G 144x54 8x16 1152x864 . . A000 Diamond Stealth64 Video 2xx1
61h = T 132x29 8x12 . 16/64 8 B800 Quadram Ultra VGA
= T 132x29 8x8 . 16 . . Genoa 6400
= T 132x29 8x8 . 16 . . Genoa SuperEGA BIOS 3.0+
= T 132x50 . . . . . Cirrus 5320 chipset
= T 132x50 . . 16 . . Chips&Technologies chipset
= G . . ???x400 . . . Corona/Cordata BIOS 4.10+
= G 80x25 8x16 640x400 256 . A000 ATI VGA Wonder,VGA Wonder+
= G 80x25 8x16 640x400 256 . A000 ATI Ultra 8514A,ATI XL
= G 80x25 8x16 640x400 . . A000 Diamond Stealth64 Video 2xx1
= G 80x30 8x16 640x480 256 1 A000 Ahead A, Ahead B (512K)
= G . . 720x540 . . . VEGA VGA
= G . . 720x540 16 . . Tatung VGA
= G . . 720x540 16 . . Video7 V-RAM VGA
= G 96x64 8x16 768x1024 16/256K . A000 Trident TVGA 88/8900 512K
= G 128x48 8x16 1024x768 256 . A000 NCR 77C22 [1,9]
= G 144x54 8x16 1152x864 . . A000 Diamond Stealth64 Video 2xx1
62h = T 132x32 8x11 . 16/64 6 B800 Quadram Ultra VGA
= T 132x32 8x12 . 16 . . Genoa 6400
= T 132x32 8x11 . 16 . . Genoa SuperEGA BIOS 3.0+
= G . . 640x450 16 . . Cirrus 510/520 chipset
= G 80x30 8x16 640x480 256 . A000 ATI VGA Wonder,VGA Wonder+
= G 80x30 8x16 640x480 256 . A000 ATI Ultra 8514A,ATI XL
= G 80x30 8x16 640x480 32K . A000 WD90C
= G 80x30 8x16 640x480 32K . A000 Diamond Speedstar 24X
= G . . 800x600 . . . VEGA VGA
= G . . 800x600 16 . . Tatung VGA
= G . . 800x600 16 . . Video7 V-RAM VGA
= G 100x75 8x8 800x600 256 1 A000 Ahead A, Ahead B (512K)
= G 128x48 8x16 1024x768 256/256K . A000 Trident TVGA 8900, Zymos
= G 128x48 8x16 1024x768 256 . A000 NCR 77C22 [9]
63h = T 132x44 8x8 . 16/64 5 B800 Quadram Ultra VGA
= T 132x44 8x8 . 16 . . Genoa 6400
= T 132x44 8x8 . 16 . . Genoa SuperEGA BIOS 3.0+
= G . . 720x540 16 . . MORSE VGA
= G . . 720x540 16 . . Cirrus 510/520 chipset
= G 100x42 8x14 800x600 256 . A000 ATI VGA Wonder,VGA Wonder+
= G 100x42 8x14 800x600 256 . A000 ATI Ultra 8514A,ATI XL
= G . . 800x600 32K . A000 WD90C
= G . . 800x600 32K . A000 Diamond Speedstar 24X
= G 128x48 7x16 1024x768 256 1 A000 Ahead B (1MB)
= G . . 1024x768 2 . . Video7 V-RAM VGA
64h = T 132x60 8x8 . 16 . . Genoa 6400
= G . . 640x480 64K . A000 Cirrus CL-GD 5422/5426
= G . . 800x600 16 . . MORSE VGA
= G . . 800x600 16 . . Cirrus 510/520 chipset
= G . . 800x600 ??? . . SAMPO-Mira VGA
= G . . 1024x768 4 . . Video7 V-RAM VGA
= G 128x48 8x16 1024x768 256 . A000 ATI VGA Wonder Plus,ATI XL
= G 160x64 8x16 1280x1024 16/256K . A000 WD90C [1]
= G 160x64 8x16 1280x1024 16/256K . A000 Diamond Speedstar 24X [1]
65h = G . . 800x600 64K . A000 Cirrus CL-GD 5422/5426
= G . . 1024x768 16 . . Video7 V-RAM VGA
= G 128x48 8x16 1024x768 16 . A000 ATI VGA Wonder
66h = T 80x50 8x8 640x400 16/256K . B800 WD90C
= T 80x50 8x8 . 16 . B800 Diamond Speedstar 24X
= G . . 640x400 256 . . Tatung VGA
= G . . 640x400 256 . . Video7 V-RAM VGA
= G . . 640x480 32K . A000 Cirrus CL-GD 5422/5426
67h = T 80x43 8x8 640x344 16/256K . B800 WD90C
= T 80x43 8x8 . 16 . B800 Diamond Speedstar 24X
= G . . 640x480 256 . . Video7 V-RAM VGA
= G . . 800x600 32K . A000 Cirrus CL-GD 5422/5426
= G 128x48 8x16 1024x768 4 . A000 ATI VGA Wonder
= G 160x64 8x16 1280x1024 16 . A000 NCR 77C22 [1,9]
68h = G 80x25 8x16 640x400 . . A000 Diamond Stealth64 Video 2xx1
69h = T 132x50 8x8 1056x400 16/256K . B800 WD90C
= T 132x50 8x8 . 16 . B800 Diamond Speedstar 24X
= G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
= G . . 720x540 256 . A000 Video7 V-RAM VGA
6Ah = G . . 800x600 16 . A000 VESA standard interface
= G 100x75 8x8 800x600 16 . A000 Genoa 6400
= G 100x75 8x8 800x600 16 . A000 Diamond Speedstar 24X
= G . . 800x600 16 . A000 Ahead A
= G 100x75 8x8 800x600 16 1 A000 Ahead B (VESA) [see 71h]
= G . . 800x600 16 . . Zymos Poach, Hi Res 512
= G . . 800x600 16 . . Epson LT-386SX in CRT Mode
= G . . 800x600 16 . . Compuadd 316SL in CRT Mode
= G 100x37 8x16 800x600 16/256K . A000 Cirrus CL-GD5420/5422/5426
= G 100x37 8x16 800x600 16 . A000 Diamond Stealth64 Video 2xx1
= G 100x42 8x14 800x600 . . A000 ATI VGA Wonder (undoc)
= G . . 800x600 16 . A000 Chips&Technologies chipset
= G 160x64 8x16 1280x1024 256 . A000 NCR 77C22 [1,9]
6Bh = T 100x37 8x16 . 16 . . Genoa 6400
= T 100x37 8x16 . . . . NEL Electronics BIOS
= G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
6Ch = G 80x30 8x16 640x480 16M . A000 Trident 8900CL/BIOS C04
= G 100x75 8x8 800x600 256 . . Genoa 6400
= G 128x48 8x16 1024x768 2 . A000 Diamond Stealth64 Video 2xx1
= G 160x60 8x16 1280x960 16/256K . A000 WD90C [1]
= G 160x60 8x16 1280x960 16/256K . A000 Diamond Speedstar 24X [1]
= G 160x64 8x16 1280x1024 16/256K . A000 Cirrus CL-GD 5422/5426 [1]
6Dh = G 80x25 8x14 640x350 64K . A000 STB Lightspeed ET4000/W32P
= G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1
= G 160x64 8x16 1280x1024 256/256K . A000 Cirrus CL-GD 5422/5426 [1]
6Eh = G 40x25 8x8 320x200 64K . A000 Cirrus CL-GD 5422/5426
= G 160x64 8x16 1280x1024 2 . A000 Diamond Stealth64 Video 2xx1
6Fh = G 40x25 8x8 320x200 16M . A000 Cirrus CL-GD 5422/5426
= G 160x64 8x16 1280x1024 . . A000 Diamond Stealth64 Video 2xx1
70h = extended mode set (see AX=0070h) . Everex Micro Enhancer EGA
= T 40x25 8x8 . 16 8 B800 Quadram (CGA double scan)
= T 40x25 8x8 (CGA dblscan) . . Genoa SuperEGA BIOS 3.0+
= G . . 360x480 256 . . Cirrus 510/520/5320 chips
= G 90x28 8x14 720x392 16 1 A000 Ahead B
= G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
= G . . 800x600 16 . . C&T chipset, Cardinal
= G . . 1024x480 256 . A000 Trident 8900C BIOS C3.0
71h = T 80x25 8x8 . 16 8 B800 Quadram (CGA double scan)
= T 80x25 8x8 (CGA dblscan) . . Genoa SuperEGA BIOS 3.0+
= G . . 528x400 256 . . Cirrus 510/520 chipset
= G 80x30 8x16 640x480 16M . A000 Cirrus CL-GD 5422/5426
= G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
= G 100x35 8x16 800x600 16/64 . A000 NSI Smart EGA+
= G 100x75 8x8 800x600 16 1 A000 Ahead B (same as 6Ah)
= G . . 960x720 16 . . C&T chipset, Cardinal
= G . . 1024x480 256 . A000 Trident 8900C BIOS C3.0
72h = T 80x60 8x8 . 16 . B800 Quadram Ultra VGA
= T 80x60 8x8 . 16 . B800 Genoa 6400
= T 80x60 8x8 . 16 . B800 Genoa SuperEGA BIOS 3.0+
= G . . 528x480 256 . . Cirrus 510/520 chipset
= G 80x25 8x19 640x480 16 1 A000 DOS/V w/ any VGA
= G 80x30 8x16 640x480 . . A000 Diamond Stealth64 Video 2xx1
= G . . 640x480 32K . A000 ATI
= G . . 640x480 16M . A000 WD90C
= G . . 640x480 16M . A000 Diamond Speedstar 24X
= G . . 1024x768 16 . . C&T chipset, Cardinal
73h = G 80x60 8x8 640x480 16 . A000 Quadram Ultra VGA
= G 80x60 8x8 640x480 16 . . Genoa 6400
= G 80x60 8x8 640x480 16 . . Genoa SuperEGA BIOS 3.0+
= G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
= T 80x25 8x19 640x475 16 1 none DOS/V, emulated in VGA graph
74h = T 80x66 8x8 . 16 . B800 Quadram Ultra VGA
= T 80x66 8x8 . 16 . B800 Genoa 6400
= T 80x66 8x8 . 16 . B800 Genoa SuperEGA BIOS 3.0+
= G . . 640x400 2 . B800 Toshiba 3100 AT&T mode
= G 80x30 8x16 640x480 32K . A000 Trident 8900C/BIOS C03
= G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
= G 128x48 8x16 1024x768 16 1 A000 Ahead A, Ahead B (512K)
= G . . 1024x768 64K . A000 Cirrus CL-GD 5422/5426 [1]
75h = G 80x30 8x16 640x480 64K . A000 Trident 8900C/BIOS C03
= G 80x66 . 640x528 16??? . A000 Quadram Ultra VGA
= G 80x66 . 640x528 16 . . Genoa SuperEGA BIOS 3.0+
= G 100x37 8x16 800x600 . . A000 Diamond Stealth64 Video 2xx1
= G 128x48 8x16 1024x768 4 1 A000 Ahead B
76h = T 94x29 8x14 . 16 . B800 Quadram Ultra VGA
= T 94x29 8x14 . . . . Genoa SuperEGA BIOS 3.0+
= G 100x75 8x8 800x600 32K . A000 Trident 8900C/BIOS C03
= G 128x48 8x16 1024x768 2 1 A000 Ahead B
= G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1
77h = G 94x29 . 752x410 16??? . A000 Quadram Ultra VGA
= G 94x29 . 752x410 16 . . Genoa SuperEGA BIOS 3.0+
= G 100x75 8x8 800x600 64K . A000 Trident 8900C/BIOS C03
= G 128x48 8x16 1024x768 . . A000 Diamond Stealth64 Video 2xx1
78h = T 100x37 8x16 . 16 . . Genoa 6400
= T 100x75 8x8 . 16 . B800 Quadram Ultra VGA
= T 100x75 8x8 . . . . Genoa SuperEGA BIOS 3.0+
= G . . 640x400 256 . . STB VGA/EM-16 Plus
= G . . 640x400 256 . . Cardinal, C&T chipset
= G . . 640x400 256 . . Cirrus 5320 chipset
79h = G . . 640x480 256 . . Cardinal, C&T chipset
= G 100x75 . 800x600 16??? . A000 Quadram Ultra VGA
= G 100x75 8x8 800x600 16 . . Genoa SuperEGA BIOS 3.0+
= G 100x75 8x8 800x600 16 . . Genoa 6400
7Ah = T 114x60 8x8 . 16 . B800 Quadram Ultra VGA
= T 114x60 8x8 . . . . Genoa SuperEGA BIOS 3.0+
= G . . 720x540 256 . . C&T chipset, Cardinal
7Bh = G . . 800x600 256 . . C&T chipset, Cardinal
= G 114x60 . 912x480 16??? . A000 Quadram Ultra VGA
= G . . 912x480 16 . . Genoa SuperEGA BIOS 3.0+
7Ch = G . . 512x512 16 . . Genoa
= G . . 800x600 256 . . C&T 82C453 chipset
= G 200x75 8x16 1600x1200 . [16] . A000 Diamond Stealth64 Video 2xx1
7Dh = G 64x32 8x16 512x512 256 . . Genoa
7Eh = special mode set (see AX=007Eh) . Paradise VGA, AT&T VDC600
= G 80x25 8x16 640x400 256 . . Genoa 6400
= G . . 1024x768 256 . . C&T 82C453 chipset
= G 90x43 . . mono . B000 HERCULES.COM on HGC [14]
7Fh = special function set (see AX=007Fh/BH=00h) Paradise VGA, AT&T VDC600
= G 128x48 8x16 1024x768 4 . . Genoa 6400
= G 90x29 . . mono . B000 HERCULES.COM on HGC [14]
82h = T 80x25 . . B&W . . AT&T VDC overlay mode [6]
83h = T 80x25 . . . . . AT&T VDC overlay mode [6]
86h = G . . 640x200 B&W . . AT&T VDC overlay mode [6]
88h = G 90x43 8x8 720x348 mono . B000 Hercules + MSHERC.COM
C0h = G . . 640x400 2/prog palette . AT&T VDC overlay mode [6]
= G . . 640x400 2/prog palette . Olivetti Quaderno overlay
C4h = disable output . . . . AT&T VDC overlay mode [6]
C8h = G 80x50 8x8 640x400 2 . B800 Olivetti Quaderno overlay
D0h = G . . 640x400 2 . B800 DEC VAXmate AT&T mode
Notes:
[1] interlaced only
[2] for ATI EGA Wonder, mode 08h is only valid if SMS.COM is loaded resident.
SMS maps mode 08h to mode 27h if the byte at location 0040:0063 is 0B4h,
otherwise to mode 23h, thus selecting the appropriate (monochrome or
color) 132x25 character mode.
for ATI VGA Wonder, mode 08h is the same, and only valid if VCONFIG loaded
resident
[3] early XGA boards support 132-column text but do not have this BIOS mode
[4] DESQview intercepts calls to change into these two modes (21h is page 0,
22h is page 1) even if there is no Hercules graphics board installed
[5] ATI BIOS v4-1.00 has a text-scrolling bug in this mode
[6] for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h,
40h, or 44h
[7] BIOS text support is broken in this undocumented mode; scrolling moves
only about 1/3 of the screen (and does even that portion incorrectly),
while screen clears only clear about 3/4.
[8] The Oak OTI-037/067/077 modes are present in the Oak VGA BIOS, which OEMs
may choose to use only partially or not at all; thus, not all Oak boards
support all "Oak" modes listed here
[9] this card uses the full 128K A000h-BFFFh range for the video buffer,
precluding the use of a monochrome adapter in the same system
[10] mode 17h supported by Tseng ET4000 BIOS 8.01X dated 09/14/90, but not
v8.01X dated 02/28/92; mode 21h supported by 02/28/92 version but not
09/14/90 version
[11] HERKULES simulates a 90x45 text mode in Hercules graphics mode; the
installation check for HERKULES.COM is the signature "Herkules" two
bytes beyond the INT 10 handler
[12] The Realtek RTVGA BIOS v3.C10 crashes when attempting to switch into
modes 21h or 27h; this version of the BIOS also sets the BIOS data area
incorrectly for extended text modes, resulting in scrolling after only
24 lines (the VMODE.EXE utility does set the data area correctly)
[13] The Tandy 1000SL/TL BIOS does not actually support this mode
[14] HERCULES.COM is a graphics-mode BIOS extension for Hercules-compatible
graphics cards by Soft Warehouse, Inc. Its installation check is to
test whether the word preceding the INT 10 handler is 4137h.
[15] The Hercules-graphics video modes for HERCBIOS (shareware by Dave
Tutelman) may be changed by a command-line switch; the 90x43
character-cell mode's number is always one higher than the 90x29 mode
(whose default is mode 08h)
[16] Stealth64 Video 2001-series BIOS v1.03 reports 76 lines for mode 7Ch,
resulting in incorrect scrolling for TTY output (scrolling occurs only
after the end of the 76th line, which is not displayed)
[17] For 43-line text on EGA or 43/50-line text on VGA, you must load an 8x8
font using AX=1102h after switching to mode 3; VGA may also require
using INT 10/AH=12h/BL=30h
SeeAlso: #0010,#0081,#0123
Index: video modes
Index: installation check;HERKULES|installation check;HERCULES.COM
--------V-100070-----------------------------
INT 10 - VIDEO - Everex Micro Enhancer EGA/Viewpoint VGA - EXTENDED MODE SET
AX = 0070h
BL = mode (see #0010)
Desc: specify a proprietary display mode on the Everex Micro Enhancer or
Viewpoint video adapters
SeeAlso: AH=00h,AX=6F05h,AX=7000h/BX=0004h,AH=FFh"GO32"
(Table 0010)
Values for Everex video mode:
text/ text pixel pixel colors disply scrn monitor adapter
grph resol box resolution pages addr
00h = G . . 640x480 16 . . multisync EGA,VGA
01h = G . . 752x410 16 . . multisync EGA,VGA
02h = G . . 800x600 16 . . multisync EGA,VGA
03h = T 80x34 . . . . . multisync EGA,VGA
04h = T 80x60 . . . . . multisync EGA,VGA
05h = T 94x29 . . . . . multisync EGA only
06h = T 94x51 . . . . . multisync EGA only
07h = T 100x43 8x14 . 16 . . . VGA only
08h = T 100x75 8x8 . 16 . . . VGA only
09h = T 80x44 . . . . . EGA EGA only
0Ah = T 132x25 . . . . . EGA EGA,VGA
0Bh = T 132x44 . . . . . EGA EGA,VGA
0Ch = T 132x25 . . . . . CGA EGA only
0Dh = T 80x44 . . . . . mono EGA only
0Eh = T 132x25 . . . . . mono
0Fh = T 132x44 . . . . . mono
10h = reserved
11h = G . . 1280x350 4 . . . EGA only
12h = G . . 1280x600 4 . . . EGA only
13h = G . . 640x350 256 . . . EGA,EV673
14h = G . . 640x400 256 . . .
15h = G . . 512x480 256 . . .
16h = T 80x30 8x16 . 256 . . . VGA only
18h = T 100x27 8x16 . 16 . . . VGA only
20h = G . . 1024x768 16 . . . Everex 629,678
. . . . . . . Everex EV-673
21h = T 160x64 8x16 1280x1024 16 . . . 1MB VGA only
30h = G . . 640x480 256 . . . Everex 629,678
. . . . . . . Everex EV-673
31h = G . . 800x600 256 . . . Everex 629,678
. . . . . . . Everex EV-673
32h = G 128x48 8x16 1024x768 256 . . . 1MB VGA only
40h = T 132x30 8x16 . 16 . . . VGA only
50h = T 132x32 8x16 . mono . . . VGA only
62h = G 40x25 8x8 320x200 32K . . . Vwpt TC (EV629)
70h = G 64x30 8x16 512x480 32K . . . Viewpoint TC
71h = G 80x30 8x16 640x480 32K . . . Viewpoint TC
76h = G 64x30 8x16 512x480 16M . . . Viewpoint TC
77h = G 80x30 8x16 640x480 16M . . . Viewpoint TC
SeeAlso: #0009,#0123
Index: video modes;Everex
--------V-10007E-----------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET SPECIAL MODE
AX = 007Eh
BX = horizontal dimension of the mode desired
CX = vertical dimension of the mode desired
(both BX/CX in pixels for graphics modes, rows for alpha modes)
DX = number of colors of the mode desired (0000h for monochrome modes)
Return: BH = 7Eh if successful (Paradise VGA)
AL = 7Eh if successful (AT&T VDC600)
Desc: specify a display mode by resolution rather than mode number
SeeAlso: AH=00h,AX=0070h,AX=007Fh/BH=00h,AX=6F05h,AH=FFh"GO32"
Index: video modes;Paradise|video modes;AT&T
--------V-10007FBH00-------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET VGA OPERATION
AX = 007Fh
BH = 00h
Return: AL = 7Fh if successful (AT&T VDC600)
BH = status (Paradise/Dell)
00h invalid function
7Fh successful
SeeAlso: AX=007Fh/BH=01h,AX=007Fh/BH=02h
--------V-10007FBH01-------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - SET NON-VGA OPERATION
AX = 007Fh
BH = 01h
Return: AL = 7Fh if successful (AT&T VDC600)
BH = status (Paradise/Dell)
00h invalid function
7Fh successful
Note: color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation, monochrome
mode 7 will set non-VGA MDA/Hercules operation
SeeAlso: AX=007Fh/BH=00h,AX=007Fh/BH=02h
--------V-10007FBH02-------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - QUERY MODE STATUS
AX = 007Fh
BH = 02h
Return: AL = 7Fh if successful (AT&T VDC600)
BH = status (Paradise/Dell)
00h invalid function
7Fh successful
---if successful---
BL = 00h if operating in VGA mode, 01h if non-VGA mode
CH = total video RAM size in 64k byte units
CL = video RAM used by the current mode
Note: under Novell DOS 7 TaskMgr Multitasker, this call always returns 0K
video memory in CX
SeeAlso: AX=007Fh/BH=00h,AX=007Fh/BH=01h
--------V-10007FBH03-------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - LOCK CURRENT MODE
AX = 007Fh
BH = 03h
Return: AL = 7Fh if successful (AT&T VDC600)
BH = status (Paradise/Dell)
00h invalid function
7Fh successful
Desc: allows current mode (VGA or non-VGA) to survive re-boot
SeeAlso: AX=007Eh,AX=007Fh/BH=04h,AX=007Fh/BH=06h,AH=FFh"Oak"
--------V-10007FBH04-------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER MDA EMULATION MODE
AX = 007Fh
BH = 04h
Return: AL = 7Fh if successful (AT&T VDC600)
BH = status (Paradise/Dell)
00h invalid function
7Fh successful
SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=05h,AH=FFh"Oak"
--------V-10007FBH05-------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER CGA EMULATION MODE
AX = 007Fh
BH = 05h
Return: AL = 7Fh if successful (AT&T VDC600)
BH = status (Paradise/Dell)
00h invalid function
7Fh successful
SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=04h,AH=FFh"Oak"
--------V-10007FBH06-------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER MONOCHROME VGA MODE
AX = 007Fh
BH = 06h
Return: AL = 7Fh if successful (AT&T VDC600)
BH = status (Paradise/Dell)
00h invalid function
7Fh successful
Note: this function also switches to video mode 7
SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=07h,AH=FFh"Oak"
--------V-10007FBH07-------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - ENTER COLOR VGA MODE
AX = 007Fh
BH = 07h
Return: AL = 7Fh if successful (AT&T VDC600)
BH = status (Paradise/Dell)
00h invalid function
7Fh successful
Note: this function also switches to video mode 3
SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=06h,AH=FFh"Oak"
--------V-10007F-----------------------------
INT 10 - VIDEO - Paradise VGA, AT&T VDC600 - EXTENDED DATA REGISTER ACCESS
AX = 007Fh
BH = function
0Ah,0Bh,0Ch,0Dh,0Eh,0Fh WRITE PARADISE REGISTERS 0,1,2,3,4,5
(port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
BL = value to set in the paradise register
1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5
(port 03CEh indices 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh)
Return: BL = value of the paradise register
BH = 7Fh if successful
29h-2Fh ??? (Paradise VGA for Dell, 7/24/91)
Return: AL = 7Fh if successful (AT&T VDC600)
BH = status (Paradise/Dell)
00h invalid function
7Fh successful
SeeAlso: AX=007Eh,AX=007Fh/BH=03h,AX=007Fh/BH=05h,AH=FFh"Oak"
--------V-10007FBH60-------------------------
INT 10 - Paradise VGA - ???
AX = 007Fh
BH = 60h
BL = ??? (00h-13h)
???
Return: BH = status (00h failed or not supported, 7Fh successful)
???
Note: this function is supported by the 5/14/93 ROM for the Dell 486D
SeeAlso: AX=007Fh/BH=61h
--------V-10007FBH61-------------------------
INT 10 - Paradise VGA - ???
AX = 007Fh
BH = 61h
ES:DI -> buffer for list of ??? (see #0011)
Return: BH = status (00h failed or not supported, 7Fh successful)
???
Note: this function is supported by the 5/14/93 ROM for the Dell 486D
SeeAlso: AX=007Fh/BH=60h
Format of Paradise VGA list entry:
Offset Size Description (Table 0011)
00h BYTE ??? or 00h if end of list
01h BYTE ???
02h WORD ???
04h WORD ???
06h WORD ???
--------V-10007FBXA500-----------------------
INT 10 - Paradise VGA - ???
AX = 007Fh
BX = A500h
???
Return: BH = status (00h failed or not supported, 7Fh successful)
???
Note: this function is supported by the 5/14/93 ROM for the Dell 486D
SeeAlso: AX=007Fh/BH=A6h
--------V-10007FBHA5-------------------------
INT 10 - Paradise VGA - ???
AX = 007Fh
BH = A5h
BL = ???
bits 3-0: ??? (0-4)
bits 5,4: ???
???
Return: BH = status (00h failed or not supported, 7Fh successful)
???
Note: this function is supported by the 5/14/93 ROM for the Dell 486D
--------V-10007FBHA6-------------------------
INT 10 - Paradise VGA - ???
AX = 007Fh
BH = A6h
???
Return: BH = status (00h failed or not supported, 7Fh successful)
???
Note: this function is supported by the 5/14/93 ROM for the Dell 486D
SeeAlso: AX=007Fh/BH=A5h
--------V-1001-------------------------------
INT 10 - VIDEO - SET TEXT-MODE CURSOR SHAPE
AH = 01h
CH = cursor start and options (see #0012)
CL = bottom scan line containing cursor (bits 0-4)
Return: nothing
Desc: specify the starting and ending scan lines to be occupied by the
hardware cursor in text modes
Notes: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but
returns unmapped cursor shape
UltraVision scales size to the current font height by assuming 14-line
monochrome and 8-line color fonts; this call is not valid if cursor
emulation has been disabled
applications which wish to change the cursor by programming the
hardware directly on EGA or above should call INT 10/AX=1130h or
read 0040h:0085h first to determine the current font height
on some adapters, setting the end line greater than the number of lines
in the font will result in the cursor extending to the top of the
next character cell on the right
BUG: AMI 386 BIOS and AST Premier 386 BIOS will lock up the system if AL
is not equal to the current video mode
SeeAlso: AH=03h,AX=CD05h,AH=12h/BL=34h,#3556
Bitfields for cursor start and options:
Bit(s) Description (Table 0012)
7 should be zero
6,5 cursor blink
(00=normal, 01=invisible, 10=erratic, 11=slow)
(00=normal, other=invisible on EGA/VGA)
4-0 topmost scan line containing cursor
--------V-1002-------------------------------
INT 10 - VIDEO - SET CURSOR POSITION
AH = 02h
BH = page number
0-3 in modes 2&3
0-7 in modes 0&1
0 in graphics modes
DH = row (00h is top)
DL = column (00h is left)
Return: nothing
SeeAlso: AH=03h,AH=05h,INT 60/DI=030Bh,MEM 0040h:0050h
--------V-1003-------------------------------
INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
AH = 03h
BH = page number
0-3 in modes 2&3
0-7 in modes 0&1
0 in graphics modes
Return: AX = 0000h (Phoenix BIOS)
CH = start scan line
CL = end scan line
DH = row (00h is top)
DL = column (00h is left)
Notes: a separate cursor is maintained for each of up to 8 display pages
many ROM BIOSes incorrectly return the default size for a color display
(start 06h, end 07h) when a monochrome display is attached
SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h,MEM 0040h:0050h,MEM 0040h:0060h
--------V-1004-------------------------------
INT 10 - VIDEO - READ LIGHT PEN POSITION (except VGA)
AH = 04h
Return: AH = light pen trigger flag
00h not down/triggered
01h down/triggered
DH,DL = row,column of character light pen is on
CH = pixel row (graphics modes 04h-06h)
CX = pixel row (graphics modes with >200 rows)
BX = pixel column
Desc: determine the current position and status of the light pen (if
present)
Notes: on a CGA, returned column numbers are always multiples of 2 (320-
column modes) or 4 (640-column modes)
returned row numbers are only accurate to two lines
--------V-1004------------------------------------
INT 10 - HUNTER 16 - GET CURSOR ADDRESS
AH = 04h
BH = page
Return: DH = row (0..24)
DL = column (0..79)
CH = cursor pixel Y-address (0..199)
CL = cursor pixel X-address (0..639)
Notes: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
pixel coordinates are for the lower left corner of the character cell
containing the cursor
SeeAlso: AH=60h"HUNTER"
--------V-1005-------------------------------
INT 10 - VIDEO - SELECT ACTIVE DISPLAY PAGE
AH = 05h
AL = new page number (00h to number of pages - 1) (see #0009)
Return: nothing
Desc: specify which of possibly multiple display pages will be visible
Note: to determine whether the requested page actually exists, use AH=0Fh
to query the current page after making this call
SeeAlso: AH=0Fh,AH=43h,AH=45h,MEM 0040h:0062h,MEM 0040h:004Eh
--------V-100500-----------------------------
INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - SET GRAPHICS BITMAP BUFFER
AX = 0500h
BX = segment of buffer
Return: nothing
Desc: set the address of graphics bitmap buffer for video modes 60h and 61h
SeeAlso: AX=050Fh"Corona"
--------V-10050F-----------------------------
INT 10 - VIDEO - Corona/Cordata BIOS v4.10+ - GET GRAPHICS BITMAP BUFFER
AX = 050Fh
Return: DX = segment of graphics bitmap buffer
Desc: get the address of graphics bitmap buffer for video modes 60h and 61h
SeeAlso: AX=0500h"Corona"
--------V-100580-----------------------------
INT 10 - VIDEO - PCjr, Tandy 1000 - GET CRT/CPU PAGE REGISTERS
AX = 0580h
Return: BH = CRT page register
BL = CPU page register
Notes: the CPU page determines which 16K block of the first 128K of physical
memory will be mapped at B800h by the hardware
the CRT page determines the start address of the memory used by the
video controller
SeeAlso: AH=05h"SET CRT/CPU"
--------V-1005-------------------------------
INT 10 - VIDEO - PCjr, Tandy 1000 - SET CRT/CPU PAGE REGISTERS
AH = 05h
AL = subfunction
81h set CPU page register
BL = CPU page
82h set CRT page register
BH = CRT page
83h set both CPU and CRT page registers
BL = CPU page
BH = CRT page
Return: nothing
Notes: the CPU page determines which 16K block of the first 128K of physical
memory will be mapped at B800h by the hardware
the CRT page determines the start address of the memory used by the
video controller
SeeAlso: AX=0580h
--------V-1006-------------------------------
INT 10 - VIDEO - SCROLL UP WINDOW
AH = 06h
AL = number of lines by which to scroll up (00h = clear entire window)
BH = attribute used to write blank lines at bottom of window
CH,CL = row,column of window's upper left corner
DH,DL = row,column of window's lower right corner
Return: nothing
Note: affects only the currently active page (see AH=05h)
BUGS: some implementations (including the original IBM PC) have a bug which
destroys BP
the Trident TVGA8900CL (BIOS dated 9/8/92) clears DS to 0000h when
scrolling in an SVGA mode (800x600 or higher)
SeeAlso: AH=07h,AH=12h"Tandy 2000",AH=72h,AH=73h,AX=7F07h,INT 50/AX=0014h
--------V-1007-------------------------------
INT 10 - VIDEO - SCROLL DOWN WINDOW
AH = 07h
AL = number of lines by which to scroll down (00h=clear entire window)
BH = attribute used to write blank lines at top of window
CH,CL = row,column of window's upper left corner
DH,DL = row,column of window's lower right corner
Return: nothing
Note: affects only the currently active page (see AH=05h)
BUGS: some implementations (including the original IBM PC) have a bug which
destroys BP
the Trident TVGA8900CL (BIOS dated 9/8/92) clears DS to 0000h when
scrolling in an SVGA mode (800x600 or higher)
SeeAlso: AH=06h,AH=12h"Tandy 2000",AH=72h,AH=73h,INT 50/AX=0014h
--------V-1008-------------------------------
INT 10 - VIDEO - READ CHARACTER AND ATTRIBUTE AT CURSOR POSITION
AH = 08h
BH = page number (00h to number of pages - 1) (see #0009)
Return: AH = character's attribute (text mode only) (see #0013)
AH = character's color (Tandy 2000 graphics mode only)
AL = character
Notes: for monochrome displays, a foreground of 1 with background 0 is
underlined
the blink bit may be reprogrammed to enable intense background colors
using AX=1003h or by programming the CRT controller
the foreground intensity bit (3) can be programmed to switch between
character sets A and B on EGA and VGA cards, thus enabling 512
simultaneous characters on screen. In this case the bit's usual
function (intensity) is regularly turned off.
in graphics modes, only characters drawn with white foreground pixels
are matched by the pattern-comparison routine
on the Tandy 2000, BH=FFh specifies that the current page should be
used
SeeAlso: AH=09h,AX=1003h,AX=1103h,AH=12h/BL=37h,AX=5001h
Bitfields for character's display attribute:
Bit(s) Description (Table 0013)
7 foreground blink or (alternate) background bright (see also AX=1003h)
6-4 background color (see #0014)
3 foreground bright or (alternate) alternate character set (see AX=1103h)
2-0 foreground color (see #0014)
SeeAlso: #0025
(Table 0014)
Values for character color:
Normal Bright
000b black dark gray
001b blue light blue
010b green light green
011b cyan light cyan
100b red light red
101b magenta light magenta
110b brown yellow
111b light gray white
--------V-1009-------------------------------
INT 10 - VIDEO - WRITE CHARACTER AND ATTRIBUTE AT CURSOR POSITION
AH = 09h
AL = character to display
BH = page number (00h to number of pages - 1) (see #0009)
background color in 256-color graphics modes (ET4000)
BL = attribute (text mode) or color (graphics mode)
if bit 7 set in <256-color graphics mode, character is XOR'ed
onto screen
CX = number of times to write character
Return: nothing
Notes: all characters are displayed, including CR, LF, and BS
replication count in CX may produce an unpredictable result in graphics
modes if it is greater than the number of positions remaining in the
current row
SeeAlso: AH=08h,AH=0Ah,AH=4Bh"GRAFIX",INT 17/AH=60h,INT 1F"SYSTEM DATA"
SeeAlso: INT 43"VIDEO DATA",INT 44"VIDEO DATA"
--------V-100A-------------------------------
INT 10 - VIDEO - WRITE CHARACTER ONLY AT CURSOR POSITION
AH = 0Ah
AL = character to display
BH = page number (00h to number of pages - 1) (see #0009)
background color in 256-color graphics modes (ET4000)
BL = attribute (PCjr, Tandy 1000 only) or color (graphics mode)
if bit 7 set in <256-color graphics mode, character is XOR'ed
onto screen
CX = number of times to write character
Return: nothing
Notes: all characters are displayed, including CR, LF, and BS
replication count in CX may produce an unpredictable result in graphics
modes if it is greater than the number of positions remaining in the
current row
SeeAlso: AH=08h,AH=09h,AH=11h"Tandy 2000",AH=4Bh,INT 17/AH=60h
SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA",INT 44"VIDEO DATA"
--------V-100B--BH00-------------------------
INT 10 - VIDEO - SET BACKGROUND/BORDER COLOR
AH = 0Bh
BH = 00h
BL = background/border color (border only in text modes)
Return: nothing
SeeAlso: AH=0Bh/BH=01h
--------V-100B--BH01-------------------------
INT 10 - VIDEO - SET PALETTE
AH = 0Bh
BH = 01h
BL = palette ID
00h background, green, red, and brown/yellow
01h background, cyan, magenta, and white
Return: nothing
Note: this call was only valid in 320x200 graphics on the CGA, but newer
cards support it in many or all graphics modes
SeeAlso: AH=0Bh/BH=00h,MEM 0040h:0066h
--------V-100B--BH02-------------------------
INT 10 - Tandy 2000 - VIDEO - SET PALETTE ENTRY
AH = 0Bh
BH = 02h
BL = palette entry number
AL = new color value for palette entry
Return: nothing
Note: this interrupt is identical to INT 52 for Tandy 2000
SeeAlso: INT 10/AH=00h,INT 10/AH=0Bh/BH=01h,INT 52"Tandy 2000"
--------V-100C-------------------------------
INT 10 - VIDEO - WRITE GRAPHICS PIXEL
AH = 0Ch
BH = page number
AL = pixel color
if bit 7 set, value is XOR'ed onto screen except in 256-color modes
CX = column
DX = row
Return: nothing
Desc: set a single pixel on the display in graphics modes
Notes: valid only in graphics modes
BH is ignored if the current video mode supports only one page
SeeAlso: AH=0Dh,AH=46h
--------V-100D-------------------------------
INT 10 - VIDEO - READ GRAPHICS PIXEL
AH = 0Dh
BH = page number
CX = column
DX = row
Return: AL = pixel color
Desc: determine the current color of the specified pixel in grahics modes
Notes: valid only in graphics modes
BH is ignored if the current video mode supports only one page
SeeAlso: AH=0Ch,AH=47h
--------V-100E-------------------------------
INT 10 - VIDEO - TELETYPE OUTPUT
AH = 0Eh
AL = character to write
BH = page number
BL = foreground color (graphics modes only)
Return: nothing
Desc: display a character on the screen, advancing the cursor and scrolling
the screen as necessary
Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
and do the expected things
IBM PC ROMs dated 4/24/81 and 10/19/81 require that BH be the same as
the current active page
SeeAlso: AH=02h,AH=0Ah
--------b-100E--CXABCD-----------------------
INT 10 - V20-XT-BIOS - TELETYPE OUTPUT WITH ATTRIBUTE
AH = 0Eh
CX = ABCDh
BP = ABCDh
AL = character to write
BH = page number
BL = foreground color (text modes as well as graphics modes)
Return: nothing
Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
Koehlmann / c't magazine
Desc: display a character on the screen, advancing the cursor and scrolling
the screen as necessary
Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
and do the expected things
SeeAlso: INT 15/AH=84h"V20-XT-BIOS"
--------V-100F-------------------------------
INT 10 - VIDEO - GET CURRENT VIDEO MODE
AH = 0Fh
Return: AH = number of character columns
AL = display mode (see #0009 at AH=00h)
BH = active page (see AH=05h)
Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will
also have bit 7 set
EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
(monochrome) in all extended-row text modes
HP 200LX returns AL=07h (monochrome) if mode was set to AL=21h
and always 80 resp. 40 columns in all text modes regardless of
current zoom setting (see AH=D0h)
when using a Hercules Graphics Card, additional checks are necessary:
mode 05h: if WORD 0040h:0063h is 03B4h, may be in graphics page 1
(as set by DOSSHELL and other Microsoft software)
mode 06h: if WORD 0040h:0063h is 03B4h, may be in graphics page 0
(as set by DOSSHELL and other Microsoft software)
mode 07h: if BYTE 0040h:0065h bit 1 is set, Hercules card is in
graphics mode, with bit 7 indicating the page (mode set by
Hercules driver for Borland Turbo C)
the Tandy 2000 BIOS is only documented as returning AL, not AH or BH
SeeAlso: AH=00h,AH=05h,AX=10F2h,AX=1130h,AX=CD04h,MEM 0040h:004Ah
--------V-100F56BX4756-----------------------
INT 10 - VUIMAGE DISPLAY DRIVER (v2.20 and below)
AX = 0F56h
BX = 4756h
CX = 4944h
DL = function
01h installation check
Return: AX = 5649h
BX = 4443h
CX = 5647h
DH = 01h
02h get first video mode's parameters
Return: AX = BIOS mode number
BX = width in pixels
CX = height in pixels
DX = number of colors
03h get next video mode's parameters
Return: as for DL=02h
04h display line???
ES:DI -> record (see #0015)
???
Return: ???
Program: VUIMAGE is a shareware GIF/TIFF image viewer by Offe Enterprises
Note: the use of TSR display drivers was discontinued after v2.20
Index: installation check;VUIMAGE display driver
Format of record for VUIMAGE Function 04h:
Offset Size Description (Table 0015)
00h WORD row number
02h WORD starting column???
04h WORD ending column???
???
--------V-100F--SIF123-----------------------
INT 10 - FRIEZE v7.41+ - INSTALLATION CHECK
AH = 0Fh
SI = F123h
DI = 321Fh
Return: AH = number of character columns
AL = display mode (see #0009 at AH=00h)
BH = active page (see AH=05h)
SI = DI = F345h if installed
Notes: if mode was set with bit 7 set ("no blanking"), the returned mode will
also have bit 7 set
EGA, VGA, and UltraVision return either AL=03h (color) or AL=07h
(monochrome) in all extended-row text modes
SeeAlso: AH=0Fh"VIDEO",AH=4Bh"FRIEZE"
--------V-1010-------------------------------
INT 10 - BIOS Window Extension v1.1 - SET WINDOW COORDINATES
AH = 10h
CH,CL = row,column of upper left corner of window
DH,DL = row,column of lower right corner of window
Return: AL = status
00h successful
01h failed
AH destroyed
Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
Note: when a window has been set, all output via AH=0Eh is restricted to
the specified window
SeeAlso: AH=11h"Window",AH=12h"Window"
--------V-1010-------------------------------
INT 10 - VIDEO - Eagle PC2 BIOS Rev. C - SET SCROLL SPEED
AH = 10h
AL = speed
00h fast
01h slow (scrolling only moves characters during vertical retrace)
Return: AH = previous speed
--------V-1010-------------------------------
INT 10 - Tandy 2000 - VIDEO - GET/SET CHARACTER FONTS
AH = 10h
AL = control value
bit 0: set character set instead of reading it
bit 1: high 128 characters instead of low 128 characters
ES:BX -> new character set if AL bit 0 set
Return: ES:BX -> current character set if AL bit 0 clear on entry
Notes: this interrupt is identical to INT 52 on Tandy 2000
the character set consists of 16 bytes for each of the 128 characters,
where each of the 16 bytes describes the pixels in one scan line,
most significant bit leftmost
SeeAlso: AH=00h,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000"
SeeAlso: INT 52"Tandy 2000"
--------V-101000-----------------------------
INT 10 - VIDEO - SET SINGLE PALETTE REGISTER (PCjr,Tandy,EGA,MCGA,VGA)
AX = 1000h
BL = palette register number (00h-0Fh)
= attribute register number (undocumented) (see #0016)
BH = color or attribute register value
Return: nothing
Notes: on MCGA, only BX = 0712h is supported
under UltraVision, the palette locking status (see AX=CD01h)
determines the outcome
SeeAlso: AX=1002h,AX=1007h,AX=CD01h
(Table 0016)
Values for attribute register number:
10h attribute mode control register (should let BIOS control this)
11h overscan color register (see also AX=1001h)
12h color plane enable register (bits 3-0 enable corresponding
text attribute bit)
13h horizontal PEL panning register
14h color select register
--------V-101001-----------------------------
INT 10 - VIDEO - SET BORDER (OVERSCAN) COLOR (PCjr,Tandy,EGA,VGA)
AX = 1001h
BH = border color (00h-3Fh)
Return: nothing
BUG: the original IBM VGA BIOS incorrectly updates the parameter save area
and places the border color at offset 11h of the palette table
rather than offset 10h
Note: under UltraVision, the palette locking status (see AX=CD01h)
determines the outcome
SeeAlso: AX=1002h,AX=1008h,AX=CD01h
--------V-101002-----------------------------
INT 10 - VIDEO - SET ALL PALETTE REGISTERS (PCjr,Tandy,EGA,VGA)
AX = 1002h
ES:DX -> palette register list (see #0017)
BH = 00h to avoid problems on some adapters
Return: nothing
Note: under UltraVision, the palette locking status (see AX=CD01h)
determines the outcome
SeeAlso: AX=1000h,AX=1001h,AX=1009h,AX=CD01h
Format of palette register list:
Offset Size Description (Table 0017)
00h 16 BYTEs colors for palette registers 00h through 0Fh
10h BYTE border color
SeeAlso: #0387
--------V-101003-----------------------------
INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA)
AX = 1003h
BL = new state
00h background intensity enabled
01h blink enabled
BH = 00h to avoid problems on some adapters
Return: nothing
Notes: although there is no function to get the current status on adapters
prior to the VGA, bit 5 of 0040h:0065h indicates the state; on the
VGA, use AH=1Bh and check offset 2Dh of the returned data (see #0038)
when configured for a monochrome display, the Boca Research Multi-EGA
with ROM v M1.1 Type D has its screen disrupted if BH is not clear
this call is reported to be "Get Cursor Position" on the Tandy
1000SL/TL
SeeAlso: AH=08h,AH=1Bh
--------V-101007-----------------------------
INT 10 - VIDEO - GET INDIVIDUAL PALETTE REGISTER (VGA,UltraVision v2+)
AX = 1007h
BL = palette or attribute (undoc) register number (see #0016)
Return: BH = palette or attribute register value
Note: UltraVision v2+ supports this function even on color EGA systems in
video modes 00h-03h, 10h, and 12h; direct programming of the palette
registers will cause incorrect results because the EGA registers are
write-only. To guard against older versions or unsupported video
modes, programs which expect to use this function on EGA systems
should set BH to FFh on entry.
SeeAlso: AX=1000h,AX=1009h
--------V-101008-----------------------------
INT 10 - VIDEO - READ OVERSCAN (BORDER COLOR) REGISTER (VGA,UltraVision v2+)
AX = 1008h
Return: BH = border color (00h-3Fh)
Note: (see AX=1007h)
SeeAlso: AX=1001h
--------V-101009-----------------------------
INT 10 - VIDEO - READ ALL PALETTE REGISTERS AND OVERSCAN REGISTER (VGA)
AX = 1009h
ES:DX -> 17-byte buffer for palette register list (see #0017)
Return: nothing
Note: UltraVision v2+ supports this function even on color EGA systems in
video modes 00h-03h, 10h, and 12h; direct programming of the palette
registers will cause incorrect results because the EGA registers are
write-only. To guard against older versions or unsupported video
modes, programs which expect to use this function on EGA systems
should set the ES:DX buffer to FFh before calling.
SeeAlso: AX=1002h,AX=1007h,AX=CD02h
--------V-101010-----------------------------
INT 10 - VIDEO - SET INDIVIDUAL DAC REGISTER (VGA/MCGA)
AX = 1010h
BX = register number
CH = new value for green (0-63)
CL = new value for blue (0-63)
DH = new value for red (0-63)
Return: nothing
SeeAlso: AX=1012h,AX=1015h
--------V-101012-----------------------------
INT 10 - VIDEO - SET BLOCK OF DAC REGISTERS (VGA/MCGA)
AX = 1012h
BX = starting color register
CX = number of registers to set
ES:DX -> table of 3*CX bytes where each 3 byte group represents one
byte each of red, green and blue (0-63)
Return: nothing
SeeAlso: AX=1010h,AX=1017h,INT 62/AX=00A5h
--------V-101013-----------------------------
INT 10 - VIDEO - SELECT VIDEO DAC COLOR PAGE (VGA)
AX = 1013h
BL = subfunction
00h select paging mode
BH = 00h select 4 blocks of 64
BH = 01h select 16 blocks of 16
01h select page
BH = page number (00h to 03h) or (00h to 0Fh)
Return: nothing
Note: this function is not valid in mode 13h
SeeAlso: AX=101Ah
--------V-101015-----------------------------
INT 10 - VIDEO - READ INDIVIDUAL DAC REGISTER (VGA/MCGA)
AX = 1015h
BL = palette register number
Return: DH = red value
CH = green value
CL = blue value
AX destroyed by some BIOSes
(e.g. Tseng ET4000 BIOS v8.00n always returns AX=00C9h)
SeeAlso: AX=1010h,AX=1017h
--------V-101017-----------------------------
INT 10 - VIDEO - READ BLOCK OF DAC REGISTERS (VGA/MCGA)
AX = 1017h
BX = starting palette register
CX = number of palette registers to read
ES:DX -> buffer (3 * CX bytes in size) (see also AX=1012h)
Return: buffer filled with CX red, green and blue triples
SeeAlso: AX=1012h,AX=1015h,INT 62/AX=00A4h
--------V-101018-----------------------------
INT 10 U - VIDEO - SET PEL MASK (VGA/MCGA)
AX = 1018h
BL = new PEL value
Return: nothing
SeeAlso: AX=1019h
--------V-101019-----------------------------
INT 10 U - VIDEO - READ PEL MASK (VGA/MCGA)
AX = 1019h
Return: BL = value read
SeeAlso: AX=1018h
--------V-10101A-----------------------------
INT 10 - VIDEO - GET VIDEO DAC COLOR-PAGE STATE (VGA)
AX = 101Ah
Return: BL = paging mode
00h four pages of 64
01h sixteen pages of 16
BH = current page
SeeAlso: AX=1013h
--------V-10101B-----------------------------
INT 10 - VIDEO - PERFORM GRAY-SCALE SUMMING (VGA/MCGA)
AX = 101Bh
BX = starting palette register
CX = number of registers to convert
Return: nothing
Desc: convert the RGB values of one or more palette registers such that the
resulting values are grays with the same intensities as the original
colors
SeeAlso: AH=12h/BL=33h
--------V-1010E0-----------------------------
INT 10 - VIDEO - Diamond Speedstar 24 - SET 24-BIT GRAPHICS MODE
AX = 10E0h
BL = video mode (see also #0009 at AH=00h)
2Eh = 640x480
Return: ???
SeeAlso: AH=00h,AX=10F0h
--------V-1010F0-----------------------------
INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
AX = 10F0h
BL = video mode (see also #0009 at AH=00h)
13h = 320x200x32K
2Dh = 640x350x32K
2Eh = 640x480x32K
2Fh = 640x400x32K
30h = 800x600x32K
3Eh = 640x480x16M (Genoa 7900)
FFh Tseng 24-bit color mode
BH = mode
2Dh = 640x480
2Eh = 640x480x16M
2Fh = 640x400
30h = 800x600
38h = 1024x768??? (Tseng ET4000/W32i)
Return: AL = 10h if supported
AH = status
00h if successful
other on error
Desc: switch the display into a graphics mode with 15 or more bits per pixel
Note: the Tseng HiColor BIOS extensions are supported by:
Diamond Computer Systems SpeedStar HiColor VGA
Everex Systems HC VGA
Focus Information Systems 2theMax 4000
Cardinal Technologies VGA732
Orchid ProDesigner IIs Genoa 7900
SeeAlso: AH=00h,AX=10E0h,AX=10F1h,AX=10F2h
Index: video modes;Tseng Hi-Color
--------V-1010F1-----------------------------
INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
AX = 10F1h
Return: AL = 10h if supported
BL = type of digital/analog converter (see #0018)
Desc: determine which type of digital-to-analog converter is installed on the
display board
SeeAlso: AX=10F0h,AX=10F2h
(Table 0018)
Values for type of DAC:
00h normal VGA DAC
01h Sierra SC1148x HiColor DAC
---Diamond SpeedStar 24---
02h new Sierra SS24 DAC (24-bit)
---generic Tseng BIOS v8+ ---
02h Sierra Mark2 (15-bit) or Mark3 (15/16-bit) DAC
03h ATT20c490/1/2 (15/16/24-bit)
04h AcuMos ADAC1 (15/16/24-bit)
05h unknown 15/16/24-bit DAC
06h Cirrus Internal 15/16/24-bit (CL-GD54xx series adapters)
07h Diamond SS2410 (15/24-bit)
08h unknown 15/16/24-bit DAC
09h unknown 15/16/24-bit DAC
else other HiColor DAC
--------V-1010F2-----------------------------
INT 10 u - VIDEO - Tseng ET-4000 BIOS - CHECK IF HiColor MODE/SET HiColor MODE
AX = 10F2h
BL = function
00h get current HiColor mode
01h set 15-bit HiColor mode
02h set 16-bit HiColor mode
Return: AX = 0010h if supported
BL = video mode type
00h not in HiColor mode
01h 15-bit RGB mode
02h 16-bit RGB mode
03h 24-bit RGB mode
Desc: determine whether the display is in a graphics mode with 15 or more
bits per pixel color resolution
Note: set (BL=01h/02h) only works if already in a HiColor mode
SeeAlso: AH=0Fh,AX=10F0h,AX=10F1h
--------V-1011-------------------------------
INT 10 - BIOS Window Extension v1.1 - GET WINDOW COORDINATES
AH = 11h
Return: CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
Desc: determine the portion of the display to which output is restricted
Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
SeeAlso: AH=10h"Window",AH=12h"Window"
--------V-1011-------------------------------
INT 10 - Tandy 2000 - VIDEO - WRITE ATTRIBUTE ONLY
AH = 11h
BL = new character attribute (text modes) or color (graphics)
CX = number of times to write attribute
Return: nothing
Note: this interrupt is identical to INT 52 on Tandy 2000
SeeAlso: AH=0Ah,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000"
SeeAlso: INT 52"Tandy 2000"
--------V-101100-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD USER-SPECIFIED PATTERNS (PS,EGA,VGA)
AX = 1100h
ES:BP -> user table
CX = count of patterns to store
DX = character offset into map 2 block
BL = block to load in map 2
BH = number of bytes per character pattern
Return: nothing
Notes: This function will cause a mode set, completely resetting
the video environment, but without clearing the video buffer
the current block specifiers may be determined with INT 10/AH=1Bh,
looking at offsets 2Bh and 2Ch of the returned data (VGA only)
(see AH=1Bh,#0038)
SeeAlso: AX=1101h,AX=1102h,AX=1103h,AX=1104h,AX=1110h,AH=1Bh,AX=CD10h
--------V-101101-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM MONOCHROME PATTERNS (PS,EGA,VGA)
AX = 1101h
BL = block to load
Return: nothing
Notes: (see also AX=1100h)
This function will cause a mode set, completely resetting
the video environment, but without clearing the video buffer
the "monochrome" patters are 8x14 pixels in size
SeeAlso: AX=1100h,AX=1102h,AX=1103h,AX=1104h,AX=1111h,AH=1Bh,AX=CD10h
--------V-101102-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x8 DBL-DOT PATTERNS (PS,EGA,VGA)
AX = 1102h
BL = block to load
Return: nothing
Notes: (see AX=1100h)
SeeAlso: AX=1100h,AX=1101h,AX=1103h,AX=1104h,AX=1112h,AH=1Bh,AX=CD10h
SeeAlso: MEM 0040h:0084h
--------V-101103-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - SET BLOCK SPECIFIER (PS,EGA,VGA)
AX = 1103h
BL = block specifier (see #0019)
Return: nothing
Notes: (see also AX=1110h)
This function allows dual character sets to appear on screen
simultaneously
SeeAlso: AX=1100h,AX=1101h,AX=1102h,AX=1104h,AH=1Bh,AX=CD10h
Bitfields for block specifier:
Bit(s) Description (Table 0019)
---EGA/MCGA---
0,1 block selected by characters with attribute bit 3 clear
2,3 block selected by characters with attribute bit 3 set
---VGA---
0,1,4 block selected by characters with attribute bit 3 clear
2,3,5 block selected by characters with attribute bit 3 set
--------V-101104-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x16 CHARACTER SET (VGA)
AX = 1104h
BL = block to load
Return: nothing
Notes: (see AX=1100h)
SeeAlso: AX=1100h,AX=1101h,AX=1102h,AX=1103h,AX=1114h,AH=1Bh,AX=CD10h
--------V-1011-------------------------------
INT 10 - VIDEO - Realtek RTVGA - TEXT-MODE CHARACTER GENERATOR FUNCTIONS
AH = 11h
AL = 07h load user-specified paterns and recalculate mode parms
parameters are the same as for AX=1110h
AL = 08h load monochrome patterns (8x14) and recalculate mode parms
parameters are the same as for AX=1111h
AL = 09h load ROM 8 by 8 double-dot patterns and recalculate mode parms
parameters are the same as for AX=1112h
AL = 0Bh load ROM 8x16 character set (VGA) and recalculate mode parms
parameters are the same as for AX=1114h
Note: these functions should only be called under the same conditions as
AL=1xh (see AX=1110h"EGA")
SeeAlso: AX=1100h,AX=1110h"CHARGEN",AX=1110h"Realtek"
--------V-10110F-----------------------------
INT 10 - VIDEO - Realtek RTVGA - SET USER 8x8 GRAPHICS CHARACTERS
AX = 110Fh
ES:BP -> user table for INT 1F
Return: nothing
Note: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
SeeAlso: AX=1110h"Realtek",AX=1111h"Realtek",AX=1112h"Realtek",AX=1120h
--------V-101110-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD USER-SPECIFIED PATTERNS (PS,EGA,VGA)
AX = 1110h
ES:BP -> user table
CX = count of patterns to store
DX = character offset into map 2 block
BL = block to load in map 2
BH = number of bytes per character pattern
Return: nothing
Notes: This function will cause a mode set, completely resetting
the video environment, but without clearing the video buffer
This function is designed to be called immediately after a mode set,
it is equivalent to AX=110xh except that:
Page 0 must be active.
Bytes/character is recalculated.
Max character rows is recalculated.
CRT buffer length is recalculated.
CRTC registers are reprogrammed as follows:
R09 = bytes/char-1 ; max scan line (mode 7 only)
R0A = bytes/char-2 ; cursor start
R0B = 0 ; cursor end
R12 = ((rows+1)*(bytes/char))-1 ; vertical display end
R14 = bytes/char ; underline loc
(*** BUG: should be 1 less ***)
the current block specifiers may be determined with INT 10/AH=1Bh,
looking at offsets 2Bh and 2Ch of the returned data (VGA only)
(see AH=1Bh,#0038)
SeeAlso: AX=1100h,AX=1111h,AX=1112h,AX=1114h,AH=1Bh,AX=CD10h,MEM 0040h:0084h
--------V-101110-----------------------------
INT 10 - VIDEO - Realtek RTVGA - SET USER GRAPHICS CHARACTERS
AX = 1110h
ES:BP -> user table
CX = bytes per character
BL = row specifier
00h user set
DL = number of rows
01h 14 rows
02h 25 rows
03h 43 rows
Return: nothing
Note: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
SeeAlso: AX=110Fh"Realtek",AX=1112h"Realtek",AX=1121h
--------V-101111-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM MONOCHROME PATTERNS (PS,EGA,VGA)
AX = 1111h
BL = block to load
Return: nothing
Notes: (see AX=1110h)
the "monochrome" patters are 8x14 pixels in size
SeeAlso: AX=1101h,AX=1110h,AX=1112h,AX=1114h,AH=1Bh,AX=CD10h
--------V-101111-----------------------------
INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x14 GRAPHICS CHARACTERS
AX = 1111h
BL = row specifier (see AX=1121h)
Return: nothing
Note: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
SeeAlso: AX=110Fh"Realtek",AX=1110h"Realtek",AX=1122h
--------V-101112-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x8 DBL-DOT PATTERNS (PS,EGA,VGA)
AX = 1112h
BL = block to load
Return: nothing
Notes: (see AX=1110h)
SeeAlso: AX=1103h,AX=1110h,AX=1111h,AX=1114h,AH=1Bh,AX=CD10h
--------V-101112-----------------------------
INT 10 - VIDEO - Realtek RTVGA - SET ROM 8x8 DOUBLE-DOT CHARACTERS
AX = 1112h
BL = row specifier (see AX=1121h)
Return: nothing
Note: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
SeeAlso: AX=110Fh"Realtek",AX=1110h"Realtek",AX=1111h"Realtek",AX=1123h
--------V-101114-----------------------------
INT 10 - VIDEO - TEXT-MODE CHARGEN - LOAD ROM 8x16 CHARACTER SET (VGA)
AX = 1114h
BL = block to load
Return: nothing
Notes: (see AX=1110h)
SeeAlso: AX=1104h,AX=1110h,AX=1111h,AX=1112h,AH=1Bh,AX=CD10h
--------V-101118-----------------------------
INT 10 - IBM SurePath BIOS - Officially "Private" Function
AX = 1118h
--------V-101120-----------------------------
INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER 8x8 GRAPHICS CHARS (PS,EGA,VGA)
AX = 1120h
ES:BP -> user table for INT 1F
Return: nothing
Note: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
SeeAlso: AX=1121h,AX=1122h,AX=1123h,AX=1124h,AX=1129h,INT 1F"SYSTEM DATA"
SeeAlso: INT 43"VIDEO DATA"
--------V-101121-----------------------------
INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (PS,EGA,VGA)
AX = 1121h
ES:BP -> user table
CX = bytes per character
BL = row specifier
00h user set
DL = number of rows
01h 14 rows
02h 25 rows
03h 43 rows
Return: AL = new number of rows (Diamond Stealth64 Video)
Note: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,AX=1129h"Compaq"
SeeAlso: AX=1129h"Diamond",INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
--------V-101122-----------------------------
INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x14 GRAPHICS CHARS (PS,EGA,VGA)
AX = 1122h
BL = row specifier (see AX=1121h)
Return: nothing
Notes: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
UltraVision v2+ sets INT 43 to the appropriate font on this call
SeeAlso: AX=1111h,AX=1120h,AX=1121h,AX=1123h,AX=1124h,AX=1129h
SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
--------V-101123-----------------------------
INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET ROM 8x8 DOUBLE-DOT CHARS (PS,EGA,VGA)
AX = 1123h
BL = row specifier (see AX=1121h)
Return: nothing
Notes: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
UltraVision v2+ sets INT 43 to the appropriate font on this call
SeeAlso: AX=1112h,AX=1120h,AX=1121h,AX=1122h,AX=1124h,AX=1129h
SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
--------V-101124-----------------------------
INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPHICS CHARS (VGA,MCGA)
AX = 1124h
BL = row specifier (see AX=1121h)
Return: nothing
Notes: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
UltraVision v2+ sets INT 43 to the appropriate font on this call
SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1129h
SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
--------V-101129-----------------------------
INT 10 - VIDEO - GRAPH-MODE CHARGEN - LOAD 8x16 GRAPH CHARS (Compaq Systempro)
AX = 1129h
BL = row specifier (see AX=1121h)
Return: nothing
Notes: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
UltraVision v2+ sets INT 43 to the appropriate font on this call
SeeAlso: AX=1120h,AX=1121h,AX=1122h,AX=1123h,AX=1124h,INT 1F"SYSTEM DATA"
SeeAlso: INT 43"VIDEO DATA"
--------V-101129-----------------------------
INT 10 - VIDEO - GRAPH-MODE CHARGEN - SET USER GRAPHICS CHARACTERS (Diamond)
AX = 1129h
DI:BP -> user table
CX = bytes per character
BL = row specifier
00h user set
DL = number of rows
01h 14 rows
02h 25 rows
03h 43 rows
Return: AL = new number of rows
Notes: this function is meant to be called immediately after a mode set;
results are unpredictable at other times
supported by Diamond Stealth64 Video
SeeAlso: AX=1120h,AX=1122h,AX=1123h,AX=1124h,INT 1F"SYSTEM",INT 43"VIDEO"
--------V-101130-----------------------------
INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA)
AX = 1130h
BH = pointer specifier
00h INT 1Fh pointer
01h INT 43h pointer
02h ROM 8x14 character font pointer
03h ROM 8x8 double dot font pointer
04h ROM 8x8 double dot font (high 128 characters)
05h ROM alpha alternate (9 by 14) pointer (EGA,VGA)
06h ROM 8x16 font (MCGA, VGA)
07h ROM alternate 9x16 font (VGA only) (see #0020)
11h (UltraVision v2+) 8x20 font (VGA) or 8x19 font (autosync EGA)
12h (UltraVision v2+) 8x10 font (VGA) or 8x11 font (autosync EGA)
Return: ES:BP = specified pointer
CX = bytes/character of on-screen font (not the requested font!)
DL = highest character row on screen
Note: for UltraVision v2+, the 9xN alternate fonts follow the corresponding
8xN font at ES:BP+256N
BUG: the IBM EGA and some other EGA cards return in DL the number of rows on
screen rather than the highest row number (which is one less).
SeeAlso: AX=1100h,AX=1103h,AX=1120h,INT 1F"SYSTEM DATA",INT 43"VIDEO DATA"
Format of alternate font table [array]:
Offset Size Description (Table 0020)
00h BYTE character to be replaced (00h = end of table)
01h N BYTEs graphics data for character, one byte per scan line
--------V-101130BX4D4F-----------------------
INT 10 - M10_SCR.COM v3.5+ - INSTALLATION CHECK
AX = 1130h
BX = 4D4Fh
Return: CX = 4F4Dh if installed
ES:BP -> M10_SCR INT 10 handler
Program: M10_SCR is a shareware extended text mode and font driver by
I.V. Morozov
SeeAlso: INT 16/AX=4D4Fh
--------V-1012-------------------------------
INT 10 - BIOS Window Extension v1.1 - GET BLANKING ATTRIBUTE
AH = 12h
Return: BH = attribute to use on blanked lines when scrolling
Program: BWE is a TSR by John J. Seal published in May 1986 Dr. Dobb's Journal
SeeAlso: AH=11h"Window",AH=12h"Window"
--------V-1012-------------------------------
INT 10 - Tandy 2000 - VIDEO - SCROLL WINDOW
AH = 12h
AL = number of rows or columns to scroll
BH = buffer flag
00h data in user buffer
ES:SI -> buffer containing character/attribute pairs
01h no buffer, fill emptied rows/columns with blanks
BL = direction in which to scroll
00h up
01h down
02h left
03h right
CH,CL = row,column of upper left corner of scroll area
DH,DL = row,column of lower right corner
Return: nothing
Notes: this interrupt is identical to INT 52 on Tandy 2000
the user buffer, if supplied, must be organized by row; regardless of
the scroll direction, all character/attribute pairs for the first
row are first, then the pairs for the second row, etc.
SeeAlso: AH=00h,AH=0Bh/BH=02h,AH=11h"Tandy 2000",AH=12h"Tandy 2000"
SeeAlso: INT 52"Tandy"
--------V-1012--BL10-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) - GET EGA INFO
AH = 12h
BL = 10h
Return: BH = video state
00h color mode in effect (I/O port 3Dxh)
01h mono mode in effect (I/O port 3Bxh)
BL = installed memory (00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K)
CH = feature connector bits (see #0021)
CL = switch settings (see #0022,#0023)
AH destroyed (at least by Tseng ET4000 BIOS v8.00n)
Note: one possible check for the presence of an EGA or later display card
is to call this function with BH=FFh; if not present, BH will be
unchanged on return
another installation check is used by Athena Digital's HGCIBM, which
sets CX to FFFFh on calling and checks whether it has been changed
on return
Index: installation check;EGA
Bitfields for feature connector bits:
Bit(s) Description (Table 0021)
0 FEAT 1 line, state 2
1 FEAT 0 line, state 2
2 FEAT 1 line, state 1
3 FEAT 0 line, state 1
4-7 unused (0)
Bitfields for switch settings:
Bit(s) Description (Table 0022)
0 switch 1 OFF
1 switch 2 OFF
2 switch 3 OFF
3 switch 4 OFF
4-7 unused
(Table 0023)
Values for switch settings on original EGA/VGA:
00h primary MDA/HGC, secondary EGA+ 40x25
01h-03h primary MDA/HGC, secondary EGA+ 80x25
04h primary CGA 40x25, secondary EGA+ 80x25 mono
05h primary CGA 80x25, secondary EGA+ 80x25 mono
06h primary EGA+ 40x25, secondary MDA/HGC (optional)
07h-09h primary EGA+ 80x25, secondary MDA/HGC (optional)
0Ah primary EGA+ 80x25 mono,secondary CGA 40x25 (optional)
0Bh primary EGA+ 80x25 mono,secondary CGA 80x25 (optional)
--------V-1012--BL11-------------------------
INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET BIOS INFO
AH = 12h
BL = 11h
Return: AL = 12h if function supported
BL = ??? (10h)
ES:BP -> BIOS info structure (see #0024)
SeeAlso: AH=12h/BL=12h"TRIDENT"
Format of Trident BIOS Info structure:
Offset Size Description (Table 0024)
00h BYTE ??? (0000h)
01h BYTE OEM Code (00h for original Trident)
02h WORD ID??? (1073h for 8800BR, 1074 for 8800CS)
04h 8 BYTEs BIOS date ('mm/dd/yy')
0Ch WORD ???
0Eh 8 BYTEs BIOS Version (' C3-128 ', ' C3-129 ')
--------V-1012--BL12-------------------------
INT 10 - VIDEO - Trident TVGA 8800/8900/9000 BIOS - GET VIDEO RAM SIZE
AH = 12h
BL = 12h
Return: AL = 12h if function supported
AH = number of 256K banks of RAM installed
(read from CRTC register 1Fh)
SeeAlso: AH=12h/BL=11h"TRIDENT"
--------V-1012--BL20-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS,EGA,VGA,MCGA) - ALTERNATE PRTSC
AH = 12h
BL = 20h select alternate print screen routine
Return: nothing
Desc: installs a PrtSc routine from the video card's BIOS to replace the
default PrtSc handler from the ROM BIOS, which usually does not
understand screen heights other than 25 lines
Note: some adapters disable print-screen instead of enhancing it
SeeAlso: INT 05"PRINT SCREEN"
--------V-1012--BL2E-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
AH = 12h
BL = 2Eh
Return: nothing
Note: due to an omitted end-of-list marker, these versions of the BIOS will
crash the system on this function
--------V-1012--BL30-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - SELECT VERTICAL RESOLUTION
AH = 12h
BL = 30h
AL = vertical resolution
00h 200 scan lines
01h 350 scan lines
02h 400 scan lines
Return: AL = 12h if function supported
Desc: specify the number of scan lines used to display text modes
Note: the specified resolution will take effect on the next mode set
SeeAlso: AH=00h
--------V-1012--BL31-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - PALETTE LOADING
AH = 12h
BL = 31h
AL = new state
00h enable default palette loading
01h disable default palette loading
Return: AL = 12h if function supported
Desc: specify whether a default palette should be loaded when the display
mode is set
SeeAlso: AH=00h
--------V-1012--BL32-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - VIDEO ADDRESSING
AH = 12h
BL = 32h
AL = new state
00h enable video addressing
01h disable video addressing
Return: AL = 12h if function supported
Desc: specify whether the CPU should have access to video memory and the
display adapters I/O registers
--------V-1012--BL33-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA, MCGA) - GRAY-SCALE SUMMING
AH = 12h
BL = 33h
AL = new state
00h enable gray scale summing
01h disable gray scale summing
Return: AL = 12h if function supported
Desc: specify whether or not colors should be converted to gray scale when
palette or color registers are loaded
SeeAlso: AX=101Bh,AX=BF06h,AX=BF08h
--------V-1012--BL34-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (VGA) - CURSOR EMULATION
AH = 12h
BL = 34h
AL = new state
00h enable alphanumeric cursor emulation
01h disable alphanumeric cursor emulation
Return: AL = 12h if function supported
Desc: specify whether the BIOS should automatically remap cursor start/end
according to the current character height in text modes
SeeAlso: AH=01h,AH=03h
--------V-1012--BL35-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS) - DISPLAY-SWITCH INTERFACE
AH = 12h
BL = 35h
AL = subfunction
00h initial adapter video off
01h initial planar video on
02h switch active video off
03h switch inactive video on
80h *UNDOCUMENTED* set system board video active flag
ES:DX -> buffer for 128 byte save area (if AL = 00h-03h)
Return: AL = 12h if function supported
Desc: switch between two video adapters which may otherwise have address
conflicts
SeeAlso: AX=BF00h,AX=BF01h,INT 6D"VGA"
--------V-1012--BL36-------------------------
INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, VGA) - VIDEO REFRESH CONTROL
AH = 12h
BL = 36h
AL = new state
00h enable refresh
01h disable refresh
Return: AL = 12h if function supported
Desc: specify whether the contents of video memory should be displayed on
the screen; disabling refresh effectively blanks the screen
Note: when display refresh is disabled, the entire screen displays the color
specified by the DAC color register 00h; thus to actually blank the
screen, the application must first ensure that that register has been
set to black
BUG: GEM/VIEWMAX ET3000 and ET4000 drivers dated 6/23/88 do not correctly
reenable refresh after the screen has been blanked due to inactivity,
resulting in a total loss of video synchronization
SeeAlso: AX=BF05h
--------V-1012--BL37-------------------------
INT 10 - VIDEO - XGA - MAINFRAME INTERACTIVE SUPPORT
AH = 12h
BL = 37h
AL = text attribute type (00h normal VGA, 01h mainframe type)
Return: AL = 12h if supported
SeeAlso: #0025,AH=08h,#0040
Bitfields for XGA mainframe type character attributes:
Bit(s) Description (Table 0025)
7 blink double rate (75% ON time) or use color 8 as background
(see AX=1003h)
6 reverse video
5 underlined
4 left-most and right-most dots of underline area inverted
3 foreground intensity/character font select
2-0 foreground color
SeeAlso: #0013,#0034
--------V-1012--BL38-------------------------
INT 10 - IBM SurePath BIOS - Officially "Private" Function
AH = 12h
BL = 38h
SeeAlso: AX=1118h,AH=12h/BL=39h
--------V-1012--BL39-------------------------
INT 10 - IBM SurePath BIOS - Officially "Private" Function
AH = 12h
BL = 39h
SeeAlso: AX=1118h,AH=12h/BL=38h,AH=12h/BL=3Ah
--------V-1012--BL3A-------------------------
INT 10 - IBM SurePath BIOS - Officially "Private" Function
AH = 12h
BL = 3Ah
SeeAlso: AX=1118h,AH=12h/BL=39h
--------V-1012--BL53-------------------------
INT 10 - Tseng ET-4000 BIOS v8.00 (06/07/91) - BUG
AH = 12h
BL = 53h
Note: due to an omitted end-of-list marker, this version of the BIOS will
crash the system on this function
--------V-1012--BL57-------------------------
INT 10 - Tseng ET-4000 BIOS v8.00 (06/07/91) - BUG
AH = 12h
BL = 57h
Note: due to an omitted end-of-list marker, this version of the BIOS will
crash the system on this function
--------V-1012--BH55-------------------------
INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES
AH = 12h
BH = 55h
BL = subfunction
00h disable enhanced features
01h enable enhanced features
02h get status
Return: AL = status flags (see #0026)
03h disable register trapping (CGA emulation)
04h enable register trapping
05h program video mode
ES:BP -> video mode table (see #0027)
06h get mode table
AL = video mode
Return: ES:BP -> table suitable for mode AL
(and subfunc BL=05h) (see #0027)
BP = FFFFh on error
SI = 0000h (ATI Mach32)
Note: the ATI Mouse driver (MOUSE.COM/MOUSE.SYS) uses subfunction 06h to get
the mode table for mode 03h, and then looks for a signature string
beginning within 32 bytes of the offset specified by the word at
ES:000Ch
SeeAlso: AH=FFh"Oak"
Index: installation check;ATI video adapters
Bitfields for status flags:
Bit(s) Description (Table 0026)
3 set if enhanced features enabled
7-5 monitor type
000 PS/2 mono
001 PS/2 color
010 multi-sync
011 Taxan 650 25kHz
100 RGB
101 mono
110 EGA
111 Compaq internal
Format of ATI VGA Wonder video mode table:
Offset Size Description (Table 0027)
00h BYTE number of columns
01h BYTE maximum row (number of rows - 1)
02h BYTE scan lines per row
03h WORD video buffer size in bytes
05h 4 BYTEs values for Sequencer registers 1-4
09h BYTE value for Miscellaneous Output register
0Ah 25 BYTEs values for CRTC registers 00h-18h
00h horizontal total size (chars)
01h horizontal displayed (chars)
02h horizontal sync position (chars)
03h horizontal sync width (chars)
04h vertical total size (char rows)
05h vertical total adjust (scan lines)
06h vertical displayed (char rows)
07h vertical sync position (char rows)
08h interlace mode
09h max scan line in row
0Ah cursor start scan line
0Bh cursor end scan line
0Ch screen memory start (high)
0Dh screen memory start (low)
0Eh cursor address (high)
0Fh cursor address (low)
10h light pen (high)
11h light pen (low)
23h 20 BYTEs default palette (values for Attribute Controller regs 00h-13h)
37h 9 BYTEs values for Graphics Controller registers 00h-08h
--------V-1012--BL74-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
AH = 12h
BL = 74h
Note: due to an omitted end-of-list marker, these versions of the BIOS will
crash the system on this function
--------V-1012--BL80-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
AH = 12h
BL = 80h
Note: due to an omitted end-of-list marker, these versions of the BIOS will
crash the system on this function
--------V-1012--BL80-------------------------
INT 10 - Cirrus Logic BIOS - INQUIRE VGA TYPE
AH = 12h
BL = 80h
Return: AX = controller type in bits 13-0 (see #0028)
bit 14: ???
bit 15: ???
BL = silicon revision number (bit 7 set if not available)
SeeAlso: AH=12h/BL=81h,AH=12h/BL=82h,AH=12h/BL=85h,AH=12h/BL=9Ah,AH=12h/BL=A1h
(Table 0028)
Values for Cirrus Logic video controller type:
0000h no extended alternate select support
0002h 510/520
0003h 610/620
0004h 5320
0005h 6410
0006h 5410
0007h 6420
0008h 6412
0010h 5401
0011h 5402
0012h 5420
0013h 5422
0014h 5424
0015h 5426
0016h 5420r1
0017h 5402r1
0018h 5428
0020h 6205/15/25
0030h 5432
0031h 5434
SeeAlso: #0656,#0666
--------V-1012--BL81-------------------------
INT 10 - Cirrus Logic BIOS - GET BIOS VERSION NUMBER
AH = 12h
BL = 81h
Return: AH = BIOS major version
AL = BIOS minor version
SeeAlso: AH=12h/BL=80h,AH=12h/BL=82h
--------V-1012--BL82-------------------------
INT 10 - Cirrus Logic BIOS - GET DESIGN REVISION CODE
AH = 12h
BL = 82h
Return: AL = chip revision
AH = ??? (AFh for v1.01)
SeeAlso: AH=12h/BL=80h,AH=12h/BL=81h,#0656 at INT 1A/AX=B102h
--------V-1012--BL84-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - INQUIRE OPTIONS
AH = 12h
BL = 84h
Return: AX = user options word (see #0029)
SeeAlso: AH=12h/BL=89h,AH=12h/BL=8Ah,AH=12h/BL=8Bh,AH=12h/BL=8Ch,AH=12h/BL=8Fh
SeeAlso: AH=12h/BL=90h,AH=12h/BL=9Ah
Bitfields for Cirrus Logic user options word:
Bit(s) Description (Table 0029)
1,0 centering
00 vertical centered, 01 from bottom, 10 from top, 11 reserved
3,2 720-dot fix-up options
00 OR every 8th and 9th pixel
01 display MGA mode from left
10 display MGA mode from right
11 skip every 9th pixel
4 ???
7-5 video mode (001 CGA, 010 MGA, 011 EGA, 100 VGA)
8 external monitor enabled instead of LCD panel
9 vertical expand mode enabled
10 8-bit mode instead of 16-bit mode
11 normal video rather than reverse video (for LCD)
12 attribute automap rather than attribute emulation
13 bold mode disabled (default)
14 fast bandwidth
15 ???
--------V-1012--BL85-------------------------
INT 10 - Cirrus Logic BIOS - GET INSTALLED MEMORY
AH = 12h
BL = 85h
Return: AL = number of 64K banks of video memory
SeeAlso: AH=12h/BL=80h,AH=12h/BL=93h
--------V-1012--BL89-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - EN/DISABLE REVERSE VIDEO MODE
AH = 12h
BL = 89h
AL = new state (00h enabled, 01h disabled)
Return: nothing
SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=8Bh
--------V-1012--BL8A-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET FRAME COLOR
AH = 12h
BL = 8Ah
AL = new gray-scale color (00h = black to 0Fh = white)
Return: nothing
SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Fh
--------V-1012--BL8B-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE BOLD MODE
AH = 12h
BL = 8Bh
AL = new state (00h enabled, 01h disabled)
Return: nothing
SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Ch,AH=12h/BL=8Fh
--------V-1012--BL8C-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET AUTOMAP/EMULATE ATTRIBUTES
AH = 12h
BL = 8Ch
AL = new state
00h enable automap
01h disable automap and emulate attributes
Return: nothing
SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Bh
--------V-1012--BL8F-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - ENABLE/DISABLE EXPAND MODE
AH = 12h
BL = 8Fh
AL = new state (00h enabled, 01h disabled)
Return: nothing
Note: when expand mode is enabled, the vertical dimension is enlarged to
full screen
SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=8Bh,AH=12h/BL=90h
--------V-1012--BL90-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET CENTERING MODE
AH = 12h
BL = 90h
AL = new position
00h centered
01h from top
02h from bottom
03h from top
Return: nothing
SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Fh
--------V-1012--BL91-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SET 720-DOT FIXUP MODE
AH = 12h
BL = 91h
AL = new mode
00h display MGA mode from left of screen (default)
01h display MGA from right
02h skip every ninth pixel
03h OR every 8th and 9th pixel
Return: nothing
SeeAlso: AH=12h/BL=84h,AH=12h/BL=8Ah,AH=12h/BL=90h
--------V-1012--BL92-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - LCD panel - SWITCH DISPLAY
AH = 12h
BL = 92h
AL = new display (00h LCD, 01h external monitor)
Return: nothing
Note: the deselected display is disabled
SeeAlso: AH=12h/BL=84h,AH=12h/BL=89h,AH=12h/BL=90h,AH=12h/BL=94h
--------V-1012--BL93-------------------------
INT 10 - Cirrus Logic BIOS - FORCE 8-BIT OR 16-BIT OPERATION
AH = 12h
BL = 93h
AL = new I/O width (00h = 16 bits, 01h = 8 bits)
Return: nothing
SeeAlso: AH=12h/BL=9Ah
--------V-1012--BL94-------------------------
INT 10 - Cirrus Logic BIOS v3.02 - POWER CONSERVATION
AH = 12h
BL = 94h
AL = new state (00h wake up monitor, 01h shut down display)
Return: nothing
Note: AL=01h is reported not to work properly on the LCD panel
SeeAlso: AH=12h/BL=84h,AH=12h/BL=92h
--------V-1012--BL9A-------------------------
INT 10 - Cirrus Logic BIOS - GET USER OPTIONS
AH = 12h
BL = 9Ah
Return: AX = options word 1 (see #0030)
CX = options word 2 (see #0031)
SeeAlso: AH=12h/BL=80h,AH=12h/BL=84h,AH=12h/BL=93h,AH=12h/BL=A0h
SeeAlso: AH=12h/BL=A3h,AH=12h/BL=A4h,#0656 at INT 1A/AX=B102h
Bitfields for Cirrus Logic options word 1:
Bit(s) Description (Table 0030)
0,1 reserved
2-4 monitor type
5-6 maximum vertical resolution
7-9 reserved
10 force 8-bit operation
11-13 reserved
14 vertical refresh frequency at 640x480
15 reserved
Bitfields for Cirrus Logic options word 2:
Bit(s) Description (Table 0031)
0-3 reserved
4-5 vertical refresh frequency at 1280x1024
6-10 reserved
11-12 vertical refresh frequency at 800x600
13-15 vertical refresh frequency at 1024x768
--------V-1012--BLA0-------------------------
INT 10 - Cirrus Logic BIOS - GET VIDEO MODE AVAILABILITY
AH = 12h
BL = A0h
AL = video mode number (00h-7Fh)
Return: AH bit 0: video mode supported
BX = offset of BIOS subroutine to fixup standard video parameters
(call subroutine with DS:SI and ES:DI as returned by this call)
DS:SI -> standard video parameters or FFFFh:FFFFh
ES:DI -> supplemental video parameters or FFFFh:FFFFh
SeeAlso: AH=00h,AH=12h/BL=9Ah,AH=12h/BL=A1h
--------V-1012--BLA1-------------------------
INT 10 - Cirrus Logic BIOS - READ MONITOR TYPE AND ID FROM 15-PIN CONNECTOR
AH = 12h
BL = A1h
Return: BH = monitor ID (see #0032)
BL = monitor type (00h color, 01h grayscale, 02h no display)
SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A2h
(Table 0032)
Values for Cirrus Logic monitor ID:
00h-08h reserved
09h IBM 8604/8507 or equivalent
0Ah IBM 8514 or equivalent
0Bh IBM 8515 or equivalent
0Dh IBM 8503 or equivalent
0Eh IBM 8512/8513 or equivalent
0Fh no monitor
--------V-1012--BLA2-------------------------
INT 10 - Cirrus Logic BIOS - SET MONITOR HORIZONTAL RETRACE FREQUENCY
AH = 12h
BL = A2h
AL = retrace rate
00h standard VGA (31.5 kHz)
01h 8514-compatible (31.5 kHz and 35.5 kHz interlaced)
02h SuperVGA (31.5-35.1 kHz)
03h extended SuperVGA (31.5-35.5 kHz)
04h multi-frequency (31.5-37.8 kHz)
05h extended multi-frequency (31.5-48.0 kHz)
06h super multi-frequency (31.5-56.0 kHz)
07h extended super multi-frequency (31.5-64.0 kHz)
Return: nothing
SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A0h,AH=12h/BL=A4h
--------V-1012--BLA3-------------------------
INT 10 - Cirrus Logic BIOS - SET VGA REFRESH
AH = 12h
BL = A3h
AL = refresh rate for 640x480 (00h normal, 01h high)
Return: nothing
SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A4h
--------V-1012--BLA4-------------------------
INT 10 - Cirrus Logic BIOS - SET MONITOR TYPE
AH = 12h
BL = A4h
AL bits 3-0 = maximum vertical resolution
(0 = 480 scanlines, 1 = 600, 2 = 768, 3 = 1024, other reserved)
AL bits 7-4 = vertical refresh at 640x480
(0 = 60Hz, 1 = 72Hz, other reserved)
BH bits 3-0 = vertical refresh at 800x600
(0 = 56Hz, 1 = 60Hz, 2 = 72Hz, other reserved)
BH bits 7-4 = vertical refresh at 1024x768
(0=87Hz-int, 1=60Hz, 2=70Hz, 3=72Hz, 4=76Hz, other reserved)
CH bits 4-7 = vertical refresh at 1280x1024
(0=87Hz-int, 1=60Hz, 2=70Hz, other reserved)
Return: nothing
SeeAlso: AH=12h/BL=9Ah,AH=12h/BL=A3h
--------V-1012--BLBE-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
AH = 12h
BL = BEh
Note: due to an omitted end-of-list marker, these versions of the BIOS will
crash the system on this function
--------V-1012--BLC6-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
AH = 12h
BL = C6h
Note: due to an omitted end-of-list marker, these versions of the BIOS will
crash the system on this function
--------V-1012--BLF0-------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
AH = 12h
BL = F0h
Note: due to an omitted end-of-list marker, these versions of the BIOS will
crash the system on this function
--------V-1012--BLF1--------------------------
INT 10 - Tseng ET-4000 BIOS - GET/SET SCREEN REFRESH RATE
AH = 12h
BL = F1h
AL = subfunction
00h set refresh rate
01h get refresh rate
BH = video mode
00h 640x480
01h 800x600
02h 1024x768
03h 1280x1024
CX = new refresh rate (see #0033) if AL = 00h
Return: AL = 12h if supported
CX = current rate (for AL=00h, a changed CX indicates failure)
(Table 0033)
Values for Tseng ET4000 refresh rate:
CX 640x480 800x600 1024x768/1280x1024
00h 60 Hz 56 Hz interlaced
01h 72 Hz 60 Hz 60 Hz
02h 75 Hz 72 Hz 70 Hz
03h 90 Hz 75 Hz 75 Hz
04h -- 90 Hz --
--------V-1013-------------------------------
INT 10 - VIDEO - WRITE STRING (AT and later,EGA)
AH = 13h
AL = write mode
bit 0: update cursor after writing
bit 1: string contains alternating characters and attributes
bits 2-7: reserved (0)
BH = page number
BL = attribute if string contains only characters
CX = number of characters in string
DH,DL = row,column at which to start writing
ES:BP -> string to write
Return: nothing
Notes: recognizes CR, LF, BS, and bell; for the ET4000 BIOS, scrolling,
backspace, and CR only take place in the active page
also available PC or XT with EGA or higher
HP 95LX only supports write mode 00h
IBM documents AL=10h,11h,20h,21h as "private" rather than "reserved"
BUG: on the IBM VGA Adapter, any scrolling which may occur is performed on
the active page rather than the requested page
SeeAlso: AH=09h,AH=0Ah,AH=13h"DOS/V"
--------J-1013-------------------------------
INT 10 - DOS/V - READ/WRITE DOUBLE-BYTE CHARACTER SET CHARACTERS/ATTRIBUTES
AH = 13h
AL = function
10h read characters and standard attributes
11h read characters and extended attributes
12h write characters and standard attributes
13h write characters and extended attributes
BH = 00h
CX = number of characters to transfer
DH,DL = row,column at which to start transfer
ES:BP -> buffer for/containing characters and attributes (see #0034)
Return: ES:BP buffer filled if reading
Program: DOS/V is a Japanese-language version of MS-DOS which can run on
standard (non-Japanese) ATs and compatible equipped with a VGA or
newer video adapter
Notes: subfunctions 11h and 13h are only valid when DOS/V is using video
mode 73h
the cursor position is not changed by these functions
extended attributes consist of three bytes; the first is the standard
character attribute byte, the second is as described below, and the
third is always zero in current versions
SeeAlso: AH=00h,AH=13h"VIDEO"
Bitfields for DOS/V second extended attribute byte:
Bit(s) Description (Table 0034)
7 underline using foreground color
6 reverse foreground/background specified in standard attribute byte
5-4 unused
3 vertical white grid line in cell
2 horizontal white grid line in cell
1-0 unused
SeeAlso: #0013,#0025
--------V-101400-----------------------------
INT 10 - VIDEO - LOAD USER-SPECIFIED LCD CHARACTER FONT (CONV,Compaq Port 386)
AX = 1400h
ES:DI -> character font
BH = number of bytes per character
08h or 10h (Compaq)
BL = 00h load main font (block 0)
01h load alternate font (block 1)
CX = number of characters to store
DX = character offset into RAM font area
Return: nothing
SeeAlso: AX=1100h,AX=1110h,AX=1401h
--------V-101401-----------------------------
INT 10 - VIDEO - LOAD SYSTEM ROM DEFAULT LCD CHARACTER FONT (CONV,CP386)
AX = 1401h
BL = font to load
00h main font (block 0)
01h alternate font (block 1)
Return: nothing
SeeAlso: AX=1100h,AX=1102h,AX=1400h
--------V-101402-----------------------------
INT 10 - VIDEO - SET MAPPING OF LCD HIGH INTENSITY ATTRIBUTES (CONV,CP386)
AX = 1402h
BL = subfunction
00h ignore high intensity attribute
01h map high intensity to reverse video
02h map high intensity to underscore
03h map high intensity to selected alternate font
B0h half intensity (Compaq)
B1h toggle active intensity bit interpretation (CP386)
Return: nothing
--------V-1015-------------------------------
INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE)
AH = 15h
Return: AX = alternate display adapter type (see #0035)
ES:DI -> parameter table (see #0036)
SeeAlso: AH=1Bh
(Table 0035)
Values for PC Convertible alternate display adapter type:
0000h none
5140h LCD
5153h CGA
5151h mono
Format of PC Convertible display parameter table:
Offset Size Description (Table 0036)
00h WORD monitor model number
02h WORD vertical pixels per meter
04h WORD horizontal pixels per meter
06h WORD total vertical pixels
08h WORD total horizontal pixels
0Ah WORD horizontal pixel separation in micrometers
(width, center-to-center)
0Ch WORD vertical pixel separation in micrometers
(height, center-to-center)
--------V-1015-------------------------------
INT 10 - VIDEO - SET SUPERIMPOSE MODE (Sperry PC)
AH = 15h
AL = superimpose mode
00h show graphics screen
01h show text screen
02h show text screen superimposed on graphics screen
Return: nothing
--------J-1018-------------------------------
INT 10 - VIDEO - DOS/V - GET/SET FONT PATTERN
AH = 18h
AL = subfunction
00h get font pattern
01h set font pattern
BX = 0000h
CL = character size in bytes (01h,02h)
CH = 00h
DH = character width in pixels
DL = character height in pixels
ES:DI -> buffer for/containing font image
Return: AL = status (00h successful, else error)
ES:DI buffer filled for function 00h if successful
Note: the supported font sizes are 8x16 single-byte, 8x19 single-byte,
16x16 double-byte, and 24x24 double-byte
SeeAlso: AH=19h,INT 16/AH=14h
--------V-1019-------------------------------
INT 10 - Japanese VIDEO - DOUBLE-BYTE CHARACTER SET SHIFT INFORMATION
AH = 19h
???
Return: ???
SeeAlso: AH=18h,INT 16/AH=14h
--------V-101A00-----------------------------
INT 10 - VIDEO - GET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
AX = 1A00h
Return: AL = 1Ah if function was supported
BL = active display code (see #0037)
BH = alternate display code (see #0037)
Notes: this function is commonly used to check for the presence of a VGA
this function is supported on the ATI EGA Wonder with certain
undocumented configuration switch settings, even though the EGA
Wonder does not support VGA graphics; to distinguish this case,
call AX=1C00h with CX nonzero, which the EGA Wonder does not support
SeeAlso: AH=12h/BL=35h,AX=1A01h,AH=1Bh,AH=1Ch,MEM 0040h:008Ah
Index: installation check;VGA
(Table 0037)
Values for display combination code:
00h no display
01h monochrome adapter w/ monochrome display
02h CGA w/ color display
03h reserved
04h EGA w/ color display
05h EGA w/ monochrome display
06h PGA w/ color display
07h VGA w/ monochrome analog display
08h VGA w/ color analog display
09h reserved
0Ah MCGA w/ digital color display
0Bh MCGA w/ monochrome analog display
0Ch MCGA w/ color analog display
FFh unknown display type
--------V-101A01-----------------------------
INT 10 - VIDEO - SET DISPLAY COMBINATION CODE (PS,VGA/MCGA)
AX = 1A01h
BL = active display code (see #0037)
BH = alternate display code
Return: AL = 1Ah if function was supported
SeeAlso: AH=12h/BL=35h,AX=1A00h
--------V-101B-------------------------------
INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA)
AH = 1Bh
BX = implementation type
0000h return funtionality/state information
ES:DI -> 64-byte buffer for state information (see #0038)
Return: AL = 1Bh if function supported
ES:DI buffer filled with state information
BUG: Trident 8900 (BIOS D3.0 11/12/91) and Trident 9000 (C3.0 10/25/91)
do not correctly set the fields at offsets 27h and 29h of the
state information
SeeAlso: AH=15h,AX=1A00h,AX=1F01h
Format of MCGA+ state information:
Offset Size Description (Table 0038)
00h DWORD address of static funtionality table (see #0043)
04h BYTE video mode in effect
05h WORD number of columns
07h WORD length of regen buffer in bytes
09h WORD starting address of regen buffer
0Bh WORD cursor position for page 0
0Dh WORD cursor position for page 1
0Fh WORD cursor position for page 2
11h WORD cursor position for page 3
13h WORD cursor position for page 4
15h WORD cursor position for page 5
17h WORD cursor position for page 6
19h WORD cursor position for page 7
1Bh WORD cursor "type" (start/stop scan lines)
1Dh BYTE active display page
1Eh WORD CRTC port address
20h BYTE current setting of PORT 03x8h
21h BYTE current setting of PORT 03x9h
22h BYTE number of rows - 1
23h WORD bytes/character
25h BYTE display combination code of active display
26h BYTE DCC of alternate display
27h WORD number of colors supported in current mode (0000h = mono)
29h BYTE number of pages supported in current mode
2Ah BYTE number of scan lines active
(0,1,2,3) = (200,350,400,480)
Tseng ET3000: (4,5,6 = 512,600,768)
2Bh BYTE primary character block
2Ch BYTE secondary character block
2Dh BYTE miscellaneous flags (see #0039)
2Eh BYTE non-VGA mode support (see #0040)
2Fh 2 BYTEs reserved (00h)
31h BYTE video memory available
00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K
32h BYTE save pointer state flags (see #0041)
33h BYTE display information and status (see #0042)
34h 12 BYTEs reserved (00h)
Bitfields for miscellaneous flags:
Bit(s) Description (Table 0039)
0 all modes on all displays on
1 gray summing on
2 monochrome display attached
3 default palette loading disabled
4 cursor emulation enabled
5 0 = intensity; 1 = blinking
6 flat-panel display is active
7 unused (0)
SeeAlso: #0038
Bitfields for non-VGA mode support:
Bit(s) Description (Table 0040)
7-5 reserved
4 132-column mode supported
3 =1 MFI attributes enabled (see AH=12h/BL=37h)
=0 VGA attributes
2 16-bit VGA graphics present
1 adapter interface driver required
0 BIOS supports information return for adapter interface
SeeAlso: #0038
Bitfields for save pointer state flags:
Bit(s) Description (Table 0041)
0 512 character set active
1 dynamic save area present
2 alpha font override active
3 graphics font override active
4 palette override active
5 DCC override active
6-7 unused (0)
SeeAlso: #0038
Bitfields for display information and status:
Bit(s) Description (Table 0042)
7 640x480 flat-panel can be used simultaneously with CRT controller
6-3 reserved
2 color display
1 flat-panel display active
0 flat-panel display attached
SeeAlso: #0038
Format of Static Functionality Table:
Offset Size Description (Table 0043)
00h BYTE modes supported 1
bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6,7 supported
01h BYTE modes supported 2
bit 0 to bit 7 = 1 modes 8,9,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh supported
02h BYTE modes supported 3
bit 0 to bit 3 = 1 modes 10h,11h,12h,13h supported
bit 4 to bit 7 unused (0)
03h BYTE (IBM) reserved
(Tseng ET3000/4000) modes supported 4
bit 0 to bit 7 = modes 18h-1Fh supported
04h BYTE (IBM) reserved
(Tseng ET3000/4000) modes supported 5
bit 0 to bit 7 = modes 20h-27h supported
05h BYTE (IBM) reserved
(Tseng ET3000/4000) modes supported 6
bit 0 to bit 7 = modes 28h-2Fh supported
06h BYTE (IBM) reserved
(Tseng ET3000/4000) modes supported 7
bit 0 to bit 7 = modes 30h-37h supported
07h BYTE scan lines supported
bit 0 to bit 2 = 1 if scan lines 200,350,400 supported
bits 3-7 = unused (0)
08h BYTE total number of character blocks available in text modes
09h BYTE maximum number of active character blocks in text modes
0Ah WORD miscellaneous function support flags (see #0044)
0Ch WORD reserved
0Eh BYTE save pointer function flags (see #0045)
0Fh BYTE reserved
SeeAlso: #0038
Bitfields for miscellaneous function support flags:
Bit(s) Description (Table 0044)
0 all modes on all displays function supported
1 gray summing function supported
2 character font loading function supported
3 default palette loading enable/disable supported
4 cursor emulation function supported
5 EGA palette present
6 color palette present
7 color-register paging function supported
8 light pen supported (see AH=04h)
9 save/restore state function 1Ch supported
10 intensity/blinking function supported (see AX=1003h)
11 Display Combination Code supported (see #0037)
12-15 unused (0)
SeeAlso: #0038
Bitfields for save pointer function flags:
Bit(s) Description (Table 0045)
0 512 character set supported
1 dynamic save area supported
2 alpha font override supported
3 graphics font override supported
4 palette override supported
5 DCC extension supported
6-7 unused (0)
SeeAlso: #0038
--------V-101C-------------------------------
INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA)
AH = 1Ch
AL = function
00h return state buffer size
Return: BX = number of 64-byte blocks needed
01h save video state
ES:BX -> buffer
02h restore video state
ES:BX -> buffer containing previously saved state
CX = requested states (see #0046)
Return: AL = 1Ch if function supported
Notes: many BIOSes corrupt the video registers when saving the state, so a
program should restore the state immediately after saving it (the
saved data is uncorrupted)
the BIOS data area consists of the 96 bytes from 0040h:0049h-00A8h
this function is not supported when DOS/V is running
this function may be a better VGA installation check than the usual
INT 10/AX=1A00h, since some late-model EGA cards (such as the ATI
EGA Wonder) supported that call
SeeAlso: AX=1A00h,MEM 0040h:00A8h
Bitfields for requested states:
Bit(s) Description (Table 0046)
0 video hardware (see #0047)
1 BIOS data areas
2 color registers and DAC state (see #0048)
3-15 unused (0)
Format of VGA video hardware state:
Offset Size Description (Table 0047)
00h BYTE sequencer index register
01h BYTE CRTC index register
02h BYTE graphics controller index register
03h BYTE attribute controller index register
04h BYTE feature controller register
05h 4 BYTEs sequencer registers
09h BYTE sequencer register 0
0Ah 25 BYTEs CRTC registers 0-8
23h 16 BYTEs palette registers 00h-0Fh
33h 4 BYTEs attribute registers 10h-13h
37h 9 BYTEs graphics controller registers 0-8
40h BYTE CRTC base address (low)
41h BYTE CRTC base address (high)
42h BYTE plane 0 latch
43h BYTE plane 1 latch
44h BYTE plane 2 latch
45h BYTE plane 3 latch
Format of VGA DAC state:
Offset Size Description (Table 0048)
00h BYTE read/write mode DAC
01h BYTE pixel address
02h BYTE pixel mask
03h 768 BYTEs color data (256 triples)
303h BYTE color select register
--------J-101D-------------------------------
INT 10 - VIDEO - DOS/V - SHIFT STATUS LINE CONTROL
AH = 1Dh
AL = function
00h enable shift status line(s)
BX = number of lines to reserve at bottom of screen (usu. 1)
01h disable shift status line
BX = number of lines reserved at bottom of screen (usually 1)
02h get number of status lines
Return: BX = number of lines reserved for shift status
SeeAlso: AH=19h
--------V-101D-------------------------------
INT 10 - SpeedSTAR Plus BIOS v4.23+ - SET SYNC PARAMETERS
AH = 1Dh
AL = video mode
ES = caller's segment
Return: nothing
Note: the caller's segment contains at offset 5Ch (FCB field in PSP)
or 100h a table with sync parameters (see #0049) (BIOS looks at both
offsets)
Format of SpeedSTAR Plus sync table:
Offset Size Description (Table 0049)
00h 9 BYTEs ID contains string 'ey5CENTER'
09h 5 BYTEs sync parameters for 640x480 modes 11h,12h,25h,26h,2Eh
0Bh 5 BYTEs sync parameters for 800x600 modes 29h,30h,2Ah
13h 5 BYTEs sync parameters for 1024x768 modes 37h,38h
--------V-101D-------------------------------
INT 10 - Tseng ET-4000 BIOS v3.00 and v8.00 - BUG
AH = 1Dh
Note: these versions of the BIOS jump to a random location on this function
due to a fencepost error
--------V-101DAABXFDEC-----------------------
INT 10 U - Diamond Stealth64 Video - INSTALLATION CHECK
AX = 1DAAh
BX = FDECh
Return: BX = CDEFh if Diamond Stealth64 Video 2001-series video card installed
AL = number of megabytes of video memory
AH = ??? (4Bh/5Bh)
CX = ??? (0000h)
SI:DI -> signature/copyright string
--------V-101E00-----------------------------
INT 10 - VIDEO - FLAT-PANEL - READ INFORMATION
AX = 1E00h
Return: AL = 1Eh if function supported
BL = flat-panel status (see #0050)
ES:DI -> information table (see #0051)
Note: IBM classifies this function as optional
SeeAlso: AX=1E01h,AX=1E02h,AX=1E03h,AX=1E04h,AX=1E05h,AX=1EFEh
Bitfields for flat-panel status:
Bit(s) Description (Table 0050)
7-3 reserved
2 color display
1 flat panel is active
0 flat panel is attached
SeeAlso: #0051
Format of flat-panel information table:
Offset Size Description (Table 0051)
00h BYTE number of WORDs in the remainder of the table
01h WORD number of vertical pixels per meter
03h WORD number of horizontal pixels per meter
05h WORD total number of vertical pixels
07h WORD total number of horizontal pixels
09h WORD vertical pixel separation in micrometers (center-to-center)
0Bh WORD horizontal pixel separation in micrometers
0Dh WORD range of gray levels available, less 1
0Fh WORD number of red levels available, less 1 (0000h if nonochrome)
11h WORD number of green levels available, less 1 (0000h if nonochrome)
13h WORD number of blue levels available, less 1 (0000h if nonochrome)
SeeAlso: #0050
--------V-101E01-----------------------------
INT 10 - VIDEO - FLAT-PANEL - LCD/CRT DISPLAY CONTROL
AX = 1E01h
BH = function
bit 7: =1 set display control, =0 query control
bits 6-0: reserved (0)
---if BH bit 7 set---
BL = new display combination (see #0052)
Return: AL = 1Eh if function supported
BH = results
bit 7: query/set (copied from input)
bits 6-3: reserved (0)
bit 2: simultaneous display is supported by hardware
bit 1: LCD/CRT display control supported by hardware
bit 0: set operation was successful (always clear on get)
BL = active display combination (see #0052)
SeeAlso: AX=1E00h,AX=1E02h
Bitfields for Flat-Panel display combination:
Bit(s) Description (Table 0052)
7-2 reserved (0)
1-0 combination
00 reserved
01 LCD active
10 CRT active
11 both LCD and CRT active (simultaneous display)
SeeAlso: #0053
--------V-101E02-----------------------------
INT 10 - VIDEO - FLAT-PANEL - DISPLAY POSITION
AX = 1E02h
BH = function
bit 7: =1 set display position, =0 query position
bits 6-0: reserved (0)
---if BH bit 7 set---
BL = new position setting (see #0053)
Return: AL = 1Eh if function supported
BH = results
bit 7: query/set (copied from input)
bits 6-4: reserved (0)
bit 3: positioning to top is supported by hardware
bit 2: positioning to center is supported by hardware
bit 1: positioning to bottom is supported by hardware
bit 0: set operation was successful (always clear on get)
BL = active position setting (see #0053)
SeeAlso: AX=1E00h,AX=1E01h
Bitfields for Flat-Panel position setting:
Bit(s) Description (Table 0053)
7-2 reserved (0)
1-0 position
00 center
01 top
10 bottom
11 reserved
SeeAlso: #0052,#0054
--------V-101E03-----------------------------
INT 10 - VIDEO - FLAT-PANEL - VERTICAL EXPANSION FOR TEXT/GRAPHICS MODES
AX = 1E03h
BH = function
bit 7: =1 set vertical expansion, =0 query expansion
bits 6-0: reserved (0)
---if BH bit 7 set---
BL = new vertical expansion setting (see #0054)
Return: AL = 1Eh if function supported
BH = results
bit 7: query/set (copied from input)
bits 6-4: reserved (0)
bit 3: vertical expansion of text is supported by hardware
bit 2: vertical expansion of graphics is supported by hardware
bit 1: hardware supports independent control of expansion in
text and graphics modes
bit 0: set operation was successful (always clear on get)
BL = active vertical expansion setting (see #0054)
SeeAlso: AX=1E00h,AX=1E02h.AX=1E04h
Bitfields for Flat-Panel vertical expansion setting:
Bit(s) Description (Table 0054)
7-2 reserved (0)
1 vertical expansion turned on for text modes
0 vertical expansion turned on for graphics modes
SeeAlso: #0052,#0053,#0055
--------V-101E04-----------------------------
INT 10 - VIDEO - FLAT-PANEL - NORMAL/REVERSE VIDEO FOR TEXT/GRAPHICS MODES
AX = 1E04h
BH = function
bit 7: =1 set normal/reverse video, =0 query normal/reverse
bits 6-0: reserved (0)
---if BH bit 7 set---
BL = new normal/reverse video setting (see #0055)
Return: AL = 1Eh if function supported
BH = results
bit 7: query/set (copied from input)
bits 6-4: reserved (0)
bit 3: hardware supports reverse video for text modes
bit 2: hardware supports reverse video for graphics modes
bit 1: hardware supports independent control of reverse video
in text and graphics modes
bit 0: set operation was successful (always clear on get)
BL = active normal/reverse video setting (see #0055)
SeeAlso: AX=1E00h,AX=1E03h,AX=1E05h
Bitfields for Flat-Panel normal/reverse video setting:
Bit(s) Description (Table 0055)
7-2 reserved (0)
1 reverse video for text
0 reverse video for graphics
SeeAlso: #0052,#0054,#0056,#0057
--------V-101E05-----------------------------
INT 10 - VIDEO - FLAT-PANEL - BRIGHTNESS CONTROL
AX = 1E05h
BH = function
bit 7: =1 set brightness, =0 query brightness
bits 6-0: reserved (0)
---if BH bit 7 set---
BL = new brightness setting (see #0056)
Return: AL = 1Eh if function supported
BH = results
bit 7: query/set (copied from input)
bits 6-2: reserved (0)
bit 1: software brightness control is supported
bit 0: set operation was successful (always clear on get)
BL = active brightness setting (see #0056)
Note: this function operates independently of AX=1E07h
SeeAlso: AX=1E00h,AX=1E04h,AX=1E06h,AX=1E07h
Bitfields for Flat-Panel brightness control:
Bit(s) Description (Table 0056)
7-1 reserved (0)
0 high brightness
SeeAlso: #0055,#0057
--------V-101E06-----------------------------
INT 10 - VIDEO - FLAT-PANEL - CONTRAST CONTROL FOR TEXT/GRAPHICS
AX = 1E06h
BH = function
bit 7: =1 set contrast control, =0 query contrast
bits 6-0: reserved (0)
---if BH bit 7 set---
BL = new normal/reverse video setting (see #0057)
Return: AL = 1Eh if function supported
BH = results
bit 7: query/set (copied from input)
bits 6-4: reserved (0)
bit 3: software contrast control supported for text
bit 2: software contrast control supported for graphics
bit 1: hardware supports independent control of contrast
in text and graphics modes
bit 0: set operation was successful (always clear on get)
BL = active contrast setting (see #0057)
Note: this function operates independently of AX=1E08h
SeeAlso: AX=1E00h,AX=1E04h,AX=1E05h,AX=1E07h,AX=1E08h
Bitfields for Flat-Panel contrast control:
Bit(s) Description (Table 0057)
7-2 reserved (0)
1 high contrast for text
0 high contrast for graphics
SeeAlso: #0055,#0056
--------V-101E07-----------------------------
INT 10 - VIDEO - FLAT-PANEL - BRIGHTNESS SETTING
AX = 1E07h
BH = function
bit 7: =1 set brightness control, =0 query brightness
bit 6: use standard brightness
bits 5-0: reserved (0)
---if BH bits 7,6=10---
BL = brightness (00h = minimum, FFh = maximum)
Return: AL = 1Eh if function supported
BH = results
bit 7: query/set (copied from input)
bit 6: standard/custom (copied from input)
bits 5-2: reserved (0)
bit 1: software brightness control is supported
bit 0: set operation was succesful (always clear on get)
BL = brightness (00h = minimum, FFh = maximum)
Note: this function operates independently of AX=1E05h
SeeAlso: AX=1E00h,AX=1E05h,AX=1E08h
--------V-101E08-----------------------------
INT 10 - VIDEO - FLAT-PANEL - CONTRAST SETTING
AX = 1E08h
BH = function
bit 7: =1 set contrast control, =0 query contrast
bit 6: use standard contrast
bits 5-0: reserved (0)
---if BH bits 7,6=10---
BL = contrast (00h = minimum, FFh = maximum)
Return: AL = 1Eh if function supported
BH = results
bit 7: query/set (copied from input)
bit 6: standard/custom (copied from input)
bits 5-2: reserved (0)
bit 1: software contrast control is supported
bit 0: set operation was succesful (always clear on get)
BL = contrast (00h = minimum, FFh = maximum)
Note: this function operates independently of AX=1E06h
SeeAlso: AX=1E00h,AX=1E06h,AX=1E07h
--------V-101EFE-----------------------------
INT 10 - VIDEO - FLAT-PANEL - FUNCTION SUPPORT FLAG
AX = 1EFEh
ES:DI -> DWORD buffer for bitmap of supported functions
(set to all zeros before calling)
Return: ES:DI buffer updated with mask of supported functions
Index: installation check;flat-panel display support
SeeAlso: AX=1E00h,AX=1E06h
--------V-101F00-----------------------------
INT 10 - VIDEO - XGA - GET DMQS (Display Mode Query and Set) DATA LENGTH
AX = 1F00h
Return: AL = 1Fh if supported
BX = number of bytes of DMQS data
Note: not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
and later models.
SeeAlso: AX=1F01h
--------V-101F01-----------------------------
INT 10 - VIDEO - XGA - READ DMQS DATA
AX = 1F01h
ES:DI -> user buffer for return data (call AX=1F00h for size)
Return: AL = 1Fh if function supported
user buffer filled with DMQS data (see #0058)
Note: not supported on the original IBM XGA, only on XGA-NI (non-interlaced)
and later models.
SeeAlso: AH=1Bh,AX=1F00h,AX=3000h
Format of XGA DMQS buffer:
Offset Size Description (Table 0058)
00h WORD offset (in bytes) to DMQS data for next XGA instance
02h BYTE slot number
03h BYTE XGA implementation function level identifier
04h BYTE XGA implementation resolution level identifier
05h WORD vendor identifier - identifies card vendor
07h WORD vendor defined field
09h WORD XGA adapter I/O register base address
0Bh WORD XGA coprocessor register base address
(paragraph--multiply by 10h to get physical address)
0Dh WORD 1 Megabyte system video memory aperture
0000h if not allocated
(Multiply by 100000h to get physical address)
0Fh WORD 4 Megabyte system video memory aperture
0000h if not allocated
(multiply by 100000h to get physical address)
11h WORD video memory base address
(multiply by 100000h to get physical address)
13h WORD composite ID of the attached display
15h BYTE amount of video memory available, in multiples of 256K bytes
16h DWORD alternate XGA coprocessor register base address. 0 = none.
1Ah var DMQS Data for further XGA Instances (as above)
Note: "Instances" refers to the capability of having up to 8 XGA
adapters in one computer.
SeeAlso: #0059
--------V-101F02-----------------------------
INT 10 - VIDEO - XGA - GET SVGA DMQS DATA LENGTH
AX = 1F02h
Return: AL = 1Fh if function supported
BX = length of SVGA DMQS data in bytes
SeeAlso: AX=1F00h,AX=1F03h
--------V-101F03-----------------------------
INT 10 - VIDEO - XGA - GET SVGA DMQS DATA
AX = 1F03h
ES:DI -> buffer for SVGA DMQS data (see #0059)
Return: AL = 1Fh if function supported
ES:DI buffer filled
SeeAlso: AX=1F00h,AX=1F02h
Format of SVGA DMQS data:
Offset Size Description (Table 0059)
00h WORD offset to DMQS data for next SVGA instance or 0000h
02h BYTE reserved
03h BYTE SVGA implementation functional level
04h BYTE SVGA implementation resolution level
05h WORD vendor ID
07h WORD vendor-specific
09h 7 BYTEs reserved
10h BYTE SVGA linear address window size
00h 64K
01h 1M
02h 2M
03h 4M
11h WORD SVGA linear address window location or 0000h if not allocated
(multiply by 10000h [shift left 16 bits] to get physical addr)
13h WORD attached monitor's composite monitor ID
15h BYTE available video RAM in multiples of 256K
16h 11 BYTEs reserved
SeeAlso: #0058
--------V-103000CX0000-----------------------
INT 10 - VIDEO - LOCATE 3270PC CONFIGURATION TABLE (INSTALLATION CHECK)
AX = 3000h
CX = 0000h
DX = 0000h
Return: CX:DX -> 3270PC configuration table (see #0060)
CX:DX = 0000h:0000h if 3270PC Control Program not active
SeeAlso: AX=1F01h
Format of 3270 PC configuration table:
Offset Size Description (Table 0060)
00h BYTE aspect ratio X
01h BYTE aspect ratio Y
02h BYTE monitor type (see #0061)
03h BYTE reserved
04h BYTE adapter ID
00h = 5151/5272 adapter
04h = 5151/5272 with XGA adapter
30h = 3295 or 3270PC G/GX adapter
05h BYTE reserved
06h BYTE function flags 1 (see #0062)
07h BYTE function flags 2
bit 6: GPI graphics supported
08h WORD segment address of Control Program Level table (see #0063)
0Ah 10 BYTEs reserved
(Table 0061)
Values for 3270 PC monitor type:
00h 5151 (mono) or 5272 (color)
01h 3295
02h 5151 or 5272 with XGA (???) graphics adapter
03h 5279 with 3270PC G adapter
04h 5379 model C01 with 3270PC GX adapter
05h 5379 model M01 with 3270PC GX adapter
07h non-3270PC with 3270 Workstation Program
FFh 3270PC Control Program not loaded
Bitfields for 3270 PC function flags 1:
Bit(s) Description (Table 0062)
7 mono text, 1 page
6 color text, 1 page
5 color text, 4 pages
4 CGA color graphics
3 720x350 two-color graphics
2 360x350 four-color graphics
1 720x350 eight-color graphics
Format of Control Program Level table:
Offset Size Description (Table 0063)
00h WORD program version
02xxh = 3270PC Control Program v2.xx
03xxh = 3270PC Control Program v3.xx
04xxh = 3270 Workstation Program v1.xx
02h BYTE Control Program ID (00h)
03h 27 BYTEs Control Program Descriptor ("IBM 3270 PC CONTROL PROGRAM")
--------a-103800-----------------------------
INT 10 - Tinytalk Personal v1.09f+ - GET CONFIGURATION INFO
AX = 3800h
Return: ES:DI -> configuration info (see #0064)
Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
Notes: this call is also used as the installation check by verifying that the
returned ES:DI points at valid configuration info
Tinytalk v1.09f ignores AL and always returns the configuration info;
v1.10 adds several subfunctions selected with AL
SeeAlso: AX=3801h,AX=3803h,AX=3806h,AH=39h,INT 14/AX=F0F1h
SeeAlso: INT 2F/AX=FB00h"AutoBraille"
Index: installation check;Tinytalk Personal
Format of Tinytalk Personal configuration info:
Offset Size Description (Table 0064)
00h 8 BYTEs signature "TTCONFIG"
08h WORD size of configuration data, not counting signature, this WORD,
or the following byte
0Ah BYTE ???
0Bh ??? configuration data
--------a-103801-----------------------------
INT 10 - Tinytalk Personal v1.10 - ???
AX = 3801h
DL = ???
Return: ???
SeeAlso: AX=3800h,AX=3802h
--------a-103802-----------------------------
INT 10 - Tinytalk Personal v1.10 - ???
AX = 3802h
DL = ???
Return: ???
SeeAlso: AX=3800h,AX=3801h
--------a-103803-----------------------------
INT 10 - Tinytalk Personal v1.10 - GET ???
AX = 3803h
Return: AL = ???
SeeAlso: AX=3800h,AX=3804h,AX=3805h
--------a-103804-----------------------------
INT 10 - Tinytalk Personal v1.10 - GET ???
AX = 3804h
Return: AX = ???
SeeAlso: AX=3800h,AX=3803h,AX=3805h
--------a-103805-----------------------------
INT 10 - Tinytalk Personal v1.10 - GET ???
AX = 3805h
Return: AL = ???
SeeAlso: AX=3800h,AX=3803h,AX=3804h
--------a-103806-----------------------------
INT 10 - Tinytalk Personal v1.10 - ???
AX = 3806h
ES:DX -> ASCIZ ???
Return: ???
SeeAlso: AX=3800h
--------a-1039-------------------------------
INT 10 - Tinytalk Personal v1.10 - ???
AH = 39h
Program: Tinytalk is a shareware screen reader by OMS Development/Eric Bohlman
Note: this function was a NOP in TTDEMO.EXE, but may be implemented in other
variants of Tinytalk
--------V-1040-------------------------------
INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX)
AH = 40h
Return: nothing
Desc: switch the Hercules Graphics Card into graphics mode (720x348)
SeeAlso: AH=00h,AH=41h
Index: video modes;Hercules
--------V-1041-------------------------------
INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX)
AH = 41h
Return: nothing
Desc: switch the Hercules Graphics Card into text mode
SeeAlso: AH=00h,AH=40h
Index: video modes;Hercules
--------V-1042-------------------------------
INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX)
AH = 42h
Return: nothing
SeeAlso: AH=45h
--------V-1043-------------------------------
INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX)
AH = 43h
AL = page number (0,1)
Return: nothing
Desc: specify which of the two pages of video memory is to be used for
output
SeeAlso: AH=05h,AH=44h,AH=45h
--------V-1044-------------------------------
INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX)
AH = 44h
AL = drawing function
00h clear pixels
01h set pixels
02h invert pixels
Return: nothing
Desc: specify how graphics output will change the display
SeeAlso: AH=45h,AH=46h,AH=4Ch,AH=4Dh
--------V-1045-------------------------------
INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX)
AH = 45h
AL = page number (0,1)
Return: nothing
Desc: specify which of the two pages of video memory is visible on screen
SeeAlso: AH=05h,AH=42h,AH=43h
--------V-1046-------------------------------
INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX)
AH = 46h
DI = x (0-719)
BP = y (0-347)
Return: nothing
Note: function 44h determines operation and function 43h which page to use
SeeAlso: AH=0Ch,AH=47h,AH=49h,AH=4Ch,AH=4Dh
--------V-1047-------------------------------
INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX)
AH = 47h
DI = x (0-719)
BP = y (0-347)
Return: AL = 00h pixel clear
AL = 01h pixel set
Note: function 43h specifies which page is used
SeeAlso: AH=0Dh,AH=46h
--------V-1048-------------------------------
INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX)
AH = 48h
DI = x (0-719)
BP = y (0-347)
Return: nothing
Desc: specify the location from which to start the next graphics output
SeeAlso: AH=49h
--------V-1049-------------------------------
INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX)
AH = 49h
DI = x (0-719)
BP = y (0-347)
Return: nothing
Note: function 48h or 49h specify first point, 44h operation and 43h page to
use
SeeAlso: AH=43h,AH=44h,AH=48h,AH=4Ch,AH=4Dh
--------V-104A-------------------------------
INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX)
AH = 4Ah
DI = x coordinate of lower left corner
BP = y coordinate of lower left corner
BX = height in pixels
CX = width in pixels
Return: nothing
Desc: draw a solid rectangle of the specified size at the given location
SeeAlso: AH=4Eh
--------V-104B-------------------------------
INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX)
AH = 4Bh
AL = character to display
DI = x (0-719)
BP = y (0-347)
Return: nothing
Note: unlike the other BIOS character functions character position is
specified in pixels rather than rows and columns
SeeAlso: AH=09h,AH=0Ah
--------P-104B-------------------------------
INT 10 - FRIEZE - API
AH = 4Bh
CL = function
00h (v6.x-) print window
AL = mode
00h character
01h normal
02h sideways
01h load window
ES:BX -> ASCIZ filename from which to read
02h save window
ES:BX -> ASCIZ filename to which to write
03h set print width
AL = width in 1/4 inches
04h set print height
AL = height in 1/4 inches
05h reserved
06h set left margin
AL = printout margin in 1/4 inches
07h set window size
ES:BX -> four-WORD structure with Xmin, Ymin, Xmax, Ymax
08h reserved
09h set patterns
ES:BX -> 16-BYTE vector of screen->printer color correspondnces
0Ah get patterns
ES:BX -> 16-BYTE buffer for color correspondences
0Bh set mode
AL = mode
0Ch (v7.41) ???
AL = ???
00h ??? (calls original INT 05)
else ???
0Dh (v7.41) ???
AL = ???
00h ??? (calls original INT 05)
else ???
0Eh (v7.41) ???
???
0Fh get window
ES:BX -> four-WORD buffer for Xmin, Ymin, Xmax, Ymax
10h set print options
ES:BX -> printer options in same format as FRIEZE cmdline
11h initialize
ES:BX -> three-WORD array from CARDS.DAT for HRes, VRes, code
12h (v7.41) ???
???
13h (v7.41) ???
???
14h get version
Return: AH = major version (00h if FRIEZE version before 7)
AL = minor version
15h set parameters
ES:BX -> parameter table (see #0066)
16h get parameters
ES:BX -> buffer for parameter table (see #0066)
17h get printer resolution
ES:BX -> 12-WORD table for six horizontal/vertical resol pairs
18h (v8.0 only) reserved
50h (v7.41) get ???
Return: AX = ???
51h (v7.41) get ???
Return: ES = ??? (seen 2348h)
AX = ??? (seen 8432h)
Return: AX = status (see #0065)
SeeAlso: AH=0Fh/SI=F123h
(Table 0065)
Values for FRIEZE function status:
00h successful
01h user aborted printout with ESC
02h reserved
03h file read error
04h file write error or printer error
05h file not found
06h invalid header (not an image or wrong screen mode) or can't create file
07h file close error
08h disk error
09h (v7.0+) printer error
0Ah invalid function
0Bh (v7.0+) can't create file
0Ch (v7.0+) wrong video mode
Format of FRIEZE parameter table:
Offset Size Description (Table 0066)
00h WORD top margin (1/100 inch)
02h WORD left margin (1/100 inch)
04h WORD horizontal size (1/100 inch)
06h WORD vertical size (1/100 inch)
08h WORD quality/draft mode
00h draft mode
01h quality mode
02h use horizontal/vertical resolution for output resolution
0Ah WORD printer horizontal resolution (dots per inch)
0Ch WORD printer vertical resolution (dots per inch)
0Eh WORD reserved (FFFFh)
Note: any field which should remain unchanged may be filled with FFFFh
--------V-104C-------------------------------
INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX)
AH = 4Ch
AL = quadrant (1 = upper right, 2 = upper left, etc)
DI = x coordinate of center
BP = y coordinate of center
BX = radius
Return: nothing
SeeAlso: AH=49h,AH=4Dh
--------V-104D-------------------------------
INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX)
AH = 4Dh
DI = x of center
BP = y of center
BX = radius
Return: nothing
SeeAlso: AH=49h,AH=4Ch
--------V-104E-------------------------------
INT 10 - VIDEO - FILL AREA (Hercules GRAFIX)
AH = 4Eh
DI = x coordinate of an interior point
BP = y coordinate of an interior point
Return: nothing
Desc: fill a convex polygonal area bounded by a contiguous line of the
opposite color with the border color
Note: the first fill makes the figure solid, the second erases it
SeeAlso: AH=4Ah
--------V-104E00-----------------------------
INT 10 - VESA XGA BIOS Extensions - GET XGA ENVIRONMENT INFORMATION
AX = 4E00h
ES:DI -> 256-byte buffer for XGA information (see #0067)
Return: AL = 4Eh if function supported
AH = status
00h successful
else error code
Desc: determine whether VESA XGA extensions are present and the capabilities
supported by the display adapter
SeeAlso: AX=4E01h,AX=4E02h,AX=4F00h
Index: installation check;VESA XGA
Format of XGA information buffer:
Offset Size Description (Table 0067)
00h 4 BYTEs signature ("VESA")
04h WORD VESA version number
06h DWORD pointer to ASCIZ OEM string
0Ah DWORD environment flags (see #0068)
0Eh WORD number of XGA adapters installed (other VESA XGA functions
require a handle indicating which adapter to use)
10h 240 BYTEs reserved
Bitfields for XGA environment flags:
Bit(s) Description (Table 0068)
0-1 system bus (00 = MCA, 01 = ISA, 10 = EISA)
2 bus mastering available
3-31 reserved
--------V-104E01----------------------------
INT 10 - VESA XGA BIOS Extensions - RETURN XGA SUBSYSTEM INFORMATION
AX = 4E01h
DX = XGA handle (0 to number of XGAs-1)
ES:DI -> 256-byte buffer for subsystem information (see #0069)
Return: AL = 4Eh if function supported
AH = status
00h function successful
else error code
SeeAlso: AX=4E00h,AX=4E02h
Format of XGA subsystem information:
Offset Size Description (Table 0069)
00h DWORD pointer to null-terminated board OEM string
04h DWORD capabilities (see #0070)
08h DWORD pointer to 8KB XGA ROM (or NULL)
0Ch DWORD pointer to the XGA memory mapped registers
10h WORD base address of XGA I/O registers (21x0h)
12h DWORD pointer to start of physical video memory
(A000h:0000h or B000h:0000h)
16h DWORD physical address of 4MB aperture (or NULL if none)
1Ah DWORD physical address of 1MB aperture (or NULL if none)
1Eh DWORD physical address of 64KB aperture (or NULL if not enabled)
22h DWORD physical address of OEM aperture (or NULL if none)
26h WORD size of OEM aperture in 64KByte units
28h DWORD pointer to list of video modes
The list is a series of WORDs terminated by FFFFh
2Ch WORD number of 64KB blocks on the board
2Eh DWORD XGA manufacturer ID
byte 0 POS data index 1
byte 1 is index 2
byte 2 is 21xAh index 75h
32h 206 BYTEs reserved
Bitfields for XGA capabilities:
Bit(s) Description (Table 0070)
0-1 board bus architecture: 0=MCA, 1=ISA, 3=EISA
2-3 reserved
4-6 DMA Channel assigned for acquiring bus mastership (only for ISA bus)
7 DMA Channel Status (ISA only). enabled if set
8-31 reserved
--------V-104E02-----------------------------------
INT 10 - VESA XGA BIOS Extensions - RETURN XGA MODE INFORMATION
AX = 4E02h
CX = Video mode
DX = XGA handle
ES:DI -> 256 byte buffer for mode information (see #0071)
Return: AL = 4Eh if function supported
AH = status
00h function successful
else error code
SeeAlso: AX=4E00h,AX=4E01h
Format of XGA mode information:
Offset Size Description (Table 0071)
00h WORD attributes of the mode (see #0072)
02h WORD bytes per logical scanline
04h WORD horizontal resolution in pixels
06h WORD vertical resolution in scanlines
08h BYTE character Width in pixels
09h BYTE character Height in pixels
0Ah BYTE number of planes
0Bh BYTE bits per pixels
0Ch BYTE memory model (see #0073)
0Dh BYTE number of Image Pages
0Eh BYTE number of Red bits
0Fh BYTE bit position of Red bit field
10h BYTE number of Green bits
11h BYTE bit position of Green bit field
12h BYTE number of Blue bits
13h BYTE bit position of Blue bit field
14h BYTE number of Reserved bits
15h BYTE bit position of Reserved bit field
16h 235 BYTEs reserved
Bitfields for XGA mode attributes:
Bit(s) Description (Table 0072)
0 set if mode is supported
1 reserved
2 output is supported by the BIOS
3 reserved
4 if set this is a graphics mode (VGA registers inactive, XGA active),
if clear this is a text mode (VGA registers active, XGA inactive)
(Table 0073)
Values for XGA video memory model:
00h Text Mode
01h CGA graphics
02h Hercules graphics
03h 4-planar graphics
04h Packed Pixel
05h Non-chain 4, 256 color
06h Direct Color
07h YUV-24
--------V-104E03-----------------------------------
INT 10 - VESA XGA BIOS Extensions - SET XGA VIDEO MODE
AX = 4E03h
BX = video mode
CX = other command flags
bit 0 If clear the feature connector is set to the default state
DX = XGA handle
ES:DI -> 256 byte buffer
Return: AL = 4Eh if function supported
AH = status
00h function successful
else error code
SeeAlso: AH=00h,AX=4E04h,AX=4F02h
--------V-104E04-----------------------------------
INT 10 - VESA XGA BIOS Extensions - RETURN CURRENT VIDEO MODE
AX = 4E04h
DX = XGA handle
Return: AL = 4Eh if function supported
AH = status
00h function successful
BX??? = current mode
else error code
SeeAlso: AH=0Fh,AX=4E03h,AX=4F03h
--------V-104E05-----------------------------------
INT 10 - VESA XGA BIOS Extensions - SET FEATURE CONNECTOR STATE
AX = 4E05h
BX = Feature Connector State (see #0074)
DX = XGA handle
Return: AL = 4Eh if function supported
AH = status
00h function successful
else error code
SeeAlso: AX=4E00h,AX=4E06h
Bitfields for XGA Feature Connector State:
Bit(s) Description (Table 0074)
0 Feature Connector is enabled
1 Feature Connector is in Output Mode rather than Input Mode
2-15 reserved (0)
--------V-104E06-----------------------------------
INT 10 - VESA XGA BIOS Extensions - RETURN FEATURE CONNECTOR STATE
AX = 4E06h
DX = XGA handle
Return: AL = 4Eh if function supported
AH = status
00h function successful
else error code
BX = Feature Connector State (see #0074)
SeeAlso: AX=4E00h,AX=4E05h
--------V-104F00-----------------------------
INT 10 - VESA SuperVGA BIOS (VBE) - GET SuperVGA INFORMATION
AX = 4F00h
ES:DI -> buffer for SuperVGA information (see #0075)
Return: AL = 4Fh if function supported
AH = status
00h successful
ES:DI buffer filled
01h failed
---VBE v2.0---
02h function not supported by current hardware configuration
03h function invalid in current video mode
Desc: determine whether VESA BIOS extensions are present and the capabilities
supported by the display adapter
SeeAlso: AX=4E00h,AX=4F01h,AX=7F00h"SOLLEX",AX=A00Ch
Index: installation check;VESA SuperVGA
Format of SuperVGA information:
Offset Size Description (Table 0075)
00h 4 BYTEs (ret) signature ("VESA")
(call) VESA 2.0 request signature ("VBE2"), required to receive
version 2.0 info
04h WORD VESA version number (one-digit minor version)
06h DWORD pointer to OEM name
"761295520" for ATI
0Ah DWORD capabilities flags (see #0076)
0Eh DWORD pointer to list of supported VESA and OEM video modes
(list of words terminated with FFFFh)
12h WORD total amount of video memory in 64K blocks
---VBE v1.x ---
14h 236 BYTEs reserved
---VBE v2.0 ---
14h WORD OEM software version
16h DWORD pointer to vendor name
1Ah DWORD pointer to product name
1Eh DWORD pointer to product revision string
22h 222 BYTEs reserved
100h 256 BYTEs OEM scratchpad
Notes: the list of supported video modes is stored in the reserved portion of
the SuperVGA information record by some implementations, and it may
thus be necessary to either copy the mode list or use a different
buffer for all subsequent VESA calls
the 1.1 VESA document specifies 242 reserved bytes at the end, so the
buffer should be 262 bytes to ensure that it is not overrun; for
v2.0, the buffer should be 512 bytes
the S3 specific video modes will most likely follow the FFFFh
terminator at the end of the standard modes. A search must then
be made to find them, FFFFh will also terminate this second list
Bitfields for VESA capabilities:
Bit(s) Description (Table 0076)
0 DAC can be switched into 8-bit mode
1 non-VGA controller
2 programmed DAC with blank bit
3-31 reserved
SeeAlso: #0075
--------V-104F01-----------------------------
INT 10 - VESA SuperVGA BIOS - GET SuperVGA MODE INFORMATION
AX = 4F01h
CX = SuperVGA video mode
ES:DI -> 256-byte buffer for mode information (see #0077)
Return: AL = 4Fh if function supported
AH = status
00h successful
ES:DI buffer filled
01h failed
Desc: determine the attributes of the specified video mode
SeeAlso: AX=4F00h,AX=4F02h
Format of VESA SuperVGA mode information:
Offset Size Description (Table 0077)
00h WORD mode attributes (see #0078)
02h BYTE window attributes, window A (see #0079)
03h BYTE window attributes, window B (see #0079)
04h WORD window granularity in KB
06h WORD window size in KB
08h WORD start segment of window A
0Ah WORD start segment of window B
0Ch DWORD -> FAR window positioning function (equivalent to AX=4F05h)
10h WORD bytes per scan line
---remainder is optional for VESA modes in v1.0/1.1, needed for OEM modes---
12h WORD width in pixels (graphics) or characters (text)
14h WORD height in pixels (graphics) or characters (text)
16h BYTE width of character cell in pixels
17h BYTE height of character cell in pixels
18h BYTE number of memory planes
19h BYTE number of bits per pixel
1Ah BYTE number of banks
1Bh BYTE memory model type (see #0080)
1Ch BYTE size of bank in KB
1Dh BYTE number of image pages
1Eh BYTE reserved (0)
---VBE v1.2+---
1Fh BYTE red mask size
20h BYTE red field position
21h BYTE green mask size
22h BYTE green field size
23h BYTE blue mask size
24h BYTE blue field size
25h BYTE reserved mask size
26h BYTE reserved mask position
27h BYTE direct color mode info
bit 0: color ramp is programmable
bit 1: bytes in reserved field may be used by application
---VBE v2.0 ---
28h DWORD physical address of linear video buffer
2Ch DWORD pointer to start of offscreen memory
30h WORD KB of offscreen memory
32h 206 BYTEs reserved (0)
Bitfields for VESA SuperVGA mode attributes:
Bit(s) Description (Table 0078)
0 mode supported
1 optional information available
2 BIOS output supported
3 set if color, clear if monochrome
4 set if graphics mode, clear if text mode
---VBE v2.0 ---
5 mode is not VGA-compatible
6 bank-switched mode not supported
7 linear framebuffer mode supported
Bitfields for VESA SuperVGA window attributes:
Bit(s) Description (Table 0079)
0 exists
1 readable
2 writable
3-7 reserved
(Table 0080)
Values for VESA SuperVGA memory model type:
00h text
01h CGA graphics
02h HGC graphics
03h 16-color (EGA) graphics
04h packed pixel graphics
05h "sequ 256" (non-chain 4) graphics
06h direct color (HiColor, 24-bit color)
07h YUV (luminance-chrominance, also called YIQ)
08h-0Fh reserved for VESA
10h-FFh OEM memory models
--------V-104F02-----------------------------
INT 10 - VESA SuperVGA BIOS - SET SuperVGA VIDEO MODE
AX = 4F02h
BX = mode (see #0081,#0082)
bit 15 set means don't clear video memory
bit 14 set means enable linear framebuffer mode (VBE v2.0+)
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4E03h,AX=4F01h,AX=4F03h
(Table 0081)
Values for VESA video mode:
00h-FFh OEM video modes (see #0009 at AH=00h)
100h 640x400x256
101h 640x480x256
102h 800x600x16
103h 800x600x256
104h 1024x768x16
105h 1024x768x256
106h 1280x1024x16
107h 1280x1024x256
108h 80x60 text
109h 132x25 text
10Ah 132x43 text
10Bh 132x50 text
10Ch 132x60 text
---VBE v1.2---
10Dh 320x200x32K
10Eh 320x200x64K
10Fh 320x200x16M
110h 640x480x32K
111h 640x480x64K
112h 640x480x16M
113h 800x600x32K
114h 800x600x64K
115h 800x600x16M
116h 1024x768x32K
117h 1024x768x64K
118h 1024x768x16M
119h 1280x1024x32K
11Ah 1280x1024x64K
11Bh 1280x1024x16M
---VBE 2.0---
120h 1600x1200x256
121h 1600x1200x32K
122h 1600x1200x64K
81FFh special full-memory access mode
Note: the special mode 81FFh preserves the contents of the video memory and
gives access to all of the memory; VESA recommends that the special
mode be a packed-pixel mode
SeeAlso: #0009,#0010,#0082,#0123
Index: video modes;VESA
(Table 0082)
Values for S3 OEM video mode:
201h 640x480x256
202h 800x600x16
203h 800x600x256
204h 1024x768x16
205h 1024x768x256
206h 1280x960x16
207h 1152x864x256 (Diamond Stealth 64)
208h 1280x1024x16
209h 1152x864x32K
20Ah 1152x864x64K (Diamond Stealth 64)
20Bh 1152x864x4G
211h 640x480x64K (Diamond Stealth 24)
211h 640x400x4G (Diamond Stealth64 Video / Stealth64 Graphics)
212h 640x480x16M (Diamond Stealth 24)
301h 640x480x32K
Note: these modes are only available on video cards using S3's VESA driver
SeeAlso: #0081,#0123,#0656 at INT 1A/AX=B102h
Index: video modes;S3
--------V-104F03-----------------------------
INT 10 - VESA SuperVGA BIOS - GET CURRENT VIDEO MODE
AX = 4F03h
Return: AL = 4Fh if function supported
AH = status
00h successful
BX = video mode (see #0081,#0082)
bit 14: linear frame buffer enabled (VBE v2.0+)
bit 15: don't clear video memory
01h failed
SeeAlso: AH=0Fh,AX=4E04h,AX=4F02h
--------V-104F04-----------------------------
INT 10 - VESA SuperVGA BIOS - SAVE/RESTORE SuperVGA VIDEO STATE
AX = 4F04h
DL = subfunction
00h get state buffer size
Return: BX = number of 64-byte blocks needed
01h save video states
ES:BX -> buffer
02h restore video states
ES:BX -> buffer
CX = states to save/restore (see #0083)
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
Bitfields for VESA SuperVGA states to save/restore:
Bit(s) Description (Table 0083)
0 video hardware state
1 video BIOS data state
2 video DAC state
3 SuperVGA state
--------V-104F05-----------------------------
INT 10 - VESA SuperVGA BIOS - CPU VIDEO MEMORY CONTROL
AX = 4F05h
BH = subfunction
00h select video memory window
DX = window address in video memory (in granularity units)
01h get video memory window
Return: DX = window address in video memory (in gran. units)
BL = window number
00h window A
01h window B
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
BUG: Phoenix S3 Trio64V+ v1.02-02 reportedly returns garbage in DX for
subfunction 01h
SeeAlso: AX=4F01h,AX=4F06h,AX=4F07h,AX=7000h/BX=0004h
--------V-104F06-----------------------------
INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET LOGICAL SCAN LINE LENGTH (PIXELS)
AX = 4F06h
BL = subfunction
00h set scan line length
CX = desired width in pixels
01h get scan line length
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
BX = bytes per scan line
CX = number of pixels per scan line
DX = maximum number of scan lines
Notes: if the desired width is not achievable, the next larger width will be
set
the scan line may be wider than the visible area of the screen
this function is valid in text modes, provided that pixel values are
multiplied by the character cell width/height
SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h/BL=02h,AX=4F06h/BL=03h,AX=4F07h
--------V-104F06BL02-------------------------
INT 10 - VESA SuperVGA BIOS v2.0+ - SET LOGICAL SCAN LINE LENGTH (BYTES)
AX = 4F06h
BL = 02h
CX = desired scanline width in bytes
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
BX = bytes per scan line
CX = number of pixels per scan line
DX = maximum number of scan lines
Notes: if the desired width is not achievable, the next larger width will be
set
the scan line may be wider than the visible area of the screen
this function is valid in text modes, provided that pixel values are
multiplied by the character cell width/height
SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=03h,AX=4F07h
--------V-104F06BL03-------------------------
INT 10 - VESA SuperVGA BIOS v2.0+ - GET MAXIMUM SCAN LINE LENGTH
AX = 4F06h
BL = 03h
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
BX = maximum bytes per scan line
CX = maximum number of pixels per scan line
Notes: this function is valid in text modes, provided that pixel values are
multiplied by the character cell width/height
SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h,AX=4F06h/BL=02h,AX=4F07h
--------V-104F07-----------------------------
INT 10 - VESA SuperVGA BIOS v1.1+ - GET/SET DISPLAY START
AX = 4F07h
BL = subfunction
00h,80h set display start
CX = leftmost displayed pixel in scan line
DX = first displayed scan line
01h get display start
Return: BH = 00h
CX = leftmost displayed pixel in scan line
DX = first displayed scan line
BH = 00h (reserved)
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
Notes: this function is valid in text modes, provided that values are
multiplied by the character cell width/height
subfunction 80h waits until vertical retrace before changing the
display start address (VBE v2.0+)
SeeAlso: AX=4F01h,AX=4F05h,AX=4F06h
--------V-104F08-----------------------------
INT 10 - VESA SuperVGA BIOS v1.2+ - GET/SET DAC PALETTE CONTROL
AX = 4F08h
BL = subfunction
00h set DAC palette width
BH = desired number of bits per primary color
01h get DAC palette width
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
BH = current number of bits per primary (06h = standard VGA)
--------V-104F09-----------------------------
INT 10 - VESA SuperVGA BIOS v2.0+ - GET/SET PALETTE ENTRIES
AX = 4F09h
BL = subfunction
00h set (primary) palette
01h get (primary) palette
02h set secondary palette data
03h get secondary palette data
80h set palette during vertical retrace
CX = number of entries to change
DX = starting palette index
ES:DI -> palette buffer (see #0084)
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4F0Ah,AX=D000h"S3VBE"
Format of VESA VBE palette entry:
Offset Size Description (Table 0084)
00h BYTE red
01h BYTE green
02h BYTE blue
03h BYTE alpha or alignment byte
--------V-104F0ABL00-------------------------
INT 10 - VESA SuperVGA BIOS v2.0+ - GET PROTECTED-MODE INTERFACE
AX = 4F0Ah
BL = 00h
Return: AL = 4Fh if function supported
AH = status
00h successful
ES:DI -> protected-mode table (see #0085)
CX = length of table in bytes, included protected-mode code
01h failed
SeeAlso: AX=4F00h,AX=4F05h,AX=4F07h,AX=4F09h
Format of VESA VBE 2.0 protected-mode table:
Offset Size Description (Table 0085)
00h WORD offset (within table) of protected-mode code for Function 5
(Set Window)
02h WORD offset of protected-mode code for Function 7 (Set Disp Start)
04h WORD offset of protected-mode code for Function 9 (Set Primary
Palette)
06h WORD offset (within table) of list of I/O ports and memory locations
for which I/O privilege may be required in protected mode
(0000h if no list)
08h var code and optional port/memory list
--------V-104F0A-----------------------------
INT 10 - VESA SuperVGA BIOS v2.0 beta - GET PROTECTED-MODE CODE
AX = 4F0Ah
BX = function to be copied (see #0086)
Return: AL = 4Fh if function supported
AH = status
00h successful
CX = number of bytes to copy
ES:DI -> code for requested function
01h failed
SeeAlso: AX=4F09h,AX=D000h"S3VBE"
(Table 0086)
Values for VESA VBE protected-mode function identifiers:
0001h set bank (see AX=4F05h)
0002h set display start (see AX=4F07h)
0003h set palette (see AX=4F09h)
--------V-104F0B-----------------------------
INT 10 - VESA SuperVGA BIOS - RESERVED FOR FUTURE SVGA FUNCTIONS
AX = 4F0Bh-4F0Fh
SeeAlso: AX=4F00h
--------p-104F10BL00-------------------------
INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET CAPABILITIES
AX = 4F10h
BL = 00h
ES:DI = 0000h:0000h (reserved for future use as pointer to info block)
Return: AL = 4Fh if function supported (installed)
AH = call status
00h successful
else failed
---if successful---
BL = VBE/PM version (bits 7-4: major, bits 3-0: minor)
BH = supported states (see #0087)
ES:DI unchanged
Index: installation check;VESA VBE/Power Management|VESA DPMS
SeeAlso: AX=4F10h/BL=01h,AX=4F10h/BL=02h
Bitfields for VESA VBE/PM supported power states:
Bit(s) Description (Table 0087)
0 standby
1 suspend
2 off
3 reduced on
--------p-104F10BL01-------------------------
INT 10 - VESA VBE/PM (Power Management) v1.0+ - SET DISPLAY POWER STATE
AX = 4F10h
BL = 01h
BH = new state (see #0088)
Return: AL = 4Fh if function supported
AH = call status
00h successful
else failed
SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=02h,AX=A00Ch
(Table 0088)
Values for VESA VBE/PM power state:
00h On
01h standby
02h suspend
04h Off
08h reduced On (for flat screens)
--------p-104F10BL02-------------------------
INT 10 - VESA VBE/PM (Power Management) v1.0+ - GET DISPLAY POWER STATE
AX = 4F10h
BL = 02h
Return: AL = 4Fh if function supported
AH = call status
00h successful
BH = current power state (see #0088)
else failed
SeeAlso: AX=4F10h/BL=00h,AX=4F10h/BL=01h,AX=A00Dh
--------V-104F11-----------------------------
INT 10 - VESA VBE/FP (Flat Panel Interface) - API
AX = 4F11h
BL = function
00h installation check / get capabilities
other registers vary by function
Return: varies by function
--------V-104F12-----------------------------
INT 10 - VESA VBE/CI (Cursor Interface) - API
AX = 4F12h
BL = function
other registers vary by function
Return: varies by function
SeeAlso: AX=4F4Dh
--------s-104F13BX0000-----------------------
INT 10 - VESA VBE/AI (Audio Interface) - INSTALLATION CHECK
AX = 4F13h
BX = 0000h
Return: AL = 4Fh if function supported
AH = status
00h successful
BX = version (0010h for 1.00 -- note nonstandard value!)
01h failed
SeeAlso: AX=4F13h/BX=0001h,AX=4F13h/BX=0005h
--------s-104F13BX0001-----------------------
INT 10 - VESA VBE/AI (Audio Interface) - LOCATE DEVICE
AX = 4F13h
BX = 0001h
CX = 0000h ???
DX = type of device
0001h Wave device
0002h MIDI device
0003h Volume device
Return: AL = 4Fh if function supported
AH = status
00h successful
CX = handle [returned 1 for DX=1 and 3, and 2 for DX=2]
01h failed
SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0002h
--------s-104F13BX0002-----------------------
INT 10 - VESA VBE/AI (Audio Interface) - QUERY DEVICE
AX = 4F13h
BX = 0002h
CX = handle
DX = query
0001h return length of GeneralDeviceClass
0002h return copy of GeneralDeviceClass (see #0089)
0003h return length of Volume Info Structure
0004h return copy of Volume Info Structure (see #0099)
0005h return length of Volume Services Structure
0006h return copy of Volume Services Structure (see #0101)
0007h-000Fh reserved
0010h-FFFFh device-specific
SI:DI -> buffer (functions 0002h,0004h,0006h)
Return: AL = 4Fh if function supported
AH = status
00h successful
SI:DI = length (functions 1,3,5)
SI:DI buffer filled (functions 2,4,6)
01h failed
Note: functions 0003h to 0006h are only supported for the Volume device
Format of GeneralDeviceClass structure:
Offset Size Description (Table 0089)
00h 4 BYTEs name of the structure ("GENI")
04h DWORD structure length
08h WORD type of device (1=Wave, 2=MIDI)
0Ah WORD version of VESA driver support (0100h for 1.00)
10h var for CX=handle for Wave device:
Wave Info structure (see #0090)
some bytes ???
for CX=handle for MIDI device:
MIDI Info Structure (see #0095)
first 8 bytes of MIDI Service Structure ???
SeeAlso: #0099,#0101
Format of WAVE Info Structure:
Offset Size Description (Table 0090)
00h 4 BYTEs name of the structure ("WAVI")
04h DWORD structure length [0000007Eh]
08h DWORD driver software version [00000003h]
0Ch 32 BYTEs vendor name, etc. (ASCIZ string)
2Ch 32 BYTEs vendor product name
4Ch 32 BYTEs vendor chip/hardware description
6Ch BYTE installed board number
6Dh 3 BYTEs unused data
70h DWORD feature bits (see #0091)
74h WORD user determined preference field
76h WORD memory required for driver use [0200h]
78h WORD number of timer tick callbacks per second [0000h]
7Ah WORD channels: 1 = mono, 2 = stereo
stereo is assumed to be interleaved data
7Ch WORD bitfield of max sample sizes (see #0092)
SeeAlso: #0095
Bitfields for Wave feature bits:
Bit(s) Description (Table 0091)
0 8000hz Mono Playback
1 8000hz Mono Record
2 8000hz Stereo Record
3 8000hz Stereo Playback
4 8000hz Full Duplex Play/Record
5 11025hz Mono Playback
6 11025hz Mono Record
7 11025hz Stereo Record
8 11025hz Stereo Playback
9 11025hz Full Duplex Play/Record
10 22050hz Mono Playback
11 22050hz Mono Record
12 22050hz Stereo Record
13 22050hz Stereo Playback
14 22050hz Full Duplex Play/Record
15 44100hz Mono Playback
16 44100hz Mono Record
17 44100hz Stereo Record
18 44100hz Stereo Playback
19 44100hz Full Duplex Play/Record
20-26 reserved (0)
27 driver must pre-handle the data
28 Variable Sample mono playback
29 Variable Sample stereo playback
30 Variable Sample mono record
31 Variable Sample stereo record
(Table 0092)
Values for Sample data size:
01h 8bit play
02h 16bit play
10h 8bit record
20h 16bit record
Format of WAVE Audio Services structure:
Offset Size Description (Table 0093)
00h 4 BYTEs name of the structure
04h DWORD structure length
08h 16 BYTEs for future expansion
---entry points (details???)---
18h DWORD DeviceCheck
11h compression (see also #0094)
12h driver state
13h get current pos
14h sample rate
15h set preference
16h get DMA,IRQ
17h get IO address
18h get mem address
19h get mem free
1Ah full duplex
1Bh get block size
1Ch get PCM format
1Dh enable PCM format
80h-.. vendors can add DevChks above 0x80
1Ch DWORD PCMInfo
20h DWORD PlayBlock
24h DWORD PlayCont
28h DWORD RecordBlock
2Ch DWORD RecordCont
30h DWORD PauseIO
34h DWORD ResumeIO
38h DWORD StopIO
3Ch DWORD WavePrepare
40h DWORD WaveRegister
44h DWORD GetLastError
01h unsupported feature/function
02h bad sample rate
03h bad block length
04h bad block address
05h app. missed an IRQ
06h don't understand the PCM size/format
80h-.. vendors specific errors
48h DWORD TimerTick
4Ch DWORD ApplPSyncCB: CallBack: play filled in by the app
50h DWORD ApplRSyncCB: CallBack: rec filled in by the app
SeeAlso: #0097,#0101
(Table 0094)
Values for type of compression:
01h IMA play
02h ALAW play
03h ULAW play
11h IMA record
12h ALAW record
13h ULAW record
Format of MIDI Info Structure:
Offset Size Description (Table 0095)
00h 4 BYTEs name of the structure ("MIDI")
04h DWORD structure length
08h DWORD driver software version [00000003h]
0Ch 32 BYTEs vendor name, etc. (ASCIZ string)
2Ch 32 BYTEs vendor product name
4Ch 32 BYTEs vendor chip/hardware description
6Ch BYTE installed board number
6Dh 3 BYTEs unused data
70h 14 BYTEs the patch library file name [OPL2.BNK 00..]
7Eh DWORD feature bits (see #0096)
80h WORD user determined preference field
82h WORD memory required for driver use
84h WORD # of timer tick callbacks per second
86h WORD max # of tones (voices, partials)
SeeAlso: #0089,#0097,#0099
Bitfields for MIDI feature bits:
Bit(s) Description (Table 0096)
0-3 reserved for GM extensions
4 Transmitter/Receiver only
5 Patches preloaded
6 MIDI receive has time stamp
8 MIDI interrupt driven input supported
9 MIDI polled input supported
10 MIDI remote patches supported
Format of MIDI Service structure:
Offset Size Description (Table 0097)
00h 4 BYTEs name of the structure ("MIDS")
04h DWORD structure length
08h 16 WORDs patches loaded table bit field
28h 16 BYTEs for future expansion
---entry points (details???)---
38h DWORD device check
11h return available tones
12h return TRUE/FALSE if patch is understood
13h set preference
14h allow/disallow voice stealing
15h get FIFO sizes
16h get DMA,IRQ
17h get IO address
18h get mem address
19h get mem free
80h-.. vendors can add DevChks above 0x80
3Ch DWORD global reset
40h DWORD MIDI msg
44h DWORD poll MIDI
48h DWORD preload patch
4Ch DWORD unload patch
50h DWORD timer tick
54h DWORD get last error
01h unsupported feature/function
02h unknown patch type (see #0098)
03h all tones are used
04h messages are out of sync
05h an incoming patch was incomplete
06h an incoming patch couldn't be stored
07h had to drop an incoming byte
08h driver is failing a patch download
80h-.. vendors specific errors
58h DWORD Patch Block free callback
5Ch DWORD MIDI byte avail. callback
SeeAlso: #0093,#0101
(Table 0098)
Values for MIDI Registered Patch Types:
10h OPL2
11h OPL3
Format of Volume Info Structure:
Offset Size Description (Table 0099)
00h 4 BYTEs name of the structure ("VOLI")
04h DWORD structure length (00000092h)
08h DWORD driver software version [00000001h]
0Ch 32 BYTEs vendor name, etc. (ASCIZ string)
2Ch 32 BYTEs vendor product name
4Ch 32 BYTEs vendor chip/hardware description
6Ch BYTE installed board number (0 for 1st/only board)
6Dh 3 BYTEs unused data (0)
70h 24 BYTEs text name of the mixer channel
88h DWORD features bits (see #0100)
8Ch WORD minimum volume setting
8Eh WORD maximum volume setting
90h WORD attenuation/gain crossover
SeeAlso: #0089,#0101
Bitfields for Volume feature bits:
Bit(s) Description (Table 0100)
0 Stereo Volume control available
2 Low Pass Filter is available
3 High Pass Filter is available
4 Parametric Tone Control is available
5 selectable output paths
8 Azimuth Field positioning supported
9 Phi Field positioning supported
10-30 unused???
31 Master Volume device
Format of Volume Services Structure:
Offset Size Description (Table 0101)
00h 4 BYTEs name of the structure ("VOLS")
04h DWORD structure length (00000038h)
08h 16 BYTEs 16 bytes for future expansion (0)
---entry points (details???)---
18h DWORD device check
0011h filter range
0012h filter setting
0013h filter current
0014h tone range
0015h tone setting
0016h tone current
0017h path
0018h get IO address
0080h-.. vendors can add DevChks above 0x80
1Ch DWORD set vol to an absolute setting
01h User master volume setting
02h application master volume setting
20h DWORD set 3D volume
24h DWORD tone control
28h DWORD filter control
2Ch DWORD output path
30h DWORD reset channel
34h DWORD get last error
01h unsupported feature/function
02h out of range parameter value
80h+ vendor-specific errors
SeeAlso: #0093,#0097
--------s-104F13BX0003-----------------------
INT 10 - VESA VBE/AI (Audio Interface) - OPEN DEVICE
AX = 4F13h
BX = 0003h
CX = handle
DX = API set (16/32-bit)
SI = segment ???
Return: AL = 4Fh if function supported
AH = status
00h successful
SI:CX -> memory ???
01h failed
SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0002h,AX=4F13h/BX=0004h
--------s-104F13BX0004-----------------------
INT 10 - VESA VBE/AI (Audio Interface) - CLOSE DEVICE
AX = 4F13h
BX = 0004h
CX = handle
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0003h,AX=4F13h/BX=0005h
--------s-104F13BX0005-----------------------
INT 10 - VESA VBE/AI (Audio Interface) - UNINSTALL DRIVER
AX = 4F13h
BX = 0005h
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0006h
--------s-104F13BX0006-----------------------
INT 10 - VESA VBE/AI (Audio Interface) - DRIVER CHAIN/UNCHAIN
AX = 4F13h
BX = 0006h
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
SeeAlso: AX=4F13h/BX=0000h,AX=4F13h/BX=0005h
----------104F14-----------------------------
INT 10 - VESA OEM Extensions - API
AX = 4F14h
BL = function
00h installation check / get capabilities
other registers vary by function
Return: varies by function
Note: this function is provided for OEMs to implement system-specific
functionality in a VESA-compatible manner
----------104F14-----------------------------
INT 10 - VESA OEM Extensions - Matrox Millenium (BIOS v2.1)
AX = 4F14h
BL = function
00h installation check / get capabilities
ES:DI -> 256-byte buffer for Matrox-specific information
(see #0102)
Return: ES:DI buffer filled
01h ???
BH = ???
02h ???
BH = ??? (bit flags?)
03h ???
SI = index of ???
Return: CL = value of ???
04h ???
DX = ???
Return: CL,EDX destroyed
else
Return: AX = FFFFh
Return: AL = 4Fh if function supported
AH = status
00h successful
01h failed
Note: this function is provided for OEMs to implement system-specific
functionality in a VESA-compatible manner
Format of Matrox-specific VESA extensions information:
Offset Size Description (Table 0102)
00h 7 BYTEs signature "VBE/MGA"
07h 12 BYTEs ??? (01h 01h 00h 00h 00h 00h 00h 00h 00h 07h 01h 02h)
13h DWORD ->
17h DWORD ->
1Bh DWORD ->
1Fh DWORD ->
23h DWORD ->
27h DWORD ->
2Bh WORD ???
2Dh DWORD ???
31h DWORD ???
35h WORD ???
37h 201 BYTEs unused??? (cleared to 00h)
--------V-104F15BL00-------------------------
INT 10 - VESA VBE/DC (Display Data Channel) - INSTALLATION CHECK / CAPABILITIES
AX = 4F15h
BL = 00h
???
Return: AL = 4Fh if function supported
AH = status
00h successful
???
01h failed
???
SeeAlso: AX=4F15h/BL=01h,AX=4F15h/BL=02h
--------V-104F15BL01-------------------------
INT 10 - VESA VBE/DC (Display Data Channel) - READ EDID
AX = 4F15h
BL = 01h
CX = 0000h
DX = 0000h
ES:DI -> 128-byte buffer for EDID record (see #0103)
Return: AL = 4Fh if function supported
AH = status
00h successful
ES:DI buffer filled
01h failed
SeeAlso: AX=4F15h/BL=00h,AX=4F15h/BL=02h
Format of VESA EDID record:
Offset Size Description (Table 0103)
00h 8 BYTEs padding (all FFh, or 00h FFh..FFh 00h)
08h WORD manufacturer ID (see #0109)
bits 6-2: first letter (0=A, 1=B, etc.)
bits 11-7: second letter
bits 15-12: third letter
0Ah WORD EDID ID code -- identifies monitor model
0Ch DWORD serial number or FFFFFFFFh
10h BYTE week number of manufacture
11h BYTE manufacture year - 1990
12h BYTE EDID version
13h BYTE EDID revision
14h BYTE video input type (see #0105)
15h BYTE maximum horizontal size in cm
16h BYTE maximum vertical size in cm
17h BYTE gamma factor (gamma = 1.0 + factor/100, so max = 3.55)
18h BYTE DPMS flags (see #0104)
19h BYTE chroma information: green X'/Y' and red X'/Y'
1Ah BYTE chroma information: white X'/Y' and blue X'/Y'
1Bh BYTE chroma information: red Y
1Ch BYTE chroma information: red X
1Dh BYTE chroma information: green Y
1Eh BYTE chroma information: green X
1Fh BYTE chroma information: blue Y
20h BYTE chroma information: blue X
21h BYTE chroma information: white Y
22h BYTE chroma information: white X
23h BYTE established timings 1 (see #0106)
24h BYTE established timings 2 (see #0107)
25h BYTE manufacturer's reserved timing or 00h for none
26h 8 WORDs standard timing identification
resolution (low byte) and vertical frequency (high byte) for
each of eight modes (see #0108)
X resolution = (lowbyte + 31) * 8
36h 72 BYTEs detail timing description
7Eh WORD checksum
Bitfields for DPMS EDID flags:
Bit(s) Description (Table 0104)
2-0 ???
3 display type
=0 non-RGB multicolor
=1 RGB color
4 ???
5 Active Off supported
6 Suspend supported
7 Standby supported
SeeAlso: #0103
Bitfields for DPMS input signal type:
Bit(s) Description (Table 0105)
0 separate sync
1 composite sync
2 sync on green
4-3 ???
6-5 voltage level
00 0.700V/0.300V (1.00 Vp-p)
01 0.714V/0.286V
10 0.100V/0.400V
11 reserved
7 =1 digital signal, =0 analog
SeeAlso: #0103
Bitfields for DPMS established timings 1:
Bit(s) Description (Table 0106)
0 720x400 @ 70 Hz (VGA 640x400, IBM)
1 720x400 @ 88 Hz (XGA2)
2 640x480 @ 60 Hz (VGA)
3 640x480 @ 67 Hz (Mac II, Apple)
4 640x480 @ 72 Hz (VESA)
5 640x480 @ 75 Hz (VESA)
6 800x600 @ 56 Hz (VESA)
7 800x600 @ 60 Hz (VESA)
SeeAlso: #0103,#0107
Bitfields for DPMS established timings 2:
Bit(s) Description (Table 0107)
0 800x600 @ 72 Hz (VESA)
1 800x600 @ 75 Hz (VESA)
2 832x624 @ 75 Hz (Mac II)
3 1024x768 @ 87 Hz interlaced (8514A)
4 1024x768 @ 60 Hz (VESA)
5 1024x768 @ 70 Hz (VESA)
6 1024x768 @ 75 Hz (VESA)
7 1280x1024 @ 75 Hz (VESA)
SeeAlso: #0103,#0106
Bitfields for DPMS standard timing information:
Bit(s) Description (Table 0108)
5-0 vertical refresh frequency - 60 (Hz)
7-6 aspect ratio (Y resolution = X resolution * aspect ratio)
00 ???
01 0.75
10 0.8
11 0.5625
SeeAlso: #0103
(Table 0109)
Values for manufacturer ID:
"AST" AST Research (see #0110)
"HWP" Hewlett-Packard
!!!
"IVM" Idek Iiayama North America, Inc.
"MIR" miro Computer Products AG
"OQI" Optiquest
"CSC" ViewSonic Corporation
SeeAlso: #0103
(Table 0110)
Values for AST monitor EDID:
8001h ASTVision 4V
8002h ASTVision 4I
8003h ASTVision 4N
8004h ASTVision 4L
8005h ASTVision 5L
8006h ASTVision 7L
8007h ASTVision 7H
8008h ASTVision 20H
8009h AST Sabre
800Ah ASTVision 5V
SeeAlso: #0109,#0103
--------V-104F15BL02-------------------------
INT 10 - VESA VBE/DC (Display Data Channel) - READ VDIF
AX = 4F15h
BL = 02h
???
Return: AL = 4Fh if function supported
AH = status
00h successful
???
01h failed
SeeAlso: AX=4F15h/BL=00h,AX=4F15h/BL=01h
--------V-104F16-----------------------------
INT 10 - VESA VBE/GC (Graphics System Configuration) - API
AX = 4F16h
BL = function
00h installation check / get capabilities
other registers vary by function
Return: varies by function
--------V-104F17-----------------------------
INT 10 - VESA VBE/AF (Accelerator Functions) - API
AX = 4F17h
BL = function
00h installation check / get capabilities
other registers vary by function
Return: varies by function
--------V-104F4D-----------------------------
INT 10 - VESA - VIDEO CURSOR INTERFACE REQUEST
AX = 4F4Dh
BX = number of bytes available for VCI use
DS:0000h -> buffer for VCI
ES:DI -> VCI driver callback function
Return: AL = 4Fh if supported
AH = status
00h successful
BX = number of bytes used by VCI
ES:DI -> VCI request handler
01h failed
Desc: allow the VESA BIOS Extensions to cooperate with a pointing-device
(typically mouse) driver
SeeAlso: AX=4F12h
--------V-104F70-----------------------------
INT 10 - Avance Logic - GET ADAPTER INFORMATION
AX = 4F70h
Return: AX = 004Fh if successful
BL = board information (see #0111)
BH = board type???
00h on ALG2101
FFh otherwise
SeeAlso: AX=4F00h
Bitfields for Avance Logic board information:
Bit(s) Description (Table 0111)
0-1 video RAM size
00 256K
01 512K
10 1M
11 2M
2 ???
3 slot size???
=0 8-bit slot
=1 16-bit slot
4 unused
5 set on ALG2228/AL2301
6-7 unused
--------V-104FDD-----------------------------
INT 10 - ATI M64VBE.COM - GET RESIDENT SEGMENT
AX = 4FDDh
Return: AX = CS of resident code
Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip
SeeAlso: AX=4FFFh/BX=364Dh"M64VBE",INT 60"M64VBE"
--------V-104FFF-----------------------------
INT 10 - VESA SuperVGA BIOS - Everex - TURN VESA ON/OFF
AX = 4FFFh
DL = new state (00h off, 01h on)
Return: AX = 0000h if successful
--------V-104FFF-----------------------------
INT 10 - Diamond Stealth 24 - SET/RESET DUAL DISPLAY MODE
AX = 4FFFh
BX = dual display mode
00h reset
01h set dual display, 32KB VGA test
02h set dual display, 64KB VGA test
Return: AX = 4F00h if successful
BX = number of scanlines off screen for test mode
--------V-104FFFBX364D-----------------------
INT 10 - ATI M64VBE.COM - UNINSTALL
AX = 4FFFh
BX = 364Dh ('6M')
CX = 5634h ('V4')
Return: AX,DX,DS,ES destroyed
Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip
SeeAlso: AX=4FDDh"M64VBE",INT 60"M64VBE"
--------U-1050-------------------------------
INT 10 - SCROLOCK.COM - INSTALLATION CHECK
AH = 50h
Return: BX = 1954h if installed
AL = 00h if inactive, nonzero if active
Program: SCROLOCK is a utility supplied with System Enhancement Associates'
ARC archiver
SeeAlso: AH=51h
--------J-105000-----------------------------
INT 10 - VIDEO - AX PC - SET SCREEN COUNTRY CODE
AX = 5000h
BX = country code
0001h USA (English), 0051h Japan
Return: AL = status
00h successful
01h bad country code
02h other error
SeeAlso: AX=5001h,INT 16/AX=5000h
--------J-105001-----------------------------
INT 10 - VIDEO - AX PC - GET SCREEN COUNTRY CODE
AX = 5001h
Return: AL = status
00h successful
BX = country code
02h error
SeeAlso: AH=00h,AX=5000h,INT 16/AX=5001h,INT 21/AH=38h
--------V-105049-----------------------------
INT 10 - VIDEO - SCREENR v1.55+ - API
AX = 5049h ('PI')
BX = function
0000h installation check
0001h lock mode
0002h unlock mode
0003h lock palette
0004h unlock palette
Return: AX = 0000h if installed
BX = TSR version (BH=major,BL=minor)
CL = mode locking status
00h mode not locked
01h mode locked: INT 10/AH=00h disabled
CH = palette locking status
00h palette not locked
01h palette locked, the following functions are disabled:
AX=1000h, AX=1001h, AX=1002h, AX=1010h, AX=1012h
Program: SCREENR is a TSR supplied with Patrick Ibbetson's SCREEN display
utility.
Index: installation check;SCREENR
--------U-1051-------------------------------
INT 10 - SCROLOCK.COM - ENABLE/DISABLE
AH = 51h
AL = state
00h disable
nonzero enable
Return: nothing
Program: SCROLOCK is a utility supplied with System Enhancement Associates'
ARC file archiver
SeeAlso: AH=50h"SCROLOCK"
--------J-105100-----------------------------
INT 10 - VIDEO - AX PC - REGISTER EXTERNAL CHARACTER
AX = 5100h
BH = character width in bits (10h)
BL = character height (10h)
DX = character code (DH = F0h-F3h, DL=40h-7Eh,80h-FCh)
ES:BP -> character bitmap
Return: AL = status (00h successful, 01h failed)
SeeAlso: AX=5101h,INT 1F"SYSTEM DATA"
--------J-105101-----------------------------
INT 10 - VIDEO - AX PC - READ CHARACTER
AX = 5101h
BH = character width in bits
BL = character height
DX = character code (DH = 00h if 8-bit character)
ES:BP -> buffer for character bitmap
Return: AL = status (00h successful, 01h failed)
SeeAlso: AH=09h,AX=5100h
--------J-105200-----------------------------
INT 10 - VIDEO - AX PC - SET VIRTUAL TEXT RAM BUFFER
AX = 5200h
BX = segment of buffer
Return: nothing
SeeAlso: AX=5201h
--------J-105201-----------------------------
INT 10 - VIDEO - AX PC - GET VIRTUAL TEXT RAM BUFFER
AX = 5201h
Return: BX = segment of buffer or 0000h if failed
SeeAlso: AX=8300h,AH=FEh
----------1053-------------------------------
INT 10 - Show Partner F/X v3.6 - START PRESENTATION
AH = 53h
DS:DX -> ASCIZ name of presentation file (no path, extension forced to
.PR2)
Return: ???
SeeAlso: AH=55h
----------1055-------------------------------
INT 10 - Show Partner F/X v3.6 - UNINSTALL
AH = 55h
Return: FXSHOW.EXE removed from memory
SeeAlso: AH=53h
--------V-105555-----------------------------
INT 10 - VIDEO - ATI EGA/VGA Wonder Super Switch - INSTALLATION CHECK
AX = 5555h
Return: AX = AAAAh if installed
BX:CX -> ??? routine in SMS.COM resident portion
-> data area (see #0112) in VCONFIG
Program: Super Switch (SMS.COM) is a video mode switch program supplied with
ATI EGA Wonder. It also maps video mode 08h to 27h or 23h.
SeeAlso: INT 10/AH=00h,INT 14/AX=AA01h,INT 2F/AX=6400h
Index: screen saver;ATI Wonder SMS.COM
Format of ATI Super Switch data area:
Offset Size Description (Table 0112)
00h DWORD original INT 09 vector
04h DWORD original INT 10 vector
08h DWORD original INT 1C vector
0Ch WORD screen saver state, 0=off, 1=on
0Eh WORD blanking interval in clock ticks
--------V-105F00-----------------------------
INT 10 - Chips & Technologies Extended BIOS - RETURN CHIP INFORMATION
AX = 5F00h
Return: AL = 5Fh function supported
BL = chip type (see #0113)
BH = video memory size (00h 256KB, 01h 512KB, 02h 1MB)
CX = miscellaneous information (see #0114)
SeeAlso: AX=5F01h
Bitfields for Chips&Technologies chip type:
Bit(s) Description (Table 0113)
7-4 chip type
0000: 82c451
0001: 82c452
0010: 82c455
0011: 82c453
0101: 82c456
0110: 82c457
0111: F65520
1000: F65530
1100: F65535/F65545 ???
1101: F65540
3-0 revision number
Bitfields for Chips&Technologies miscellaneous information:
Bit(s) Description (Table 0114)
0 DAC size (0=6-bit, 1=8-bit)
1 system type (0=PC/AT, 1=PS/2)
2 extended text modes supported by BIOS
3 reserved
4 extended graphics modes supported by BIOS
5 reserved
6 BIOS supports graphics cursor
7 BIOS supports anti-aliased font
8 BIOS supports pre-programmed emulation
9 BIOS supports auto emulation
10 BIOS supports variable mode set at cold boot
11 BIOS supports variable mode set on warm boot
12 BIOS supports emulation mode set at cold boot
13 BIOS supports emulation mode set on warm boot
14-15 reserved
--------V-105F00-----------------------------
INT 10 - VIDEO - Realtek RTVGA - RETURN CHIP VERSION
AX = 5F00h
Return: AH = 00h, if successful
AL = chip version (the same value that VTEST.EXE reads)
00h RTG3103???
01h RTG31030/RTG3105
02h RTG3106???
3Fh non-Realtek chip
BUG: in v3.C10, AX=5F00h on return due to improper stack restoration code
SeeAlso: AX=5F01h"RTVGA"
--------V-105F01-----------------------------
INT 10 - Chips & Technologies Extended BIOS - SET PREPROGRAMMED EMULATION
AX = 5F01h
BL = emulation type (see #0115)
Return: AL = 5Fh if function supported
AH = status
00h unsuccessful
01h successful
SeeAlso: AX=5F00h,AX=5F02h,AH=FFh"Oak"
(Table 0115)
Values for Chips&Technologies emulation type:
00h,01h reserved
02h CGA
03h MDA
04h Hercules
05h EGA
06h VGA
--------V-105F01-----------------------------
INT 10 - VIDEO - Realtek RTVGA - WRITE RTVGA BIOS STRING TO DESTINATION
AX = 5F01h
ES:DI -> zero-filled buffer for BIOS ID string
Return: AH = 00h if successful
ES:DI -> ASCII signature "REALTEK VGA BIOS Version 3C.10"
BUG: in v3.C10, AX=5F01h on return due to improper stack restoration code
SeeAlso: AX=5F00h"RTVGA",AX=5F02h"RTVGA"
--------V-105F02-----------------------------
INT 10 - Chips & Technologies Extended BIOS - AUTO EMULATION CONTROL
AX = 5F02h
BL = new state of autmatic emulation (00h enabled, 01h disabled)
Return: AL = 5Fh if function supported
AH = status
00h unsuccessful
01h successful
SeeAlso: AX=5F01h,AX=5F03h
--------V-105F02-----------------------------
INT 10 - VIDEO - Realtek RTVGA - RETURN RTVGA ON-BOARD MEMORY SIZE
AX = 5F02h
Return: AH = 00h, if successful
AL = on-board memory size
(00h = 256K, 01h = 512K, 02h = 768K, 03h = 1024K)
BUG: in v3.C10, AX=5F02h on return due to improper stack restoration code
SeeAlso: AX=5F01h"RTVGA",AX=5F03h"RTVGA"
--------V-105F03-----------------------------
INT 10 - VIDEO - Realtek RTVGA - SET ???
AX = 5F03h
BL = 0-3 (???)
Return: AH = 00h if successful
BUG: in v3.C10, AX=5F03h on return due to improper stack restoration code
SeeAlso: AX=5F02h"RTVGA"
--------V-105F03BL00-------------------------
INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON DISPLAY MODE
AX = 5F03h
BL = 00h
CL = display mode
CH = mode (see #0116)
Return: AL = 5Fh if function supported
AH = status
00h unsuccessful
01h successful
SeeAlso: AX=5F02h,AX=5F03h/BL=01h"Chips",AX=5F90h
Bitfields for Chips&Technologies display mode:
Bit(s) Description (Table 0116)
1-0 scanlines (00 = 200, 01 = 350, 10 = 400)
7 persistence (0 reset on next boot, 1 until changed)
--------V-105F03BL01-------------------------
INT 10 - Chips & Technologies Extended BIOS - SET POWER-ON EMULATION MODE
AX = 5F03h
BL = 01h
CL = emulation mode (see #0116)
CH = permanence
bit 7 persistence (0 reset on next boot, 1 until changed)
Return: AL = 5Fh if function supported
AH = status
00h unsuccessful
01h successful
SeeAlso: AX=5F02h,AX=5F03h/BL=00h"Chips",AX=5F90h
--------V-105F10-----------------------------
INT 10 - Chips & Technologies Extended BIOS - ???
AX = 5F10h
DX = ???
Return: DX = ???
--------V-105F50-----------------------------
INT 10 - Chips & Technologies Extended BIOS - GET LAPTOP DISPLAY STATUS
AX = 5F50h
Return: DL = display status (see #0117)
Note: this call can be used on Toshiba laptops since ~1995 instead of
INT 42/AX=7503h which is no longer supported with the F655xx chips
SeeAlso: INT 42/AX=7503h
Bitfields for display status:
Bit(s) Description (Table 0117)
7-4 always 0 ???
3 1: both displays active (bit 1 also set)
2 1: normal (monochrome display only), 0: inverse or color
1 1: internal display active, 0: external only
0 always set ???
--------V-105F51-----------------------------
INT 10 - Chips & Technologies Extended BIOS - SET DISPLAY STATUS ???
AX = 5F51h
BX = ???
Return: nothing
--------V-105F5EBL00-------------------------
INT 10 - Chips & Technologies Extended BIOS - SET ???
AX = 5F5Eh
BL = 00h or 01h
Return: nothing
--------V-105F90-----------------------------
INT 10 - Chips & Technologies Extended BIOS - GET SUPERVGA STATE BUFFER SIZE
AX = 5F90h
CX = state mask (see #0118)
Return: AL = 5Fh if function supported
BX = number of 64-byte blocks required
SeeAlso: AH=1Ch,AX=5F03h,AX=5F91h,AX=5F92h
Bitfields for Chips&Technologies state mask:
Bit(s) Description (Table 0118)
0 video hardware
1 BIOS data state
2 DAC state
15 type (0 all state info, 1 SuperVGA state only)
--------V-105F91-----------------------------
INT 10 - Chips & Technologies Extended BIOS - SAVE SUPERVGA STATE
AX = 5F91h
CX = state mask (see #0118)
ES:BX -> save buffer
Return: AL = 5Fh if function supported
buffer at ES:BX filled
SeeAlso: AH=1Ch,AX=5F03h,AX=5F90h,AX=5F92h
--------V-105F92-----------------------------
INT 10 - Chips & Technologies Extended BIOS - RESTORE SUPERVGA STATE
AX = 5F92h
CX = state mask (see #0118)
ES:BX -> previously-filled save buffer
Return: AL = 5Fh if function supported
SeeAlso: AH=1Ch,AX=5F03h,AX=5F90h,AX=5F92h
--------V-1060------------------------------------
INT 10 - HUNTER 16 - SET GRAPHICS FONT
AH = 60h
AL = new font
bit 7 output characters in reverse video
bits 0-6 font number (see #0132 at AH=77h)
Return: BH = cell width
BL = cell height
Desc: select the font to use for output in mode 6; this can be used to mix
fonts on the screen
Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
SeeAlso: AH=04h"HUNTER",AH=73h"HUNTER",AH=77h"HUNTER"
--------V-1061------------------------------------
INT 10 - HUNTER 16 - MOVE CURSOR TO GRAPHICS CO-ORDINATES
AH = 61h
CX = column
DX = row
Return: nothing
Note: this function is only valid in graphics modes
SeeAlso: AH=62h
--------V-1062------------------------------------
INT 10 - HUNTER 16 - GET CURSOR POSITION IN GRAPHICS CO-ORDINATES
AH = 62h
Return: CX = column
DX = row
Note: this function is only valid in graphics modes
SeeAlso: AH=61h
--------V-1063------------------------------------
INT 10 - HUNTER 16 - SET CONTRAST
AH = 63h
AL = contrast (0..127)
Return: nothing
Desc: set the LCD screen contrast to improve visibility
SeeAlso: AH=64h,AH=75h
--------V-1064------------------------------------
INT 10 - HUNTER 16 - SET BACKLIGHT LEVEL
AH = 64h
AL = level (0..15)
Return: nothing
Desc: set the LCD backlight level to improve visibility in bad lighting
SeeAlso: AH=63h,AH=65h,AH=74h,AH=78h"HUNTER",INT 15/AH=74h
--------V-106500----------------------------------
INT 10 - HUNTER 16 - GET BACKLIGHT TIMEOUT
AX = 6500h
Return: BX = timeout in seconds (0-300)
Desc: returns the time after which the backlight will turn off
SeeAlso: AH=63h,AH=64h,AX=6501h,INT 15/AH=74h
--------V-106501----------------------------------
INT 10 - HUNTER 16 - SET BACKLIGHT TIMEOUT
AX = 6501h
BX = timeout in seconds (0-300)
Return: nothing
Desc: set the idle time after which the backlight will turn off
SeeAlso: AH=64h,AX=6500h
--------V-1066------------------------------------
INT 10 - HUNTER 16 - SPLIT DISPLAY
AH = 66h
AL = control bits (see #0119)
BH = top row of lower section of LCD (0..7)
BL = top row of lower section of the virtual screen (0..24)
Return: nothing
Desc: split the LCD screen horizontally into two parts; each part may be
individually scrollable or fixed.
Note: the Hunter 16 has a 240x64 LCD display which serves as a window into
a 640x200 virtual screen
Bitfields for HUNTER 16 control bits:
Bit(s) Description (Table 0119)
0-1 01: no split, 10: allow split
2 allow scrolling the upper part
3 allow scrolling the lower part
--------V-106A00BX0000-----------------------
INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES
AX = 6A00h
BX = 0000h
CX = 0000h
DX = buffer length (may be 0)
ES:DI -> buffer
Return: BX = number of bytes stored in buffer
CX = bytes required for all descriptions (0 if no DGIS)
Note: buffer contains descriptions and addresses of DGIS-compatible
display(s) and printer(s)
SeeAlso: AX=6A02h
--------V-106A01CX0000-----------------------
INT 10 - Direct Graphics Interface Standard (DGIS) - REDIRECT CHARACTER OUTPUT
AX = 6A01h
CX = 0000h
ES:DI = address of device to send INT 10 output to
Return: CX = 0000h output could not be redirected
else INT 10h output now routed to requested display
SeeAlso: AX=6A02h
--------V-106A02-----------------------------
INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE
AX = 6A02h
ES:DI = 0000h:0000h
Return: ES:DI = 0000h:0000h if current display is non-DGIS
else address of the current DGIS INT 10 display
SeeAlso: AX=6A00h,AX=6A01h
--------V-106D74-----------------------------
INT 10 - MTRFONTS - INSTALLATION CHECK
AX = 6D74h ('mt')
DS:0104h = signature "MtRfOnTs"
Return: AX = 4D54h ('MT') if installed
ES = PSP segment of resident code
Program: MTRFONTS is a shareware TSR (part of the MTR package) by Mechon Mamre
which provides Hebrew screen fonts
SeeAlso: INT 16/AX=6D74h"MTRTSR"
--------V-106E00-----------------------------
INT 10 - Paradise VGA internal - GET ???
AX = 6E00h
Return: BX = 5744h ('WD') if supported
DH:AH:AL = last three ASCII digits of ROM serial number
CL = ???
CH = ???
SeeAlso: AX=6E04h,AX=6E05h
--------V-106E04-----------------------------
INT 10 - Paradise VGA internal - GET SCREEN SIZE AND ???
AX = 6E04h
Return: BX = screen width (columns)
CX = screen height (lines)
AH = ??? (05h or FFh)
AL = ??? (04h or video mode)
SeeAlso: AX=6E00h,AX=6E05h
--------V-106E05-----------------------------
INT 10 - Paradise VGA internal - SET MODE
AX = 6E05h
BL = mode
Return: nothing
Note: like AH=00h, AL=BL.
SeeAlso: AH=00h,AX=6E00h,AX=6E04h,AX=6F05h
--------V-106F00-----------------------------
INT 10 - HP Vectra EX-BIOS - INSTALLATION CHECK
AX = 6F00h
BX <> 4850h (usually set to 0000h for simplicity)
Return: BX = 4850h ('HP') indicates HP Extended BIOS video functions present
AX destroyed
SeeAlso: AX=6F00h"Video7",AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
SeeAlso: INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
--------V-106F00BX0000-----------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA - INSTALLATION CHECK
AX = 6F00h
BX = 0000h
Return: BX = 5637h ('V7') indicates Video7 VGA/VEGA VGA extensions are present
SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,AX=6F05h
--------V-106F01-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP EX-BIOS - GET MONITOR INFO
AX = 6F01h
Return: AL = monitor type code (HP,VEGA VGA only) (see #0120)
AH = status register information (see #0121)
CL = current value of Extended Control register (HP Ext BIOS, and only
if AL=41h) (see #0122)
Notes: bits 0-3 are the same as the EGA/VGA status register bits 0-3
supported by original HP Vectra AT and by ES/QS/RS series Vectras
(Table 0120)
Values for monitor type code (HP Extended BIOS):
00h non-HP card with ROM and possibly its own INT 10h driver
41h MultiMode video display adapter
42h-44h reserved
45h industry standard monochrome display adapter
46h industry standard color display adapter
51h reserved
Bitfields for status register information:
Bit(s) Description (Table 0121)
0 display enable
0 = display enabled
1 = vertical or horizontal retrace in progress
1 light pen flip flop set
2 light pen switch activated
3 vertical sync
4 monitor resolution
0 = high resolution (>200 lines)
1 = low resolution (<=200 lines)
5 display type (0 = color, 1 = monochrome)
6,7 diagnostic bits
Note: bits 0-3 are the same as the EGA/VGA status register bits 0-3
--------V-106F02-----------------------------
INT 10 - HP Vectra EX-BIOS - SET MONITOR INFO
AX = 6F02h
BL = new value for extended control register (see #0122)
Return: AX,BL destroyed
Notes: this function is only valid when an HP MultiMode Video Display Adapter
is installed
the Extended Control register is at I/O address 3DDh
SeeAlso: AX=6F01h,AX=6F03h
Bitfields for HP Vectra extended control register:
Bit(s) Description (Table 0122)
0 screen resolution (0 = 200 lines, 1 = 400 lines)
1 underline enable (if set, 'blue' of fg color = underline)
2 font (0 = Standard-8, 1 = HP-Roman-8)
3 memory disabled for CPU access
4 allow access to full 32K memory instead of wrapping at 16K
5 select second 16K page instead of first
6,7 unused
--------V-106F03-----------------------------
INT 10 - HP Vectra EX-BIOS - MODIFY MONITOR INFO
AX = 6F03h
BH = exclude mask (set bits are not modified)
BL = new values for bits indicated by BH (see #0122)
Return: AX destroyed
Notes: this function is only valid when an HP MultiMode Video Display Adapter
is installed
supported by original HP Vectra AT and by ES/QS/RS series Vectras
SeeAlso: AX=6F01h,AX=6F02h
--------V-106F04-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA,HP Vectra - GET MODE AND SCREEN RESOLUTION
AX = 6F04h
Return: AL = current video mode (see #0123)
BX = horizontal columns (text) or pixels (graphics)
CX = vertical columns (text) or pixels (graphics)
SeeAlso: AX=6F05h
--------V-106F05-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA EXTENDED EGA/VGA,HP Vectra - SET VIDEO MODE
AX = 6F05h
BL = mode (see #0123)
Return: AX,BL destroyed
Notes: also supported by the HP Vectra Extended BIOS on the original
HP Vectra AT and by ES/QS/RS series Vectras
on the HP Vectra, this function rather than AH=00h must be used to
return to an IBM-standard mode after setting an HP-specified mode
from 08h to 0Fh.
SeeAlso: AH=00h,AX=0070h,AX=007Eh,AX=6F04h
(Table 0123)
Values for Video7/VEGA video mode:
text/ text pixel pixel colors disply scrn system
grph resol box resolution pages addr
00h-13h = standard IBM modes (see #0009 at AH=00h)
08h = T 80x27 . . mono . . HP MultiMode Video
09h = T 80x27 . . . . . HP MultiMode Video
0Ah = T 40x27 . . mono . . HP MultiMode Video
0Bh = T 40x27 . . . . . HP MultiMode Video
0Ch = reserved HP MultiMode Video
0Dh = G . . 640x400 . . . HP MultiMode Video
0Eh = G . . 320x400 . . . HP MultiMode Video
0Fh = G . . 320x400 . . . HP MultiMode Video
40h = T 80x43 8x8 . . . . Video7/VEGA VGA
41h = T 132x25 8x14 . . . . Video7/VEGA VGA
42h = T 132x43 8x8 . . . . Video7/VEGA VGA
43h = T 80x60 8x8 . . . . Video7/VEGA VGA
44h = T 100x60 8x8 . . . . Video7/VEGA VGA
45h = T 132x28 8x8 . . . . Video7/VEGA VGA
60h = G . . 752x410 16 . . Video7 VGA, VEGA VGA
61h = G . . 720x540 16 . . Video7 VGA, VEGA VGA
= G . . 720x540 16 . . Northgate, Headland 1024i
62h = G . . 800x600 16 . . Video7 VGA, VEGA Ext EGA
= G . . 800x600 16 . . Headland 1024i
63h = G . . 1024x768 2 . . Video7 VGA
64h = G . . 1024x768 4 . . Video7 VGA
65h = G . . 1024x768 16 . . Video7 VGA, VEGA Ext EGA
= G . . 1024x768 16 . . Headland 1024i
66h = G . . 640x400 256 . . Video7 VGA, VEGA Ext VGA
= G . . 640x400 256 . . Northgate, Headland 1024i
67h = G . . 640x480 256 . . Video7 VGA, VEGA Ext VGA
= G . . 640x480 256 . . Headland 1024i
68h = G . . 720x540 256 . . Video7 VGA, VEGA Ext VGA
= G . . 720x540 256 . . Headland 1024i
69h = G . . 800x600 256 . . Video7 VGA, VEGA Ext VGA
= G . . 800x600 256 . . Headland 1024i
70h = G . . 752x410 16gray . . Video7 VGA, VEGA VGA
71h = G . . 720x540 16gray . . Video7 VGA, VEGA VGA
72h = G . . 800x600 16gray . . Video7 VGA
73h = G . . 1024x768 2gray . . Video7 VGA
74h = G . . 1024x768 4gray . . Video7 VGA
75h = G . . 1024x768 16gray . . Video7 VGA
76h = G . . 640x400 256gray . . Video7 VGA
77h = G . . 640x480 256gray . . Video7 VGA
78h = G . . 720x540 256gray . . Video7 VGA
79h = G . . 800x600 256gray . . (future)
SeeAlso: AH=00h,#0009,AX=0070h,#0010,AX=007Eh,AX=6F04h,#0081
Index: video modes;Video 7|video modes;VEGA|video modes;Headland
--------V-106F06-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA - SELECT AUTOSWITCH MODE
AX = 6F06h
BL = Autoswitch mode select
00h select EGA/VGA-only modes
01h select Autoswitched VGA/EGA/CGA/MGA modes
02h select 'bootup' CGA/MGA modes
BH = enable/disable (00h enable, 01h = disable selection)
Return: nothing
--------V-106F07-----------------------------
INT 10 - VIDEO - Video7 VGA,VEGA VGA - GET VIDEO MEMORY CONFIGURATION
AX = 6F07h
Return: AL = 6Fh
AH = memory configuration
bits 0-6 = number of 256K blocks of video memory
bit 7 = DRAM/VRAM (0: DRAM, 1: VRAM)
BH = chip revision (SR8F) (S/C Chip in VEGA VGA)
BL = chip revision (SR8E) (G/A Chip in VEGA VGA)
CX = 0000h
SeeAlso: AH=12h/BL=10h
--------V-1070-------------------------------
INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF VIDEO RAM
AH = 70h
Return: AX:BX -> WORD containing green plane's offset
AX:CX -> WORD containing green plane's segment
AX:DX -> WORD containing segment of red (offset 0) and blue (offset
4000) planes
SeeAlso: AH=71h
--------V-1070------------------------------------
INT 10 - HUNTER 16 - DRAW ELLIPSE/CIRCLE
AH = 70h
DS:BX -> control block (see #0124)
Return: nothing
Desc: Draws a circle or ellipse. Only valid in graphics modes.
Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
SeeAlso: AH=71h"HUNTER"
Format of HUNTER 16 control block:
Offset Size Description (Table 0124)
00h WORD center X co-ordinate
02h BYTE center Y co-ordinate
03h WORD radius in pixels
05h BYTE color (00h white, 01h black, FFh invert)
06h BYTE aspect ratio x:x (1-127)
07h BYTE aspect ratio y:y (1-127)
--------V-107000BX0000-----------------------
INT 10 - Everex Extended Video BIOS - RETURN EMULATION STATUS
AX = 7000h
BX = 0000h
Return: AL = 70h if Trident-based Everex card
CL = monitor type (see #0125)
CH = feature bits (see #0126)
DX = video board info
bits 4-15: board ID model (see #0127)
bits 0-3: board ID revision
DI = BCD BIOS version number
SeeAlso: AX=5F01h,AH=FFh"Oak"
(Table 0125)
Values for Everex monitor type:
00h mono
01h CGA
02h EGA
03h digital multifrequency
04h IBM PS/2
05h IBM 8514
06h SuperVGA
07h analog multifrequency
08h super multifrequency
Bitfields for Everex feature bits:
Bit(s) Description (Table 0126)
7-6 memory size
00 = 256K
01 = 512K
10 = 1024K
11 = 2048K
5 special oscillator present
4 VGA protect enabled
0 6845 emulation
(Table 0127)
Values for board model for Trident-based Everex cards:
0236h Ultragraphics II
0620h Vision VGA
0673h EVGA
0678h Viewpoint
--------V-107000BX0004-----------------------
INT 10 - Everex Extended Video BIOS - GET PAGING FUNCTION POINTER FOR CURR MODE
AX = 7000h
BX = 0004h
Return: ES:DI -> FAR paging function (call with DL = page to set)
Note: the word preceding ES:DI is the length of the function in bytes, and
the last byte of the function is a FAR return instruction.
SeeAlso: AX=4F05h,AX=7000h/BX=0000h,AX=7000h/BX=0005h
--------V-107000BX0005-----------------------
INT 10 - Everex Extended Video BIOS - GET SUPPORTED MODE INFO
AX = 7000h
BX = 0005h
CL = maximum number of modes to get info for
CH = mode type to get info for (see #0128)
DL = monitor type to get info for
ES:DI -> buffer for mode info (see #0129)
Return: CL = total number of modes fitting criteria
CH = size of each info record
SeeAlso: AX=7000h/BX=0000h,AX=7000h/BX=0004h
(Table 0128)
Values for Everex mode type:
00h all modes
01h monochrome text modes
02h color text modes
03h four-color CGA graphics modes
04h two-color CGA graphics modes
05h 16-color graphics modes
06h 256-color graphics modes
Format of Everex mode information record:
Offset Size Description (Table 0129)
00h BYTE mode number (bit 7 set if extended mode)
01h BYTE mode type (see #0128)
02h BYTE info bits (see #0130)
03h BYTE font height
04h BYTE text columns on screen
05h BYTE text rows on screen
06h WORD number of scan lines
08h BYTE color information
bits 7-4 reserved
3-0 bits per pixel
Bitfields for Everex info bits:
Bit(s) Description (Table 0130)
7,6 reserved
5 monochrome mode
4 interlaced display
3 requires special oscillator
2,1 memory required (00 = 256K, 01 = 512K, 10 = 1024K, 11 = 2048K)
0 reserved
--------V-1071-------------------------------
INT 10 - VIDEO - TANDY 2000 only - GET ADDRESS OF INCRAM
AH = 71h
Return: AX:BX -> WORD containing segment address of INCRAM
AX:CX -> WORD containing offset of INCRAM
SeeAlso: AH=70h"TANDY"
--------V-1071------------------------------------
INT 10 - HUNTER 16 - DRAW LINE/BOX
AH = 71h
DS:BX -> control block (see #0131)
Return: nothing
Desc: Draws a line or box. Only valid in graphics modes.
SeeAlso: AH=70h"HUNTER"
Format of HUNTER 16 control block:
Offset Size Description (Table 0131)
00h WORD left edge X co-ordinate
02h BYTE lower edge Y co-ordinate
03h WORD right edge X co-ordinate
05h BYTE upper edge Y co-ordinate
06h BYTE color (00h white, 01h black, FFh invert)
07h BYTE type (00h line, 01h box)
08h BYTE if non-zero (and type is BOX) fill with color
--------V-1072-------------------------------
INT 10 - VIDEO - TANDY 2000 only - SCROLL RIGHT PART OR ALL OF SCREEN
AH = 72h
AL = number of columns to shift scroll area, 00h to clear entire area
BH = new attributes for blanked columns at left
CH,CL = row, column of upper left corner of scroll area
DH,DL = row, column of lower right corner of scroll area
Return: nothing
SeeAlso: AH=06h,AH=07h,AH=73h"TANDY",INT 15/AH=12h/BH=05h
--------V-1072------------------------------------
INT 10 - HUNTER 16 - SELECT TEXT-MODE INVERSE VIDEO MECHANISM
AH = 72h
AL = mechanism to use
00h do not use inverse video
01h emulate MDA. Display attribute 07h is normal video and 70h is
inverse video.
02h use inverse video if background is non-black.
03h use inverse video for high intensity text.
04h use inverse video for text with background intensity greater
than foreground intensity.
05h use inverse video for text with background color other than
black or high intensity foreground.
Return: nothing
SeeAlso: AH=70h"HUNTER",AH=71h"HUNTER"
--------V-1073-------------------------------
INT 10 - VIDEO - TANDY 2000 only - SCROLL LEFT PART OR ALL OF SCREEN
AH = 73h
AL = number of columns to shift scroll area, 00h to clear entire area
BH = new attributes for blanked columns at right
CH,CL = row, column of upper left corner of scroll area
DH,DL = row, column of lower right corner of scroll area
Return: nothing
SeeAlso: AH=06h,AH=07h,AH=72h"TANDY",INT 15/AH=12h/BH=05h
--------V-1073------------------------------------
INT 10 - HUNTER 16 - SELECT TEXT FONT
AH = 73h
AL = new font
00h 7x7 in a 8x8 cell
01h 5x7 in a 6x8 cell
06h 3x5 in a 4x6 cell
Return: BH = cell width
BL = cell height
SeeAlso: AH=60h"HUNTER",AH=77h"HUNTER"
--------V-1074------------------------------------
INT 10 - HUNTER 16 - SET LCD WINDOWS POSITION
AH = 74h
DH = row (0..24)
DL = column (0..79)
Return: nothing
Desc: set the position in the virtual screen being displayed in the LCD
screen. If Split Screen (INT 10/AH=66h) is used, this call sets the
position for the window which has the cursor.
SeeAlso: AH=66h"HUNTER",AH=75h,AH=76h
--------V-1075------------------------------------
INT 10 - HUNTER 16 - SET ZOOM
AH = 75h
AL = new Zoom state (00h off, nonzero on)
Return: nothing
SeeAlso: AH=74h,AH=76h
--------V-1076------------------------------------
INT 10 - HUNTER 16 - LOOKING KEYS
AH = 76h
AL = action
00h home the window
01h move up one line
02h move down one line
03h move left one character
04h move right one character
05h flip window to other side of virtual screen
Return: nothing
Desc: moves the displayed screen around the virtual screen
SeeAlso: AH=74h,AH=75h
--------V-1077------------------------------------
INT 10 - HUNTER 16 - GET GRAPHICS FONT
AH = 77h
Return: AL = font number (see #0132)
SeeAlso: AH=60h"HUNTER",AH=73h"HUNTER"
(Table 0132)
Values for HUNTER 16 graphics font number:
00h 7x7 in a 8x8 cell
01h 5x7 in a 6x8 cell
02h 7x9 in a 8x10 cell
03h 14x9 in a 16x10 cell
04h 7x18 in a 8x20 cell
05h 14x18 in a 16x20 cell
06h 3x5 in a 4x6 cell
Note: size is X * Y
--------V-1078------------------------------------
INT 10 - HUNTER 16 - TURN BACKLIGHT ON/OFF
AH = 78h
AL = new state of backlight (00h on, 01h off)
Return: nothing
SeeAlso: AH=64h,INT 15/AH=74h
--------V-107F-------------------------------
INT 10 - Paradise SVGA - WD90C24 INSTALLATION CHECK
AH = 7Fh
Return: AX = 1234h if WD90C24 chip installed
--------V-107F00-----------------------------
INT 10 - SOLLEX SuperVGA - GET EXTENSIONS INFO
AX = 7F00h
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
ES:DI -> info structure (see #0133)
01h failed
Program: the SOLLEX (Smos videO controLLer EXtensions) SuperVGA functions are
an extension to the VESA SuperVGA BIOS Extensions (see AX=4F00h) by
Seiko Epson Corporation intended to provided a standardized interface
to SuperVGA functionality not addressed by the VESA standard
SeeAlso: AX=4F00h
Format of SOLLEX SuperVGA info structure:
Offset Size Description (Table 0133)
00h DWORD pointer to VESA function dispatch table
04h DWORD pointer to SOLLEX function dispatch table
08h DWORD pointer to VESA SuperVGA info (see #0075 at AX=4F00h)
0Ch DWORD pointer to mode info structure table, consisting of
alternating ResInfo (see #0134) and VESA mode information
(see #0077 at AX=4F01h) blocks, terminated with an FFFFh word
10h DWORD pointer to font info structure table (see #0135)
14h WORD high resolution crystal frequency in Hz (0000h = not present)
16h DWORD pointer to ASCIZ ID string
1Ah DWORD pointer to timeout reset table
array of bytes, each a multiple of the minimum time increment
1Eh WORD minimum time increment in timer ticks
20h BYTE inverse options supported
bit 0: inverse supported
bits 1-7: reserved
21h BYTE normal color value
22h BYTE inverse color value
23h WORD port to be accessed for normal/inverse settings
25h WORD type of interface chip (currently undefined)
27h WORD program operational mode
bits 1-0: 00 no preference
01 terse (minimum detail in program messages)
10 verbose
11 use menus if supported, verbose mode otherwise
bits 7-2: reserved
29h WORD SOLLEX specification version
2Bh WORD version of VESA/SOLLEX implementation
2Dh DWORD offset to relocatable portion of SOLLEX extensions (for CONFIG)
2Eh DWORD offset to unused section of the extensions ROM
31h 16 BYTEs reserved
Note: all DWORD pointers initially require segment fixups; if the segment
is 0000h, it should be changed to the returned ES, otherwise it
may be assumed to be correct
Format of SOLLEX SuperVGA ResInfo:
Offset Size Description (Table 0134)
00h WORD 16-bit mode number
02h WORD adapter type (00h VGA, 01h EGA, 02h CGA, 03h MDA)
04h WORD display info (see #0138)
06h DWORD pointer to video parameter table
0Ah BYTE replacement entry in master Video Parameter
0Bh BYTE mode requested for mode set by BIOS
0Ch DWORD pointer to LoadReg table
10h BYTE index into table of clock values (see #0136)
SeeAlso: #0133
Format of SOLLEX SuperVGA font info table [array] entry:
Offset Size Description (Table 0135)
00h BYTE required font height
01h BYTE parameter to load text mode font
02h BYTE parameter to load graphics mode font
SeeAlso: #0133
(Table 0136)
Values for SOLLEX SuperVGA clock value index:
00h 25 MHz
01h 28 MHz
02h PCLK
03h 31.5 MHz (VESA 640x480)
04h reserved
05h 16 MHz (EGA)
06h PCLK
07h 24 MHz (EGA)
08h 25 MHz
09h 28 MHz
0Ah 36 MHz
0Bh 45 MHz (for 1024x768)
0Ch 80 MHz
0Dh 40 MHz
0Eh 65 MHz
0Fh 1 MHz (for powerdown)
SeeAlso: #0133
--------V-107F00BX4000-----------------------
INT 10 - Diamond Stealth 24 - GET S3 INFORMATION BLOCK
AX = 7F00h
BX = 4000h
Return: AX = 007Fh if supported
DX:BX -> DAC set mode routine
SeeAlso: AX=7F00h/BX=4001h,AX=7F00h/BX=4002h,#0656 at INT 1A/AX=B102h
--------V-107F00BX4001-----------------------
INT 10 - Diamond Stealth 24 - GET LINEAR ADDRESS
AX = 7F00h
BX = 4001h
Return: AX = 007Fh if supported
CX = current linear address base (high word)
SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4002h
--------V-107F00BX4002-----------------------
INT 10 - Diamond Stealth 24 - SET LINEAR ADDRESS
AX = 7F00h
BX = 4002h
CX = new linear address base (high word)
Return: AX = 007Fh if supported
SeeAlso: AX=7F00h/BX=4000h,AX=7F00h/BX=4001h
--------V-107F01BL00-------------------------
INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - SET ADAPTER
AX = 7F01h
BL = 00h
CX = adapter request (see #0137)
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
Note: initializes video hardware to a particular standard
SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=01h,AX=7F01h/BL=02h
Bitfields for SOLLEX SuperVGA adapter request:
Bit(s) Description (Table 0137)
1-0 adapter type (00 VGA, 01 EGA, 10 CGA, 11 MDA)
2 reserved
4-3 change displays (00 none, 01 analog 10 digital 11 panel)
6-5 desired monitor sense (01 color, 10 mono, 11=8514)
7 lock override
8 alternate adapter mode
15-9 reserved
--------V-107F01BL01-------------------------
INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - GET ADAPTER
AX = 7F01h
BL = 01h
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
BX = adapter type (see #0137)
DX = display type (see #0138)
SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=00h,AX=7F01h/BL=02h
Bitfields for SOLLEX SuperVGA display type:
Bit(s) Description (Table 0138)
15-9 reserved
8 alternate display active
7 Enhanced Color Display monitor active
6 multi-frequency digital monitor active
5 PS/2-type monitor active
4 plasma/electroluminescent panel active
3 LCD panel active
2 multi-frequency analog monitor active
1-0 monitor sense (00 none, 01 color, 10 mono, 11=8514)
--------V-107F01BL02-------------------------
INT 10 - SOLLEX SuperVGA - ADAPTER CONTROL - DETERMINE ADAPTER SUPPORT
AX = 7F01h
BL = 02h
CX = adapter request (see #0137)
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h requested setting can successfully be made
01h requested setting not available in this configuration
SeeAlso: AX=7F00h"SOLLEX",AX=7F01h/BL=00h
--------V-107F02BL00-------------------------
INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - SET DISPLAY OUTPUT
AX = 7F02h
BL = 00h
CX = display output setting (see #0139)
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AX=7F00h"SOLLEX",AX=7F02h/BL=00h
Bitfields for SOLLEX SuperVGA display output setting:
Bit(s) Description (Table 0139)
0 CRTC control in 2,1 valid
1 enable digital output
2 enable analog output
3 panel control in 5,4 valid
4 enable LCD output
5 enable plasma/EL output
6 inverse control in 7 valid
7 0=normal, 1=inverse
15-8 reserved
--------V-107F02BL01-------------------------
INT 10 - SOLLEX SuperVGA - DISPLAY OUTPUT CONTROL - GET DISPLAY OUTPUT
AX = 7F02h
BL = 01h
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
BX = display output setting (see #0139)
CX = displays attached (see #0140)
01h failed
SeeAlso: AX=7F00h"SOLLEX",AX=7F02h/BL=00h
Bitfields for SOLLEX SuperVGA displays attached:
Bit(s) Description (Table 0140)
0 PS/2 display on analog output
1 multi-frequency monitor on analog output
2 LCD panel attached
3 plasma/electroluminescent panel attached
4 multi-frequency monitor on digital output
5 Enhanced Color Display attached to digital outpt
6 alternate display
15-7 reserved
--------V-107F03BL00-------------------------
INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GET SUPPORT INFO
AX = 7F03h
BL = 00h
CX = support type
0000h VGA, 0001h EGA, 0002h CGA, 0003h MDA, 0004h extensions,
0005h-0012h reserved for SOLLEX, 0013h Hercules,
0014h-001Fh reserved for SOLLEX, 0020h-00FFh reserved for OEM
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
CX = size of video support code
DX = segment of physical video support (0000h if no ROM)
ES = segment of active video support
ES:DI -> information block (DI = 0000h if none available)
01h failed
SeeAlso: AX=7F03h/BL=01h
--------V-107F03BL01-------------------------
INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - INITIALIZE VIDEO SUPPORT
AX = 7F03h
BL = 01h
CX = support request
ES = segment of support code
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
Note: initializes the indicated video support by calling ES:0003h; this
function may be used to switch the active video support back to
ROM after AX=7F03h/BL=02h
SeeAlso: AX=7F03h/BL=00h
--------V-107F03BL02-------------------------
INT 10 - SOLLEX SuperVGA - VIDEO SUPPORT CONTROL - GO RAM RESIDENT
AX = 7F03h
BL = 02h
CX = support request
ES = destination segment
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AX=7F00h"SOLLEX",AX=7F03h/BL=01h
--------V-107F04BL00-------------------------
INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET POWER STATE
AX = 7F04h
BL = 00h
CX = new power state
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
Note: higher values progressively reduce the operations available on the
video adapter while yielding increasing power savings
SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=01h
--------V-107F04BL01-------------------------
INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET POWER STATE
AX = 7F04h
BL = 01h
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
CX = current power state
DX = maximum state
01h failed
SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=00h
--------V-107F04BL02-------------------------
INT 10 - SOLLEX SuperVGA - POWER CONTROL - SET TIMEOUT RESET
AX = 7F04h
BL = 02h
CX = timeout reset
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=03h
--------V-107F04BL03-------------------------
INT 10 - SOLLEX SuperVGA - POWER CONTROL - GET TIMEOUT RESET
AX = 7F04h
BL = 03h
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
BX = time increment
CX = current timeout reset
DX = maximum timeout reset
ES:DI -> timeout reset table (array of bytes)
01h failed
Note: the timeout period is computed as (BYTE ES:[DI+CX]) * BX timer ticks
SeeAlso: AX=7F00h"SOLLEX",AX=7F04h/BL=02h
--------V-107F05-----------------------------
INT 10 - SOLLEX SuperVGA - LOAD REGISTER
AX = 7F05h
ES:DI -> register value table (see #0141)
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AH=F1h,AH=F3h,AH=F5h
Format of SOLLEX SuperVGA register value table:
Offset Size Description (Table 0141)
00h WORD base I/O register (FFFFh = end of list)
02h 2N BYTEs pairs of values to be written to the base I/O register as an
index value and the following register as a data byte
2N+2 WORD FFFFh (end of data list)
... (repeats until FFFFh base address)
--------V-107F06-----------------------------
INT 10 - SOLLEX SuperVGA - MULTIPLE FONT CONTROL
AX = 7F06h
BL = subfunction
00h set multiple font state
CX = new state (00h off, 01h on)
01h get multiple font state
Return: BL = current state (00h off, 01h on)
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AX=1100h,AX=1103h
--------V-107F07-----------------------------
INT 10 - SOLLEX SuperVGA - FILL VIDEO RAM
AX = 7F07h
BL = how much to fill
00h regen size
01h all video memory
CX = pattern to write (normally 0720h for text modes and 0000h for gr)
Return: AL <> 7Fh if not supported
AL = 7Fh if supported
AH = status
00h successful
01h failed
SeeAlso: AH=06h
--------A-1080-------------------------------
INT 10 - CU Writer v1.4 - GET OPTION
AH = 80h
AL = desired option
Return: ???
Program: CU Writer is a public-domain Thai-English word processor from
Chulalongkorn University, Bangkok
SeeAlso: AH=81h"CU Writer"
--------Q-1080--DX4456-----------------------
INT 10 U - VIDEO - DESQview 2.0x only - internal - SET ??? HANDLER
AH = 80h
DX = 4456h ('DV')
ES:DI -> FAR subroutine to be called on ???
Return: DS = segment of DESQview data structure for video buffer
Note: this function is probably meant for internal use only, due to the magic
value required in DX
the subroutine seems to be called when the DESQview menu is accessed;
on entry, AL = 03h or 04h
--------A-1081-------------------------------
INT 10 - CU Writer v1.4 - SET OPTION
AH = 81h
???
Return: ???
SeeAlso: AH=80h"CU Writer"
--------Q-1081--DX4456-----------------------
INT 10 U - VIDEO - DESQview 2.0x only - internal - GET ???
AH = 81h
DX = 4456h ('DV')
Return: ES = segment of DESQview data structure for video buffer
BYTE ES:[0] = current window number in DV 2.0x
Note: this function is probably meant for internal use only, due to the magic
value required in DX
SeeAlso: AH=82h"DESQview"
--------Q-1082--DX4456-----------------------
INT 10 U - VIDEO - DESQview 2.0x only - internal - GET CURRENT WINDOW INFO
AH = 82h
DX = 4456h ('DV')
Return: DS = segment in DESQview for data structure
in DV 2.00,
BYTE DS:[0] = window number
WORD DS:[1] = segment of other data structure
WORD DS:[3] = segment of window's object handle
ES = segment of DESQview data structure for video buffer
AL = current window number
AH = ???
BL = direct screen writes
00h program does not do direct writes
01h program does direct writes, so shadow buffer not usable
BH = ???
CL = current video mode
CH = ???
Note: this function is probably meant for internal use only, due to the magic
value required in DX
SeeAlso: AH=81h"DESQview"
--------J-108200-----------------------------
INT 10 - VIDEO - AX PC - GET/SET SCROLL MODE
AX = 8200h
BL = new scroll mode or FFh to get current mode
00h dynamic, 01h software
Return: AL = scroll mode (current mode if BL=FFh, previous mode otherwise)
SeeAlso: AH=06h,AH=07h
--------J-108300-----------------------------
INT 10 - VIDEO - AX PC - GET VIDEO RAM ADDRESS
AX = 8300h
Return: AX = offset of video RAM
ES:BX -> virtual text RAM buffer
SeeAlso: AX=5201h
----------1086-------------------------------
INT 10 - ???
AH = 86h
Note: called by Diamond Stealth64 Video STLTH64.VXD
SeeAlso: INT 2F/AX=4021h
--------N-108B-------------------------------
INT 10 - Alloy MW386 - FORCE WORKSTATION SCREEN UPDATE
AH = 8Bh
Return: nothing
SeeAlso: AH=92h,AH=93h
--------N-1090-------------------------------
INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION DISPLAY MODE
AH = 90h
Return: AL = current video mode (see #0009 at AH=00h)
SeeAlso: AH=91h
--------N-1091-------------------------------
INT 10 - Alloy MW386 - GET PHYSICAL WORKSTATION ADAPTER TYPE
AH = 91h
Return: AL = video adapter type (see #0142)
Note: types less than 80h do not imply that the current user is on the host
SeeAlso: AH=90h
(Table 0142)
Values for Alloy MW386 video adapter type:
00h monochrome
01h Hercules monochrome graphics
02h CGA
03h EGA
04h VGA
80h monochrome text terminal
81h Hercules graphics terminal
82h color graphics terminal
--------N-1092-------------------------------
INT 10 - Alloy MW386 - INHIBIT WORKSTATION SCREEN UPDATES
AH = 92h
Return: nothing
Note: the terminal will be updated even when screen updates are inhibited if
TTY output is used
SeeAlso: AH=8Bh
--------N-1093-------------------------------
INT 10 - Alloy MW386 - REDRAW SCREEN
AH = 93h
Return: nothing
SeeAlso: AH=8Bh,AH=FFh
--------A-10A0-------------------------------
INT 10 - CU Writer v1.4 - SET PIXEL WRITE MODE
AH = A0h
???
Return: ???
Program: CU Writer is a public-domain Thai-English word processor from
Chulalongkorn University, Bangkok
SeeAlso: AH=80h"CU Writer",AH=B0h
--------p-10A000-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A000h
CL = ??? (bits 2-0 may not be 000)
CH = ??? (81h or ???)
DX = segment of ??? (if CH=81h)
???
Return: AX = ???
SeeAlso: AX=4F10h/BL=00h,AX=A001h
----------10A001-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A001h
CL = ??? flags
???
Return: AH = status
00h successful
01h failed
???
SeeAlso: AX=A000h,AX=A002h
----------10A002-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A002h
CL = ??? (bits 2-0 may not be 000)
CH = ??? (81h or ???)
DX = segment of ??? (if CH=81h)
???
Return: AH = status
00h successful
01h failed
???
Note: executes AX=A000h, then AX=A001h if A000h was successful
SeeAlso: AX=A000h,AX=A001h
----------10A003-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A003h
BX = ???
???
Return: AH = status (00h successful)
???
SeeAlso: AX=A000h,AX=A002h
--------V-10A004-----------------------------
INT 10 - PhoenixVIEW/LC - VIDEO DISPLAY TYPE
AX = A004h
???
Return: ???
Desc: configure display parameters
SeeAlso: AX=A01Bh"PhoenixVIEW/LC"
----------10A004-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A004h
BX = video mode??? (0000-00FFh)
DX = ??? (sent to some port [66ECh???] one bit at a time, high to low)
???
Return: AH = status
00h successful
01h failed
???
SeeAlso: AX=A000h,AX=A002h
----------10A005-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A005h
CL = ??? flags (bits 0,2, others?)
???
Return: AH = status
00h successful
01h failed
???
SeeAlso: AX=A000h,AX=A002h
----------10A006-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A006h
???
Return: AH = status
00h successful
01h failed
???
SeeAlso: AX=A000h,AX=A002h
----------10A007-----------------------------
INT 10 - ATI Mach64 BIOS - GET ???
AX = A007h
Return: AH = 00h (successful)
AL = ??? (00h)
BX = ??? (15A0h in examined BIOS)
DX = segment of BIOS
SeeAlso: AX=A000h,AX=A002h
----------10A008-----------------------------
INT 10 - ATI Mach64 BIOS - GET ??? SIZE
AX = A008h
CL = ??? flags
???
Return: AH = 00h (successful)
BX = size of ??? (0046h if CL bit 0 clear on entry)
SeeAlso: AX=A000h,AX=A009h
----------10A009-----------------------------
INT 10 - ATI Mach64 BIOS - GET ???
AX = A009h
DX:BX -> buffer for ???
CL = ??? flags
???
Return: AH = status
00h successful
DX:BX buffer filled
01h failed
???
SeeAlso: AX=A000h,AX=A008h
----------10A00A-----------------------------
INT 10 - ATI Mach64 BIOS - GET ???
AX = A00Ah
Return: AH = 00h (successful)
AL = ??? (01h)
BX = ??? (5938h)
CX = ??? (595Eh)
DX = segment of BIOS
SeeAlso: AX=A000h,AX=A002h
----------10A00B-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A00Bh
BX = ???
CL = ??? flags
???
Return: AH = status
00h successful
01h failed
???
SeeAlso: AX=A000h,AX=A002h
--------p-10A00C-----------------------------
INT 10 - ATI Mach64 BIOS - SET SLEEP MODE
AX = A00Ch
CL = new state
00h normal operation
01h standby
02h suspend
03h off
Return: AH = status
00h successful
01h failed
Note: CL bit 2 affects values written to video card's ports
SeeAlso: AX=A000h,AX=A00Dh,AX=4F00h,AX=4F10h/BL=01h
----------10A00D-----------------------------
INT 10 - ATI Mach64 BIOS - GET SLEEP MODE
AX = A00Dh
Return: AH = 00h (successful)
CL = current power mode
00h normal operation
01h standby
02h suspend
03h off
SeeAlso: AX=A00Ch,AX=4F10h/BL=02h
----------10A00E-----------------------------
INT 10 - ATI Mach64 BIOS - SET ???
AX = A00Eh
CL = ??? (00h-03h)
Return: AH = status
00h successful
01h failed
Note: CL zero/nonzero are treated differently
SeeAlso: AX=A000h,AX=A00Fh
----------10A00F-----------------------------
INT 10 - ATI Mach64 BIOS - GET ???
AX = A00Fh
Return: AH = 00h (successful)
CL = ??? (00h-03h, read from PORT 42ECh)
SeeAlso: AX=A000h,AX=A00Eh
----------10A010-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A010h
CL = ??? (80h/other)
???
Return: AH = status
00h successful
01h failed
???
SeeAlso: AX=A000h,AX=A002h
----------10A011-----------------------------
INT 10 - ATI Mach64 BIOS - GET ???
AX = A011h
Return: AH = 00h (successful)
BL = ??? (1Fh)
BH = ??? (0Fh)
CL = ??? (00h)
CH = ??? (0Fh)
DX = ??? (00FFh)
SeeAlso: AX=A000h,AX=A010h
----------10A012-----------------------------
INT 10 - ATI Mach64 BIOS - GET ???
AX = A012h
Return: AH = 00h (successful)
AL = ??? (00h)
BX = ??? (0000h)
CX = ??? (0000h)
DX = ??? (02ECh)
SeeAlso: AX=A000h,AX=A002h
----------10A013-----------------------------
INT 10 - ATI Mach64 BIOS - ???
AX = A013h
???
Return: AH = status
00h successful
01h failed
???
Note: not implemented in examined BIOS, always returns AH=01h
SeeAlso: AX=A000h,AX=A002h
--------V-10A01B-----------------------------
INT 10 - PhoenixVIEW/LC - CRT MONITOR DETECTION
AX = A01Bh
???
Return: ???
Desc: determine whether an external display is currently attached
SeeAlso: AX=A004h"PhoenixVIEW/LC"
--------U-10AA-------------------------------
INT 10 OU - Player's Tool 3.0 - UNINSTALL
AH = AAh
Return: ???
Note: this call has been removed in PT 3.996b
Program: Player's Tool is a game cheater by Dmitry Yakunin & Andy Robinson
SeeAlso: AH=ABh,INT 2F/AH=AAh
--------U-10AB-------------------------------
INT 10 OU - Player's Tool 3.0 - INSTALLATION CHECK
AH = ABh
Return: BH = FFh
???
Note: this call has been removed in PT 3.996b
SeeAlso: AH=AAh,INT 2F/AH=ABh
--------A-10B0-------------------------------
INT 10 - CU Writer v1.4 - PUT PIXEL
AH = B0h
???
Return: ???
SeeAlso: AH=A0h"CU Writer",AH=B1h,AH=B2h,AH=B3h,AH=B4h,AH=B5h,AH=D0h
--------A-10B1-------------------------------
INT 10 - CU Writer v1.4 - MOVE TO
AH = B1h
???
Return: ???
SeeAlso: AH=B0h,AH=B2h,AH=C0h"CU Writer"
--------A-10B2-------------------------------
INT 10 - CU Writer v1.4 - DRAW LINE TO
AH = B2h
???
Return: ???
SeeAlso: AH=B0h,AH=B1h,AH=B3h,AH=B4h,AH=B5h
--------A-10B3-------------------------------
INT 10 - CU Writer v1.4 - FLOOD FILL
AH = B3h
???
Return: ???
SeeAlso: AH=B2h,AH=B5h
--------A-10B4-------------------------------
INT 10 - CU Writer v1.4 - DRAW RECTANGLE
AH = B4h
???
Return: ???
SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B5h
--------A-10B5-------------------------------
INT 10 - CU Writer v1.4 - DRAW FILLED RECTANGLE
AH = B5h
???
Return: ???
SeeAlso: AH=B0h,AH=B2h,AH=B3h,AH=B4h
--------V-10BD44-----------------------------
INT 10 U - Compaq QVision - ???
AX = BD44h
???
Return: ???
Note: called by Compaq's MTX132.COM, which places the QVision in 132-column
mode
--------V-10BF--CX0000-----------------------
INT 10 - Athena Digital HGCIBM.COM - INSTALLATION CHECK
AH = BFh
CX = 0000h (???)
Return: CX = 0202h
DL = ??? (internal data, possibly version number)
--------b-10BF00-----------------------------
INT 10 - VIDEO - Compaq Extensions - SELECT EXTERNAL MONITOR
AX = BF00h
Return: nothing
Desc: specify that the external monitor become the active monitor
Note: all registers preserved and the internal monitor is blanked
SeeAlso: AX=BF01h,AX=BF12h,AH=12h/BL=35h
--------b-10BF01-----------------------------
INT 10 - VIDEO - Compaq Extensions - SELECT INTERNAL MONITOR
AX = BF01h
Return: nothing
Desc: specify that the internal monitor become the active monitor
Note: all registers preserved and the external monitor is blanked
SeeAlso: AX=BF00h,AX=BF12h,AH=12h/BL=35h
--------b-10BF02-----------------------------
INT 10 - VIDEO - Compaq Extensions - SET MASTER MODE OF CURRENT CONTROLLER
AX = BF02h
BH = master mode
04h CGA
05h EGA
07h MDA
Return: nothing
SeeAlso: AX=BF03h
--------b-10BF03BX0000-----------------------
INT 10 - VIDEO - Compaq Extensions - GET ENVIRONMENT
AX = BF03h
BX = 0000h
Return: BH = active monitor
(00h = external, 01h = internal, 03h both, 04h neither)
BL = master mode (see #0143)
CH = ASIC type and version
00h (reserved, very early Compaq VGCs)
31h if QVision VGA
CL = switchable VDU modes supported (see #0144)
DH = internal monitor type (see #0145)
DL = external monitor type (see #0145)
SeeAlso: AX=1A00h,AX=BF00h,AX=BF01h,AX=BF02h,AX=BF11h
(Table 0143)
Values for Compaq video master mode:
00h switchable VDU not present
04h CGA
05h EGA
07h MDA
08h switchable LCD controller present
09h plasma VGA
0Ah TFT (active-matrix) VGA
Bitfields for Compaq switchable VDU modes support:
Bit(s) Description (Table 0144)
0 CGA supported
1,2 reserved (1)
3 MDA supported
4 BitBLT engine available
5 132-column support availble
6 640x480x256 mode available
7 8-bit DAC mode available
(Table 0145)
Values for Compaq monitor type:
00h none
01h dual-mode monitor
02h 5153 RGB monitor (RGBI 16-color)
03h Compaq Color monitor
04h 640x400 flat panel (Plasma CGA)
05h VGC monochrome
06h VGC color
07h 8-level mono LCD VGA (internal)
1024x768 mono VGA (external)
08h 16-level mono plasma VGA (internal)
1024x768 color VGA (external)
09h 4-level mono LCD CGA
0Ah 16-level mono LCD VGA
0Bh active-matrix color VGA
0Ch active-matrix mono VGA
0Dh STN color VGA
--------b-10BF04-----------------------------
INT 10 - VIDEO - Compaq Extensions - SET MODE SWITCH DELAY
AX = BF04h
BH = new state of delay (00h enabled, 01h disabled)
Return: nothing
Note: the 04/08/93 sytem ROM appears to use BL instead of BH; a future
version of the list will provide more definite information
SeeAlso: AX=BF05h
--------b-10BF05-----------------------------
INT 10 - VIDEO - Compaq Extensions - ENABLE/DISABLE DISPLAY
AX = BF05h
BH = new state of video
00h off
01h on
Return: nothing
Note: the 04/08/93 sytem ROM appears to use BL instead of BH; a future
version of the list will provide more definite information
SeeAlso: AH=12h/BL=36h,AX=BF04h
--------b-10BF06-----------------------------
INT 10 - VIDEO - Compaq SLT/286 - READ GRAY SCALE TABLE
AX = BF06h
CL = address to be read from gray scale table
Return: AL = bit 3-0 - Value read from gray scale table
CL = address to be read from gray scale table
SeeAlso: AH=12h/BL=33h,AX=BF07h
--------b-10BF07-----------------------------
INT 10 - VIDEO - Compaq SLT/286 - WRITE GRAY SCALE TABLE
AX = BF07h
CH = value to write to gray scale table
CL = address to be written to gray scale table
Return: nothing
SeeAlso: AX=BF06h,AX=BF08h
--------b-10BF08-----------------------------
INT 10 - VIDEO - Compaq SLT/286 - WRITE COLOR MIX REGISTERS
AX = BF08h
CH = bits 7-4 green weight
bits 3-0 blue weight
CL = bits 7-4 unused
bits 3-0 red weight
Return: nothing
SeeAlso: AH=12h/BL=33h,AX=BF07h
--------b-10BF09-----------------------------
INT 10 - VIDEO - Compaq Extensions - TURN ON REVERSE VIDEO
AX = BF09h
Return: CF clear
Notes: sets bit 6 of port 03CEh index 81h; in some cases also sets index 84h
to 6Fh and index 83h to 04h
supported by at least the QVision board and the LTE Lite ROM BIOS
SeeAlso: AX=BF0Ah,AX=BF0Bh
--------b-10BF0A-----------------------------
INT 10 - VIDEO - Compaq Extensions - TURN OFF REVERSE VIDEO
AX = BF0Ah
Return: CF clear
Notes: clears bit 6 of port 03CEh index 81h; in some cases also sets index 84h
to 80h and index 83h to FBh
supported by at least the QVision board and the LTE Lite ROM BIOS
SeeAlso: AX=BF09h,AX=BF0Bh
--------b-10BF0B-----------------------------
INT 10 - VIDEO - Compaq Extensions - CHECK WHETHER VIDEO REVERSED
AX = BF0Bh
Return: CF clear
AX = state (0000h normal video, 0001h reverse video)
Note: supported by at least the QVision board and the LTE Lite ROM BIOS
SeeAlso: AX=BF09h,AX=BF0Ah
--------b-10BF0C-----------------------------
INT 10 - VIDEO - Compaq Extensions - SET DAC 6-BIT MODE
AX = BF0Ch
Return: CF clear
Desc: specify that video DAC registers use only six bits of color info
Note: supported by at least the QVision board and the SystemPro XL ROM BIOS
SeeAlso: AX=BF0Dh,AX=BF0Eh
--------b-10BF0D-----------------------------
INT 10 - VIDEO - Compaq Extensions - SET DAC 8-BIT MODE
AX = BF0Dh
Return: CF clear
Desc: specify that video DAC registers use all eight bits of color info
Note: supported by at least the QVision board and the SystemPro XL ROM BIOS
SeeAlso: AX=BF0Ch,AX=BF0Eh
--------b-10BF0E-----------------------------
INT 10 - VIDEO - Compaq Extensions - CHECK DAC 6-BIT/8-BIT mode
AX = BF0Eh
Return: CF clear
AL = DAC mode
00h in 6-bit mode
01h in 8-bit mode
Note: supported by at least the QVision board and the SystemPro XL ROM BIOS
SeeAlso: AX=BF0Ch,AX=BF0Dh
--------b-10BF0F-----------------------------
INT 10 - VIDEO - Compaq Extensions - SET HIGH ADRESS MAP REGISTER
AX = BF0Fh
BX = high address map location in megabytes, or
0000h to disable high address map, or
FFFFh to let ROM configure high address map
Return: CF clear
AX = previous value of high address map register
Notes: supported by at least the QVision board and the SystemPro XL and LTE
Lite ROM BIOSes
SeeAlso: AX=BF10h
--------b-10BF10-----------------------------
INT 10 - VIDEO - Compaq Extensions - GET HIGH ADDRESS MAP REGISTER
AX = BF10h
Return: CF clear
AX = current value of high address map register
Notes: supported by at least the QVision board and the SystemPro XL and LTE
Lite ROM BIOSes
the Compaq QVision documentation (October 1993) says the value is
returned in BX, but this appears to be one of many typos
SeeAlso: AX=BF0Fh
--------b-10BF11-----------------------------
INT 10 - VIDEO - Compaq Extensions - GET EXTENDED ENVIRONMENT
AX = BF11h
Return: AL = BFh if supported
CF clear
ES:DI -> ASCII signature "COMPAQ"
ES:SI -> advanced functionality table (see #0146)
Note: supported by at least the QVision board and the LTE Lite and ProSignia
ROM BIOSes
SeeAlso: AX=1A00h,AX=BF03h
Bitfields for Compaq advanced video functionality:
Bit(s) Description (Table 0146)
31 future graphics extensions (reserved, set to 0)
30-16 reserved
15-12 available video memory in 256K blocks, less one (0000 = 256K, etc.)
11-8 reserved
7 QVision modes supported
6 Advanced VGA modes supported
5 Accelerated VGA modes supported
4 standard VGA modes supported
3-2 reserved
1 132-column modes supported
0 reserved
--------b-10BF12-----------------------------
INT 10 - VIDEO - Compaq Extensions - NEW ACTIVE MONITOR
AX = BF12h
BH reserved
BL = function mask (see #0147)
Return: CF clear
Notes: this function is a NOP if the VGA subsystem is inactive or the current
Display Combination Code is 10h or higher
supported by at least the QVision board and the LTE Lite and ProSignia
ROM BIOSes
SeeAlso: AX=BF01h,AX=BF02h,#0657
Bitfields for function mask:
Bit(s) Description (Table 0147)
7 command mode
if set, bits 1 and 0 make the monitor active when set
if clear, bits 1 and 0 toggle the monitor's state when set
6-2 reserved
1 internal monitor
0 external monitor
--------b-10BF13-----------------------------
INT 10 - VIDEO - Compaq QVision - GAMMA CORRECTION
AX = BF13h
BL = subfunction
00h load gamma correction table for true-color mode
DS = BIOS data segment
01h set palette RAM bypass
BH = 00h
Return: nothing
Note: these functions must be called after a video mode set, and are in
effect only for the current video mode
SeeAlso: #0657
--------V-10BFA0BXADAD-----------------------
INT 10 - VIDEO - Compaq ADAPT.COM - INSTALLATION CHECK
AX = BFA0h
BX = ADADh
Return: AX = BDBDh if newer ADAPT.COM installed
BX = BCD version (BH = major, BL = minor)
CL = ???
CH = ???
DL = ???
AX = ADADh if older version of ADAPT.COM installed
Program: ADAPT is Compaq's Advanced Display Attribute Programming Tool, an
optionally-resident utility for setting display colors and cursor
size; when resident, it also includes a screen blanker
SeeAlso: AX=BFA1h,AX=BFA2h,AX=DFA5h
Index: screen saver;ADAPT
--------V-10BFA1-----------------------------
INT 10 - VIDEO - Compaq ADAPT.COM - GET ???
AX = BFA1h
Return: AX = BDBEh if supported
CH = current value of ???
DL = current value of ???
SeeAlso: AX=BFA0h,AX=BFA2h
--------V-10BFA2-----------------------------
INT 10 - VIDEO - Compaq ADAPT.COM - SET ???
AX = BFA2h
CH = new value for ???
DL = new value for ???
Return: AX = BDBEh if supported
SeeAlso: AX=BFA0h,AX=BFA1h
--------A-10C0-------------------------------
INT 10 - CU Writer v1.4 - GO TO TEXT ROW AND COLUMN
AH = C0h
???
Return: ???
SeeAlso: AH=B1h,AH=C1h,AH=C2h,AH=C3h,AH=C4h
--------V-10C000-----------------------------
INT 10 - S3 SpeedUp v3.00+ - INSTALLATION CHECK
AX = C000h
Return: AX = FFFFh if installed
DX = version number (binary, DH=major, DL=minor)
BX = resident code segment
Program: S3SPDUP is a freeware TSR by Dietmar Meschede to improve the speed
of chained video modes (both VESA and VGA Mode 13) on S3-chipset
video cards
SeeAlso: AX=C001h,AX=C002h,AX=C003h,AX=D000h"S3VBE"
--------V-10C001-----------------------------
INT 10 - S3 SpeedUp v3.00+ - GET ACTIVE OPTIONS
AX = C001h
Return: AX = FFFFh if function supported
BX = currently active options (see #0148)
SeeAlso: AX=C000h,AX=C002h,AX=C003h
Bitfields for S3SpeedUp options:
Bit(s) Description (Table 0148)
0 speed up banked VESA modes
1 speed up 320x200 VGA mode 13
SeeAlso: #0154
--------V-10C002-----------------------------
INT 10 - S3 SpeedUp v3.00+ - SET ACTIVE OPTIONS
AX = C002h
BX = new value for active options (see #0148)
Return: AX = FFFFh if function supported
SeeAlso: AX=C000h,AX=C001h,AX=C003h,AX=D003h"S3VBE"
--------V-10C003-----------------------------
INT 10 - S3 SpeedUp v3.10+ - GET FLAGS
AX = C003h
Return: AX = FFFFh if function supported
BX = flags
bit 0: SpeedUp is active
bit 1: Windows run after SpeedUp
SeeAlso: AX=C000h,AX=C001h,AX=C002h,AX=D005h"S3VBE"
--------V-10C004-----------------------------
INT 10 - S3 SpeedUp v3.10+ - RESERVED FUNCTIONS
AX = C004h-C0FFh
Return: AX = 5555h
SeeAlso: AX=C000h
--------A-10C1-------------------------------
INT 10 - CU Writer v1.4 - OUTPUT TEXT
AH = C1h
???
Return: ???
SeeAlso: AH=C0h,AH=C2h,AH=C3h,AH=C4h
--------A-10C2-------------------------------
INT 10 - CU Writer v1.4 - REVERSE TEXT
AH = C2h
???
Return: ???
SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=C4h
--------A-10C3-------------------------------
INT 10 - CU Writer v1.4 - TEXT BAR
AH = C3h
???
Return: ???
SeeAlso: AH=C0h,AH=C1h,AH=C4h
--------A-10C4-------------------------------
INT 10 - CU Writer v1.4 - TEXT MENU
AH = C4h
???
Return: ???
SeeAlso: AH=C0h,AH=C1h,AH=C3h,AH=D0h
--------V-10CB00-----------------------------
INT 10 - UNCHAIN - SAVE CURRENT VGA REGISTERS
AX = CB00h
Note: combined with AX=CB06h, this function permits the use of video mode
13h together with the VGA's unchained mode
SeeAlso: AX=CB06h,AX=CBFFh
--------V-10CB01-----------------------------
INT 10 - UNCHAIN - UPDATE PAGE 1 OFFSET
AX = CB01h
BX = offset of page 1
Return: nothing
Desc: inform UNCHAIN of the location of video page 1 in video memory; the
default is 0000h
SeeAlso: AX=CB02h,AX=CB03h,AX=CB04h,AX=CBFFh
--------V-10CB02-----------------------------
INT 10 - UNCHAIN - UPDATE PAGE 2 OFFSET
AX = CB02h
BX = offset of page 2
Return: nothing
Desc: inform UNCHAIN of the location of video page 2 in video memory; the
default is 3E80h (16000, for 320x200)
SeeAlso: AX=CB00h,AX=CB01h,AX=CB03h,AX=CB04h
--------V-10CB03-----------------------------
INT 10 - UNCHAIN - UPDATE PAGE 3 OFFSET
AX = CB03h
BX = offset of page 3
Return: nothing
Desc: inform UNCHAIN of the location of video page 3 in video memory; the
default is 7D00h (32000, for 320x200)
SeeAlso: AX=CB01h,AX=CB02h,AX=CB04h
--------V-10CB04-----------------------------
INT 10 - UNCHAIN - UPDATE PAGE 4 OFFSET
AX = CB04h
BX = offset of page 4
Return: nothing
Desc: inform UNCHAIN of the location of video page 4 in video memory; the
default is BB80h (48000, for 320x200)
SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB05h
--------V-10CB05-----------------------------
INT 10 - UNCHAIN - SAVE PALETTE
AX = CB05h
Return: nothing
SeeAlso: AX=CB00h,AX=CB06h
--------V-10CB06-----------------------------
INT 10 - UNCHAIN - RESTORE VGA REGISTERS
AX = CB06h
Return: nothing
SeeAlso: AX=CB00h,AX=CB05h,AX=CBFFh
--------V-10CBFF-----------------------------
INT 10 - UNCHAIN - INSTALLATION CHECK
AX = CBFFh
Return: AX = CCBBh if installed
Program: UNCHAIN is a TSR by Colin Buckley which permits use of Borland
development tools with Mode X video in the absence of a second
monitor
SeeAlso: AX=CB00h,AX=CB01h,AX=CB06h
--------V-10CC00-----------------------------
INT 10 - VIDEO - UltraVision - GET STATUS (INSTALLATION CHECK)
AX = CC00h
SI = magic value 0000h (if checking version)
Return: CX = product signature
ABCDh UltraVision
5546h ('UF') UltraFont
AL = Ultravision extensions
00h enabled
FFh disabled
AH = card designator
BX:00F0h -> palette values (for compatibility with NEWFONT)
DX = support for high resolution modes
00h not active
01h active
SI = UltraVision version number (v1.2+), high byte=major,low byte=minor
unchanged for versions <1.2
Note: UltraFont is a simplified version of UltraVision for Toshiba;
only the signature in CX and the status in AL will be returned
SeeAlso: AX=CC01h,AX=CC02h
--------V-10CC01-----------------------------
INT 10 - VIDEO - UltraVision - DISABLE EXTENSIONS
AX = CC01h
Return: nothing
Notes: subsequent BIOS calls will be passed through to previous handler
should be followed immediately by mode set to restore normal EGA/VGA
state
SeeAlso: AX=CC02h
--------V-10CC02-----------------------------
INT 10 - VIDEO - UltraVision - ENABLE EXTENSIONS
AX = CC02h
Return: nothing
Note: should be followed immediately by mode set to restore previous
UltraVision state
SeeAlso: AX=CC01h
--------U-10CCAB-----------------------------
INT 10 - HiFont - INSTALLATION CHECK
AX = CCABh
Return: AX = ABCCh
Program: HiFont is a 8x19 font driver for standard VGA by Solar Designer
--------V-10CD00-----------------------------
INT 10 - VIDEO - UltraVision - LOAD ULTRAVISION PALETTE (color EGA,VGA)
AX = CD00h
CL = palette table number (01h-07h for v1.x, 01h-0Fh for v2+)
DS:DX -> 16-byte palette register list (colors for registers 00h-0Fh)
Return: nothing
Notes: if palette locking is in effect for the current mode, the new colors
will be displayed immediately; otherwise, the system reverts to the
default palette
palette table 0 is reserved for the default palette and cannot be set
UltraVision always sets the border color to black
SeeAlso: AX=CD01h,AX=CD02h
--------V-10CD01-----------------------------
INT 10 - VIDEO - UltraVision - SET PALETTE LOCKING STATUS (color EGA,VGA)
AX = CD01h
CL = palette locking value
00h none
01h text modes only (02h,03h)
FFh all modes (all standard color text and graphics modes)
Return: nothing
Notes: intended for video modes with 16 or fewer colors
SeeAlso: AX=1000h,AX=1002h,AX=CD00h,AX=CD03h
--------V-10CD02-----------------------------
INT 10 - VIDEO - UltraVision - GET ULTRAVISION PALETTE (EGA,VGA)
AX = CD02h
Return: CL = palette table number
DS:DX -> 17-byte palette register list (see #0149)
DS:SI -> current font names table (see #0150,#0151)
Note: only the font names are valid on monochrome EGA systems
SeeAlso: AX=1009h,AX=CD00h
Format of UltraVision palette register list:
Offset Size Description (Table 0149)
00h 16 BYTEs colors for palette registers 00h through 0Fh
10h BYTE border color
Format of UltraVision v2+ current font names table:
Offset Size standard EGA HiRes EGA VGA (Table 0150)
00h 8 BYTEs N/A F19 font F20 font
08h 8 BYTEs F14 font F14 font F14 font
10h 8 BYTEs N/A F11 font F10 font
18h 8 BYTEs F8 font F8 font F8 font
Format of UltraVision v1.x current font names table:
Offset Size HiRes EGA (Table 0151)
00h 8 BYTEs F19/F14 font
08h 8 BYTEs F11/F8 font
--------V-10CD03-----------------------------
INT 10 - VIDEO - UltraVision - GET PALETTE LOCKING STATUS (color EGA,VGA)
AX = CD03h
Return: CL = palette locking value
00h none
01h text modes only
FFh all modes
SeeAlso: AX=CD01h
--------V-10CD04-----------------------------
INT 10 - VIDEO - UltraVision - GET UltraVision TEXT MODE (EGA,VGA)
AX = CD04h
Return: AL = mode number (see #0152)
SeeAlso: AH=0Fh,AX=CC00h,AH=CDh
(Table 0152)
Values for UltraVision video mode number:
11h 80x25
12h 80x43, 80x50
13h 80x34, 80x36
14h 80x60, 80x63
19h 94x25
1Ah 94x43, 94x50
1Bh 94x36
1Ch 94x63
21h 108x25
22h 108x43, 108x50
23h 107x34, 108x36
24h 108x60, 108x63
31h 120x25
32h 120x43, 120x50
33h 132x25
34h 132x44, 132x50
39h 120x36
3Ah 120x63
3Bh 132x36
3Ch 132x60
Index: video modes;UltraVision
--------V-10CD05-----------------------------
INT 10 - VIDEO - UltraVision - SET CURSOR TYPE (EGA,VGA)
AX = CD05h
CL = type
00h line cursor
FFh box cursor
Return: nothing
Note: sets default cursor type for text-based programs
SeeAlso: AH=01h,AX=CD06h
--------V-10CD06-----------------------------
INT 10 - VIDEO - UltraVision - GET CURSOR TYPE (EGA,VGA)
AX = CD06h
Return: CL = type
00h line cursor
FFh box cursor
SeeAlso: AH=03h,AX=CD05h
--------V-10CD07-----------------------------
INT 10 - VIDEO - UltraVision v1.2+ - SET UNDERLINE STATUS (EGA,VGA)
AX = CD07h
CL = hardware underline status (see #0153)
BL = foreground color for normal text (FFh = current)
BH = foreground color for bright text (FFh = current)
Return: CL = hardware underline status
BL = current foreground color for normal text
BH = current foreground color for bright text
Notes: when underline or strikeout is enabled in color text modes, the
specified colors will be assigned temporarily to colors 01h and 09h,
allowing affected text to match non-underlined text. The color
remapping uses values from the current onscreen palette regardless
of the palette locking status (see AX=CD01h)
specify the standard colors (BL=01h,BH=09h) to enable underline or
strikeout without color remapping
SeeAlso: AX=CD08h
(Table 0153)
Values for hardware underline status:
00h off (color systems only)
01h underline below characters
02h strike through characters
--------V-10CD08-----------------------------
INT 10 - VIDEO - UltraVision v1.2+ - GET UNDERLINE STATUS (EGA,VGA)
AX = CD08h
Return: CL = hardware underline status (see #0153)
BL = foreground color for normal text
BH = foreground color for bright text
Note: only CL is valid on monochrome EGA systems
SeeAlso: AX=CD07h
--------V-10CD10-----------------------------
INT 10 - VIDEO - UltraVision - LOAD USER FONT (EGA,VGA)
AX = CD10h
BH = bytes per character (08h,0Ah,0Bh,0Eh,13h,14h)
CX = ABCDh load 9xN alternate font (v2+)
else number of characters to load
DX = character offset into font table
DS:SI -> 8-byte ASCII font name
ES:BP -> font definitions
Return: AX = FFFFh if invalid font parameters
Notes: loads the designated characters into UltraVision's resident font area
should be followed by a video mode set to reload character generator
SeeAlso: AX=1100h,AX=1103h
--------V-10CD-------------------------------
INT 10 - VIDEO - UltraVision - SET ULTRAVISION TEXT MODE (EGA,VGA)
AH = CDh
AL = text mode number (see #0152)
Return: AX = CDCDh if invalid mode
SeeAlso: AX=CD04h
--------A-10D0-------------------------------
INT 10 - CU Writer v1.4 - LOAD PICTURE
AH = D0h
???
Return: ???
SeeAlso: AH=B0h"CU Writer",AH=C4h
--------V-10D0-------------------------------
INT 10 U - VIDEO - HP 100LX/200LX - SET ZOOM MODE
AH = D0h
AL = zoom mode
02h 80x25 mono
03h 80x25 color
80h 64x18 mono
81h 64x18 color
82h 40x25 mono
83h 40x25 color
84h 40x16 mono
85h 40x16 color
Return: nothing
Note: zoom mode can only be changed within zoom modes of the same color
scheme; if needed, set to mono/color with AH=00h,AL=02h/03h; with
mono video modes AL=07h or AL=21h only 80x25 and 40x16 will work
the current zoom mode is stored in the BIOS data area at 0040h:009Fh
SeeAlso: AH=D1h,AH=D4h
--------V-10D000-----------------------------
INT 10 - S3VBE/Core2.0 v3.00+ - INSTALLATION CHECK
AX = D000h
Return: AX = FFFFh if installed
BX = resident code segment
DX = version (binary, DH = major, DL = minor)
Program: S3VBE/Core2.0 is a freeware TSR by Dietmar Meschede to provide
VESA 2.0 services on S3-based video cards with VESA 1.2 BIOS
SeeAlso: AX=D001h"S3VBE",AX=D002h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE"
--------V-10D001-----------------------------
INT 10 - S3VBE/Core2.0 v3.00+ - GET ACTIVE OPTIONS
AX = D001h
Return: AX = FFFFh if supported
BX = currently active options (see #0154)
SeeAlso: AX=D000h"S3VBE",AX=D002h"S3VBE"
Bitfields for S3VBE options:
Bit(s) Description (Table 0154)
0 VESA VBE v2.0 extensions enabled
1 linear frame buffer enabled
2 low-resolution video mode support enabled
8 never clear video memory during VBE mode set (v3.10+)
---debug options---
12 report VBE version 1.2 (v3.10+)
13 always fail AX=4F0Ah (v3.10+)
14 don't copy video mode list (v3.12+)
SeeAlso: #0148
--------V-10D002-----------------------------
INT 10 - S3VBE/Core2.0 v3.00+ - SET ACTIVE OPTIONS
AX = D002h
BX = new active options (see #0154)
Return: AX = FFFFh if supported
SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE"
--------V-10D003-----------------------------
INT 10 U - S3VBE/Core2.0 v3.10+ - GET VBE/Core CAPABILITIES
AX = D003h
Return: AX = FFFFh if supported
BX = capabilities
bit 0: SpeedUp = activate/deactivate linear addressing at
A0000h for VBE functions 04h/05h
SeeAlso: AX=D000h"S3VBE",AX=D001h"S3VBE",AX=D004h"S3VBE",AX=D005h"S3VBE"
--------V-10D004-----------------------------
INT 10 U - S3VBE/Core2.0 v3.10+ - ACTIVATE SPEED-UP
AX = D004h
Return: AX = FFFFh if supported
BX = status
0000h SpeedUp activated
0001h SpeedUp not possible (wrong memory organization for mode)
0002h SpeedUp not possible (linear frame buffer active)
Note: called by S3 SpeedUp (see AX=C000h)
SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D005h"S3VBE"
--------V-10D005-----------------------------
INT 10 U - S3VBE/Core2.0 v3.10+ - DEACTIVATE SPEED-UP
AX = D005h
Return: AX = FFFFh if supported
BX = status
0000h SpeedUp deactivated
0001h SpeedUp not possible (wrong memory organization for mode)
0002h SpeedUp not possible (linear frame buffer active)
Notes: called by S3 SpeedUp (see AX=C000h)
functions 06h-FFh (e.g. AX=D006h-D0FFh) are considered reserved by
v3.10+ and return AX=5555h
SeeAlso: AX=C000h"SpeedUp",AX=D000h"S3VBE",AX=D003h"S3VBE",AX=D004h"S3VBE"
--------V-10D1-------------------------------
INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ???
AH = D1h
AL = 01h
Return: ???
Note: called by AH=D0h
SeeAlso: AH=D0h,AH=D4h
--------V-10D4-------------------------------
INT 10 U - VIDEO - HP 100LX/200LX - INTERNAL - ???
AH = D4h
AL = 29h
Return: ???
Note: called by AH=D0h
SeeAlso: AH=D0h,AH=D1h
--------V-10D5-------------------------------
INT 10 - Netroom SCRNCLK - ???
AH = D5h
???
Return: ???
Program: SCRNCLK is a "cloaked" screen accelerator included with Netroom
--------t-10DAAD-----------------------------
INT 10 - TSRUNIT v1.10 - INSTALLATION CHECK
AX = DAADh
BX = check signature (different for each TSR)
CX = 0000h
Return: CX = return signature (nonzero) if installed
ES = program segment prefix
Program: TSRUNIT is a Turbo Pascal unit for creating TSRs by Nir Sofer
--------V-10DFA5-----------------------------
INT 10 U - VIDEO - Compaq ADAPT.COM - GET ??? DATA AREA
AX = DFA5h
Return: AX = BDBFh if supported
ES:DI -> ??? data area
BX = ES
SeeAlso: AX=BFA0h
--------V-10EE-------------------------------
INT 10 - VIDEO - IBM "Private" Function
AH = EEh
SeeAlso: INT 13/AH=FFh"IBM"
--------V-10EF-------------------------------
INT 10 - VIDEO - MSHERC.COM - GET VIDEO ADAPTER TYPE AND MODE
AH = EFh
Return: DL = video adapter type
00h original Hercules
01h Hercules Plus (port 03BAh reads x001xxxxx)
02h Hercules InColor (port 03BAh reads x101xxxxx)
FFh not a Hercules-compatible card (port 03BAh bit 7 not pulsing)
DH = memory mode byte
00h "half" mode
01h "full" mode
FFh not a Hercules-compatible card
Program: MSHERC.COM/QBHERC.COM is a support program for the Microsoft Quick
languages which makes their graphics libraries compatible with a
Hercules card by adding video modes 08h and 88h, and supporting
text in the new graphics modes.
Notes: while in mode 08h or 88h, INT 10 supports the Hercules card much like
a CGA.
MSHERC performs an installation check by setting DL=FFh and testing
whether it has been changed on return, which causes it to reinstall
itself when no HGC is present (or HGC emulation has temporarily been
disabled); a better installation check would be to use DX=80FFh and
check whether DX has been changed
reportedly returns DH=00h on some not-entirely-Hercules-compatible
cards
Index: installation check;MSHERC
--------V-10F0-------------------------------
INT 10 - EGA Register Interface Library - READ ONE REGISTER
AH = F0h
BL = register number
BH = 00h
DX = group index (see #0155)
Return: BL = data
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F1h,AH=F2h,INT 2F/AX=BC00h
(Table 0155)
Values for group index:
Pointer/data chips
00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes
08h Sequencer (5 registers) 3C4h
10h Graphics Controller (9 registers) 3CEh
18h Attribute Controller (20 registers) 3C0h
Single registers
20h Miscellaneous Output register 3C2h
28h Feature Control register (3BAh mono modes, 3DAh color modes)
30h Graphics 1 Position register 3CCh
38h Graphics 2 Position register 3CAh
--------V-10F1-------------------------------
INT 10 - EGA Register Interface Library - WRITE ONE REGISTER
AH = F1h
DX = group index (see #0155)
if single register:
BL = value to write
otherwise
BL = register number
BH = value to write
Return: BL = data
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AX=7F05h,AH=F0h,AH=F3h
--------V-10F2-------------------------------
INT 10 - EGA Register Interface Library - READ REGISTER RANGE
AH = F2h
CH = starting register number
CL = number of registers (>1)
DX = group index (00h,08h,10h,18h) (see #0155)
ES:BX -> buffer, CL bytes
Return: nothing
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F0h,AH=F3h
--------V-10F3-------------------------------
INT 10 - EGA Register Interface Library - WRITE REGISTER RANGE
AH = F3h
CH = starting register
CL = number of registers (>1)
DX = group index (00h,08h,10h,18h) (see #0155)
ES:BX -> buffer, CL bytes
Return: nothing
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AX=7F05h,AH=F1h,AH=F2h
--------V-10F4-------------------------------
INT 10 - EGA Register Interface Library - READ REGISTER SET
AH = F4h
CX = number of registers to read (>1)
ES:BX -> table of register records (see #0156)
Return: register values in table filled in
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F0h,AH=F2h,AH=F5h
Format of EGA RIL entries in table of register records:
Offset Size Description (Table 0156)
00h WORD group index
Pointer/data chips
00h CRTC (3B4h mono modes, 3D4h color modes)
08h Sequencer 3C4h
10h Graphics Controller 3CEh
18h Attribute Controller 3C0h
Single registers
20h Miscellaneous Output register 3C2h
28h Feature Control register (3BAh mono modes, 3DAh color)
30h Graphics 1 Position register 3CCh
38h Graphics 2 Position register 3CAh
02h BYTE register number (0 for single registers)
03h BYTE register value
--------V-10F5-------------------------------
INT 10 - EGA Register Interface Library - WRITE REGISTER SET
AH = F5h
CX = number of registers to write (>1)
ES:BX -> table of records (see #0156)
Return: nothing
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AX=7F05h,AH=F1h,AH=F3h,AH=F4h
--------V-10F6-------------------------------
INT 10 - EGA Register Interface Library - REVERT TO DEFAULT REGISTERS
AH = F6h
Return: nothing
Note: provided by the Microsoft Mouse driver, OS/2 compatibility box, and
others
SeeAlso: AH=F7h
--------V-10F7-------------------------------
INT 10 - EGA Register Interface Library - DEFINE DEFAULT REGISTER TABLE
AH = F7h
DX = port number
Pointer/data chips
00h CRTC (3B4h mono modes, 3D4h color modes)
08h Sequencer 3C4h
10h Graphics Controller 3CEh
18h Attribute Controller 3C0h
Single registers
20h Miscellaneous Output register 3C2h
28h Feature Control register (3BAh mono modes, 3DAh color modes)
30h Graphics 1 Position register 3CCh
38h Graphics 2 Position register 3CAh
ES:BX -> table of one-byte entries, one byte to be written to each
register
Return: nothing
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F6h
--------V-10FA--BX0000-----------------------
INT 10 - EGA Register Interface Library - INTERROGATE DRIVER
AH = FAh
BX = 0000h
Return: BX = 0000h if RIL driver not present
ES:BX -> EGA Register Interface version number, if present:
byte 0 = major release number
byte 1 = minor release number
Note: the RIL is provided by EGA.SYS, the Microsoft Mouse driver, the OS/2
compatibility box, and others
SeeAlso: AH=F6h,INT 2F/AX=BC00h
--------K-10FA-------------------------------
INT 10 - FASTBUFF.COM - INSTALLATION CHECK
AH = FAh
Return: AX = 00FAh if installed
ES = segment of resident code
Program: FASTBUFF.COM is a keyboard speedup/screen blanking utility by David
Steiner
Index: screen saver;FASTBUFF
--------V-10FE-------------------------------
INT 10 - TopView - GET SHADOW BUFFER
AH = FEh
ES:DI -> assumed video buffer
B800h:0000h color text/CGA graphics, B000h:0000h mono text,
or A000h:0000h EGA/VGA graphics (RSIS environments only)
Return: ES:DI -> actual video buffer for calling process
Desc: Determine the address of the virtual screen to which the program
should write instead of the actual video memory; this permits
programs to be multitasked without interfering with each other's
output, and allows memory managers to move the video memory to
permit larger programs to be loaded.
Notes: if no multitasker or RSIS-compliant environment is installed, ES:DI is
returned unchanged; RSIS is the Relocated Screen Interface
Specification
for display pages other than 0, use AH=05h and AH=0Fh to determine
whether a particular page exists
TopView requires a call to AH=FFh to notify it that the screen has
changed; DESQview will check for changes itself until the first call
to AH=FFh
SeeAlso: AH=05h,AX=5201h,AH=FFh,INT 15/AX=1024h,INT 21/AH=2Bh"DESQview"
SeeAlso: INT 21/AH=ECh"DoubleDOS"
--------V-10FF-------------------------------
INT 10 - TopView - UPDATE SCREEN FROM SHADOW BUFFER
AH = FFh
CX = number of consecutive changed characters
ES:DI -> first changed character in shadow buffer
Return: nothing
Notes: avoid CX=0000h
DESQview will discontinue the automatic screen updating initiated by
AH=FEh after this call
not supported (ignored) by DESQview/X 1.0x
SeeAlso: AH=93h,AH=FEh
--------E-10FF-------------------------------
INT 10 - DJ GO32.EXE 80386+ DOS extender - VIDEO EXTENSIONS
AH = FFh
AL = video mode (see #0157)
Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
SeeAlso: AH=00h,INT 21/AH=FFh"GO32"
(Table 0157)
Values for GO32 video mode number:
00h 80x25 text
01h default text
02h CXxDX text
03h biggest text
04h 320x200 graphics
05h default graphics
06h CXxDX graphics
07h biggest non-interlaced graphics
08h biggest graphics
Index: video modes;GO32
--------V-10FF-------------------------------
INT 10 - VIDEO - Oak VGA BIOS v1.02+ - SET EMULATION
AH = FFh
AL = emulation
43h ('C') CGA emulation
45h ('E') EGA emulation
4Dh ('M') Hercules emulation
56h ('V') VGA emulation
ES:DI -> signature string "Calamity"
Return: VGA switched to suggested mode
SeeAlso: AH=00h,AX=007Fh/BH=00h,AX=007Fh/BH=02h,AX=5F01h
--------R-10FF00-----------------------------
INT 10 - CARBON COPY PLUS v5.0 - CHECK IF CC CONNECTED TO CCHELP
AX = FF00h
Return: BL = state
00h not connected
01h connected
SeeAlso: AX=FF01h,AX=FF02h
--------R-10FF01-----------------------------
INT 10 - CARBON COPY PLUS v5.0 - DISCONNECT AND RESET LINE
AX = FF01h
Return: nothing
SeeAlso: AX=FF00h,AX=FF02h
--------R-10FF02-----------------------------
INT 10 - CARBON COPY PLUS v5.0 - GET LAST PHONE NUMBER DIALED
AX = FF02h
Return: ES:DI -> ASCIZ phone number
SeeAlso: AX=FF00h,AX=FF01h
--------C-11---------------------------------
INT 11 - CPU-generated (80486+) - ALIGNMENT CHECK
Desc: automatically generated by the CPU when the AC flag is set, the current
privilege level is 3, and a misaligned memory access (WORD not on an
even address or DWORD not on a multiple of 4) is made
Note: not all V86 monitors allow the AC flag to be set, such as Turbo
Debugger 386
SeeAlso: INT 12"CPU"
--------B-11---------------------------------
INT 11 - BIOS - GET EQUIPMENT LIST
Return: (E)AX = BIOS equipment list word (see #0158,#2886 at INT 4B"Tandy")
Note: since older BIOSes do not know of the existence of EAX, the high word
of EAX should be cleared before this call if any of the high bits
will be tested
SeeAlso: INT 4B"Tandy 2000",MEM 0040h:0010h
Bitfields for BIOS equipment list:
Bit(s) Description (Table 0158)
0 floppy disk(s) installed (number specified by bits 7-6)
1 80x87 coprocessor installed
3-2 number of 16K banks of RAM on motherboard (PC only)
number of 64K banks of RAM on motherboard (XT only)
2 pointing device installed (PS)
3 unused (PS)
5-4 initial video mode
00 EGA, VGA, or PGA
01 40x25 color
10 80x25 color
11 80x25 monochrome
7-6 number of floppies installed less 1 (if bit 0 set)
8 DMA support installed (PCjr, Tandy 1400LT)
DMA support *not* installed (Tandy 1000's)
11-9 number of serial ports installed
12 game port installed
13 serial printer attached (PCjr)
internal modem installed (PC/Convertible)
15-14 number of parallel ports installed
---Compaq, Dell, and many other 386/486 machines--
23 page tables set so that Weitek coprocessor addressable in real mode
24 Weitek math coprocessor present
---Compaq Systempro---
25 internal DMA parallel port available
26 IRQ for internal DMA parallel port (if bit 25 set)
0 = IRQ5
1 = IRQ7
28-27 parallel port DMA channel
00 DMA channel 0
01 DMA channel 0 ???
10 reserved
11 DMA channel 3
SeeAlso: INT 12"BIOS",#2886 at INT 4B"Tandy 2000"
--------d-11----SI6A6A-----------------------
INT 11 - Columbia Data Products Standard Device Level Protocol (SDLP) 1.6
SI = 6A6Ah
AH = command (see #0159)
AL = SCSI Addressing (see #0160)
Return: CF clear if successful
DI = 6A6Ah if AH=01h on entry (maybe for all functions???)
AH = ??? for command 01h
CF set on error
AL = error code
SeeAlso: INT 21/AX=4402h"ASPI"
(Table 0159)
Values for SDLP command:
00h SDLP initialization
01h SDLP System Identify
02h simple read sectors
03h simple write sectors
04h simple verify sectors/seek to sector
05h get device size/type
06h ready unit
07h format unit
08h diagnostics
09h rewind
0Ah erase
0Bh write filemarks
0Ch space
0Dh prevent/allow media removal
0Eh load/unload media
0Fh reserved - returns good status
10h set block size
11h write setmark
12h set error level
13h get address of Request Sense Buffer
14h get SDLP error via Request Sense
F0h Vendor Unique Function (WD7000-FASST2 only)
FDh reset current SCSI HAC
FEh get/set current SCSI HAC
FFh execute SCSI command
Bitfields for SDLP SCSI addressing:
Bit(s) Description (Table 0160)
7-6 Host Adapter
5-3 SCSI Target ID
2-0 SCSI Target LUN (logical unit number)
--------V-110225BX6900-----------------------
INT 11 - Blank-It Screen Blanker - INSTALLATION CHECK
AX = 0225h
BX = 6900h
Return: BL = 23h
ES:DI -> ASCIZ "BLNKIT"
Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
Inc.
SeeAlso: AX=0225h/BX=6902h,AX=0225h/BX=6908h,AX=0225h/BX=6909h,INT 14/AX=AA01h
Index: screen saver;Blank-It
--------V-110225BX6901-----------------------
INT 11 - Blank-It Screen Blanker - SET TIMEOUT FOR SCREEN BLANKING
AX = 0225h
BX = 6901h
CX = timeout in timer ticks (18.2/second) or 0000h to disable timeout
largest value is 59 minutes (FBACh or 64428)
Return: CF clear if successful
DI = 6A6Ah (possibly also 6A6Ah for all following functions)
AH = ???
CF set on error
AL = error code
SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6904h
Index: screen saver;Blank-It
--------V-110225BX6902-----------------------
INT 11 - Blank-It Screen Blanker - ENABLE THE SOFTWARE
AX = 0225h
BX = 6902h
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6903h
Index: screen saver;Blank-It
--------V-110225BX6903-----------------------
INT 11 - Blank-It Screen Blanker - DISABLE THE SOFTWARE
AX = 0225h
BX = 6903h
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6902h
Index: screen saver;Blank-It
--------V-110225BX6904-----------------------
INT 11 - Blank-It Screen Blanker - GET BLANKING TIMEOUT
AX = 0225h
BX = 6904h
Return: CF clear if successful
BX = timeout (see AX=0225h/BX=6901h)
CF set on error
AL = error code
SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6901h
Index: screen saver;Blank-It
--------V-110225BX6905-----------------------
INT 11 - Blank-It Screen Blanker - ENABLE WINDOWS COMPATIBILITY MODE
AX = 0225h
BX = 6905h
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6906h
Index: screen saver;Blank-It
--------V-110225BX6906-----------------------
INT 11 - Blank-It Screen Blanker - DISABLE WINDOWS COMPATIBILITY MODE
AX = 0225h
BX = 6906h
Return: CF clear if successful
CF set on error
AL = error code
Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
Inc.
SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6905h
Index: screen saver;Blank-It
--------V-110225BX6907-----------------------
INT 11 - Blank-It Screen Blanker - UNBLANK THE SCREEN
AX = 0225h
BX = 6907h
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6908h
Index: screen saver;Blank-It
--------V-110225BX6908-----------------------
INT 11 - Blank-It Screen Blanker - BLANK THE SCREEN
AX = 0225h
BX = 6908h
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AX=0225h/BX=6900h,AX=0225h/BX=6907h
Index: screen saver;Blank-It
--------V-110225BX6909-----------------------
INT 11 - Blank-It Screen Blanker - SET HOTKEY FOR MANUAL BLANKING
AX = 0225h
BX = 6909h
CL = key scan code (see #0161)
Return: CF clear if successful
CF set on error
AL = error code
Program: Blank-It is a resident screen blanker by Rhode Island Soft Systems,
Inc.
SeeAlso: AX=0225h/BX=6900h
Index: screen saver;Blank-It|hotkeys;Blank-It
(Table 0161)
Values for Blank-It hotkey scan code:
00h No hot key
1Dh Left CTRL
2Ah Left Shift
36h Right Shift
57h F11
58h F12
SeeAlso: #0005
--------G-1105D7-----------------------------
INT 11 CU - Borland C++ IDE - INSTALLED CALLOUT
AX = 05D7h
BX = product ID (0088h)
Note: called by the BC++ IDE when an application calls
INT 12/AX=05D7h/BX=05D7h
SeeAlso: INT 12/AX=05D7h/BX=05D7h
Index: installation check;Borland C++ IDE
--------F-1177-------------------------------
INT 11 - RainbowFAX v1.3 - SFENGINE API - OPERATIONAL CONTROL
AH = 77h
AL = subfunction
01h request SFENGINE start
Return: AX = 0001h
02h check if SFENGINE started
Return: AX = 0000h or 0001h
03h request SFENGINE stop
Return: AX = 0001h
04h check if SFENGINE stopped
Return: AX = 0000h or 0001h
05h installation check
Return: AX = 0001h
06h uninstall???
BX:DX -> return address for successful uninstall???
Return: (at caller's address)
AX = 0000h
else
Return: AX = FFFFh (invalid subfunction)
Return: ES:DX -> ASCIZ signature string "SFAX ENGINE V1.0"
followed by internal data area???
SeeAlso: AH=78h,AH=79h,AH=7Ah,AH=7Ch
Index: installation check;RainbowFAX|installation check;SFENGINE
Index: uninstall;RainbowFAX|uninstall;SFENGINE
--------F-1178-------------------------------
INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
AH = 78h
AL = subfunction
01h set ???
BX = new state for ???
0000h ???
else ???
Return: AX = 0001h
02h set ???
BX = ???
CX = ???
Return: AX = 0001h
03h set ???
BX = new state for ???
0000h ???
else ???
Return: AX = 0001h
else
Return: AX = FFFFh (invalid subfunction)
SeeAlso: AH=77h,AH=79h,AH=7Ah,AH=7Ch
--------F-1179-------------------------------
INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
AH = 79h
AL = subfunction
01h set ??? flag
Return: AX = previous state (0000h already set, 0001h clear)
02h clear ??? flag (refer to subfunc 01h)
Return: AX = 0001h
03h set ??? flag (different from subfn 02h or 04h)
Return: AX = 0001h
04h clear ??? flag (different from subfn 02h or 03h)
Return: AX = 0001h
else
Return: AX = FFFFh (invalid subfunction)
SeeAlso: AH=77h,AH=78h,AH=7Ah,AH=7Ch
--------F-117A-------------------------------
INT 11 - RainbowFAX v1.3 - SFENGINE API - ???
AH = 7Ah
AL = subfunction
01h set ??? flag
Return: AX = previous state (0000h already set, 0001h clear)
02h clear ??? flag
Return: AX = 0001h
03h set ??? flag (different from subfn 02h)
Return: AX = 0001h
else
Return: AX = FFFFh (invalid subfunction)
SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ch
--------F-117C01-----------------------------
INT 11 - RainbowFAX v1.3 - SFENGINE API - SET ??? FLAG
AX = 7C01h
Return: AX = 0001h
SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C02h,AX=7C03h
--------F-117C02-----------------------------
INT 11 - RainbowFAX v1.3 - SFENGINE API - CLEAR ??? FLAG
AX = 7C02h
Return: AX = 0001h
SeeAlso: AH=77h,AH=78h,AH=79h,AH=7Ah,AX=7C01h,AX=7C03h
--------F-117C03-----------------------------
INT 11 - RainbowFAX v1.3 - SFENGINE API - UNSUPPORTED FUNCTIONS
AX = 7C03h-7CFFh
Return: AX = FFFFh
SeeAlso: AH=77h,AX=7C01h,AX=7C02h
--------S-11BC--DX1954-----------------------
INT 11 - BNU FOSSIL - INSTALLATION CHECK
AH = BCh
DX = 1954h
Return: AX = 1954h
ES:DX -> entry point of driver (instead of INT 14)
SeeAlso: INT 14/AH=04h"FOSSIL"
--------d-11FF--SI6A6A-----------------------
INT 11 - WD7000 SDLP interface - EXECUTE GENERIC SCSI COMMAND
AH = FFh
SI = 6A6Ah
AL = SCSI Addressing (see #0162)
CX = bytes of data to be transmitted (max FFF0h)
DH = 00h
DL = length of SCSI Command Descriptor Block
DS:DI -> SCSI Command Descriptor Block
ES:BX -> data buffer
Return: CF set on error
AL = error code
CF clear if successful
Note: because of busmaster operations with WD7000FASST avoid accessing
video memory directly; check 386 memory manager for VDS support.
The WD7000XTAT works with programmed IO and does not have this
limitation.
SeeAlso: INT 21/AX=4402h"ASPI",INT 2F/AX=7F01h
Bitfields for SDLP SCSI addressing:
Bit(s) Description (Table 0162)
2-0 SCSI Target LUN (logical unit number)
5-3 SCSI Target ID
7 write flag, set for write operations, clear otherwise
--------T-11FFFECXFFFE-----------------------
INT 11 - BACK&FORTH (before v1.62) API
AX = FFFEh
CX = FFFEh
BX = function
00h installation check
Return: AX = installation state
0001h BNFHIGH and BNFLOW both loaded
0003h only BNFHIGH loaded
else neither loaded
01h ???
Return: DX:AX -> ???
02h ???
03h ???
04h ???
05h ??? switches current PSP segment and stack if BNFLOW has not
yet announced itself installed
06h ???
Return: AX = ???
SeeAlso: INT 12/AX=FFFEh
Index: installation check;BACK&FORTH
--------B-12---------------------------------
INT 12 - BIOS - GET MEMORY SIZE
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
Note: this call returns the contents of the word at 0040h:0013h; in PC and
XT, this value is set from the switches on the motherboard
SeeAlso: INT 11"BIOS",INT 2F/AX=4A06h,INT 4C"Tandy 2000",MEM 0040h:0013h
--------C-12---------------------------------
INT 12 - CPU-generated (Pentium) - MACHINE CHECK EXCEPTION
Notes: Intel documents this interrupt as CPU model-dependent; for current
Pentium processors, the reason for the machine check exception may
be read from model-specific registers 00h and 01h (described, for
example, in Christian Ludloff's 4P package)
this exception is enabled by bit 6 of CR4
SeeAlso: INT 11"CPU",MSR 00000000h,MSR 00000001h
--------K-12----CX1806-----------------------
INT 12 - KEYBUI v2.0+ - INSTALLATION CHECK
CX = 1806h
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
CX = 1960h if installed
Program: KEYBUI is a resident keyboard driver by Johan Zwiekhorst which allows
accented characters and box drawing on standard QWERTY keyboards; it
also provides break-to-DOS and screen blanking capabilities
SeeAlso: INT 14/AX=AA01h
Index: screen saver;KEYBUI
--------d-12----CX1807-----------------------
INT 12 - PARKER v2.0+ - INSTALLATION CHECK
CX = 1807h
Return: AX = kilobytes of contiguous memory starting at absolute address 00000h
CX = 1961h if installed
Program: PARKER is an optionally-resident hard disk parking program by Johan
Zwiekhorst
--------G-1205D7BX05D7-----------------------
INT 12 U - Borland C++ IDE - INSTALLATION CHECK
AX = 05D7h (1495d)
BX = 05D7h
Note: the BC++ IDE will call INT 11/AX=05D7h/BX=0088h if it is loaded
SeeAlso: INT 11/AX=05D7h
--------v-124350BX4920-----------------------
INT 12 C - CPI-standard virus - "FRIEND" CHECK
AX = 4350h
BX = 4920h
CX = AB46h
DX = 554Eh
Return: if friendly (not to be infected)
CX:DX -> ASCIZ identity code (changes yearly)
SeeAlso: INT 13/AX=EC00h"VIRUS",INT 13/AX=5001h,INT 21/AX=0B56h
--------T-12FFFECXFFFE-----------------------
INT 12 - Back&Forth v1.62+ - API
AX = FFFEh
CX = FFFEh
BX = function
00h installation check
Return: AX = 0001h installed
else not loaded
01h (reserved)
02h build program ID list (shareware Back&Forth)
ES:DI -> buffer of at least 100 bytes, to be filled with words
Return: AX = number of programs defined
ES:DI buffer filled with AX words
02h get memory statistics (Back&Forth Professional)
Return: AX = available swap memory, KBytes
BX = maximum task size, KBytes
DX = fixed overhead per task, excluding video/macro
storage
03h switch to specified task (task need not be open yet)
DX = two-letter program ID
Return: AX = status
0000h if task undefined
0001h task switch will occur when safe
04h (reserved)
05h (reserved)
06h get version (documented only for Back&Forth Professional)
Return: AX = version * 100 (v1.71 = 00ABh)
07h spawn program (Back&Forth Professional only???)
ES:DI -> BF_SPAWN record (see #0164)
Return: AX = status
0000h if no task handles free
0001h spawn will occur when safe
08h get open tasks (documented only for Back&Forth Professional)
ES:DI -> task info buffer (see #0163,#0165)
Return: AX = number of open tasks (max 20)
Note: the supplied buffer must be large enough to hold 21
task entries
09h (reserved)
---Back&Forth Professional---
0Ah get active clipboard filename
Return: DX:AX -> ASCIZ clipboard filename
0Bh get active task number
AX = active task number (00h-13h)
BX = number of tasks allocated
DX = maximum number of tasks
0Ch (reserved)
0Dh (reserved)
0Eh (reserved)
0Fh stuff string into keyboard buffer
ES:DI -> ASCIZ string to be stuffed
Return: nothing
10h check if in graphics mode
Return: AX = state
0000h color text mode
0004h mono text mode
FFFFh graphics mode
11h get Back&Forth Professional user number
Return: AX = user number (0000h-00FFh)
12h switch task by task number
DX = task number
Return: AX = status
0000h attempted to switch to active task
0001h task switch will occur when safe
FFFFh invalid task number
13h delete (kill) task
DX = task number
Return: AX = status
0000h attempted to delete the active task
0001h successfully deleted
FFFFh invalid task number
Note: the active task number will change if the deleted task
was lower in the task list than the active task
14h get next available task handle
Return: AX = next available task handle
FFFFh if task table is full
Program: Back & Forth is a task switcher by Progressive Solutions, Inc.
SeeAlso: INT 11/AX=FFFEh
Index: installation check;BACK&FORTH
Format of Back&Forth task info buffer:
Offset Size Description (Table 0163)
00h 21 BYTEs ASCIZ task name
15h BYTE hotkey shift state (as for INT 16/AH=02h)
16h WORD hotkey scan code (see also #0005)
18h WORD program ID
Index: hotkeys;Back&Forth
SeeAlso: #0164,#0165
Format of Back&Forth Professional BF_SPAWN record:
Offset Size Description (Table 0164)
00h 21 BYTEs task description
15h BYTE flag: disable hotkeys
16h WORD environment size in bytes
18h BYTE hotkey shift flags
19h WORD hotkey scancode
1Bh WORD maximum number of EMS pages
1Dh WORD required memory in KBytes
1Fh 3 BYTEs DESQview-style two-letter program ID
22h 13 BYTEs base name of program to be run (no path or extension)
2Fh 66 BYTEs directory from which to start program
71h 66 BYTEs initial current directory for program
SeeAlso: #0163,#0165
Format of Back&Forth Professional BF_TASK record:
Offset Size Description (Table 0165)
00h DWORD Unix-style task start time (seconds since 1/1/1970)
04h 21 BYTEs task description
19h DWORD elapsed time in task (seconds)
1Dh WORD task ID
1Fh BYTE task hotkey keyboard flags
20h WORD task hotkey scan code (see also #0005)
22h DWORD time task was suspended/exited
26h WORD task handle
SeeAlso: #0163,#0164
--------!---Section--------------------------
Interrupt List, part 2 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------B-1300-------------------------------
INT 13 - DISK - RESET DISK SYSTEM
AH = 00h
DL = drive (if bit 7 is set both hard disks and floppy disks reset)
Return: AH = status (see #0166)
CF clear if successful (returned AH=00h)
CF set on error
Note: forces controller to recalibrate drive heads (seek to track 0)
for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
both the master drive and the slave drive respond to the Reset
function that is issued to either drive
SeeAlso: AH=0Dh,AH=11h,INT 21/AH=0Dh,INT 4D/AH=00h"TI Professional"
SeeAlso: INT 56"Tandy 2000",MEM 0040h:003Eh
--------B-1301-------------------------------
INT 13 - DISK - GET STATUS OF LAST OPERATION
AH = 01h
DL = drive (bit 7 set for hard disk)
Return: CF clear if successful (returned status 00h)
CF set on error
AH = status of previous operation (see #0166)
Note: some BIOSes return the status in AL; the PS/2 Model 30/286 returns the
status in both AH and AL
SeeAlso: AH=00h,INT 4D/AH=01h,MEM 0040h:0041h,MEM 0040h:0074h
(Table 0166)
Values for disk operation status:
00h successful completion
01h invalid function in AH or invalid parameter
02h address mark not found
03h disk write-protected
04h sector not found/read error
05h reset failed (hard disk)
05h data did not verify correctly (TI Professional PC)
06h disk changed (floppy)
07h drive parameter activity failed (hard disk)
08h DMA overrun
09h data boundary error (attempted DMA across 64K boundary or >80h sectors)
0Ah bad sector detected (hard disk)
0Bh bad track detected (hard disk)
0Ch unsupported track or invalid media
0Dh invalid number of sectors on format (PS/2 hard disk)
0Eh control data address mark detected (hard disk)
0Fh DMA arbitration level out of range (hard disk)
10h uncorrectable CRC or ECC error on read
11h data ECC corrected (hard disk)
20h controller failure
31h no media in drive (IBM/MS INT 13 extensions)
32h incorrect drive type stored in CMOS (Compaq)
40h seek failed
80h timeout (not ready)
AAh drive not ready (hard disk)
B0h volume not locked in drive (INT 13 extensions)
B1h volume locked in drive (INT 13 extensions)
B2h volume not removable (INT 13 extensions)
B3h volume in use (INT 13 extensions)
B4h lock count exceeded (INT 13 extensions)
B5h valid eject request failed (INT 13 extensions)
BBh undefined error (hard disk)
CCh write fault (hard disk)
E0h status register error (hard disk)
FFh sense operation failed (hard disk)
SeeAlso: #M022
--------B-1302-------------------------------
INT 13 - DISK - READ SECTOR(S) INTO MEMORY
AH = 02h
AL = number of sectors to read (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number 1-63 (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
if AH = 11h (corrected ECC error), AL = burst length
CF clear if successful
AH = status (see #0166)
AL = number of sectors transferred (only valid if CF set for some
BIOSes)
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the read should be retried at least three times, resetting
the disk with AH=00h between attempts
most BIOSes support "multitrack" reads, where the value in AL
exceeds the number of sectors remaining on the track, in which
case any additional sectors are read beginning at sector 1 on
the following head in the same cylinder; the CONFIG.SYS command
MULTITRACK can be used to force DOS to split disk accesses which
would wrap across a track boundary into two separate calls
the IBM AT BIOS and many other BIOSes use only the low four bits of
DH (head number) since the WD-1003 controller which is the standard
AT controller (and the controller that IDE emulates) only supports
16 heads
AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
than 1024 cylinders by placing bits 10 and 11 of the cylinder number
into bits 6 and 7 of DH
under Windows95, a volume must be locked (see INT 21/AX=440Dh/CX=084Bh)
in order to perform direct accesses such as INT 13h reads and writes
SeeAlso: AH=03h,AH=0Ah,AH=06h"V10DISK.SYS",AH=21h"PS/1",AH=42h"IBM"
SeeAlso: INT 21/AX=440Dh/CX=084Bh,INT 4D/AH=02h
--------B-1303-------------------------------
INT 13 - DISK - WRITE DISK SECTOR(S)
AH = 03h
AL = number of sectors to write (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number 1-63 (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
CF clear if successful
AH = status (see #0166)
AL = number of sectors transferred
(only valid if CF set for some BIOSes)
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the write should be retried at least three times, resetting
the disk with AH=00h between attempts
most BIOSes support "multitrack" writes, where the value in AL
exceeds the number of sectors remaining on the track, in which
case any additional sectors are written beginning at sector 1 on
the following head in the same cylinder; the CONFIG.SYS command
MULTITRACK can be used to force DOS to split disk accesses which
would wrap across a track boundary into two separate calls
the IBM AT BIOS and many other BIOSes use only the low four bits of
DH (head number) since the WD-1003 controller which is the standard
AT controller (and the controller that IDE emulates) only supports
16 heads
AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
than 1024 cylinders by placing bits 10 and 11 of the cylinder number
into bits 6 and 7 of DH
under Windows95, an application must issue a physical volume lock on
the drive via INT 21/AX=440Dh before it can successfully write to
the disk with this function
SeeAlso: AH=02h,AH=0Bh,AH=07h"V10DISK.SYS",AH=22h"PS/1",AH=43h"IBM"
SeeAlso: INT 21/AX=440Dh"DOS 3.2+",INT 4D/AH=03h
--------B-1304-------------------------------
INT 13 - DISK - VERIFY DISK SECTOR(S)
AH = 04h
AL = number of sectors to verify (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number 1-63 (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer (PC,XT,AT with BIOS prior to 11/15/85)
Return: CF set on error
CF clear if successful
AH = status (see #0166)
AL = number of sectors verified
Notes: errors on a floppy may be due to the motor failing to spin up quickly
enough; the write should be retried at least three times, resetting
the disk with AH=00h between attempts
this function does not compare the disk with memory, it merely
checks whether the sector's stored CRC matches the data's actual CRC
the IBM AT BIOS and many other BIOSes use only the low four bits of
DH (head number) since the WD-1003 controller which is the standard
AT controller (and the controller that IDE emulates) only supports
16 heads
AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
than 1024 cylinders by placing bits 10 and 11 of the cylinder number
into bits 6 and 7 of DH
SeeAlso: AH=02h,AH=44h,INT 4D/AH=04h,INT 4D/AH=06h
--------B-1305-------------------------------
INT 13 - FLOPPY - FORMAT TRACK
AH = 05h
AL = number of sectors to format
CH = track number
DH = head number
DL = drive number
ES:BX -> address field buffer (see #0167)
Return: CF set on error
CF clear if successful
AH = status (see #0166)
Notes: on AT or higher, call AH=17h first
the number of sectors per track is read from the diskette parameter
table pointed at by INT 1E
SeeAlso: AH=05h"FIXED",AH=17h,AH=18h,INT 1E
Format of floppy format address field buffer entry (one per sector in track):
Offset Size Description (Table 0167)
00h BYTE track number
01h BYTE head number (0-based)
02h BYTE sector number
03h BYTE sector size (00h=128 bytes, 01h=256 bytes, 02h=512, 03h=1024)
--------B-1305-------------------------------
INT 13 - FIXED DISK - FORMAT TRACK
AH = 05h
AL = interleave value (XT-type controllers only)
ES:BX -> 512-byte format buffer
the first 2*(sectors/track) bytes contain F,N for each sector
F = sector type
00h for good sector
20h to unassign from alternate location
40h to assign to alternate location
80h for bad sector
N = sector number
CH = cylinder number (bits 8,9 in high bits of CL)
CL = high bits of cylinder number (bits 7,6)
DH = head
DL = drive
Return: CF set on error
CF clear if successful
AH = status code (see #0166)
Notes: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
than 1024 cylinders by placing bits 10 and 11 of the cylinder number
into bits 6 and 7 of DH
for XT-type controllers on an AT or higher, AH=0Fh should be called
first
the IBM AT BIOS and many other BIOSes use only the low four bits of
DH (head number) since the WD-1003 controller which is the standard
AT controller (and the controller that IDE emulates) only supports
16 heads
not all controller support sector types 20h and 40h
under Windows95, an application must issue a physical volume lock on
the drive via INT 21/AX=440Dh before it can successfully write to
the disk with this function
SeeAlso: AH=05h"FLOPPY",AH=06h"FIXED",AH=07h"FIXED",AH=0Fh,AH=18h,AH=1Ah
--------d-1305-------------------------------
INT 13 - Future Domain SCSI BIOS - SEND SCSI MODE SELECT COMMAND
AH = 05h
DL = hard drive ID
ES:BX -> mode select data (see #0168)
Return: CF set on error
CF clear if successful
AH = status code (see #0166)
Notes: this function can be called before AH=07h"SCSI" or AH=06h"SCSI" to
format a SCSI disk with the desired parameters
the mode select data below is from the SCSI-1 specification
the TMC-950 does not support any Future Domain BIOS calls; instead,
it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=06h"SCSI",AH=07h"SCSI",INT 4F/AX=8100h
Format of Future Domain SCSI mode select data:
Offset Size Description (Table 0168)
00h BYTE number of bytes of remaining data (12 + vendor unique length)
01h BYTE reserved (0)
02h BYTE medium type (0 for hard disk)
03h BYTE reserved (0)
04h BYTE block descriptor length (8)
05h BYTE density code (0 for hard disk)
06h 3 BYTEs (big-endian) number of blocks (000000h for entire disk)
09h BYTE reserved (0)
0Ah 3 BYTEs (big-endian) block length (512 standard, or 256)
0Dh ??? vendor-specific parameter bytes (optional)
--------d-13057FSI324D-----------------------
INT 13 - 2M - FORMAT TRACK
AX = 057Fh
SI = 324Dh ("2M")
CH = track number
DH = head number
DL = drive number
ES:BX -> boot sector of future 2M diskette
Return: CF set on error
CF clear if successful
AH = status (see #0166)
Program: 2M is a TSR developed by Ciriaco Garcia de Celis to support
non standard diskettes with 820-902/1476-1558K (5.25 DD/HD)
and 984-1066/1804-1886K/3608-3772K (3.5 DD/HD/ED)
Notes: it is not necessary to call AH=17h or AH=18h first (will be ignored)
the diskette format must always begin on cylinder 0 head 0
the boot sector can be obtained from an already-formatted 2M diskette
(by calling AH=02h with head number 00h in 2M v1.x and with head
number 80h for 2M v2+)
the installation check for 2M must search for a "CiriSOFT:2M:1.3" or
"CiriSOFT:2MX:3.0" or similar (recomended ":2M:", ":2MX:", or ":2MB:"
substrings) in CiriSOFT TSR interface
since 2M v2.0, the BOOT sector is emulated using the first physical
sector of FAT2; the second-sixth physical sectors of FAT2 in HD or ED
diskettes store the SuperBOOT code. To skip the FAT2 emulation (using
FAT1) of 2M, in order to read the SuperBOOT code, head number must be
80h-81h instead 0-1 (bit 7 active) in standard read/write functions.
This lets diskcopy programs format 2M target diskettes copying
SuperBOOT code. If the target diskette is already 2MF formatted
(containing boot code) this trick it is not necessary.
when using STV technology (offset 65 of boot sector equal to 1) it is
necessary to write the full track before formatting (except track 0
side 0) to complete the format and skip future CRC errors on read; in
track 0 side 1 the head used must be 81h instead 1. Diskcopy programs
may do a format-write-verify sequential phases to improve performance
SeeAlso: AH=05h"FLOPPY",AH=18h/CX=5055h,INT 2F"CiriSOFT"
--------B-1306-------------------------------
INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT)
AH = 06h
AL = interleave value
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number
DH = head
DL = drive
Return: AH = status code (see #0166)
Note: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
than 1024 cylinders by placing bits 10 and 11 of the cylinder number
into bits 6 and 7 of DH
SeeAlso: AH=05h"FIXED",AH=07h"FIXED"
--------d-1306-------------------------------
INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE WITH BAD SECTOR MAPPING
AH = 06h
AL = interleave
(0 = default, 1 = consecutive sectors, 2 - 255 = vendor unique)
DL = hard drive ID
DH = defect list info (see #0169)
ES:BX -> defect table A, B or C (see #0170,#0171,#0172)
Return: CF set on error
CF clear if successful
AH = status code (see #0166)
Notes: block addresses must be in ascending order (for table B, cylinder is
most significant, byte from index least significant; for table C,
cylinder is most significant, sector number least significant)
table B defect bytes from index of FFFFFFFFh indicates that the entire
track shall be reassigned
table C defect sector number of FFFFFFFFh indicates that the entire
track shall be reassigned
the TMC-950 does not support any Future Domain BIOS calls; instead,
it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=05h"SCSI",AH=06h"FIXED",AH=07h"SCSI"
Bitfields for Future Domain SCSI defect list info:
Bit(s) Description (Table 0169)
7-5 drive LUN
4 defect list is available
3 defect list is complete (erase drive's defect list)
2-0 defect table format
(000=use defect table A, 100=use defect table B,
101=use defect table C)
Format of Future Domain SCSI defect table A:
Offset Size Description (Table 0170)
00h WORD number of bytes remaining in table
02h BYTE reserved (0)
03h BYTE reserved (0)
04h WORD (big-endian) defect list length (4*number of defects)
06h 4 DWORDs (big-endian) defect block addresses
Format of Future Domain SCSI defect table B:
Offset Size Description (Table 0171)
00h WORD number of bytes remaining in table
02h BYTE reserved (0)
03h BYTE reserved (0)
04h WORD (big-endian) defect list length (8*number of defects)
06h 8N BYTEs defect list [array] (see #0173)
Format of Future Domain SCSI defect table C:
Offset Size Description (Table 0172)
00h WORD number of bytes remaining in table
02h BYTE reserved (0)
03h BYTE reserved (0)
04h WORD (big-endian) defect list length (8*number of defects)
06h 8N BYTEs defect list [array] (see #0173)
Format of Future Domain SCSI defect list entry:
Offset Size Description (Table 0173)
00h 3 BYTEs (big-endian) cylinder number of defect
03h BYTE head number of defect
04h DWORD (big-endian) defect bytes from index
--------d-1306-------------------------------
INT 13 - Adaptec AHA-154xA/Bustek BT-542 BIOS - IDENTIFY SCSI DEVICES
AH = 06h
Return: AH = status code (see #0166)
CF clear if successful
AL = first drive supported
(80h nonconcurrent operation, 81h concurrent operation)
CF set on error
Desc: determine the number of the first supported SCSI drive
Note: the return value is 80h when two SCSI drives are supported, 81h if
only one SCSI drive is installed
SeeAlso: AH=08h"PC",#0656 at INT 1A/AX=B102h
--------d-1306-------------------------------
INT 13 - V10DISK.SYS - READ DELETED SECTORS
AH = 06h
AL = number of sectors
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number
DH = head
DL = drive
ES:BX -> buffer
Return: AH = status code (see #0166)
Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
SeeAlso: AH=02h,AH=07h"V10DISK.SYS"
--------B-1307-------------------------------
INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT)
AH = 07h
AL = interleave value (XT only)
ES:BX = 512-byte format buffer (see AH=05h)
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number
DH = head
DL = drive
Return: AH = status code (see #0166)
Note: AWARD AT BIOS and AMI 386sx BIOS have been extended to handle more
than 1024 cylinders by placing bits 10 and 11 of the cylinder number
into bits 6 and 7 of DH
SeeAlso: AH=05h"FIXED",AH=06h"FIXED",AH=1Ah
--------d-1307-------------------------------
INT 13 - Future Domain SCSI BIOS - FORMAT DRIVE
AH = 07h
AL = interleave (0 = default, 1 = consecutive sectors,
2 - 255 = vendor unique)
DL = hard drive ID
Return: CF set on error
CF clear if successful
AH = status code (see #0166)
SeeAlso: AH=05h"SCSI",AH=06h"SCSI",AH=07h"FIXED"
--------d-1307-------------------------------
INT 13 - V10DISK.SYS - WRITE DELETED SECTORS
AH = 07h
AL = number of sectors
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number
DH = head
DL = drive
ES:BX -> buffer
Return: AH = status code (see #0166)
Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
--------B-1308-------------------------------
INT 13 - DISK - GET DRIVE PARAMETERS (PC,XT286,CONV,PS,ESDI,SCSI)
AH = 08h
DL = drive (bit 7 set for hard disk)
Return: CF set on error
AH = status (07h) (see #0166)
CF clear if successful
AH = 00h
AL = 00h on at least some BIOSes
BL = drive type (AT/PS2 floppies only) (see #0174)
CH = low eight bits of maximum cylinder number
CL = maximum sector number (bits 5-0)
high two bits of maximum cylinder number (bits 7-6)
DH = maximum head number
DL = number of drives
ES:DI -> drive parameter table (floppies only)
Notes: may return successful even though specified drive is greater than the
number of attached drives of that type (floppy/hard); check DL to
ensure validity
for systems predating the IBM AT, this call is only valid for hard
disks, as it is implemented by the hard disk BIOS rather than the
ROM BIOS
Toshiba laptops with HardRAM return DL=02h when called with DL=80h,
but fail on DL=81h. The BIOS data at 40h:75h correctly reports 01h.
may indicate only two drives present even if more are attached; to
ensure a correct count, one can use AH=15h to scan through possible
drives
for BIOSes which reserve the last cylinder for testing purposes, the
cylinder count is automatically decremented
on PS/1s with IBM ROM DOS 4, nonexistent drives return CF clear,
BX=CX=0000h, and ES:DI = 0000h:0000h
the PC-Tools PCFORMAT program requires that AL=00h before it will
proceed with the formatting
SeeAlso: AH=06h"Adaptec",AH=13h"SyQuest",AH=48h,AH=15h,INT 1E
SeeAlso: INT 41"HARD DISK 0"
(Table 0174)
Values for diskette drive type:
01h 360K
02h 1.2M
03h 720K
04h 1.44M
05h ??? (reportedly an obscure drive type shipped on some IBM machines)
2.88M on some machines (at least AMI 486 BIOS)
06h 2.88M
10h ATAPI Removable Media Device
--------d-1308-------------------------------
INT 13 - V10DISK.SYS - SET FORMAT
AH = 08h
AL = number of sectors
CH = cylinder number (bits 8,9 in high bits of CL)
CL = sector number
DH = head
DL = drive
Return: AH = status code (see #0166)
Program: V10DISK.SYS is a driver for the Flagstaff Engineering 8" floppies
Note: details not available
SeeAlso: AH=03h,AH=06h"V10DISK.SYS"
--------y-130800DLF0-------------------------
INT 13 - SecureDrive - INSTALLATION CHECK
AX = 08000h
DL = F0h
Return: AX = EDCBh for version 1.0-1.2
AX = EDCCh for version 1.3
CX = code segment
DX = data address within code segment
Program: SecureDrive by Mike Ingle <mikeingle@delphi.com> allows you to create
an encrypted partition on your harddisk.
--------B-1309-------------------------------
INT 13 - HARD DISK - INITIALIZE CONTROLLER WITH DRIVE PARAMETERS (AT,PS)
AH = 09h
DL = drive (80h for first, 81h for second)
Return: CF clear if successful
CF set on error
AH = status (see #0166)
Notes: on the PC and XT, this function uses the parameter table pointed at by
INT 41
on the AT and later, this function uses the parameter table pointed at
by INT 41 if DL=80h, and the parameter table pointed at by INT 46 if
DL=81h
SeeAlso: INT 41"HARD DISK 0",INT 46"HARD DISK 1"
--------B-130A-------------------------------
INT 13 - HARD DISK - READ LONG SECTOR(S) (AT and later)
AH = 0Ah
AL = number of sectors (01h may be only value supported)
CH = low eight bits of cylinder number
CL = sector number (bits 5-0)
high two bits of cylinder number (bits 7-6)
DH = head number
DL = drive number (80h = first, 81h = second)
ES:BX -> data buffer
Return: CF clear if successful
CF set on error
AH = status (see #0166)
AL = number of sectors transferred
Notes: this function reads in four to seven bytes of error-correcting code
along with each sector's worth of information
data errors are not automatically corrected, and the read is aborted
after the first sector with an ECC error
used for diagnostics only on PS/2 systems; IBM officially classifies
this function as optional
SeeAlso: AH=02h,AH=0Bh,MEM 0040h:0074h
--------B-130B-------------------------------
INT 13 - HARD DISK - WRITE LONG SECTOR(S) (AT and later)
AH = 0Bh
AL = number of sectors (01h may be only value supported)
CH = low eight bits of cylinder number
CL = sector number (bits 5-0)
high two bits of cylinder number (bits 7-6)
DH = head number
DL = drive number (80h = first, 81h = second)
ES:BX -> data buffer
Return: CF clear if successful
CF set on error
AH = status (see #0166)
AL = number of sectors transferred
Notes: each sector's worth of data must be followed by four to seven bytes of
error-correction information
used for diagnostics only on PS/2 systems; IBM officially classifies
this function as optional
SeeAlso: AH=03h,AH=0Ah,MEM 0040h:0074h
--------B-130C-------------------------------
INT 13 - HARD DISK - SEEK TO CYLINDER
AH = 0Ch
CH = low eight bits of cylinder number
CL = sector number (bits 5-0)
high two bits of cylinder number (bits 7-6)
DH = head number
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status (see #0166)
SeeAlso: AH=00h,AH=02h,AH=0Ah,AH=47h
--------B-130D-------------------------------
INT 13 - HARD DISK - RESET HARD DISKS
AH = 0Dh
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status (see #0166)
Notes: reinitializes the hard disk controller, resets the specified drive's
parameters, and recalibrates the drive's heads (seek to track 0)
for PS/2 35SX, 35LS, 40SX and L40SX, as well as many other systems,
both the master drive and the slave drive respond to the Reset
function that is issued to either drive
not for PS/2 ESDI drives
SeeAlso: AH=00h,INT 21/AH=0Dh
--------B-130E-------------------------------
INT 13 - HARD DISK - READ SECTOR BUFFER (XT only)
AH = 0Eh
DL = drive number (80h = first, 81h = second hard disk)
ES:BX -> buffer
Return: CF set on error
CF clear if successful
AH = status code (see #0166)
Notes: transfers controller's sector buffer. No data is read from the drive
used for diagnostics only on PS/2 systems
SeeAlso: AH=0Ah
--------B-130F-------------------------------
INT 13 - HARD DISK - WRITE SECTOR BUFFER (XT only)
AH = 0Fh
DL = drive number (80h = first, 81h = second hard disk)
ES:BX -> buffer
Return: CF set on error
CF clear if successful
AH = status code (see #0166)
Notes: does not write data to the drive
should be called before formatting to initialize an XT-type
controller's sector buffer
used for diagnostics only on PS/2 systems
SeeAlso: AH=0Bh
--------B-1310-------------------------------
INT 13 - HARD DISK - CHECK IF DRIVE READY
AH = 10h
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
SeeAlso: AH=11h
--------B-1311-------------------------------
INT 13 - HARD DISK - RECALIBRATE DRIVE
AH = 11h
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
Note: causes hard disk controller to seek the specified drive to cylinder 0
SeeAlso: AH=00h,AH=0Ch,AH=10h,AH=19h"FIXED DISK",MEM 0040h:003Eh
--------B-1312-------------------------------
INT 13 - HARD DISK - CONTROLLER RAM DIAGNOSTIC (XT,PS)
AH = 12h
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status code (see #0166 at AH=01h)
AL = 00h
SeeAlso: AH=13h,AH=14h
--------d-1312-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - STOP SCSI DISK
AH = 12h
DL = hard drive ID
Return: CF set on error
CF clear if successful
AH = status code (see #0166 at AH=01h)
Notes: available at least on the TMC-870 8-bit SCSI controller BIOS v6.0A
if the given drive is a SCSI device, the SCSI Stop Unit command is sent
and either "Disk prepared for shipping" or "Disk Stop command failed"
is displayed
the TMC-950 does not support any Future Domain BIOS calls; instead,
it provides a full CAM implementation (see INT 4F/AX=8100h)
--------d-1312-------------------------------
INT 13 - SyQuest - START/STOP SCSI DISK
AH = 12h
AL = subfunction
00h start disk
01h stop disk
CX = wait flag
00h wait for ready
01h don't wait for ready
DL = hard drive ID (bit 7 for hard disks must be set)
Return: CF set on error
CF clear if successful
AH = status
00h successful
01h invalid function request
80h timeout
SeeAlso: AH=12h"Future Domain",AH=13h"SyQuest"
--------B-1313-------------------------------
INT 13 - HARD DISK - DRIVE DIAGNOSTIC (XT,PS)
AH = 13h
DL = drive number (80h = first, 81h = second hard disk)
Return: CF set on error
CF clear if successful
AH = status code (see #0166 at AH=01h)
AL = 00h
SeeAlso: AH=12h"HARD DISK",AH=14h"HARD DISK"
--------d-1313-------------------------------
INT 13 - SyQuest - READ DRIVE PARAMATERS (for DOS 5+)
AH = 13h
DL = drive ID (bit 7 set for hard disks)
Return: CF set on error
AH = status (07h) (see #0166 at AH=01h)
CF clear if successful
AH = 00h
BL = drive type (AT/PS2 floppies only) (see #0174)
CH = low eight bits of maximum cylinder number
CL = maximum sector number (bits 5-0)
high two bits of maximum cylinder number (bits 7-6)
DH = maximum head number
DL = number of drives
ES:DI -> drive parameter table (floppies only)
Notes: the return values are identical to the standard INT 13/AH=08h, but the
number of drives is not limited to 2, so
scanning all possible drive numbers with the Read DASD Type call
(AH=15h) should generally be preferred to determine the number of
drives attached to the system.
SeeAlso: AH=08h"PC",AH=12h"SyQuest",AH=15h,AH=59h"SyQuest"
--------B-1314-------------------------------
INT 13 - HARD DISK - CONTROLLER INTERNAL DIAGNOSTIC
AH = 14h
Return: CF set on error
CF clear if successful
AH = status code (see #0166 at AH=01h)
AL = 00h
SeeAlso: AH=12h,AH=13h
--------B-1315-------------------------------
INT 13 - DISK - GET DISK TYPE (XT 1/10/86 or later,XT286,AT,PS)
AH = 15h
DL = drive number (bit 7 set for hard disk)
Return: CF clear if successful
AH = type code
00h no such drive
01h floppy without change-line support
02h floppy (or other removable drive) with change-line support
03h hard disk
CX:DX = number of 512-byte sectors
CF set on error
AH = status (see #0166 at AH=01h)
Note: SyQuest can report type 01h or 02h for 'hard disks', since its media
is removable
SeeAlso: AH=08h,AH=16h,AH=17h,AH=19h"SCSI"
--------B-1316-------------------------------
INT 13 - FLOPPY DISK - DETECT DISK CHANGE (XT 1/10/86 or later,XT286,AT,PS)
AH = 16h
DL = drive number (00h-7Fh)
Return: CF clear if change line inactive
AH = 00h (disk not changed)
CF set if change line active
AH = status
01h invalid command (SyQuest)
06h change line active or not supported
80h drive not ready or not present
Notes: call AH=15h first to determine whether the drive supports a change
line
this call also clears the media-change status, so that a disk change
is only reported once
BUG: some versions of Award 386 Modular BIOS and AMI BIOS fail to clear
the media-change status
SeeAlso: AH=15h,AH=49h
--------B-1317-------------------------------
INT 13 - FLOPPY DISK - SET DISK TYPE FOR FORMAT (AT,PS)
AH = 17h
AL = format type
01h = 320/360K disk in 360K drive
02h = 320/360K disk in 1.2M drive
03h = 1.2M disk in 1.2M drive
04h = 720K disk in 720K or 1.44M drive
DL = drive number
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
Note: this function does not handle 1.44M drives; use AH=18h instead
SeeAlso: AH=15h,AH=18h
--------d-131700-----------------------------
INT 13 - Future Domain SCSI CONTROLLER - GET INQUIRY INFO FROM SCSI DEVICE
AX = 1700h
CL = length of buffer
DL = hard drive ID
ES:BX -> buffer for info (see #0175)
Return: CF clear if successful
CH = number of bytes returned in buffer???
CF set on error
AH = status code (see #0166 at AH=01h)
Notes: this function is not available with 8-bit controller ROM versions < 7.0
information block bytes 5-n are vendor-specific in older SCSI devices
the TMC-950 does not support any Future Domain BIOS calls; instead,
it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=18h"SCSI",AH=1Bh"SCSI"
Format of Future Domain SCSI inquiry information block:
Offset Size Description (Table 0175)
00h BYTE device type
bits 0-4: peripheral device type (see #0176)
bits 5-7: peripheral qualifier (see #0177)
01h BYTE device type modifier
bits 0-6: device type modifier
bit 7: removable medium
02h BYTE SCSI version (see #0178)
03h BYTE data format/capabilities (see #0179)
04h BYTE additional data length (total remaining bytes)
05h 2 BYTEs reserved
07h BYTE device capabilities (see #0180)
08h 8 BYTEs vendor identification (space-padded ASCII)
10h 8 BYTEs product identification (space-padded ASCII)
20h 4 BYTEs product revision level (space-padded ASCII)
24h 20 BYTEs vendor specific
38h 40 BYTEs reserved
60h var vendor specific parameters
(Table 0176)
Values for Future Domain SCSI peripheral device type:
00h direct-access device (e.g., magnetic disk)
01h sequential-access device (e.g., magnetic tape)
02h printer device
03h processor device
04h write-once device (e.g., some optical disks)
05h CD-ROM device
06h scanner device
07h optical memory device (e.g., some optical disks)
08h medium changer device (e.g., jukeboxes)
09h communications device
0Ah (defined by ASC IT8)
0Bh (defined by ASC IT8)
0Ch-1Eh reserved
1Fh unknown or no device type
(Table 0177)
Values for Future Domain SCSI peripheral qualifier:
000b device is currently connected to this logical unit and available
001b target is capable of supporting the specified peripheral, but the
physical device is not currently connected to this logical unit
010b reserved
011b target can't support a physical device on this logical unit
1xxb vendor specific
Bitfields for Future Domain SCSI version:
Bit(s) Description (Table 0178)
0-2 ANSI-approved version
000 device might or might not comply to ANSI standard
001 device complies to ANSI SCSI-1
010 device complies to ANSI SCSI-2
other reserved
3-5 ECMA version
6-7 ISO version
Bitfields for Future Domain SCSI data format/capabilities:
Bit(s) Description (Table 0179)
0-2 response data format
000 information block is as specified in SCSI-1
001 information block is as specified in CCS
010 information block is as specified in SCSI-2
other reserved
4-5 reserved
6 terminate I/O process supported
7 asynchronous event notification supported
Bitfields for Future Domain SCSI device capabilities:
Bit(s) Description (Table 0180)
0 device responds to RESET with a hard RESET
1 tagged command queuing supported
2 reserved
3 linked commands supported
4 synchronous data transfer supported
5 16-transfers supported
6 32-transfers supported
7 relative addressing supported
--------B-1318-------------------------------
INT 13 - DISK - SET MEDIA TYPE FOR FORMAT (AT model 3x9,XT2,XT286,PS)
AH = 18h
DL = drive number
CH = lower 8 bits of highest cylinder number (number of cylinders - 1)
CL = sectors per track (bits 0-5)
top 2 bits of highest cylinder number (bits 6,7)
Return: AH = status
00h requested combination supported
01h function not available
0Ch not supported or drive type unknown
80h there is no disk in the drive
ES:DI -> 11-byte parameter table (see #0960 at INT 1E)
Note: this function does not set the INT 1E vector to point at the returned
parameter table; it is the caller's responsibility to do so
SeeAlso: AH=05h,AH=07h,AH=17h,INT 1E
--------d-1318-------------------------------
INT 13 - Future Domain SCSI BIOS - GET SCSI CONTROLLER INFORMATION
AH = 18h
DL = hard drive ID
Return: CF set on error
AH = status code (see #0166 at AH=01h)
CF clear if successful
AX = 4321h (magic number)
CX = controller family code (see #0181)
---if family code=0200h
DH = number of exclusively ROM-controlled SCSI devices
DL = canonical SCSI device number for specified drive
---if family code <> 0200h
BH = number of exclusively ROM-controlled SCSI devices
BL = canonical SCSI device number for specified drive
Notes: also sets an internal flag (non-resettable) which prevents some
controller messages from being displayed, allows writes to
removable devices (use caution!), and enables the INT 13 interface
for more than one drive (i.e. DL >= 81h) in at least some ROM
versions
the TMC-950 does not support any Future Domain BIOS calls; instead,
it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=05h"SCSI",AX=1700h"SCSI",AH=1Bh"SCSI",INT 4F/AX=8100h
(Table 0181)
Values for Future Domain SCSI controller family code:
0200h TMC-1680/? (ROM 3.0)
0203h TMC-1650/1660/1670/1680 (ROM 2.0)
040Ah TMC-820/830/840/850/860/870/875/880/885 (ROM <= 6.0A)
050Dh TMC-840/841/880/881 (ROM 5.2D)
0700h TMC-830/850/860/875/885 (ROM 7.0)
--------d-1318--CX5055-----------------------
INT 13 - PU_1700.COM - INSTALLATION CHECK
AH = 18h
CX = 5055h ('PU')
DL = 00h
Return: AX = 7570h ('up') if PU_1700 is installed
Program: PU_1700 is a BIOS enhancer from PU Service Systems which permits
formatting diskettes at higher capacity (1.78M instead of 1.44M)
SeeAlso: AX=057Fh/SI=324Dh"2M"
--------d-1318--CXD2C9-----------------------
INT 13 - XDF.COM - API
AH = 18h
CX = D2C9h ("R"+80h, "I"+80h = Roger Ivey)
DX = 0000h
BX = function
0000h installation check
Return: AH = 0Ch
CX = 7269h ("ri" = Roger Ivey)
ES = segment of driver
CF set
2F64h ("/d") disable the driver
Return: AH = 0Ch
ES:BX = pointer to activation flag (it is set to 0:
set it to 1 to enable the driver again)
CX = 7269h
CF set
2F75h ("/u") unload the driver (restore interrupts & free memory)
Return: AH = 0Ch
DL = 55h ("U") if successful
= 00h if fails
CX = 7269h
ES = segment of driver
CF set
AL, BX, DH, and DI destroyed
Program: XDF is a TSR provided with PC-DOS 7.0 to support XDF 1.84M disks,
developed by Roger D. Ivey
Note: After disabling or enabling the driver, a disk change must be performed
or simulated to reset the driver.
--------B-1319-------------------------------
INT 13 - FIXED DISK - PARK HEADS ON ESDI DRIVE (XT286,PS)
AH = 19h
DL = drive
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
SeeAlso: AH=11h
--------d-1319-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - REINITIALIZE DRIVE
AH = 19h
DL = hard drive ID
Return: CF set on error
AH = status code (see #0166 at AH=01h)
CF clear if successful
AH = disk type (03h = fixed disk)
CX:DX = number of 512-byte sectors
Notes: sends SCSI Read Capacity command to get number of logical blocks and
adjusts the result for 512-byte sectors
displays either "Error in Read Capacity Command" or "nnn Bytes per
sector" (nnn=256 or 512, the only sizes supported in the translation
code)
should probably be called when a removable device has its media changed
returns the same values as AH=15h
the TMC-950 does not support any Future Domain BIOS calls; instead,
it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=15h,AH=1Ah,INT 4F/AX=8100h
--------d-131A-------------------------------
INT 13 - ESDI FIXED DISK - FORMAT UNIT (PS)
AH = 1Ah
AL = defect table entry count
CL = format modifiers (see #0182)
DL = drive (80h,81h)
ES:BX -> defect table (see #0183), ignored if AL=00h
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
Note: if periodic interrupt selected, INT 15/AH=0Fh is called after each
cylinder is formatted
SeeAlso: AH=07h,INT 15/AH=0Fh
Bitfields for ESDI format modifiers:
Bit(s) Description (Table 0182)
4 generate periodic interrupt
3 perform surface analysis
2 update secondary defect map
1 ignore secondary defect map
0 ignore primary defect map
Format of defect table entry [array]:
Offset Size Description (Table 0183)
00h 3 BYTEs relative sector address (little-endian)
03h BYTE flags and defect count
bit 7: last logical sector on track
bit 6: first logical sector on track
bit 5: last logical sector on cylinder
bit 4: logical sectors are pushed onto next track
bits 3-0: number of defects pushed from previous cylinder
--------d-131A-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - GET SCSI PARTIAL MEDIUM CAPACITY
AH = 1Ah
CH = track (bits 8,9 in high bits of CL)
CL = sector (01h to number of sectors/track for drive)
DH = head
DL = hard drive ID
Return: CF set on error
AH = status code (see #0166 at AH=01h)
CX:DX = logical block number of last quickly-accessible block after
given block
Notes: sends SCSI Read Capacity command with the PMI bit set to obtain the
logical block address of the last block after which a substantial
delay in data transfer will be encountered (usually the last block
on the current cylinder). No translation to 512 byte sectors is
performed on the result if data is stored on the disk in other than
512 byte sectors.
the TMC-950 does not support any Future Domain BIOS calls; instead,
it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=15h,AH=19h"SCSI"
--------d-131B-------------------------------
INT 13 - ESDI FIXED DISK - GET MANUFACTURING HEADER
AH = 1Bh
AL = number of sectors to read
DL = drive
ES:BX -> buffer for manufacturing header (defect list)
Return: CF set on error
CF clear if successful
AH = status
Note: manufacturing header format (Defect Map Record format) can be found
in IBM 70MB, 115MB Fixed Disk Drives Technical Reference
the first sector read contains the manufacturing header with the number
of defect entries and the beginning of the defect map; the remaining
sectors contain the remainder of the defect map
--------d-131B-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO SCSI DISK INFO BLOCK
AH = 1Bh
DL = hard drive ID
Return: CF set on error
AH = status code (see #0166 at AH=01h)
CF clear if successful
ES:BX -> SCSI disk information block (see #0184)
Notes: also sets a non-resettable flag which prevents some controller messages
from being displayed
the TMC-950 does not support any Future Domain BIOS calls; instead,
it provides a full CAM implementation (see INT 4F/AX=8100h)
SeeAlso: AH=18h"SCSI",AH=1Ch"SCSI"
Format of Future Domain SCSI disk information block:
Offset Size Description (Table 0184)
00h BYTE drive physical information (see #0185)
01h WORD translated number of cylinders
03h BYTE translated number of heads
04h BYTE translated number of sectors per track (17, 34, or 63)
05h BYTE drive address
bits 0-2: logical unit number
bits 3-5: device number
06h BYTE 01h at initialization
07h BYTE sense code byte 00h, or extended sense code byte 0Ch
08h BYTE 00h
09h BYTE 00h or extended sense code byte 02h (sense key)
0Ah BYTE 00h
0Bh 10 BYTEs copy of Command Descriptor Block (CDB) (see #2907,#2908)
15h DWORD translated number of sectors on device
Bitfields for Future Domain SCSI device physical information:
Bit(s) Description (Table 0185)
0 ???
1 device uses parity
2 256 bytes per sector instead of 512
3 don't have capacity yet???
4 disk is removable
5 logical unit number is not present
--------d-131C-------------------------------
INT 13 - Future Domain SCSI CONTROLLER - GET POINTER TO FREE CONTROLLER RAM
AH = 1Ch
DL = hard drive ID (any valid SCSI hard disk)
Return: CF set on error
AH = status code (see #0166 at AH=01h)
CF clear if successful
ES:BX -> first byte of free RAM on controller
Notes: the Future Domain TMC-870 contains 1024 bytes of RAM at offsets 1800h
to 1BFFh on-board the controller for storing drive information and
controller status; ES:BX points to the first byte available for other
uses
ES contains the segment at which the controller resides; the
controller's two memory-mapped I/O ports are at offsets 1C00h, 1E00h
SeeAlso: AH=1Bh"SCSI"
--------d-131C-------------------------------
INT 13 U - ESDI FIXED DISK - ???
AH = 1Ch
AL = subfunction (01h-06h)
DL = drive (80h,81h)
???
Return: ???
Note: these functions perform a controller command 0612h without DMA
SeeAlso: AX=1C08h,PORT 3510h"ESDI"
--------d-131C08-----------------------------
INT 13 U - ESDI FIXED DISK - GET COMMAND COMPLETION STATUS
AX = 1C08h
DL = drive (80h,81h)
ES:BX -> buffer for Command Complete Status Block (see #0186)
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
SeeAlso: AX=1C09h,AX=1C0Ah,PORT 3510h"ESDI"
Format of ESDI Command Complete Status Block:
Offset Size Description (Table 0186)
00h BYTE 07h
01h BYTE size of block in words (07h)
02h BYTE command error code (see #0187)
03h BYTE command status code (see #0188)
04h BYTE device error code, group 1 (see #0189)
05h BYTE device error flags, group 2 (see #0190)
06h WORD number of unprocessed sectors due to abnormal termination
08h DWORD last Relative Sector Address processed by command
0Ch WORD number of sectors corrected by ECC codes
(Table 0187)
Values for ESDI command error code:
00h successful
01h parameter invalid
02h unknown function
03h unsupported command
04h command cancelled
05h unknown function
06h controller diagnostics failed
07h formatting failed
08h format error in primary map
09h format error in secondary map
0Ah diagnostic failure during formatting
0Bh warning: secondary map too large during formatting
0Ch warning: non-zero defect
0Dh system checksum error during formatting
0Eh warning: incompatible device
0Fh warning: push table overflowed
10h warning: more than 15 sectors pushed to next cylinder
11h internal hardware error
12h warning: errors found while verifying sectors
13h invalid device
FFh device error
(Table 0188)
Values for ESDI command status code:
01h successful
03h successful after ECC
05h successful after retries
06h format partially completed
07h successful after ECC and retries
08h command completed with warning (see #0187)
09h abort complete
0Ah reset complete
0Bh data transfer ready (no status block)
0Ch command completed with failure (see #0189,#0190)
0Dh DMA error
0Eh command block error (see #0187)
0Fh bad attention code
SeeAlso: #0189
(Table 0189)
Values for ESDI device error code, group 1:
00h successful
01h seek fault detected by device
02h interface fault
03h sector ID not found
04h disk not formatted
05h unrecoverable ECC error
06h ECC error in sector ID
07h invalid relative sector address
08h timeout
09h sector defective
0Ah disk changed (removable media)
0Bh selection error
0Ch write protected (removable media)
0Dh write fault
0Eh read fault
0Fh no index or sector pulse
10h device not ready
11h seek error detected by adapter
12h bad format
13h volume overflow
14h data address mark not found
15h sector ID not found
16h missing device configuration data
17h first/last relative sector flags missing
18h track empty
81h timeout while waiting for stop
82h timeout while waiting for end of data transfer
84h stopped awaiting data transfer during formatting
85h timeout while waiting for head switch
86h timeout while awaiting DMA completion
SeeAlso: #0188,#0190
Bitfields for ESDI device error flags, group 2:
Bit(s) Description (Table 0190)
7-5 unused
4 ready
3 selected
2 write fault
1 on track 0
0 seek/command complete
SeeAlso: #0189
--------d-131C09-----------------------------
INT 13 U - ESDI FIXED DISK - GET DEVICE STATUS
AX = 1C09h
DL = drive (80h,81h)
ES:BX -> buffer for Device Status Block (see #0191)
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
SeeAlso: AX=1C08h,AX=1C0Ah,PORT 3510h"ESDI"
Format of ESDI Device Status Block:
Offset Size Description (Table 0191)
00h BYTE 08h
01h BYTE number of words in block (09h)
02h BYTE error flags
03h BYTE unused
04h BYTE command error code (see #0187)
05h BYTE command status code (see #0188)
06h WORD ESDI standard status
08h 5 WORDs ESDI vendor-specific status codes
--------d-131C0A-----------------------------
INT 13 U - ESDI FIXED DISK - GET DEVICE CONFIGURATION
AX = 1C0Ah
DL = drive (80h,81h)
ES:BX -> buffer for Drive Configuration Status Block (see #0192)
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
Note: device configuration format can be found in IBM ESDI Fixed Disk Drive
Adapter/A Technical Reference
SeeAlso: AX=1C08h,AX=1C0Bh,AX=1C0Ch
Format of ESDI Drive Configuration Status Block:
Offset Size Description (Table 0192)
00h BYTE 09h
01h BYTE number of words in block (06h)
02h BYTE flags
03h BYTE number of spare sectors per cylinder
04h DWORD total number of usable sectors
08h WORD total number of cylinders
0Ah BYTE tracks per cylinder
0Bh BYTE sectors per track
--------d-131C0B-----------------------------
INT 13 U - ESDI FIXED DISK - GET ADAPTER CONFIGURATION
AX = 1C0Bh
ES:BX -> buffer for Controller Configuration Status Block (see #0193)
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
SeeAlso: AX=1C0Ch
Format of ESDI Controller Configuration Status Block:
Offset Size Description (Table 0193)
00h BYTE E9h
01h BYTE number of words in block (06h)
02h WORD unused (0000h)
04h DWORD controller microcode revision level
08h 2 WORDs unused (0000h)
--------d-131C0C-----------------------------
INT 13 U - ESDI FIXED DISK - GET POS INFORMATION
AX = 1C0Ch
ES:BX -> buffer for POS Information Status Block (see #0194)
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
SeeAlso: AX=1C0Bh
Format of ESDI POS Information Status Block:
Offset Size Description (Table 0194)
00h BYTE EAh
01h BYTE number of words in block (05h)
02h WORD magic value FFDDh
04h BYTE POS register 3
05h BYTE POS register 2
06h BYTE POS register 5 (unused, FFh)
07h BYTE POS register 4 (unused, FFh)
08h BYTE POS register 7 (unused, FFh)
09h BYTE POS register 6 (unused, FFh)
--------d-131C0D-----------------------------
INT 13 U - ESDI FIXED DISK - ???
AX = 1C0Dh
DL = drive (80h,81h)
???
Return: ???
Note: invokes controller command 0614h without DMA
SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
--------d-131C0E-----------------------------
INT 13 U - ESDI FIXED DISK - TRANSLATE RBA TO ABA
AX = 1C0Eh
CH = low 8 bits of cylinder number
CL = sector number, high two bits of cylinder number in bits 6 and 7
DH = head number
DL = drive number (80h,81h)
ES:BX -> ABA number
Return: CF set on error
CF clear if successful
AH = status (see #0166 at AH=01h)
Note: ABA (absolute block address) format can be found in IBM ESDI Adapter
Technical Reference by using its Device Configuration Status Block
SeeAlso: AX=1C08h,AX=1C0Fh,PORT 3510h"ESDI"
--------d-131C0F-----------------------------
INT 13 U - ESDI FIXED DISK - ???
AX = 1C0Fh
DL = drive (80h,81h)
???
Return: ???
Note: invokes controller command 0614h without DMA
SeeAlso: AH=1Ch"ESDI",AX=1C0Dh,AX=1C12h,PORT 3510h"ESDI"
--------d-131C12-----------------------------
INT 13 U - ESDI FIXED DISK - ???
AX = 1C12h
DL = drive (80h,81h)
???
Return: ???
Note: invokes controller command 0612h without DMA
SeeAlso: AH=1Ch"ESDI",AX=1C0Fh,PORT 3510h"ESDI"
--------c-131D-------------------------------
INT 13 - IBMCACHE.SYS - CACHE STATUS
AH = 1Dh
AL = subfunction
01h get status record
DL = drive???
Return: ES:BX -> status record (see #0195)
CF set on error
AH = error code
02h set cache status
ES:BX -> status record (see #0195)
DL = drive???
Return: CF set on error
Format of IBMCACHE.SYS status record:
Offset Size Description (Table 0195)
00h DWORD total number of read requests
04h DWORD total number of hits
08h DWORD number of physical disk reads
0Ch DWORD total number of sectors requested by physical disk reads
10h 6 BYTEs ???
16h DWORD pointer to start of error list (see #0196)
1Ah DWORD pointer to end of error list
1Eh WORD ???
20h BYTE using extended memory if nonzero
21h BYTE ???
22h 4 BYTEs ASCII version number
26h WORD cache size in KB
28h WORD sectors per page
Format of IBMCACHE.SYS error list:
Offset Size Description (Table 0196)
00h DWORD relative block address of bad page
04h BYTE drive
05h BYTE sector bit-map
06h WORD next error
--------d-131F-------------------------------
INT 13 - SyQuest - DOOR LATCH/DOOR BUTTON DETECT
AH = 1Fh
AL = subfunction
00h allow media removal
01h prevent media removal (lock door)
DL = drive ID (bit 7 set for hard disks)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code
00h successful
01h invalid function request
80h timeout
DDh media change requested
SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=59h"SyQuest"
--------d-1320-------------------------------
INT 13 - DISK - ??? (Western Digital "Super BIOS")
AH = 20h
???
Return: ???
Notes: returns some kind of status related to whether the drive contains its
default media type
QEMM v6.00 calls INT 13/AX=2000h/DL=81h in some cases
--------b-1320-------------------------------
INT 13 U - Compaq, ATAPI Removable Media Device - GET CURRENT MEDIA FORMAT
AH = 20h
DL = drive number (00h,01h)
Return: CF clear if successful
AL = media type (see #0197)
AH = 00h
CF set on error
AH = error code
01h invalid request
30h drive does not support media sense
31h no such drive / media not present
32h non-default media / drive does not supporte media type
Notes: this function is supported by the 3/8/93 ROM BIOS, but only partially
(AL is always 00h when successful) by the 8/3/93 version
this function is also supported by some recent versions of the Phoenix
486 BIOS
(Table 0197)
Values for Compaq/ATAPI diskette media type:
03h 720K (1M unformatted)
04h 1.44M (2M unformatted)
06h 2.88M (4M unformatted)
0Ch 360K
0Dh 1.2M
0Eh Toshiba 3mode
0Fh NEC 3mode (1024-byte sectors)
10h ATAPI Removable Media Device
--------c-1320-------------------------------
INT 13 u - QUICKCACHE II v4.20 - DISMOUNT
AH = 20h
AL = drive (00h = A:, etc. or 7Fh for all removable drives???
or FFh for all drives)
Return: AX = status (0000h successful)
Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
Associates, Inc.
Desc: flush any dirty buffers for the specified drive(s) and then discard
those sector buffers
SeeAlso: AH=21h"QUICKCACHE",AH=22h"QUICKCACHE",AH=28h
--------d-1321-------------------------------
INT 13 - HARD DISK - PS/1 and newer PS/2 - READ MULTIPLE DISK SECTORS
AH = 21h
AL = number of sectors to write
CH = low byte of 12-bit cylinder number
CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
DL = drive number (80h,81h)
ES:BX -> buffer for data to be read
Return: CF clear if successful
ES:BX buffer filled
CF set on error
AH = status (see #0166 at AH=01h)
Desc: read from the disk using the Multiple Block mode available on newer
IDE drives and some hard disk controllers, which generates an
interrupt only after the end of transferring a group of sectors
rather than after each sector
Notes: must call AH=24h"PS/1" before using this function
input values in CL and DH are not range-checked
the byte at address 0040h:0074h is set to the status of the operation
SeeAlso: AH=02h,AH=22h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
--------c-1321-------------------------------
INT 13 u - QUICKCACHE II v4.20 - FLUSH CACHE
AH = 21h
Return: AX = status (0000h successful)
Desc: immediately write all dirty sectors back to disk
SeeAlso: AH=25h"QUICKCACHE",AH=2Eh,AH=2Fh
--------d-1322-------------------------------
INT 13 - HARD DISK - PS/1 and newer PS/2 - WRITE MULTIPLE DISK SECTORS
AH = 22h
AL = number of sectors to write
CH = low byte of 12-bit cylinder number
CL = starting sector (bits 0-5) and bits 8-9 of cylinder (bits 6-7)
DH = head number (bits 0-5) and bits 10-11 of cylinder (bits 6-7)
DL = drive number (80h,81h)
ES:BX -> buffer containing data to be written
Return: CF clear if successful
CF set on error
AH = status (see #0166 at AH=01h)
Desc: write to the disk using the Multiple Block mode available on newer
IDE drives and some hard disk controllers, which generates an
interrupt only after the end of transferring a group of sectors
rather than after each sector
Notes: must call AH=24h"PS/1" before using this function
input values in CL and DH are not range-checked
the byte at address 0040h:0074h is set to the status of the operation
SeeAlso: AH=03h,AH=21h"PS/1",AH=23h"PS/1",AH=24h"PS/1"
--------c-1322-------------------------------
INT 13 u - QUICKCACHE II v4.20 - ENABLE/DISABLE CACHE
AH = 22h
AL = new state (00h disabled, 01h enabled)
Return: AX = status (0000h successful)
Note: enables/disables caching of all drives
SeeAlso: AH=2Ch,AH=2Dh,AH=32h,AH=33h,AH=A3h,AH=A4h
--------d-1323-------------------------------
INT 13 U - HARD DISK - PS/1 and newer PS/2 - SET CONTROLLER FEATURES REGISTER
AH = 23h
AL = feature number (see #0198)
DL = drive number (80h,81h)
???
Return: CF clear if successful
CF set on error
AH = status (see #0166 at AH=01h)
SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=24h"PS/1",AH=25h"PS/1"
(Table 0198)
Values for PS/1 hard disk feature number:
01h select 8-bit data transfers instead of 16-bit
02h enable write cache
22h Write Same, user-specified area
33h disable retries
44h set number of ECC bytes for read long/write long (see AH=0Ah,AH=0Bh)
54h set cache segments
55h disable lookahead
66h disable reverting to power-on defaults
77h disable error correctioni
81h select 16-bit data transfers (default)
82h disable write cache
88h enable error correction (default)
99h enable retries (default)
AAh enable lookahead
BBh set ECC length for read long/write long to four bytes
CCh enable reverting to power-on defaults
DDh Write Same, entire disk
SeeAlso: #P175
--------c-1323-------------------------------
INT 13 U - QUICKCACHE II v4.20 - GET ??? ADDRESS
AH = 23h
Return: AX = status (0000h successful)
ES = segment of ??? data
--------d-1324-------------------------------
INT 13 - HARD DISK - PS/1 and newer PS/2 - SET MULTIPLE MODE
AH = 24h
AL = number of sectors per block (2,4,8,16)
DL = drive number (80h,81h)
Return: CF clear if successful
CF set onerror
AH = status (see #0166 at AH=01h)
Desc: specify how many sectors the controller should transfer as a group
between operation-complete interrupts when using the Read Multiple
and Write Multiple functions (AH=21h,AH=22h)
Notes: set the number of sectors to 0 to disable multiple-transfer mode
the maximum value for the block size depends on the fixed disk
drive type. The value is stored in byte 15h of the fixed disk
drive parameter table that is created by POST.
the byte at address 0040h:0074h is set to status of operation.
SeeAlso: AH=21h"PS/1",AH=22h"PS/1",AH=23h"PS/1",AH=25h"PS/1"
--------c-1324-------------------------------
INT 13 u - QUICKCACHE II v4.20 - SET SECTORS
AH = 24h
BX = new number of sector buffers in cache
Return: AX = status
0000h successful
0001h failed--size adjusted
8000h cache cannot be resized while enabled
SeeAlso: AH=36h
--------d-1325-------------------------------
INT 13 - HARD DISK - PS/1 and newer PS/2 - IDENTIFY DRIVE
AH = 25h
DL = drive number (80h,81h)
ES:BX-> 512 byte buffer for reply packet
Return: CF clear if successful
CF set on error
AH = status (see #0166 at AH=01h)
buffer filled with ATA/IDE-style drive information block (see #0199)
Desc: retrieves the 256 words of drive data stored on an IDE hard disk
Notes: the byte at address 0040h:0074h is set to the status of the operation
IBM officially classifies this function as optional
SeeAlso: AH=23h"PS/1"
Format of drive information block:
Offset Size Description (Table 0199)
00h WORD general drive configuration (see #0200)
02h WORD number of cylinders
04h WORD reserved
06h WORD number of heads
08h WORD number of unformatted bytes per track
0Ah WORD number of unformatted bytes per sector
0Ch WORD number of sectors per track
0Eh 6 BYTEs vendor unique
14h 20 BYTEs serial number in ASCII, 0000h=not specified)
28h WORD buffer type
2Ah WORD buffer size in 512 byte increments (0000h=not specified)
2Ch WORD number of ECC bytes passed on Read/Write Long cmds
0000h = not specified
2Eh 8 BYTEs firmware revision in ASCII, 0000h=not specified
36h 40 BYTEs model number in ASCII, 0000h=not specified
5Eh WORD bits 15-8 Vendor Unique
bits 7-0 00h = Read/Write Multiple commands not implemented
xxh = Maximum number of sectors that can be
transferred per interrupt on Read and Write
Multiple commands
60h WORD 0000h = cannot perform doubleword I/O
0001h = can perform doubleword I/O
62h WORD capabilities
bit 15-9 0=reserved
bit 8 1=DMA Supported
bit 7-0 Vendor Unique
64h WORD reserved
66h WORD bits 15-8 PIO data transfer cycle timing mode
bits 7-0 Vendor Unique
68h WORD bits 15-8 DMA data transfer cycle timing mode
bits 7-0 Vendor Unique
6Ah WORD bits 15-1 reserved
bit 0 1=the fields reported in tranlation mode are valid
0=the fields reported in translation mode may be valid
6Ch WORD number of current cylinders
6Eh WORD number of current heads
70h WORD number of current sectors per track
72h DWORD current capacity in sectors
76h WORD reserved
78h 136 BYTEs not defined by ATA spec 2.6
100h 64 BYTEs vendor unique
140h 96 BYTEs reserved
Note: the above description is as in the ATA (AT Attachment) Specification.
SeeAlso: #P157
Bitfields for general drive configuration:
Bit(s) Description (Table 0200)
15 0 reserved for non-magnetic drives
14 format speed tolerance gap required
13 track offset option available
12 data strobe offset option available
11 rotational speed tolerance is > 0.5%
10 disk transfer rate > 10 Mbs
9 disk transfer rate > 5Mbs but <= 10Mbs
8 disk transfer rate <= 5Mbs
7 removable cartridge drive
6 fixed drive
5 spindle motor control option implemented
4 head switch time > 15 usec
3 not MFM encoded
2 soft sectored
1 hard sectored
0 reserved (0)
--------c-1325-------------------------------
INT 13 u - QUICKCACHE II v4.20 - SET FLUSH INTERVAL
AH = 25h
BX = interval
Return: AX = status (0000h successful)
Desc: specify how often the cache should write dirty buffers to disk when
buffered writes are enabled
SeeAlso: AH=21h"QUICKCACHE",AH=2Ch,AH=2Eh
--------c-1326-------------------------------
INT 13 U - QUICKCACHE II v4.20 - UNINSTALL
AH = 26h
Return: AX = status
0000h successful
0001h-00FFh interrupt vector which was hooked by another TSR
SeeAlso: AH=27h
--------c-1327--BX0000-----------------------
INT 13 u - QUICKCACHE II v4.20 - INSTALLATION CHECK
AH = 27h
BX = 0000h
Return: AX = 0000h if installed
BX nonzero if installed
BH = major version
BL = binary minor version
Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
Associates, Inc.
SeeAlso: AH=26h,AH=A0h,INT 16/AX=FFA5h/CX=1111h
--------c-1328-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET AUTOMATIC DISMOUNT
AH = 28h
AL = new state (00h disabled, 01h enabled)
Return: AX = status (0000h successful)
SeeAlso: AH=20h"QUICKCACHE"
--------c-1329-------------------------------
INT 13 U - QUICKCACHE II v4.20 - NOP
AH = 29h
Return: AX = 0000h
--------c-132A-------------------------------
INT 13 u - QUICKCACHE II v4.20 - SET BUFFER SIZE
AH = 2Ah
AL = buffer size (1-30)
Return: AX = status (0000h successful)
Desc: specify the number of cache sector buffers to dedicate to buffered read
and write operations
SeeAlso: AH=2Ch,AH=2Dh,AH=39h,AH=3Ah
--------c-132B-------------------------------
INT 13 U - QUICKCACHE II v4.20 - DRIVE ACCESS SOUNDS
AH = 2Bh
AL = new state (00h disabled, 01h enabled)
Return: AX = status (0000h successful)
--------c-132C-------------------------------
INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED WRITES
AH = 2Ch
AL = new state (00h disabled, 01h enabled)
Return: AX = status (0000h successful)
Desc: specify whether the cache should delay disk writes
Note: this function enables or disables delayed writes for all drives; use
AH=38h to change a single drive
SeeAlso: AH=25h"QUICKCACHE",AH=2Dh,AH=2Eh,AH=38h
--------c-132D-------------------------------
INT 13 u - QUICKCACHE II v4.20 - SET BUFFERED READ
AH = 2Dh
AL = new state (00h disabled, 01h enabled)
Return: AX = status (0000h successful)
Desc: specify whether the cache should attempt to read ahead of actual
requests
Note: this function enables or disables read-ahead for all drives; use AH=37h
to change a single drive
SeeAlso: AH=2Ch,AH=37h
--------c-132E-------------------------------
INT 13 u - QUICKCACHE II v4.20 - SET FLUSH COUNT
AH = 2Eh
BX = flush count
Return: AX = status (0000h successful)
Desc: specify how many dirty sectors the cache should write after each flush
interval (see AH=25h"QUICKCACHE") when buffered writes are enabled
SeeAlso: AH=21h"QUICKCACHE",AH=25h"QUICKCACHE",AH=2Ch
--------c-132F-------------------------------
INT 13 - QUICKCACHE II v4.20 - FORCE IMMEDIATE INCREMENTAL FLUSH
AH = 2Fh
Return: AX = status (0000h successful)
Desc: immediately flush up to "flushcount" dirty sectors to disk as if the
flush interval had expired
SeeAlso: AH=21h"QUICKCACHE"
--------c-1330-------------------------------
INT 13 u - QUICKCACHE II v4.20 - GET INFO
AH = 30h
AL = what to get
00h system info (see #0201)
01h drive info (see #0202)
02h access frequency (array of 30 words)
03h drive index
(array of 32 bytes indicating BIOS drive for DOS drive)
DS:DX -> buffer for info
Return: AX = status (0000h successful, 8000h invalid info specifier)
Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
Associates, Inc.
Format of QUICKCACHE II system info:
Offset Size Description (Table 0201)
00h BYTE flag: cache enabled
01h BYTE flag: buffered writes enabled
02h BYTE flag: buffered reads enabled
03h BYTE flag: sounds enabled
04h BYTE flag: autodismount enabled
05h BYTE ???
06h BYTE flag: ???
07h BYTE flag: ???
08h BYTE flag: "em_assigned"
09h BYTE flag: emulated EMS
0Ah BYTE single sector bonus
0Bh BYTE "sticky_max"
0Ch BYTE write sector bonus
0Dh BYTE bonus threshold
0Eh WORD flush interval
10h WORD flush count
12h WORD reserve pool size
14h WORD remaining space in reserve pool
16h WORD required free memory
18h WORD total cache sectors
1Ah WORD dirty cache sectors
1Ch BYTE trace buffer size
1Dh BYTE reserved (padding)
SeeAlso: #0202
Format of QUICKCACHE II drive info [16-element array, one element]:
Offset Size Description (Table 0202)
00h BYTE DOS drive number
01h BYTE BIOS drive number
02h BYTE maximum sector number
03h BYTE maximum head number
04h BYTE read buffer size
05h BYTE write buffer size
06h BYTE last status
07h BYTE flag: enabled
08h BYTE flag: buffered write enabled
09h BYTE flag: buffered read enabled
0Ah BYTE flag: in use (drive info is valid)
0Bh BYTE flag: cylinder flush
0Ch BYTE reserved (padding)
0Dh BYTE sectors per track
0Eh WORD sector size
10h WORD sectors assigned
12h WORD dirty sectors
14h WORD reserved sectors
16h WORD number of read errors
18h WORD number of write errors
1Ah DWORD "rio_count"
1Eh DWORD number of cache misses
22h DWORD "wio_count"
26h DWORD "dio_count"
SeeAlso: #0201
--------c-1331-------------------------------
INT 13 U - QUICKCACHE II v4.20 - RESERVE MEMORY
AH = 31h
BX = number of paragraphs of conventional memory to reserve for apps
Return: AX = status (0000h successful)
--------c-1332-------------------------------
INT 13 U - QUICKCACHE II v4.20 - ENABLE CACHING FOR SPECIFIC DRIVE
AH = 32h
AL = drive number (00h=A:)
Return: AX = status (0000h successful)
SeeAlso: AH=22h"QUICKCACHE",AH=33h
--------c-1333-------------------------------
INT 13 U - QUICKCACHE II v4.20 - DISABLE CACHING FOR SPECIFIC DRIVE
AH = 33h
AL = drive number (00h=A:)
Return: AX = status (0000h successful)
SeeAlso: AH=22h"QUICKCACHE",AH=32h
--------c-1334-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SECTOR LOCKING
AH = 34h
AL = function
00h end sector locking/unlocking
01h lock all accessed sectors into cache
02h unlock all accessed sectors and discard from cache
Return: AX = status (0000h successful)
SeeAlso: AH=20h"QUICKCACHE",AH=35h
--------c-1335-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET LOCK POOL SIZE
AH = 35h
BX = number of sectors in lock pool
Return: AX = status (0000h successful)
Desc: specify the number of cache sector buffers which may be dedicated to
data locked into the cache
SeeAlso: AH=34h
--------c-1336-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET TRACE BUFFER SIZE
AH = 36h
AL = new size of trace buffer
Return: AX = status (0000h successful)
Note: called with AL=05h during an INT 13/AH=24h"QUICKCACHE" call
SeeAlso: AH=24h"QUICKCACHE"
--------c-1337-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED READS FOR SPECIFIC DRIVE
AH = 37h
AL = new state (00h disabled, else enabled)
DL = drive number (00h = A:)
Return: AX = status (0000h successful)
SeeAlso: AH=2Dh,AH=38h
--------c-1338-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET BUFFERED WRITES FOR SPECIFIC DRIVE
AH = 38h
AL = new state (00h disabled, else enabled)
DL = drive number (00h = A:)
Return: AX = status (0000h successful)
SeeAlso: AH=2Ch,AH=37h
--------c-1339-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET READ BUFFER SIZE FOR SPECIFIC DRIVE
AH = 39h
AL = new size of read buffer
DL = drive number (00h = A:)
Return: AX = status (0000h successful)
Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
Associates, Inc.
SeeAlso: AH=2Ah,AH=3Ah
--------c-133A-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET WRITE BUFFER SIZE FOR SPECIFIC DRIVE
AH = 3Ah
AL = new size of write buffer
DL = drive number (00h = A:)
Return: AX = status (0000h successful)
SeeAlso: AH=2Ah,AH=39h
--------c-133B-------------------------------
INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
AH = 3Bh
AL = new state of ??? (01h enabled, else disabled)
Return: AX = status (0000h successful)
Note: is affected by the flag reported at offset 05h of the system info
returned by AH=30h, and sets the flag at offset 06h
SeeAlso: AH=3Ch
--------c-133C-------------------------------
INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE ???
AH = 3Ch
AL = new state of ??? (01h enabled, else disabled)
Return: AX = status (0000h successful)
Note: is affected by the flag reported at offset 05h of the system info
returned by AH=30h, and sets the flag at offset 07h
SeeAlso: AH=3Bh
--------c-133D-------------------------------
INT 13 U - QUICKCACHE II v4.20 - ENABLE/DISABLE CYLINDER FLUSH FOR DRIVE
AH = 3Dh
AL = new state (01h enabled, else disabled)
DL = drive number (00h = A:)
Return: AX = status (0000h successful)
--------c-133E-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET SINGLE-SECTOR BONUS
AH = 3Eh
AL = new value for bonus
Return: AX = status (0000h successful)
Desc: specify the bonus score to give to single-sector transfers in order to
keep those sectors in the cache longer
--------c-133F-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET BONUS THRESHOLD
AH = 3Fh
AL = new value for bonus threshold
Return: AX = status (0000h successful)
--------c-1340-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SET "sticky_max"
AH = 40h
AL = new value for "sticky_max"
Return: AX = status (0000h successful)
SeeAlso: AH=41h"QUICKCACHE"
--------d-1341--BX55AA-----------------------
INT 13 - IBM/MS INT 13 Extensions - INSTALLATION CHECK
AH = 41h
BX = 55AAh
DL = drive (80h-FFh)
Return: CF set on error (not supported)
AH = 01h (invalid function)
CF clear if successful
BX = AA55h if installed
AH = major version of extensions
(01h = 1.x, 20h = 2.0/EDD-1.0, 21h = 2.1/EDD-1.1)
AL = internal use
CX = API subset support bitmap (see #0203)
DH = extension version (v2.0+ ??? -- not present in 1.x)
Note: the Phoenix Enhanced Disk Drive Specification v1.0 uses version 2.0 of
the INT 13 Extensions API
SeeAlso: AH=42h"INT 13 Ext",AH=48h"INT 13 Ext"
Bitfields for IBM/MS INT 13 Extensions API support bitmap:
Bit(s) Description (Table 0203)
0 extended disk access functions (AH=42h-44h,47h,48h) supported
1 removable drive controller functions (AH=45h,46h,48h,49h,INT 15/AH=52h)
supported
2 enhanced disk drive (EDD) functions (AH=48h,AH=4Eh) supported
extended drive parameter table is valid (see #0205,#0208)
3-15 reserved (0)
--------c-1341-------------------------------
INT 13 U - QUICKCACHE II v4.20 - SAVE/RESTORE ???
AH = 41h
AL = direction
01h save to file
else restore from file
ES:DI -> 1024-byte buffer for ???
Return: AX = status (0000h successful, 8000h failed)
Program: QUICKCACHE II is a shareware disk cache by P.R. Glassel and
Associates, Inc.
SeeAlso: AH=40h"QUICKCACHE"
--------d-1342-------------------------------
INT 13 - IBM/MS INT 13 Extensions - EXTENDED READ
AH = 42h
DL = drive number
DS:SI -> disk address packet (see #0204)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (see #0166)
disk address packet's block count field set to number of blocks
successfully transferred
SeeAlso: AH=02h,AH=41h"INT 13 Ext",AH=43h"INT 13 Ext"
Format of disk address packet:
Offset Size Description (Table 0204)
00h BYTE 10h (size of packet)
01h BYTE reserved (0)
02h WORD number of blocks to transfer (max 007Fh for Phoenix EDD)
04h DWORD -> transfer buffer
08h QWORD starting absolute block number
(for non-LBA devices, compute as
(Cylinder*NumHeads + SelectedHead) * SectorPerTrack +
SelectedSector - 1
--------N-134257DX1234-----------------------
INT 13 U - Beame&Whiteside BWLPD - INSTALLATION CHECK
AX = 4257h ("BW")
DX = 1234h
Return: BX = 414Ch if installed
Program: BWLPD is the printer daemon from the BW-NFS package
SeeAlso: INT 62/AH=00h"ETHDEV"
--------d-1343-------------------------------
INT 13 - IBM/MS INT 13 Extensions - EXTENDED WRITE
AH = 43h
AL = write flags
---v1.0,2.0---
bit 0: verify write
bits 7-1 reserved (0)
---v2.1---
00h,01h write without verify
02h write with verify
DL = drive number
DS:SI -> disk address packet (see #0204)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (see #0166)
disk address packet's block count field set to number of blocks
successfully transferred
Note: the BIOS returns CF set/AH=01h (invalid function) if verify is
requested but not supported
SeeAlso: AH=03h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=44h
--------d-1344-------------------------------
INT 13 - IBM/MS INT 13 Extensions - VERIFY SECTORS
AH = 44h
DL = drive number
DS:SI -> disk address packet (see #0204)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (see #0166)
disk address packet's block count field set to number of blocks
successfully verified
SeeAlso: AH=04h,AH=41h"INT 13 Ext",AH=42h"INT 13 Ext",AH=47h
--------d-1345-------------------------------
INT 13 - IBM/MS INT 13 Extensions - LOCK/UNLOCK DRIVE
AH = 45h
AL = operation
00h lock media in drive
01h unlock media
02h check lock status
DL = drive number
Return: CF clear if successful
AH = 00h
AL = lock state (00h = unlocked)
CF set on error
AH = error code (see #0166)
Notes: this function is required to be supported for any removable drives
numbered 80h or higher
up to 255 locks may be placed on a drive, and the media will not
be physically unlocked until all locks have been removed
SeeAlso: AH=41h"INT 13 Ext",AH=46h,AH=49h,INT 15/AH=52h"INT 13 Extensions"
--------d-1346-------------------------------
INT 13 - IBM/MS INT 13 Extensions - EJECT MEDIA
AH = 46h
AL = 00h (reserved)
DL = drive number
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (see #0166)
SeeAlso: AH=49h,INT 15/AH=52h"INT 13 Extensions"
--------d-1347-------------------------------
INT 13 - IBM/MS INT 13 Extensions - EXTENDED SEEK
AH = 47h
DL = drive number
DS:SI -> disk address packet (see #0204)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (see #0166)
SeeAlso: AH=0Ch,AH=42h"INT 13 Ext"
--------d-1348-------------------------------
INT 13 - IBM/MS INT 13 Extensions - GET DRIVE PARAMETERS
AH = 48h
DL = drive (80h-FFh)
DS:SI -> buffer for drive parameters (see #0205)
Return: CF clear if successful
AH = 00h
DS:SI buffer filled
CF set on error
AH = error code (see #0166)
SeeAlso: AH=08h,AH=41h,AH=49h
Format of IBM/MS INT 13 Extensions drive parameters:
Offset Size Description (Table 0205)
00h WORD (call) size of buffer (001Ah for v1.x, 001Eh for v2.x)
(ret) size of returned data
02h WORD information flags (see #0206)
04h DWORD number of physical cylinders on drive
08h DWORD number of physical heads on drive
0Ch DWORD number of physical sectors per track
10h QWORD total number of sectors on drive
18h WORD bytes per sector
---v2.0+ ---
1Ah DWORD -> EDD configuration parameters (see #0208)
FFFFh:FFFFh if not available
Note: if the size is less than 30 on call, the final DWORD will not be
returned by a v2.x implementation
SeeAlso: #0207,#2867
Bitfields for IBM/MS INT 13 Extensions information flags:
Bit(s) Description (Table 0206)
0 DMA boundary errors handled transparently
1 cylinder/head/sectors-per-track information is valid
2 removable drive
3 write with verify supported
4 drive has change-line support (required if drive >= 80h is removable)
5 drive can be locked (required if drive >= 80h is removable)
6 CHS information set to maximum supported values, not current media
15-7 reserved (0)
SeeAlso: #0205
Format of Phoenix Enhanced Disk Drive Spec translated drive parameter table:
Offset Size Description (Table 0207)
00h WORD number of cylinders
02h BYTE number of heads
03h BYTE A0h (signature indicating translated table)
04h BYTE number of physical sectors per track
05h WORD starting write precompensation cylinder number
07h BYTE reserved
08h BYTE control byte (see #2869 at INT 41"DISK 0")
09h WORD number of physical cylinders
0Bh BYTE number of physical heads
0Ch WORD cylinder number of landing zone
0Eh BYTE number of logical sectors per track
0Fh BYTE checksum
Program: the Phoenix Enhanced Disk Drive Specification is an addition to the
IBM/MS INT 13 extensions
SeeAlso: #0208,#2867
Format of Phoenix Enhanced Disk Drive Spec Fixed Disk Parameter Table:
Offset Size Description (Table 0208)
00h WORD physical I/O port base address
02h WORD disk-drive control port address
04h BYTE drive flags (see #0209)
05h BYTE proprietary information
bits 7-4 reserved (0)
bits 3-0: Phoenix proprietary (used by BIOS)
06h BYTE IRQ (bits 3-0; bits 7-4 reserved and must be 0)
07h BYTE sector count for multi-sector transfers
08h BYTE DMA control
bits 7-4: DMA type (0-2) as per ATA-2 specification
bits 3-0: DMA channel
09h BYTE programmed I/O control
bits 7-4: reserved (0)
bits 3-0: PIO type (1-4) as per ATA-2 specification
0Ah WORD drive options (see #0210)
0Ch 2 BYTEs reserved (0)
0Eh BYTE extension revision level (high nybble=major, low nybble=minor)
(currently 10h for v1.0 and 11h for v1.1)
0Fh BYTE 2's complement checksum of bytes 00h-0Eh
8-bit sum of all bytes 00h-0Fh should equal 00h
SeeAlso: #0207
Bitfields for Phoenix Enhanced Disk Drive Spec drive flags:
Bit(s) Description (Table 0209)
7 reserved (1)
6 LBA enabled
5 reserved (1)
4 drive is slave
3-0 reserved (0)
SeeAlso: #0208,#0210
Bitfields for Phoenix Enhanced Disk Drive Spec drive options:
Bit(s) Description (Table 0210)
0 fast PIO enabled
1 fast DMA access enabled
2 block PIO (multi-sector transfers) enabled
3 CHS translation enabled
4 LBA translation enabled
5 removable media
6 ATAPI device (CD-ROM)
7 32-bit transfer mode
---v1.1---
8 ATAPI device uses DRQ to signal readiness for packet command
(must be 0 if bit 6 is 0)
10-9 translation type (must be 00 if bit 3 is 0)
00 Phoenix bit-shifting translation
01 LBA-assisted translation
10 reserved
11 proprietary translation
15-8 reserved
SeeAlso: #0208,#0209
--------d-1349-------------------------------
INT 13 - IBM/MS INT 13 Extensions - EXTENDED MEDIA CHANGE
AH = 49h
DL = drive number
Return: CF clear if media has not changed
AH = 00h
CF set if media may have changed
AH = 06h (see #0166)
Note: unlike AH=16h, any drive number may be specified
SeeAlso: AH=16h,AH=41h"INT 13 Ext",AH=46h
--------d-134A-------------------------------
INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION
AH = 4Ah
AL = 00h
DS:SI -> specification packet (see #0211)
Return: CF clear if successful
CF set on error (drive will not be in emulation mode)
AX = return codes
SeeAlso: AH=48h,AX=4B00h,AH=4Ch,AH=4Dh
Format of Bootable CD-ROM Specification Packet:
Offset Size Description (Table 0211)
00h BYTE size of packet in bytes (13h)
01h BYTE boot media type (see #0212)
02h BYTE drive number
00h floppy image
80h bootable hard disk
81h-FFh nonbootable or no emulation
03h BYTE CD-ROM controller number
04h DWORD Logical Block Address of disk image to emulate
08h WORD device specification (see also #0212)
(IDE) bit 0: drive is slave instead of master
(SCSI) bits 7-0: LUN and PUN
bits 15-8: bus number
0Ah WORD segment of 3K buffer for caching CD-ROM reads
0Ch WORD load segment for initial boot image
if 0000h, load at segment 07C0h
0Eh WORD number of 512-byte virtual sectors to load
(only valid for AH=4Ch)
10h BYTE low byte of cylinder count (for INT 13/AH=08h)
11h BYTE sector count, high bits of cylinder count (for INT 13/AH=08h)
12h BYTE head count (for INT 13/AH=08h)
SeeAlso: #0213,AH=08h
Bitfields for Bootable CD-ROM boot media type:
Bit(s) Description (Table 0212)
3-0 media type
0000 no emulation
0001 1.2M diskette
0010 1.44M diskette
0011 2.88M diskette
0100 hard disk (drive C:)
other reserved
5-4 reserved (0)
6 image contains ATAPI driver
7 image contains SCSI driver(s)
SeeAlso: #0211
--------d-134B00-----------------------------
INT 13 - Bootable CD-ROM - TERMINATE DISK EMULATION
AX = 4B00h
DL = drive number or 7Fh to terminate all emulations
DS:SI -> empty specification packet (see #0211)
Return: CF clear if successful
CF set on error (drive will still be in emulation mode)
AX = return codes
DS:SI specification packet filled
SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
--------d-134B01-----------------------------
INT 13 - Bootable CD-ROM - GET STATUS
AX = 4B01h
DL = drive number
DS:SI -> empty specification packet (see #0211)
Return: CF clear if successful
CF set on error
AX = return codes
DS:SI specification packet filled
Note: same as AX=4B00h, but does not terminate emulation
SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch,AH=4Dh
--------d-134C-------------------------------
INT 13 - Bootable CD-ROM - INITIATE DISK EMULATION AND BOOT
AH = 4Ch
AL = 00h
DS:SI -> specification packet (see #0211)
Return: never, if successful
CF set (error while attempting to boot)
AX = error codes
SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Dh
--------d-134D00-----------------------------
INT 13 - Bootable CD-ROM - RETURN BOOT CATALOG
AX = 4D00h
DS:SI -> command packet (see #0213)
Return: CF clear if successful
CF set on error
AX = return codes
SeeAlso: AH=48h,AH=4Ah,AX=4B00h,AH=4Ch
Format of Bootable CD-ROM "get boot catalog" command packet:
Offset Size Description (Table 0213)
00h BYTE size of packet in bytes (08h)
01h BYTE number of sectors of boot catalog to read
02h DWORD -> buffer for boot catalog
06h WORD first sector in boot catalog to transfer
SeeAlso: #0211
--------d-134E-------------------------------
INT 13 - IBM/MS INT 13 Extensions v2.1 - SET HARDWARE CONFIGURATION
AH = 4Eh
AL = function
00h enable prefetch
01h disable prefetch
02h set maximum PIO transfer mode
03h set PIO mode 0
04h set default PIO transfer mode
05h enable INT 13 DMA maximum mode
06h disable INT 13 DMA
DL = drive number
Return: CF clear if successful
AH = 00h
AL = status
00h command was safe (only affected specified drive)
01h other devices are affected
CF set on error
AH = error code (see #0166)
Note: DMA and PIO modes are mutually exclusive, so selecting DMA disables
PIO (for either the specified device or all devices on that
controller), and selecting PIO disables DMA
SeeAlso: AH=41h"INT 13 Extensions"
--------v-135001------------------------
INT 13 - VIRUS - "Andropinis" - INSTALLATION CHECK
AX = 5001h
Return: AX = 0150h if resident
SeeAlso: AX=FD50h"VIRUS",INT 21/AX=0B56h
--------v-135342CX0001-----------------------
INT 13 - ScanBoot - INSTALLATION CHECK
AX = 5342h ("SB")
CX = 0001h
DX = 0000h
Return: CF clear if ScanBoot installed
AX = 0000h
CX = serial number ("SW" if shareware release)
DX = version
BX,SI,ES destroyed
Program: ScanBoot is a virus-detection TSR by PanSoft
--------d-135501-----------------------------
INT 13 - Seagate ST01/ST02 - Inquiry
AX = 5501h
DH = number of bytes to transfer
DL = drive ID (80h, 81h, ...)
ES:BX -> buffer for results
Return: ES:BX buffer filled with the Inquiry results
Notes: the ST01/ST02 BIOS does not return any success/failure indication,
so all commands must be assumed to have been successful
the ST01/ST02 BIOS always maps its drives after the previous BIOS
drives without changing the BIOS drive count at 0040h:0075h
this command is identical to the SCSI Inquiry command
--------d-135502-----------------------------
INT 13 - Seagate ST01/ST02 - RESERVED
AX = 5502h
--------d-135503-----------------------------
INT 13 - Seagate ST01/ST01 - Set Device Type Qualifier (DTQ)
AX = 5503h
DH = DTQ byte (see #0214)
DL = drive ID (80h, 81h, ...)
Return: nothing
Bitfields for DTQ byte:
Bit(s) Description (Table 0214)
7 reserved
6 SCSI drive attached
5 reserved
4 selected drive is ST225N/NP (Paired)
3 selected drive is ST225N
2 Host Adapter checks parity on the selected drive
1 selected drive has been installed
0 Seagate installation software present
--------d-135504-----------------------------
INT 13 U - Seagate - ??? - RETURN IDENTIFICATION
AX = 5504h
DX = drive (bit 7 set for hard disk)
Return: CF clear if successful
AX = 4321h if ST01/ST02h
AX = 4322h if ??? Seagate controller
CF set on error
SeeAlso: AX=5505h,AX=5514h
--------d-135504-----------------------------
INT 13 - Seagate ST01/ST02 - RETURN IDENTIFICATION
AX = 5504h
DL = drive ID (80h, 81h, ...)
Return: AX = 4321h
BL = selected drive number (00h, 01h)
BH = number of drives attached to Host Adapter (max. 2)
--------d-135505-----------------------------
INT 13 - Seagate - ??? - PARK HEADS
AX = 5505h
DX = drive (bit 7 set for hard disk)
Return: CF clear if successful
CF set on error
SeeAlso: AX=5504h,AX=5515h
--------d-135505-----------------------------
INT 13 - Seagate ST01/ST02 - PARK HEADS
AX = 5505h
DL = drive ID (80h, 81h, ...)
DH = subfunction
00h park heads (SCSI Stop command)
01h un-park heads (SCSI Start command)
Return: nothing
--------d-135506-----------------------------
INT 13 - Seagate ST01/ST02 - SCSI Bus Parity
AX = 5506h
DL = drive ID (80h, 81h, ...)
DH = subfunction
00h disable parity check
01h enable parity check
02h return current parity setting
Return: AL = status
00h parity checking disabled
01h parity checking enabled
--------d-135507-----------------------------
INT 13 - Seagate ST01/ST02 - RESERVED FUNCTIONS
AX = 5507h to 550Dh
Note: officially listed as "reserved"
--------d-135514-----------------------------
INT 13 U - Seagate - ???
AX = 5514h
DX = drive (bit 7 set for hard disk)
Return: CF clear if successful
CF set on error
AX = return value (FEBEh,FEBFh,FEDAh,FEDBh)
SeeAlso: AX=5504h,AX=5515h
--------d-135515-----------------------------
INT 13 U - Seagate - PARK HEADS???
AX = 5515h
DX = drive (bit 7 set for hard disk)
Return: CF clear if successful
CF set on error
Note: appears to be identical to AX=5505h
SeeAlso: AX=5504h,AX=5505h
--------d-1359-------------------------------
INT 13 - SyQuest - Generic SCSI pass through
AH = 59h
CX = HOST_ID, 0-based
DX = 80h
ES:BX pointer to SCSI structure (see #0215)
Return: CF clear
AH = 95h
SeeAlso: AH=12h"SyQuest",AH=13h"SyQuest",AH=1Fh"SyQuest"
Format of SyQuest SCSI structure:
Offset Size Description (Table 0215)
00h WORD opcode (see #0216)
02h BYTE target's SCSI ID
03h BYTE target's logical unit number
04h BYTE data direction (00h no data xfer, 01h data in, FFh data out)
05h BYTE host status
00h successful
01h selection time out
02h data over-run or under-run
06h BYTE target status at command completion
00h successful
02h check status
08h busy
07h BYTE command data block length
08h DWORD request data length
0Ch DWORD result data length (actual length of data transferred)
10h DWORD -> CDB (see #2907,#2908,#2909)
14h DWORD -> data buffer
Note: The handler does not perform a 'Request Sense' command if there was an
error
(Table 0216)
Values for SCSI opcode:
00h verify interface
clears carry flag and returns if function is available
01h returns the ID of the INT 13h Handler in a NULL terminated string of
length less than 40 byte including the terminator.
The string is stored in the buffer pointed by p_buf.
02h device mapping info. The caller provides a one byte buffer.
The handler stores the Int 13h Device ID (80h or above) in the buffer.
It stores 0 if that target does not exists.
03h execute SCSI command
04h device reset
05h SCSI bus reset
SeeAlso: #0215
--------d-1370-------------------------------
INT 13 - Priam EDVR.SYS DISK PARTITIONING SOFTWARE???
AH = 70h
???
Return: ???
Note: Priam's EDISK.EXE (FDISK replacement) and EFMT.EXE (low-level
formatting program) make this call, presumably to EDVR.SYS (the
partitioning driver)
SeeAlso: AH=ADh
----------1375-------------------------------
INT 13 - ???
AH = 75h
???
Return: AH = ???
???
Note: intercepted by PC-Cache (v5.1 only)
----------1376-------------------------------
INT 13 - ???
AH = 76h
???
Return: AH = ???
???
Note: intercepted by PC-Cache (v5.1 only)
--------c-137B00-----------------------------
INT 13 - NOW! v3.05 - GET INFORMATION
AX = 7B00h
CX:DX -> 1F8h-byte buffer for information record (see #0217)
Return: AX = 0000h
BX = segment of main resident code
ES = ???
Program: NOW! is a disk cache by Vertisoft Systems, Inc.
SeeAlso: AX=7B02h,AH=EFh
Format of NOW! information record:
Offset Size Description (Table 0217)
00h 80 BYTEs name of directory from which NOW! was started
50h 424 BYTEs ???
81h ? BYTEs array of bytes for ???
F7h 250 BYTEs array of 25 entries, one per drive???
Offset Size Description
00h 2 BYTEs ???
02h WORD ???
04h WORD ???
06h 4 BYTEs ???
1F1h 7 BYTEs ???
--------c-137B01-----------------------------
INT 13 - NOW! v3.05 - ???
AX = 7B01h
Return: DX = segment of ???
SeeAlso: AX=7B00h
--------c-137B02-----------------------------
INT 13 - NOW! v3.05 - SET INFORMATION
AX = 7B02h
BX = segment of ??? (10h above a PSP)
CX:DX -> 1F8h-byte information record (see #0217)
Return: ???
Program: NOW! is a disk cache by Vertisoft Systems, Inc.
Note: NOW! grabs the INT 24h value from the PSP reached via the segment in
BX
SeeAlso: AX=7B00h
--------c-137B03-----------------------------
INT 13 - NOW! v3.05 - ???
AX = 7B03h
???
Return: ???
SeeAlso: AX=7B00h,AX=7B04h
--------c-137B04-----------------------------
INT 13 - NOW! v3.05 - ???
AX = 7B04h
???
Return: ???
SeeAlso: AX=7B03h
--------c-137B05-----------------------------
INT 13 - NOW! v3.05 - GET DISK ACCESSES???
AX = 7B05h
Return: BX:AX = number of physical accesses???
DX:CX = total disk accesses???
SeeAlso: AX=7B00h,AX=7B06h
--------c-137B06-----------------------------
INT 13 - NOW! v3.05 - GET ???
AX = 7B06h
BX = ???
Return: AX = 0000h
BX = ???
SeeAlso: AX=7B05h,AX=7B07h
--------c-137B07-----------------------------
INT 13 - NOW! v3.05 - GET ???
AX = 7B07h
Return: AX = ???
BX = ???
CX = ???
DX = ???
SeeAlso: AX=7B06h
--------c-137B08-----------------------------
INT 13 - NOW! v3.05 - ???
AX = 7B08h
CX = ??? (default 00h)
Return: ???
SeeAlso: AX=7B00h
--------c-1380--CX6572-----------------------
INT 13 - FAST! v4.02+ - API
AH = 80h
CX = 6572h
DX = 1970h
ES:BX -> request packet (see #0219)
AL = function number (see #0218)
Return: AH = status (except function 06h)
00h if successful
01h invalid function
05h not supported by the installed variant
CF clear if successful
CF set on error
AL may be destroyed
Program: FAST! is a disk cache by Future Computing Systems and marketed by
BLOC Publishing Corp.
SeeAlso: AX=8001h,AX=8006h,AX=8007h
Index: hotkeys;FAST!
(Table 0218)
Values for FAST! function:
01h get cache information (see AX=8001h)
04h disable cache
05h enable cache and reset statistics
06h installation check (see AX=8006h)
07h unhook interrupts (see AX=8007h)
09h flush cache
0Ah (v4.02+) enable staged writes
0Bh (v4.02+) disable staged writes
0Ch (v4.02+) enable beep on flush
0Dh (v4.02+) disable beep on flush
0Eh ???
0Fh ???
10h (v4.12+) enable hotkeys
11h (v4.12+) disable hotkeys
12h (v4.13+) set idle delay
13h (v4.13+) set flush dirty percentage
14h (v5.00+) enable mouse checks
15h (v5.00+) disable mouse checks
16h (v5.00d+) reduce cache size to minimum
17h (v5.00d+) increase cache size to maximum
Format of FAST! request packet:
Offset Size Description (Table 0219)
00h DWORD pointer to 19-byte signature string (see #0220)
04h DWORD pointer to buffer for data (if needed by function)
(Table 0220)
Values for FAST! v4.04-v5.03 signature string:
13h 07h 06h 08h 11h 18h 0Fh 0Eh 02h 18h 13h 08h 0Bh 08h 01h 00h 04h 08h 15h
--------c-138001CX6572-----------------------
INT 13 - FAST! v4.02+ - GET CACHE INFORMATION
AX = 8001h
CX = 6572h
DX = 1970h
ES:BX -> request packet (see #0221)
Return: AH = 00h if successful
SeeAlso: AH=80h,AX=8006h
Format of FAST! request packet:
Offset Size Description (Table 0221)
00h DWORD -> 19-byte signature string (see #0220)
04h DWORD -> buffer for cache information (see #0222)
Format of FAST! cache information (v5.00-5.03):
Offset Size Description (Table 0222)
00h WORD binary version number of FAST! (v5.00 = 01F4h)
02h BYTE revision letter (61h = X.XXa, 62h = X.XXb, etc.)
03h BYTE FAST! variant
(01h = FASTE, 02h = FASTX BIOS, 04h = FASTC, 20h = FASTX XMS)
04h DWORD total number of read requests
08h DWORD number of physical disk reads
0Ch DWORD grabbed hash buckets
10h DWORD "st_386mem"
14h DWORD total number of writes (only counted when staging enabled)
18h DWORD number of physical disk writes (only when staging enabled)
1Ch DWORD number of write errors while flushing cache
20h WORD flags1 (see #0223)
22h WORD flags
bit 0: ???
bit 1: staged writes enabled
24h WORD ???
26h WORD maximum cache size in KB
28h WORD minimum cache size in KB
2Ah WORD segment of first cache buffer (FASTC)
segment of EMS page frame (FASTE)
XMS handle (FASTX XMS)
2Ch WORD number of hash buckets containing no entries
2Eh WORD number of hash buckets containing one entry
30h WORD number of hash buckets containing two entries
32h WORD number of hash buckets containing three entries
34h WORD number of hash buckets containing four entries
36h WORD number of hash buckets containing five entries
38h WORD maximum contiguous sectors
3Ah WORD hash factor
3Ch WORD number of paragraphs of memory used below 1M
3Eh WORD entries per hash bucket
40h WORD idle delay in seconds
42h 2 BYTEs ???
44h WORD staged write threshold percentage
46h 2 BYTEs ???
48h WORD number of dirty sectors
4Ah WORD number of staged write buffers
4Ch WORD current cache size in KB
4Eh WORD beep frequency in Hz
50h WORD ???
52h WORD ???
Bitfields for FAST! flags1:
Bit(s) Description (Table 0223)
0 beep on flush
3 hotkeys enabled
4 mouse idle check enabled
8 caching enabled
13 ???
--------c-138006CX6572-----------------------
INT 13 - FAST! v4.02+ - INSTALLATION CHECK
AX = 8006h
CX = 6572h
DX = 1970h
ES:BX -> request packet (see #0224)
Return: AX = 1965h if installed
SeeAlso: AH=80h,AX=8001h,AX=8007h
Format of FAST! request packet:
Offset Size Description (Table 0224)
00h DWORD -> 19-byte signature string (see #0220)
--------c-138007CX6572-----------------------
INT 13 - FAST! v4.02+ - UNHOOK INTERRUPTS
AX = 8007h
CX = 6572h
DX = 1970h
ES:BX -> request packet (see #0225)
Return: AX = 1965h if installed
SeeAlso: AH=80h,AX=8006h
Index: uninstall;FAST!
Format of FAST! request packet:
Offset Size Description (Table 0225)
00h DWORD -> 19-byte signature string (see #0220)
--------c-1381--SI4358-----------------------
INT 13 - Super PC-Kwik v3.20+ - ???
AH = 81h
SI = 4358h
???
Return: ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
to PC-Kwik v3.20 and PC-Cache v5.5 to PC-Kwik v3.27)
returns immediately in PC-Cache v5.x
Index: PC-Cache|Qualitas Qcache
--------c-1382--SI4358-----------------------
INT 13 - Super PC-Kwik v3.20+ - ???
AH = 82h
SI = 4358h
???
Return: AL = ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC-Kwik, and thus support this call
SeeAlso: AH=84h
Index: PC-Cache|Qualitas Qcache
--------c-1383--SI4358-----------------------
INT 13 - Super PC-Kwik v3.20+ - ???
AH = 83h
SI = 4358h
AL = ???
ES:BX -> ???
???
Return: ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC-Kwik, and thus support this call
SeeAlso: AH=85h
Index: PC-Cache|Qualitas Qcache
--------c-1384--SI4358-----------------------
INT 13 - Super PC-Kwik v3.20+ - ???
AH = 84h
SI = 4358h
AL = ???
???
Return: AL = ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC-Kwik, and thus support this call
SeeAlso: AH=82h
Index: PC-Cache|Qualitas Qcache
--------c-1385--SI4358-----------------------
INT 13 - Super PC-Kwik v3.20+ - ???
AH = 85h
SI = 4358h
AL = ???
DL = ???
???
Return: ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC-Kwik, and thus support this call (PC-Cache v5.1 corresponds
to PC-Kwik v3.20)
SeeAlso: AH=83h
Index: PC-Cache|Qualitas Qcache
--------c-1386--SI4358-----------------------
INT 13 - Super PC-Kwik v4.00+ - ???
AH = 86h
SI = 4358h
???
Return: ???
Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
thus supports this call
Index: Qualitas Qcache
--------c-1387--SI4358-----------------------
INT 13 - Super PC-Kwik v4.00+ - ???
AH = 87h
SI = 4358h
???
Return: AH = status??? (00h)
CX = ???
DX = ??? (0000h)
Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
thus supports this call
Index: Qualitas Qcache
--------c-1388--SI4358-----------------------
INT 13 - Super PC-Kwik v4.00+ - ???
AH = 88h
SI = 4358h
???
Return: AH = status??? (00h)
CX = ???
DX = ??? (0000h)
Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
thus supports this call
Index: Qualitas Qcache
--------c-1389--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 89h
SI = 4358h
???
Return: ???
--------c-138A--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 8Ah
SI = 4358h
???
Return: ???
--------c-138EED-----------------------------
INT 13 - HyperDisk v4.01+ - ???
AX = 8EEDh
???
Return: ???
Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
SeeAlso: AX=8EEEh,AX=8EEFh,AH=EEh,INT 2F/AX=DF00h
--------c-138EEE-----------------------------
INT 13 - HyperDisk v4.01+ - ???
AX = 8EEEh
Return: CF set
AX = CS of HyperDisk resident code
???
Note: identical to AX=8EEFh in HYPERDKX v4.21-4.30
SeeAlso: AX=8EEDh,AX=8EEFh,AH=EEh
--------c-138EEF-----------------------------
INT 13 - HyperDisk v4.01+ - ???
AX = 8EEFh
Return: CF set
AX = CS of HyperDisk resident code
???
Note: identical to AX=8EEEh in HYPERDKX v4.21-4.30
SeeAlso: AX=8EEDh,AX=8EEEh,AH=EEh
--------c-1392--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 92h
SI = 4358h
???
Return: AH = status??? (00h)
DL = ???
SeeAlso: AH=93h
--------c-1393--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 93h
SI = 4358h
???
Return: AH = status??? (00h)
AL = ???
SeeAlso: AH=92h
--------c-1394--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 94h
SI = 4358h
???
Return: ???
--------c-1395--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 95h
SI = 4358h
???
Return: AH = status??? (00h)
DX = ???
--------c-1396--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 96h
SI = 4358h
AL = ??? (01h)
BX = ??? (0790h)
DL = ???
Return: AH = status??? (00h)
DX = ???
--------c-1397--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 97h
SI = 4358h
???
Return: ???
--------c-1398--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 98h
SI = 4358h
???
Return: ???
--------c-1399--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 99h
SI = 4358h
???
Return: ???
--------c-139A--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 9Ah
SI = 4358h
???
Return: ???
--------c-139B--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 9Bh
SI = 4358h
???
Return: ???
--------c-139C--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 9Ch
SI = 4358h
???
Return: ???
Note: functions 9Ch and 9Dh are the only ones which are fully reentrant; all
other PC-Kwik API calls (INT 13/81h-B0h) return AX=0200h and CF clear
if a previous call is still in progress
--------c-139D--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = 9Dh
SI = 4358h
???
Return: ???
--------c-13A0--SI4358-----------------------
INT 13 - Super PC-Kwik v3.20+ - GET RESIDENT CODE SEGMENT
AH = A0h
SI = 4358h
Return: AX = segment of resident code
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC-Kwik, and thus support this call (note that PC-Cache v5.5
corresponds to PC-Kwik v3.27)
SeeAlso: INT 16/AX=FFA5h/CX=1111h
Index: PC-Cache|Qualitas Qcache
--------c-13A1--SI4358-----------------------
INT 13 - Super PC-Kwik v3.20+ - FLUSH CACHE
AH = A1h
SI = 4358h
Return: CF clear
AH = 00h (v5.10)
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
corresponds to PC-Kwik v3.20)
SeeAlso: INT 16/AX=FFA5h/CX=FFFFh
Index: PC-Cache|Qualitas Qcache
--------c-13A2--SI4358-----------------------
INT 13 - Super PC-Kwik v3.20+ - ???
AH = A2h
SI = 4358h
???
Return: ???
Note: PC Tools PC-Cache 5.x and Qualitas Qcache 4.00 are OEM versions of
Super PC-Kwik, and thus support this call (note that PC-Cache v5.1
corresponds to PC-Kwik v3.20)
Index: PC-Cache|Qualitas Qcache
--------c-13A3--SI4358-----------------------
INT 13 U - Super PC-Kwik v5.10+ - DISABLE CACHE
AH = A3h
SI = 4358h
Return: CF clear
SeeAlso: AH=A4h
--------c-13A4--SI4358-----------------------
INT 13 U - Super PC-Kwik v5.10+ - ENABLE CACHE
AH = A4h
SI = 4358h
Return: CF clear
SeeAlso: AH=A3h
--------c-13A5--SI4358-----------------------
INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM TERMINATION NOTIFICATION
AH = A5h
SI = 4358h
Return: AX = ???
SI = ???
Notes: called and used internally by Super PC-Kwik when a program terminates
via INT 21/AH=00h, INT 21/AH=31h, or INT 21/AH=4Ch
this call is not supported by Qualitas Qcache 4.00
Index: PC-Cache
SeeAlso: AH=A6h,AH=A9h,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
--------c-13A6--SI4358-----------------------
INT 13 CU - Super PC-Kwik v5.10+ - PROGRAM LOAD NOTIFICATION
AH = A6h
SI = 4358h
DS:DX -> ASCIZ program name
ES:BX -> EXEC data block (see #1276 at INT 21/AH=4Bh)
Return: ???
Note: called and used internally by Super PC-Kwik when a program is loaded
with INT 21/AX=4B00h
SeeAlso: AH=A5h,AH=A9h,INT 21/AH=4Bh
--------c-13A7--SI4358-----------------------
INT 13 CU - Super PC-Kwik 5.1 - ???
AH = A7h
SI = 4358h
Return: ???
Note: called and used internally by Super PC-Kwik on some INT 21 calls
SeeAlso: AH=A5h,AH=A6h,AH=A8h
--------v-13A759-----------------------------
INT 13 U - Novell DOS 7 - SDRes v27.03 - ???
AX = A759h
Return: AX = 59A7h if installed
DX:BX -> ??? data
Program: SDRes is the resident portion of the Search&Destroy antiviral by
Fifth Generation Systems, as bundled with Novell DOS 7
SeeAlso: INT 21/AH=0Eh/DL=ADh
--------c-13A8--SI4358-----------------------
INT 13 CU - Super PC-Kwik 5.1 - ???
AH = A8h
SI = 4358h
Return: ???
Note: called and used internally by Super PC-Kwik on some INT 21 calls
SeeAlso: AH=A5h,AH=A6h,AH=A7h
--------c-13A9--SI4358-----------------------
INT 13 CU - Super PC-Kwik 5.1 - EXITCODE RETRIEVAL NOTIFICATION
AH = A9h
SI = 4358h
Return: ???
Note: called and used internally by Super PC-Kwik when an application issues
INT 21/AH=4Dh
SeeAlso: AH=A5h,AH=A6h,INT 21/AH=4Dh
--------c-13AA--SI4358-----------------------
INT 13 - Super PC-Kwik v4+ - ???
AH = AAh
SI = 4358h
???
Return: ???
Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
this call
--------c-13AB--SI4358-----------------------
INT 13 - Super PC-Kwik v4+ - ???
AH = ABh
SI = 4358h
???
Return: ???
Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
this call
--------c-13AC--SI4358-----------------------
INT 13 - Super PC-Kwik v4+ - ???
AH = ACh
SI = 4358h
???
Return: ???
Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
this call
--------d-13AD-------------------------------
INT 13 - Priam HARD DISK CONTROLLER???
AH = ADh
???
Return: ???
Note: this call is made from Priam's EFMT.EXE (low-level formatter), probably
to check the ROM type on the controller for their hard disk kits
SeeAlso: AH=70h
--------c-13AD--SI4358-----------------------
INT 13 - Super PC-Kwik v4+ - ???
AH = ADh
SI = 4358h
???
Return: ???
Note: Qualitas Qcache is an OEM version of Super PC-Kwik, and thus supports
this call
--------c-13AE--SI4358-----------------------
INT 13 - Super PC-Kwik v5.10+ - ???
AH = AEh
SI = 4358h
???
Return: ???
--------c-13B0--SI4358-----------------------
INT 13 - Super PC-Kwik v3.20+ - ???
AH = B0h
SI = 4358h
???
Return: ???
Note: PC Tools PC-Cache 5.x is an OEM version of Super PC-Kwik, and thus
supports this call; Qualitas Qcache does not support it
Index: PC-Cache
--------v-13EC00-----------------------------
INT 13 - VIRUS - "Tiso" - INSTALLATION CHECK
AX = EC00h
Return: CF clear if installed
SeeAlso: AH=F2h,INT 12/AX=4350h/BX=4920h
--------d-13EE-------------------------------
INT 13 - SWBIOS - SET 1024-CYLINDER FLAG
AH = EEh
DL = drive number (80h, 81h)
Return: CF clear
AH = 00h
Program: SWBIOS is a TSR by Ontrack Computer Systems
Desc: the following INT 13 call will add 1024 to the specified cylinder
number to get the actual cylinder number desired
Notes: the flag is cleared by all INT 13 calls except AH=EEh and AH=EFh
Disk Manager also supports these calls
this function is also supported by HyperDisk v4.01+ and PC-Cache v5.5+,
in order to allow caching of drives using SWBIOS to access more than
1024 cylinders
for software which supports that call, this function is equivalent to
calling AH=EFh with CX=0400h
SeeAlso: AH=F9h,AH=FEh,INT 16/AX=FFA5h/CX=1111h,INT 2F/AX=DF00h
Index: PC-Cache;huge disks|Disk Manager
--------c-13EF-------------------------------
INT 13 - Ontrack Drive Rocket - SET CYLINDER OFFSET
AH = EFh
CX = cylinder offset for next INT 13 call
DL = drive number (80h, 81h)
Return: CF clear
AH = 00h
Program: Drive Rocket is a drive accelerator by Ontrack Computer Systems for
IDE drives supporting the read multiple and write multiple commands
Desc: the following INT 13 call will add the number given by this call to
the specified cylinder to get the actual cylinder number, then reset
the offset to zero
Note: this function is also supported by the NOW! disk cache, and presumably
newer versions of SWBIOS and Disk Manager
for software which supports this call, AH=EEh is equivalent to calling
this function with CX=0400h
the cylinder offset is reset to 0 by all INT 13 called except AH=EEh
and AH=EFh
SeeAlso: AX=7B00h
--------v-13F2-------------------------------
INT 13 - VIRUS - "Neuroquila" - INSTALLATION CHECK
AH = F2h
Return: CF ??? if installed
SeeAlso: AX=EC00h,INT 12/AX=4350h/BX=4920h,INT 21/AX=0B56h
--------d-13F9-------------------------------
INT 13 - SWBIOS - INSTALLATION CHECK
AH = F9h
DL = drive number (80h,81h)
Return: CF clear
DX = configuration word
bit 15 set if other SWBIOS extensions available
CF set on error
Program: SWBIOS is a TSR by Ontrack Computer Systems
Note: Disk Manager also supports these calls
SeeAlso: AH=EEh
Index: Disk Manager
--------v-13FA--DX5945-----------------------
INT 13 - PC Tools v8+ VSAFE, VWATCH - API
AH = FAh
DX = 5945h
AL = function (00h-07h)
Return: varies by function
if not installed:
CF set
AH = 01h
Note: this API is identical to the ones on INT 16/AH=FAh and INT 21/AH=FAh,
so it is listed in its entirety under INT 16/AX=FA00h and following
SeeAlso: INT 16/AX=FA00h
--------v-13FD50------------------------
INT 13 - VIRUS - "Predator" - INSTALLATION CHECK
AX = FD50h
Return: AX = 50FDh if resident
SeeAlso: AX=5001h"VIRUS",INT 16/AH=DDh"VIRUS"
--------d-13FE-------------------------------
INT 13 - SWBIOS - GET EXTENDED CYLINDER COUNT
AH = FEh
DL = drive number (80h, 81h)
Return: CF clear
DX = number of cylinders beyond 1024 on drive
Program: SWBIOS is a TSR by Ontrack Computer Systems
Notes: standard INT 13/AH=08h will return a cylinder count truncated to 1024
BIOS without this extension would return count modulo 1024
Disk Manager also supports these calls
SeeAlso: AH=EEh
----------13FF-------------------------------
INT 13 - Windows95 - ???
AH = FFh
DL - drive number (80h)
Return: ???
Note: this function is called by the Windows95 Master Boot Record
--------B-13FF-------------------------------
INT 13 - IBM SurePath BIOS - Officially "Private" Function
AH = FFh
--------U-13FFFFBHAA-------------------------
INT 13 - UNIQUE UX Turbo Utility - SET TURBO MODE
AX = FFFFh
BH = AAh
BL = subfunction
00h installation check
Return: AX = 1234h if installed
01h turn on Turbo mode
02h turn off Turbo mode
03h set Turbo mode according to hardware switch
04h set disk access to Turbo mode
05h set disk access to Normal mode
Return: nothing
SeeAlso: INT 15/AH=DFh
Index: installation check;UNIQUE UX Turbo Utility
--------S-14---------------------------------
INT 14 - SERIAL - Digiboard DigiCHANNEL PC/X* Extender INT 14 (XAPCM232.SYS)
Note: the installation check for this driver is to determine whether the
"~DOSXAM~" character device exists
Index: installation check;Digiboard DigiCHANNEL
--------S-1400-------------------------------
INT 14 - SERIAL - INITIALIZE PORT
AH = 00h
AL = port parameters (see #0226)
DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return: AH = line status (see #0230)
FFh if error on Digiboard XAPCM232.SYS
AL = modem status (see #0231)
Notes: default handler is at F000h:E739h in IBM PC and 100% compatible BIOSes
since the PCjr supports a maximum of 4800 bps, attempting to set 9600
bps will result in 4800 bps
various network and serial-port drivers support the standard BIOS
functions with interrupt-driven I/O instead of the BIOS's polled I/O
the 04/08/93 Compaq system ROM uses only the low two bits of DX
SeeAlso: AH=04h"SERIAL",AH=04h"MultiDOS",AH=05h"SERIAL",AH=57h
SeeAlso: AX=8000h"ARTICOM",AH=81h"COMM-DRV",AH=82h"COURIERS",AH=8Ch
SeeAlso: MEM 0040h:0000h,PORT 03F8h"Serial"
Bitfields for serial port parameters:
Bit(s) Description (Table 0226)
7-5 data rate (110,150,300,600,1200,2400,4800,9600 bps)
4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
2 stop bits (set = 2, clear = 1)
1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
SeeAlso: #0228,#0233,#0234,#0235
--------S-1400-------------------------------
INT 14 - FOSSIL (Fido/Opus/Seadog Standard Interface Level) - INITIALIZE
AH = 00h
AL = initializing parameters
7 - 6 - 5 4 - 3 2 1 - 0
-BAUD RATE- PARITY STOP WORD
BITS LENGTH
000 19200 bd 00 none 0: 1 00: 5
001 38400 bd 01 odd 1: 2 01: 6
010 300 bd 11 even 10: 7
011 600 bd 11: 8
100 1200 bd
101 2400 bd
110 4800 bd
111 9600 bd (4800 on PCjr)
DX = port number (0-3 or FFh if only performing non-I/O setup)
Return: AH = RS-232 status code bits (see #0227)
AL = modem status bits
bit 3: always 1
bit 7: DCD - carrier detect
SeeAlso: #0226,AH=05h"FOSSIL",AH=81h"COMM-DRV",AH=82h"COURIERS"
Bitfields for FOSSIL RS-232 status:
Bit(s) Description (Table 0227)
0 RDA - input data is available in buffer
1 OVRN - data has been lost
5 THRE - room is available in output buffer
6 TSRE - output buffer empty
--------S-1400-------------------------------
INT 14 - Tandy 2000 - SERIAL - RESET COMM PORT
AH = 00h
AL = RS-232C parameters (see #0228)
DL = port number
DH = protocol
bit 0: use XON/XOFF on received data
bit 1: use XON/XOFF when transmitting
Return: AH = line status (see #0230)
AL = modem status (see #0231)
Note: this interrupt is identical to INT 53 on the Tandy 2000
SeeAlso: AH=04h"Tandy 2000",INT 53"Tandy 2000"
--------S-1400-------------------------------
INT 14 - MBBIOS - INITIALIZE PORT
AH = 00h
AL = port parameters (see #0228)
DX = port number
Return: AH = line status (see #0230)
AL = modem status (see #0231)
Note: MBBIOS was written by H. Roy Engehausen
SeeAlso: AH=04h"MBBIOS",AH=05h"MBBIOS",AH=09h"MBBIOS"
Bitfields for MBBIOS port parameters:
Bit(s) Description (Table 0228)
7-5 data rate
(normally 110,150,300,600,1200,2400,4800,9600 bps;
9600,14400,19200,28800,38400,57600,115200,330400 bps
if the high-speed option is set)
4-3 parity (00 or 10 = none, 01 = odd, 11 = even)
2 stop bits (set = 2, clear = 1)
1-0 data bits (00 = 5, 01 = 6, 10 = 7, 11 = 8)
SeeAlso: #0226
--------N-1400--DXFFFF-----------------------
INT 14 - Connection Manager - MODIFY DEFAULT CONNECTION PARAMETERS
AH = 00h
DX = FFFFh
ES:DI -> vector string specifying new parameters
Return: AH = return code (00h,03h) (see #0229)
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
Note: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
function, but redirects the port over the network; if DX is any other
value, the call is chained
SeeAlso: AH=04h/DX=FFFFh,AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
(Table 0229)
Values for Connection Manager return code:
00h successful
01h no such connection
02h invalid connection ID
03h invalid subvector found
04h communication error (check BH)
06h insufficient resources, retry later
FFh no data available
--------S-1401-------------------------------
INT 14 - SERIAL - WRITE CHARACTER TO PORT
AH = 01h
AL = character to write
DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return: AH bit 7 clear if successful
AH bit 7 set on error
AH bits 6-0 = port status (see #0230)
Notes: various network and serial-port drivers support the standard BIOS
functions with interrupt-driven I/O instead of the BIOS's polled I/O
the 04/08/93 Compaq system ROM uses only the low two bits of DX
SeeAlso: AH=02h,AH=0Bh"FOSSIL",AX=8000h"ARTICOM",AH=89h,MEM 0040h:007Ch
--------N-1401--DXFFFF-----------------------
INT 14 - Connection Manager - SEND CHARACTER
AH = 01h
DX = FFFFh
BH = character to send
Return: AH = return code (00h-02h,06h) (see #0229)
Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
function, but redirects the port over the network; if DX is any other
value, the call is chained
this function is provided primarily for compatibility; AH=06h/DX=FFFFh
is the preferred function because it provides better performance
SeeAlso: AH=02h/DX=FFFFh,AH=06h/DX=FFFFh,AH=09h/DX=FFFFh
--------S-1402-------------------------------
INT 14 - SERIAL - READ CHARACTER FROM PORT
AH = 02h
AL = 00h (ArtiCom)
DX = port number (00h-03h (04h-43h for Digiboard XAPCM232.SYS))
Return: AH = line status (see #0230)
AL = received character if AH bit 7 clear
Notes: will timeout if DSR is not asserted, even if function 03h returns
data ready
various network and serial-port drivers support the standard BIOS
functions with interrupt-driven I/O instead of the BIOS's polled I/O
the 04/08/93 Compaq system ROM uses only the low two bits of DX
SeeAlso: AH=01h,AH=02h"FOSSIL",AH=84h,AH=FCh
--------S-1402-------------------------------
INT 14 - FOSSIL - RECEIVE CHARACTER WITH WAIT
AH = 02h
DX = port number (0-3)
Return: AL = character received
AH = 00h
SeeAlso: AH=01h,AH=02h"SERIAL"
--------N-1402--DXFFFF-----------------------
INT 14 - Connection Manager - RECEIVE CHARACTER
AH = 02h
DX = FFFFh
BH = character to send
Return: AH = return code (00h-02h,04h,FFh) (see #0229)
BH = line status (see #0230)
AL = received character (if any)
Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
function, but redirects the port over the network; if DX is any other
value, the call is chained
this function is provided primarily for compatibility; AH=07h/DX=FFFFh
is the preferred function because it provides better performance
SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh,AH=06h/DX=FFFFh
--------S-1403-------------------------------
INT 14 - SERIAL - GET PORT STATUS
AH = 03h
AL = 00h (ArtiCom)
DX = port number (00h-03h) (04h-43h for Digiboard XAPCM232.SYS)
Return: AH = line status (see #0230)
AL = modem status (see #0231)
AX = 9E00h if disconnected (ArtiCom)
Note: the 04/08/93 Compaq system ROM uses only the low two bits of DX
SeeAlso: AH=00h,AH=07h"MultiDOS",AX=8000h"ARTICOM",AH=81h"COURIERS",AX=FD02h
Bitfields for serial line status:
Bit(s) Description (Table 0230)
7 timeout
6 transmit shift register empty
5 transmit holding register empty
4 break detected
3 framing error
2 parity error
1 overrun error
0 receive data ready
Note: for COMM-DRV, if bit 7 is set, an error occurred, and may be retrieved
through a separate call (see AX=8000h"COMM-DRV")
Bitfields for modem status:
Bit(s) Description (Table 0231)
7 carrier detect
6 ring indicator
5 data set ready
4 clear to send
3 delta carrier detect
2 trailing edge of ring indicator
1 delta data set ready
0 delta clear to send
--------N-1403--DXFFFF-----------------------
INT 14 - Connection Manager - RETURN COMMUNICATION PORT STATUS
AH = 03h
DX = FFFFh
AL = connection ID
Return: AH = return code (00h-02h) (see #0229)
BH = line status (see #0232)
BL = modem status (see #0231) (only bits 4,5,7; all others zero)
Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
function, but redirects the port over the network; if DX is any other
value, the call is chained
SeeAlso: AH=00h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Ah/DX=FFFFh
Bitfields for Connection Manager line status:
Bit(s) Description (Table 0232)
7 CTS changed
6 current CTS state
5 timeout
4 break
3 framing error
2 parity error
1 overrun
0 current carrier state (0 active, 1 no carrier)
--------S-1404-------------------------------
INT 14 - SERIAL - EXTENDED INITIALIZE (CONVERTIBLE,PS)
AH = 04h
AL = break status
00h if break
01h if no break
BH = parity (see #0233)
BL = number of stop bits
00h one stop bit
01h two stop bits (1.5 if 5 bit word length)
CH = word length (see #0234)
CL = bps rate (see #0235)
DX = port number
Return: AX = port status code (see #0230,#0231)
SeeAlso: AH=00h,AH=1Eh,AX=8000h"ARTICOM"
(Table 0233)
Values for serial port parity:
00h no parity
01h odd parity
02h even parity
03h stick parity odd
04h stick parity even
SeeAlso: #0226,#0234,#0235,#0236
(Table 0234)
Values for serial port word length:
00h 5 bits
01h 6 bits
02h 7 bits
03h 8 bits
SeeAlso: #0226,#0233,#0235,#0271
(Table 0235)
Values for serial port bps rate:
00h 110 (19200 if ComShare installed)
01h 150 (38400 if ComShare installed)
02h 300
03h 600 (14400 if ComShare installed)
04h 1200
05h 2400
06h 4800 (28800 if ComShare installed)
07h 9600
08h 19200
---ComShare---
09h 38400
0Ah 57600
0Bh 115200
SeeAlso: #0226,#0233,#0235,#0272,#0279,AH=36h,#0290,#0530,#2609
--------S-1404-------------------------------
INT 14 - Tandy 2000 - SERIAL - FLUSH COMM BUFFER
AH = 04h
DL = port number
DH = protocol
bit 0: use XON/XOFF on received data
bit 1: use XON/XOFF when transmitting
Return: nothing
Desc: clears the serial interface buffer
Note: this interrupt is identical to INT 53 on the Tandy 2000
SeeAlso: AH=00h"Tandy 2000",INT 53"Tandy 2000"
--------S-1404-------------------------------
INT 14 - FOSSIL - INITIALIZE DRIVER
AH = 04h
DX = port number
optionally BX=4F50h
ES:CX -> byte to be set upon ^C
Return: AX = 1954h (if successful)
BL = maximum function number supported (excluding 7Eh and above)
BH = revision of FOSSIL specification supported
DTR is raised
Note: the word at offset 6 in the interrupt handler contains 1954h, and the
following byte contains the maximum function number supported; this
can serve as an installation check
SeeAlso: AH=05h"FOSSIL",AH=1Ch,INT 11/AH=BCh
Index: installation check;FOSSIL
--------S-1404-------------------------------
INT 14 - MultiDOS Plus IODRV - INITIALIZE PORT
AH = 04h
Return: port initialized; if Hayes-compatible modem, a connection has been
established
Note: the port number is stored at offset BEh in the Task Control Block
(see #0382 at INT 15/AH=13h"MultiDOS")
SeeAlso: AH=00h,AH=05h"MultiDOS",AH=20h"MultiDOS",INT 15/AH=13h"MultiDOS"
--------S-1404-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE BAUD RATE
AH = 04h
AL = initializing parameters (see #0236)
BX = baud rate
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=05h"Digiboard"
Bitfields for Digiboard initializing parameters:
Bit(s) Description (Table 0236)
7-5 unused
4-3 parity (00 none, 01 odd, 11 even)
2 stop bits (0 = one, 1 = two)
1-0 data bits (00 = five, 01 = six, 10 = seven, 11 = eight)
SeeAlso: #0233,#0234
--------S-1404-------------------------------
INT 14 - MBBIOS - INSTALLATION CHECK
AH = 04h
DX = port number
Return: AX = AA55h if installed on specified port
SeeAlso: AH=00h"MBBIOS",AH=09h"MBBIOS"
--------N-1404--DXFFFF-----------------------
INT 14 - Connection Manager - OPEN COMMUNICATION
AH = 04h
DX = FFFFh
ES:DI -> Connection Request protocol vector (see #0237)
Return: AH = return code
00h successful
AL = connection ID
BH = connection type
00h direct connection or no dialing
01h Connection Server dialed phone
01h no response from Connection Server
03h invalid request
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
Desc: initiate a connection to the Connection Server listed in the current
Client parameter set
Notes: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
function, but redirects the port over the network; if DX is any other
value, the call is chained
all subvectors of the Connection Request vector are optional; if
missing, default values are provided by the default connection
parameter set
SeeAlso: AH=00h/DX=FFFFh,AH=05h/DX=FFFFh,AH=06h/DX=FFFFh,AH=07h/DX=FFFFh
SeeAlso: AH=0Ah/DX=FFFFh,AH=0Ch/DX=FFFFh
Format of Connection Manager protocol command vector:
Offset Size Description (Table 0237)
00h WORD (big-endian) total length of command (including this word)
02h WORD (big-endian) command code
EF01h Connection Request
EF06h Modify Connection Parameters
04h N BYTEs list of subvectors (see #0239)
allowable subvector types are 01h-04h,17h,18h for command code
EF01h; 03h,04h for command code EF06h (see #0238)
(Table 0238)
Values for Connection Manager subvector type code:
01h Connection ID
02h Destination ID
03h Asynchronous line parameters
04h Data transfer parameters
09h Line speed
0Ah Serial coding
0Bh Packet size
0Ch Timers
0Dh Special characters
0Eh Target ID
0Fh Telephone number
10h ASCII destination ID
11h Parity
12h Bits per character
13h Number of stop bits
14h Packet timer
15h Intercharacter timer
17h Flags
18h Parameter ranges
19h Flow control
Format of Connection Manager subvector:
Offset Size Description (Table 0239)
00h BYTE length of subvector
01h BYTE type code (see #0238)
02h N-2 BYTEs data, which may include subvectors
SeeAlso: #0240,#0241,#0242,#0243,#0244,#0245,#0246,#0247,#0248,#0249,#0250
SeeAlso: #0251,#0252,#0254,#0255,#0256,#0257,#0258,#0259,#0237
Format of Connection ID subvector:
Offset Size Description (Table 0240)
00h BYTE 03h (length)
01h BYTE 01h (subvector "Connection ID")
02h BYTE connection ID
SeeAlso: #0239
Format of Destination ID subvector:
Offset Size Description (Table 0241)
00h BYTE length
01h BYTE 02h (subvector "Destination ID")
02h N BYTEs subvector(s) of type 0Eh, 0Fh, or 10h
SeeAlso: #0239
Format of Asynchronous line parameters subvector:
Offset Size Description (Table 0242)
00h BYTE length
01h BYTE 03h (subvector "Asynchronous line parameters")
02h N BYTEs subvector(s) of type 09h, 0Ah, or 19h
SeeAlso: #0239
Format of Data transfer parameters subvector:
Offset Size Description (Table 0243)
00h BYTE length
01h BYTE 04h (subvector "Data transfer parameters")
02h N BYTEs subvector(s) of type 0Bh, 0Ch, or 0Dh
SeeAlso: #0239
Format of Line speed subvector:
Offset Size Description (Table 0244)
00h BYTE 04h (length)
01h BYTE 09h (subvector "Line speed")
02h WORD bit map, highest set bit selects speed
bit 0: 2400
bits 1-7: 1800, 1200, 600, 300, 115200, 150, 110 bps
bits 8-15: 57600, 38400, 19200, 14400, 9600, 7200, 4800, 3600
SeeAlso: #0239
Format of Serial coding subvector:
Offset Size Description (Table 0245)
00h BYTE length
01h BYTE 0Ah (subvector "Serial coding")
02h N BYTEs subvector(s) of type 11h, 12h, or 13h
SeeAlso: #0239
Format of Packet size subvector:
Offset Size Description (Table 0246)
00h BYTE 04h (length)
01h BYTE 0Bh (subvector "Packet size")
02h WORD (big-endian) packet size, 1 to 1024
SeeAlso: #0239
Format of Timers subvector:
Offset Size Description (Table 0247)
00h BYTE length
01h BYTE 0Ch (subvector "Timers")
02h 8 BYTEs subvector of type 14h or 15h
SeeAlso: #0239
Format of Special characters subvector:
Offset Size Description (Table 0248)
00h BYTE length
01h BYTE 0Dh (subvector "Special characters")
02h N BYTEs list of ASCII characters to be used as EOM or EOB
SeeAlso: #0239
Format of Target ID:
Offset Size Description (Table 0249)
00h BYTE length
01h BYTE 0Eh (subvector "Target ID")
02h N BYTEs target ID, 1-16 bytes
SeeAlso: #0239
Format of Telephone number subvector:
Offset Size Description (Table 0250)
00h BYTE length
01h BYTE 0Fh (subvector "Telephone number")
02h N BYTEs telephone number
SeeAlso: #0239
Format of ASCII destination ID subvector:
Offset Size Description (Table 0251)
00h BYTE length
01h BYTE 10h (subvector "ASCII destination ID")
02h N BYTEs destination ID
SeeAlso: #0239
Format of Parity subvector:
Offset Size Description (Table 0252)
00h BYTE 03h (length)
01h BYTE 11h (subvector "Parity")
02h BYTE parity type (see #0253)
SeeAlso: #0239
Bitfields for Connection Manager parity type:
Bit(s) Description (Table 0253)
7 odd
6 even
5 mark
4 space
3 none
SeeAlso: #0252
Format of Bits per character subvector:
Offset Size Description (Table 0254)
00h BYTE 03h (length)
01h BYTE 12h (subvector "Bits per character")
02h BYTE bits per character
bit 7: seven
bit 6: eight
SeeAlso: #0239
Format of Number of stop bits subvector:
Offset Size Description (Table 0255)
00h BYTE 03h (length)
01h BYTE 13h (subvector "Number of stop bits")
02h BYTE stop bits
bit 7: one
bit 6: 1.5
bit 5: two
SeeAlso: #0239
Format of Packet timer and Intercharacter timer subvectors:
Offset Size Description (Table 0256)
00h BYTE 04h (length)
01h BYTE subvector type
14h Packet timer
15h Intercharacter timer
02h WORD (big-endian) unit of value representing 20ms
SeeAlso: #0239
Format of Flags subvector:
Offset Size Description (Table 0257)
00h BYTE 03h (length)
01h BYTE 17h (subvector "Flags")
02h BYTE flags
bit 7: queueing requested
SeeAlso: #0239
Format of Parameter ranges subvector:
Offset Size Description (Table 0258)
00h BYTE length
01h BYTE 18h (subvector "Parameter ranges")
02h N BYTEs subvector(s) of type 09h, 11h, 12h, or 13h
SeeAlso: #0239
Format of Flow control subvector:
Offset Size Description (Table 0259)
00h BYTE length (02h-04h)
01h BYTE 19h (subvector "Flow control")
02h BYTE XOFF character
03h BYTE XON character
Note: if length is 02h, flow control is disabled; if length is 03h, any
character will be accepted as XON after an XOFF
SeeAlso: #0239
--------S-140400-----------------------------
INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INSTALLATION CHECK
AX = 0400h
Return: AX = 0FF0h
SeeAlso: AX=0401h,AX=0408h
--------S-140401-----------------------------
INT 14 - Microsoft Systems Journal TSRCOMM INT14 - INITIALIZE MODE
AX = 0401h
CX = mode
Return: nothing
SeeAlso: AX=0400h,AX=0402h
--------S-140402-----------------------------
INT 14 - Microsoft Systems Journal TSRCOMM INT14 - EXTENDED INITIALIZE
AX = 0402h
CL = parameters
Return: nothing
SeeAlso: AX=0400h,AX=0401h
--------S-140403-----------------------------
INT 14 - Microsoft Systems Journal TSRCOMM INT14 - SET TIMEOUT
AX = 0403h
CX = timeout
Return: nothing
SeeAlso: AX=0400h
--------S-140404-----------------------------
INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE RECEIVE BUFFER
AX = 0404h
Return: nothing
SeeAlso: AX=0400h,AX=0405h,AX=0406h
--------S-140405-----------------------------
INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET RECEIVE BUFFER COUNT
AX = 0405h
Return: AX = number of characters in buffer
SeeAlso: AX=0400h,AX=0404h,AX=0407h
--------S-140406-----------------------------
INT 14 - Microsoft Systems Journal TSRCOMM INT14 - CLEAR THE TRANSMIT BUFFER
AX = 0406h
Return: nothing
SeeAlso: AX=0400h,AX=0404h,AX=0407h
--------S-140407-----------------------------
INT 14 - Microsoft Systems Journal TSRCOMM INT14 - GET TRANSMIT BUFFER COUNT
AX = 0407h
Return: AX = number of characters in the buffer
SeeAlso: AX=0400h,AX=0405h,AX=0406h
--------S-140408-----------------------------
INT 14 - Microsoft Systems Journal TSRCOMM INT14 - UNINSTALL
AX = 0408h
Return: nothing
SeeAlso: AX=0400h
--------S-1405-------------------------------
INT 14 - SERIAL - EXTENDED COMMUNICATION PORT CONTROL (CONVERTIBLE,PS)
AH = 05h
AL = function
00h read modem control register
Return: BL = modem control register (see #0260)
AH = status
01h write modem control register
BL = modem control register (see #0260)
Return: AX = status
DX = port number
Note: also supported by ArtiCom
SeeAlso: AH=00h,AH=1Fh,AX=8000h"ARTICOM",AH=FBh
Bitfields for modem control register:
Bit(s) Description (Table 0260)
0 data terminal ready
1 request to send
2 OUT1
3 OUT2
4 LOOP
5-7 reserved
--------S-1405-------------------------------
INT 14 - FOSSIL - DEINITIALIZE DRIVER
AH = 05h
DX = port number
Return: none
DTR is not affected
SeeAlso: AH=00h,AH=04h"FOSSIL",AH=1Dh,AH=8Dh
--------S-1405-------------------------------
INT 14 - MultiDOS Plus IODRV - READ CHARACTER FROM PORT
AH = 05h
AL = timeout in seconds (00h = never)
Return: AL = status
00h successful
AH = character read
01h read error
02h timed out
other modem status (CTS, DSR) changed
Note: the port number is stored at offset BEh in the Task Control Block
SeeAlso: AH=02h,AH=04h"MultiDOS",AH=06h"MultiDOS",AH=22h"MultiDOS"
SeeAlso: INT 15/AH=13h"MultiDOS"
--------S-1405-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CHANGE PROTOCOL
AH = 05h
AL = protocol (see #0261)
BH = new XOFF character (00h = current)
BL = new XON character (00h = current)
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=04h"Digiboard"
Bitfields for Digiboard protocol:
Bit(s) Description (Table 0261)
7-4 unused
3 RTS/CTS
2 DSR
1,0 XON/XOFF
--------S-1405-------------------------------
INT 14 - MBBIOS - DROP DTR AND RTS
AH = 05h
DX = port number
Return: none
SeeAlso: AH=00h"MBBIOS",AH=06h"MBBIOS",AH=06h"FOSSIL"
--------S-1405-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHANGE PORT PROTOCOL
AH = 05h
AL = new port protocol (see #0262)
BH = new XOFF character
BL = new XON character
DX = port number
Return: AH = FFh if invalid protocol
SeeAlso: AH=00h,AH=04h"SERIAL",AH=06h"PC-MOS"
Bitfields for PC-MOS/386 serial port protocol:
Bit(s) Description (Table 0262)
7 set to enable/disable CD monitoring, clear to set protocol
---bit 7 set---
4 CD monitoring enabled
5 automatic restart enabled
---bit 7 clear---
0 receive XON/XOFF
1 transmit XON/XOFF
2 DTR/DSR
3 RTS/CTS
--------N-1405--DXFFFF-----------------------
INT 14 - Connection Manager - CLOSE COMMUNICATION
AH = 05h
DX = FFFFh
AL = connection ID
Return: AH = return code
00h successful
01h no such connection
02h invalid connection ID
AL = correct connection ID
Desc: terminate existing connection to allow another one to be established
Note: if DX is 0-3 on entry, Connection Manager emulates the standard BIOS
function, but redirects the port over the network; if DX is any other
value, the call is chained
SeeAlso: AH=04h/DX=FFFFh,AH=0Dh/DX=FFFFh
--------S-1406-------------------------------
INT 14 - FOSSIL - RAISE/LOWER DTR
AH = 06h
DX = port
AL = DTR state to be set
00h = lower
01h = raise
Return: nothing
SeeAlso: AH=05h"MBBIOS",AH=1Ah
--------S-1406-------------------------------
INT 14 - MultiDOS Plus IODRV - WRITE CHARACTER TO PORT
AH = 06h
AL = character
Return: AL = status
00h successful
Notes: the port number is stored at offset BEh in the Task Control Block
if output queue is full, the calling task is blocked until the
character can be stored
SeeAlso: AH=01h,AH=04h"MultiDOS",AH=05h"MultiDOS",AH=21h"MultiDOS"
SeeAlso: INT 15/AH=13h"MultiDOS"
--------S-1406-------------------------------
INT 14 - MBBIOS - RAISE DTR AND RTS
AH = 06h
DX = port number
Return: none
SeeAlso: AH=05h"MBBIOS",AH=07h"MBBIOS"
--------S-1406-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DRIVER 'ID' FUNCTION
AH = 06h
DX = port number
Return: AH bit 7 set
AL = number of highest function supported by driver
Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
operating system by The Software Link, Inc.
SeeAlso: AH=18h"PC-MOS"
--------N-1406-------------------------------
INT 14 - TelAPI - WRITE BLOCK
AH = 06h
CX = number of characters to write
DX = port number
ES:DI -> buffer containing data
Return: AX = number of characters actually sent (negative on error)
CX = ???
SeeAlso: AH=07h"TelAPI",AH=E0h"TelAPI",AH=E3h"TelAPI"
--------N-1406--DXFFFF-----------------------
INT 14 - Connection Manager - SEND CHARACTER BLOCK
AH = 06h
DX = FFFFh
AL = connection ID
CX = number of characters to send
ES:DI -> buffer containing data to be sent
Return: AH = return code (see #0229)
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
SeeAlso: AH=04h/DX=FFFFh,AH=07h/DX=FFFFh,AH=09h/DX=FFFFh
--------S-1407-------------------------------
INT 14 - FOSSIL - RETURN TIMER TICK PARAMETERS
AH = 07h
Return: AL = timer tick interrupt number
AH = ticks per second on interrupt number in AL
DX = approximate number of milliseconds per tick
SeeAlso: AH=16h
--------S-1407-------------------------------
INT 14 - MultiDOS Plus IODRV - GET PORT STATUS
AH = 07h
Return: CL = modem status (see #0231)
CH = character at head of input queue (if any)
DX = number of characters in input queue
Note: the port number is stored at offset BEh in the Task Control Block
SeeAlso: AH=03h,AH=05h"MultiDOS",AH=08h"MultiDOS",AH=09h"MultiDOS"
SeeAlso: AH=23h"MultiDOS",INT 15/AH=13h"MultiDOS"
--------S-1407-------------------------------
INT 14 - MBBIOS - SEND BREAK
AH = 07h
DX = port number
Return: none
SeeAlso: AH=06h"MBBIOS",AH=FAh"EBIOS"
--------S-1407-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SEND RS-232 BREAK
AH = 07h
BX = duration of break in clock ticks
DX = port number
Return: nothing
--------N-1407-------------------------------
INT 14 - TelAPI - READ BLOCK
AH = 07h
CX = length of buffer in bytes
DX = port number
ES:DI -> buffer for data
Return: AX > 0000h number of characters actually read
AX = 0000h host has closed connection
AX < 0000h error code (see #0323)
CX = ???
Note: translates CRLF into local EOL if the connection is in ASCII mode,
negotiates various Telnet options, and immediately executes several
different Telnet action commands
SeeAlso: AH=06h"TelAPI",AH=E0h"TelAPI",AH=E2h"TelAPI"
--------N-1407--DXFFFF-----------------------
INT 14 - Connection Manager - RECEIVE CHARACTER BLOCK
AH = 07h
DX = FFFFh
AL = connection ID
BL = flag
00h wait for data
nonzero do not wait if no data avaiable
CX = size of receive buffer
ES:DI -> buffer for received characters
Return: AH = return code (00h-02h,04h,FFh) (see #0229)
BH = line status (see #0232)
CX = number of characters received
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
SeeAlso: AH=01h/DX=FFFFh,AH=04h/DX=FFFFh,AH=06h/DX=FFFFh
--------S-1408-------------------------------
INT 14 - FOSSIL - FLUSH OUTPUT BUFFER WAITING TILL ALL OUTPUT IS DONE
AH = 08h
DX = port number
Return: nothing
SeeAlso: AH=09h"FOSSIL"
--------S-1408-------------------------------
INT 14 - MultiDOS Plus 4.0 IODRV - GET AND RESET PORT LINE STATUS
AH = 08h
Return: AL = line status (see #0230)
AH destroyed
Notes: the port number is stored at offset BEh in the Task Control Block
on every line status change, the line status is ORed with the line
status accumulator; this function returns the accumulator and clears
it
SeeAlso: AH=03h,AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
--------S-1408-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - ALTERNATE STATUS CHECK
AH = 08h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = RS232 status bits (see #0230 at AH=03h)
ZF set if no characters queued
ZF clear if character available
AL = next character
SeeAlso: AH=03h,AH=08h"PC-MOS",AH=09h"Digiboard",AH=14h"Digiboard"
--------S-1408-------------------------------
INT 14 - MBBIOS - NON-DESTRUCTIVE READ
AH = 08h
DX = port number
Return: AL = character (if AH bit 0 set)
AH = status (see #0230)
SeeAlso: AH=0Bh"MBBIOS",AH=0Ch"FOSSIL"
--------S-1408-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STATUS CHECK
AH = 08h
DX = port number
Return: CF set if carrier loss detected
ZF set if input buffer empty
ZF clear if characters available
AL = next character dequeued
--------N-1408--DXFFFF-----------------------
INT 14 - Connection Manager - RETURN DEFAULT CONNECTION PARAMETERS
AH = 08h
DX = FFFFh
CX = size of buffer for parameters or 0000h to get length
ES:DI -> buffer for parameter vector (see #0237)
Return: AH = return code
00h successful
CX = number of bytes required (if CX=0000h on entry)
CX = number of bytes omitted for lack of space (if CX nonzero)
nonzero invalid request
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
--------S-1409-------------------------------
INT 14 - FOSSIL - PURGE OUTPUT BUFFER THROWING AWAY ALL PENDING OUTPUT
AH = 09h
DX = port number
Return: nothing
SeeAlso: AH=08h"FOSSIL",AH=0Ah"FOSSIL",AH=88h
--------S-1409-------------------------------
INT 14 - MultiDOS Plus IODRV - RESET PORT STATUS
AH = 09h
Return: modem status byte cleared
Note: the port number is stored at offset BEh in the Task Control Block
SeeAlso: AH=04h"MultiDOS",AH=07h"MultiDOS",INT 15/AH=13h"MultiDOS"
--------S-1409-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR BUFFERS
AH = 09h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=08h"Digiboard",AH=0Ah"Digiboard",AH=10h"Digiboard"
--------S-1409-------------------------------
INT 14 - MBBIOS - GET/SET OPTIONS
AH = 09h
AL = option byte (see #0263)
DX = port number???
Return: AL = old option byte
SeeAlso: AH=00h"MBBIOS",AH=04h"MBBIOS",AH=10h"FOSSIL"
Bitfields for MBBIOS option byte:
Bit(s) Description (Table 0263)
0 transmit buffering enabled
2 hardware handshaking enabled
5 high-speed option enabled (see AH=00h"MBBIOS",#0228)
other reserved
--------S-1409-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RESET I/O BUFFER POINTERS
AH = 09h
DX = port number
Return: nothing
SeeAlso: AH=13h"PC-MOS"
--------N-1409--DXFFFF-----------------------
INT 14 - Connection Manager - SEND BREAK
AH = 09h
DX = FFFFh
AL = connection ID
Return: AH = return code (00h-02h) (see #0229 at AH=00h/DX=FFFFh)
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
SeeAlso: AH=02h/DX=FFFFh,AH=03h/DX=FFFFh
--------S-140A-------------------------------
INT 14 - FOSSIL - PURGE INPUT BUFFER THROWING AWAY ALL PENDING INPUT
AH = 0Ah
DX = port number
Return: nothing
SeeAlso: AH=09h"FOSSIL",AH=85h
--------S-140A-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - INPUT QUEUE CHECK
AH = 0Ah
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of characters available in buffer
Note: this function is also supported by the PC-MOS/386 v5.01 $serial.sys
SeeAlso: AH=09h"Digiboard",AH=0Dh"Digiboard"
--------S-140A-------------------------------
INT 14 - MBBIOS - WRITE BUFFER
AH = 0Ah
CX = count
ES:DI -> buffer (see #0264)
Return: AX = status (see #0230,#0231)
CX = unsent character count
DI updated
Note: the PACCOM version of MBBIOS does not use CX or ES:DI; instead, ES
contains the segment of a buffer containing the packet to be sent,
which by default will be freed once the packet has been sent. Use
AH=0Ch"MBBIOS" to allocate the buffer.
SeeAlso: AH=01h,AH=0Bh"MBBIOS",AH=0Ch"MBBIOS",AH=19h"FOSSIL"
Format of MBBIOS PACCOM buffer:
Offset Size Description (Table 0264)
00h 504 BYTEs data area
1F8h WORD length of data in data area
1FAh BYTE flags/status
bit 7: don't discard buffer after transmitting data
bit 6: buffer has been transmitted
1FBh BYTE reserved (0) for additional flags/status
1FCh WORD user data
1FEh WORD MBBIOS-internal pointer to next buffer
--------N-140A--DXFFFF-----------------------
INT 14 - Connection Manager - MODIFY ACTIVE CONNECTION PARAMETERS
AH = 0Ah
DX = FFFFh
ES:DI -> vector string containing new parameters (see #0237)
Return: AH = return code (00h-03h,06h) (see #0229)
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
Note: any subvectors valid for the Change Parameters command replace the
existing values in the current set
SeeAlso: AH=00h/DX=FFFFh,AH=0Fh/DX=FFFFh
--------S-140B-------------------------------
INT 14 - FOSSIL - TRANSMIT NO WAIT
AH = 0Bh
AL = character
DX = port number
Return: AX = result
0000h character not accepted
0001h character accepted
SeeAlso: AH=01h
--------S-140B-------------------------------
INT 14 - MBBIOS - READ BUFFER
AH = 0Bh
CX = size of buffer
ES:DI -> buffer
Return: AH = composite line status (see #0230) formed by ORing all statuses
on receive interrupts; bit 0 set if additional characters
available
AL = composite modem status (see #0231) formed by ORing all statuses
CX = number of characters actually read
DI updated
Note: the PACCOM version of MBBIOS does not use CX or ES:DI on call,
instead returning ES set to the segment of the buffer containing a
received packet, or 0000h if no packets available; the buffer may
be freed with AH=0Ch"MBBIOS"
SeeAlso: AH=02h,AH=08h"MBBIOS",AH=0Ah"MBBIOS",AH=0Ch"MBBIOS",AH=18h"FOSSIL"
--------N-140B--DXFFFF-----------------------
INT 14 - Connection Manager - PREPARE FOR INBOUND CONNECTION
AH = 0Bh
DX = FFFFh
AL = service name
00h use parameter file or default
01h use specified name
ES:DI -> 16-byte blank-padded name
BH = connection notification
00h program awaiting connection, don't notify user
01h notify user on connecting
BL = connection type
00h connection will use Connection Manager API
Return: AH = return code (00h-02h) (see #0229 at AH=00h/DX=FFFFh)
AL = connection ID if AH=00h
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
SeeAlso: AH=04h/DX=FFFFh,AH=0Ch/DX=FFFFh,AH=10h/DX=FFFFh
--------S-140C-------------------------------
INT 14 - FOSSIL - NON-DESTRUCTIVE READ AHEAD
AH = 0Ch
DX = port number
Return: AX = FFFFh character not available
AX = 00xxh character xx available
SeeAlso: AH=08h"MBBIOS",AH=20h"FOSSIL"
--------S-140C-------------------------------
INT 14 - MBBIOS PACCOM support - BUFFER MANAGEMENT
AH = 0Ch
ES = segment of buffer to free, or 0000h to allocate new buffer
Return: ES = segment of allocated buffer (if ES=0000h on entry)
Note: the PACCOM version of MBBIOS uses only ES as buffer address for
AH=0Ah and AH=0Bh
SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
--------N-140C--DXFFFF-----------------------
INT 14 - Connection Manager - TEST FOR INBOUND CONNECTION REQUEST
AH = 0Ch
DX = FFFFh
AL = connection ID from AH=0Bh/DX=FFFFh
Return: AH = return code (00h-03h) (see also #0229 at AH=00h/DX=FFFFh)
03h not prepared for inbound connection
AL = connection ID (if AH=00h) or correct connection ID (if AH=02h)
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
SeeAlso: AH=03h/DX=FFFFh,AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
--------S-140D-------------------------------
INT 14 - FOSSIL - KEYBOARD READ WITHOUT WAIT
AH = 0Dh
Return: AX = result
FFFFh character not available
xxyyh standard IBM-style scan code
SeeAlso: AH=0Eh
--------S-140D-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - GET POINTER TO CH_KEY_RDY FLAG
AH = 0Dh
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: ES:BX -> CH_KEY_RDY flag (see #0265)
SeeAlso: AH=0Ah"Digiboard"
(Table 0265)
Values for Digiboard CH_KEY_RDY flag:
00h receive buffer empty
FFh characters available
--------S-140D-------------------------------
INT 14 - MBBIOS PACCOM support - SET TXD
AH = 0Dh
AL = new setting (FFh = 1.0)
Return: nothing
Desc: specify the time from RTS to start or packet
SeeAlso: AX=0D00h,AH=0Eh"MBBIOS",AH=0Fh"MBBIOS"
--------N-140D--DXFFFF-----------------------
INT 14 - Connection Manager - TERMINATE CONNECTION CLIENT ACTIVITY
AH = 0Dh
DX = FFFFh
Return: AH = return code
00h successful
nonzero operation not terminated
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
Desc: end all Connection Client TSR activity to allow it to be removed from
memory
SeeAlso: AH=05h/DX=FFFFh,AH=6Fh/BX=FFFFh
--------S-140D00-----------------------------
INT 14 - MBBIOS - GET AVAILABLE BYTES
AX = 0D00h
Return: AX = bytes in transmit buffer
CX = bytes in receive buffer
SeeAlso: AH=0Ah"MBBIOS",AH=0Bh"MBBIOS"
--------S-140D01-----------------------------
INT 14 - MBBIOS - LOWER ALL MODEM CONTROL SIGNALS
AX = 0D01h
Return: nothing
Note: this function lowers DTR, RTS, etc.
SeeAlso: AX=0D02h
--------S-140D02-----------------------------
INT 14 - MBBIOS - RAISE ALL MODEM CONTROL SIGNALS
AX = 0D02h
Return: nothing
Note: this function raises DTR, RTS, etc.
SeeAlso: AX=0D01h
--------S-140D03-----------------------------
INT 14 - MBBIOS - SET HANDSHAKE BYTE
AX = 0D03h
CL = new handshake byte
Return: CL = previous handshake byte
Note: this function lowers DTR, RTS, etc.
--------S-140E-------------------------------
INT 14 - FOSSIL - KEYBOARD READ WITH WAIT
AH = 0Eh
Return: AX = xxyyh standard IBM-style scan code
SeeAlso: AH=0Dh"FOSSIL"
--------S-140E-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - WRITE STRING
AH = 0Eh
CX = number of characters to write
ES:BX -> string
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of characters actually written
ZF clear if successful
ZF set on error
SeeAlso: AH=0Fh"Digiboard"
--------S-140E-------------------------------
INT 14 - MBBIOS PACCOM support - SET PERSISTENCE
AH = 0Eh
AL = new setting (FFh = 1.0)
Return: nothing
Desc: specify the time from end of DCD to RTS
SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
--------N-140E--DXFFFF-----------------------
INT 14 - Connection Manager - SET HARDWARE FLOW STATE
AH = 0Eh
DX = FFFFh
AL = connection ID from AH=04h/DX=FFFFh
BL = RTS state (00h off, 01h on)
Return: AH = return code (00h-03h) (see also #0229 at AH=00h/DX=FFFFh)
03h invalid request (BL not 00h or 01h)
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
SeeAlso: AH=03h/DX=FFFFh,AH=0Ah/DX=FFFFh
--------S-140F-------------------------------
INT 14 - FOSSIL - ENABLE/DISABLE FLOW CONTROL
AH = 0Fh
AL = bit mask describing requested flow control (see #0266)
DX = port number
Return: nothing
SeeAlso: AH=09h"MBBIOS",AH=10h"FOSSIL"
Bitfields for FOSSIL requested flow control:
Bit(s) Description (Table 0266)
0 XON/XOFF on transmit (watch for XOFF while sending)
1 CTS/RTS (CTS on transmit/RTS on receive)
2 reserved
3 XON/XOFF on receive (send XOFF when buffer near full)
4-7 all 1
--------S-140F-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - READ STRING
AH = 0Fh
CX = number of characters to read
ES:BX -> buffer
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of characters read
ZF clear if successful
ZF set on error (line status or wrong number of characters)
SeeAlso: AH=0Eh"Digiboard"
--------S-140F-------------------------------
INT 14 - MBBIOS PACCOM support - SET SLOT TIME
AH = 0Fh
AL = new setting in clock ticks
Return: nothing
Desc: specify the time from end of DCD to RTS
SeeAlso: AH=0Dh"MBBIOS",AH=0Eh"MBBIOS",AH=10h"MBBIOS"
--------N-140F--DXFFFF-----------------------
INT 14 - Connection Manager - RETURN ACTIVE CONNECTION PARAMETERS
AH = 0Fh
DX = FFFFh
AL = connection ID
CX = size of buffer or 0000h to get length of returned vector
ES:DI -> buffer for connection parameter vector (see #0237)
Return: AH = return code (00h-02h,06h) (see #0229 at AH=00h/DX=FFFFh)
CX = number of bytes which could not be returned because the given
buffer was too small
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
SeeAlso: AH=08h/DX=FFFFh,AH=0Ah/DX=FFFFh
--------S-1410-------------------------------
INT 14 - FOSSIL - EXTENDED ^C/^K CHECKING AND TRANSMIT ON/OFF
AH = 10h
AL = bit mask
bit 0: enable/disable ^C/^K checking
bit 1: enable/disable the transmitter
DX = port number
Return: nothing
SeeAlso: AH=0Fh"FOSSIL"
--------S-1410-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR RECEIVE BUFFER
AH = 10h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=09h"Digiboard",AH=11h"Digiboard"
--------S-1410-------------------------------
INT 14 - MBBIOS PACCOM support - SET CRC WAIT
AH = 10h
AL = new setting in clock ticks (should be at least 5 character times)
Return: nothing
Desc: specify the time from start of last character to dropping RTS
SeeAlso: AH=0Dh"MBBIOS",AH=0Fh"MBBIOS"
--------N-1410--DXFFFF-----------------------
INT 14 - Connection Manager - QUERY SERVICE NAMES
AH = 10h
DX = FFFFh
CL = subfunction
00h search first
01h search next
ES:DI -> pattern buffer (see #0267)
Return: AH = return code (00h,01h,03h,06h) (see also #0229 at AH=00h/DX=FFFFh)
01h no (more) matching names
03h invalid request
ES:DI buffer filled with reply buffer (see #0267) containing matched
name if AH=00h
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
Desc: obtain the names of groups and lines available for connection requests,
and the names of active Connection Servers
SeeAlso: AH=04h/DX=FFFFh,AH=0Bh/DX=FFFFh
Format of Connection Manager pattern/reply buffer:
Offset Size Description (Table 0267)
00h WORD length of pattern (30h or 32h)
02h 16 BYTEs server pattern or name
12h 16 BYTEs group pattern or name
22h 16 BYTEs line pattern or name
23h BYTE (optional) ???
24h BYTE (optional, returned) current line status
00h available
01h out of service
02h currently allocated to a connection
Note: pattern may include '?' wildcard to match any character
--------S-1411-------------------------------
INT 14 - FOSSIL - SET CURRENT CURSOR LOCATION
AH = 11h
DH = row
DL = column
Return: nothing
Note: this is the same as INT 10/AH=02h
SeeAlso: AH=12h"FOSSIL"
--------S-1411-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CLEAR TRANSMIT BUFFER
AH = 11h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh error
SeeAlso: AH=09h"Digiboard",AH=10h"Digiboard"
--------S-1411-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DISABLE PORT
AH = 11h
DX = port number
Return: AL = status
00h successful
01h IRQ for port is shared
02h IRQ was reserved
SeeAlso: AH=04h"SERIAL",AH=05h"SERIAL",AH=12h"PC-MOS"
--------S-1412-------------------------------
INT 14 - FOSSIL - READ CURRENT CURSOR LOCATION
AH = 12h
Return: DH = row
DL = column
Note: this is the same as INT 10/AH=03h
SeeAlso: AH=11h"FOSSIL"
--------S-1412-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - GET TRANSMIT BUFFER FREE SPACE
AH = 12h
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AX = number of bytes free
SeeAlso: AH=0Ah"Digiboard",AH=14h"Digiboard"
--------S-1412-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET CURRENT PORT PARAMETERS
AH = 12h
DX = port number
Return: AH = status
FFh port number invalid
AL = line parameters (see #0230)
AH = flow control configuration (see #0262 at AH=05h"PC-MOS")
CX:BX = bps rate
DL = XOFF character or 00h for none
DH = XON character or 00h for none
--------S-1413-------------------------------
INT 14 - FOSSIL - SINGLE CHARACTER ANSI WRITE TO SCREEN
AH = 13h
AL = character
Return: nothing
Note: should not be called if it is unsafe to call DOS
SeeAlso: AH=15h
--------S-1413-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - REGISTER A PORT WITH A TERMINAL
AH = 13h
DX = port number
Return: AH = status
FFh port number invalid
else
ES:BX -> BYTE flag (00h buffer empty, FFh buffer contains data)
SeeAlso: AH=17h"PC-MOS"
--------S-1414-------------------------------
INT 14 - FOSSIL - ENABLE OR DISABLE WATCHDOG PROCESSING
AH = 14h
AL = 01h enable watchdog
00h disable watchdog
DX = port number
Return: nothing
SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
--------S-1414-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT STRING
AH = 14h
CX = number of characters in string
DX = port number
ES:BX -> string to be sent
SI = timeout in timer ticks or 0000h for default
Return: AX = number of bytes actually sent
ZF clear if successful
ZF set on timeout
SeeAlso: AH=01h,AH=15h"PC-MOS"
--------S-1414-------------------------------
INT 14 - Digiboard - GET NUMBER OF BOARDS INSTALLED
AH = 14h
Return: AX = number of boards installed
SeeAlso: AH=08h"Digiboard",AH=15h"Digiboard"
--------S-1415-------------------------------
INT 14 - FOSSIL - WRITE CHARACTER TO SCREEN USING BIOS SUPPORT ROUTINES
AH = 15h
AL = character
Return: nothing
SeeAlso: AH=13h"FOSSIL"
--------S-1415-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - INPUT STRING
AH = 15h
CX = size of buffer
DX = port number
ES:BX -> buffer for received characters
SI = timeout in clock ticks or 0000h for default
Return: AX = number of characters actually read
ZF set on timeout (no data available)
SeeAlso: AH=02h,AH=14h"PC-MOS",AH=16h"PC-MOS"
--------S-1415-------------------------------
INT 14 - Digiboard - ENABLE/DISABLE MEMORY
AH = 15h
AL = new state (00h disabled, 01h enabled)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=14h"Digiboard",AH=16h"Digiboard"
--------S-1416-------------------------------
INT 14 - FOSSIL - INSERT/DELETE FUNCTION FROM TIMER TICK CHAIN
AH = 16h
AL = function
00h = delete
01h = add
ES:DX -> routine to call
Return: AX = status
0000h successful
0001h unsuccessful
SeeAlso: AH=07h"FOSSIL"
--------S-1416-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - LINK TO ANOTHER SERIAL DRIVER
AH = 16h
ES:BX -> calling driver's INT 14 entry point
Return: nothing
Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
operating system by The Software Link, Inc.
--------S-1416-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - CCB COMMAND
AH = 16h
AL = CCB command number (see #0268) (see also following entries)
BL = byte 2
BH = byte 3
CL = byte 1 (for all channel functions except 4Eh and 4Fh)
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AX=1646h,AH=18h"Digiboard"
(Table 0268)
Values for Digiboard CCB command number:
40h Set Receive Mid Water Mark
41h Set Receive High Water Mark
42h Flush Receive Buffer
43h Flush Transmit Buffer
44h Transmit Pause
45h Transmit Resume
46h Set Interrupt to Host Mask
47h Set Baud, Data, Stop and Parity
48h Send Break
49h Set Modem Lines
4Ah Set Break Count
4Bh Set Handshake
4Ch Set Xon/Xoff Characters
4Dh Set Transmit Mid Water Mark
4Eh IRQ Polling Timer to Host
4Fh Buffer Set All
50h Port On
51h Port Off
52h Receive Pause
53h Special Character Interrupt
54h RS-422 Enable
--------S-141646-----------------------------
INT 14 - Digiboard - CCB COMMAND - SET INTERRUPT TO HOST MASK
AX = 1646h
BL = bits to set
BH = bits to clear
CL = byte 1
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=1647h
--------S-141647-----------------------------
INT 14 - Digiboard - CCB COMMAND - SET BAUD/DATABITS/STOPBITS/PARITY
AX = 1647h
BL = baud
BH = datatype
CL = byte 1
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=1646h,AX=1649h
--------S-141649-----------------------------
INT 14 - Digiboard - CCB COMMAND - SET MODEM LINES
AX = 1649h
BL = bits to set
BH = bits to clear
CL = byte 1
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=1647h
--------S-14164A-----------------------------
INT 14 - Digiboard - CCB COMMAND - SET BREAK COUNT
AX = 164Ah
BL = break count
CL = byte 1
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Bh
--------S-14164B-----------------------------
INT 14 - Digiboard - CCB COMMAND - SET HANDSHAKE
AX = 164Bh
BL = bits to set
BH = bits to clear
CL = byte 1
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=1649h,AX=164Ch
--------S-14164C-----------------------------
INT 14 - Digiboard - CCB COMMAND - SET XON/XOFF CHARACTERS
AX = 164Ch
BL = XON character
BH = XOFF character
CL = byte 1
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=164Bh,AX=164Dh
--------S-14164D-----------------------------
INT 14 - Digiboard - CCB COMMAND - SET TRANSMIT MID-WATER MARK
AX = 164Dh
BX = new mid-water mark
CL = byte 1
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=164Ch,AX=164Eh,AX=164Fh
--------S-14164E-----------------------------
INT 14 - Digiboard - CCB COMMAND - IRQ POLLING TIMER TO HOST
AX = 164Eh
BL = ticks
BH = ???
CL = mode
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=164Dh
--------S-14164F-----------------------------
INT 14 - Digiboard - CCB COMMAND - BUFFER SET ALL
AX = 164Fh
BL = size
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=164Dh
--------S-141653-----------------------------
INT 14 - Digiboard - CCB COMMAND - SPECIAL CHARACTER INTERRUPT
AX = 1653h
BL = enable/disable
BH = special character
CL = byte 1
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h error
FFh error
SeeAlso: AH=16h"Digiboard",AX=1646h
--------S-1417-------------------------------
INT 14 - FOSSIL - REBOOT SYSTEM
AH = 17h
AL = method
00h = cold boot
01h = warm boot
SeeAlso: INT 16/AX=E0FFh,INT 19,INT 60/DI=0606h
--------S-1417-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - WRITE MODEM CONTROL REGISTER
AH = 17h
AL = new value for UART's modem control register
DX = port number
Return: nothing
--------S-1418-------------------------------
INT 14 - FOSSIL - READ BLOCK
AH = 18h
CX = maximum number of characters to transfer
DX = port number
ES:DI -> user buffer
Return: AX = number of characters transferred
SeeAlso: AH=19h"FOSSIL",AH=83h"COURIERS",AX=FF02h,INT 6B/AX=0100h
--------S-1418-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - SEND BIOS COMMAND
AH = 18h
ES:BX -> 16-byte command string
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
80h timeout
AL = mailbox status
00h no errors
8Xh BIOS error
ES:BX buffer filled in with mailbox string
ZF clear if no errors
ZF set if either status byte contains an error code
SeeAlso: AH=16h"Digiboard"
--------S-1418-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - GET DRIVER DESCRIPTION
AH = 18h
DX = port number
Return: DS:BX -> 40-byte buffer containing a string identifying the serial
driver
SeeAlso: AH=06h"PC-MOS"
--------S-1419-------------------------------
INT 14 - FOSSIL - WRITE BLOCK
AH = 19h
CX = maximum number of characters to transfer
DX = port number
ES:DI -> user buffer
Return: AX = number of characters transferred
SeeAlso: AH=18h"FOSSIL",AH=86h,INT 6B/AX=0000h
--------S-1419-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X* - SPECIAL CHARACTER INTERRUPT
AH = 19h
BL = flag
00h disable special character interrupt
FFh enable interrupt
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: AH = status
00h successful
FFh failed
SeeAlso: AH=1Ah"Digiboard"
--------S-1419-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - SELECTIVE BUFFER FLUSH
AH = 19h
AL = what to flush
bit 0: input buffer
bit 1: output buffer
DX = port number
Return: nothing
SeeAlso: AH=09h"PC-MOS"
--------S-141A-------------------------------
INT 14 - FOSSIL - BREAK BEGIN OR END
AH = 1Ah
AL = 00h stop sending 'break'
01h start sending 'break'
DX = port number
Return: nothing
SeeAlso: AH=06h"FOSSIL",AH=8Ah,AH=FAh
--------S-141A-------------------------------
INT 14 - Digiboard DigiCHANNEL PC/X - SPECIAL CHARACTER FLAG/COUNTER
AH = 1Ah
BX = subfunction
00h return pointer to special character flag byte
01h return pointer to special character counter word
DX = port number (00h-03h) (04h-43h for XAPCM232.SYS)
Return: ES:BX -> special character flag or counter
Notes: flag is FFh if one or more special characters are in the receive
buffer; it is 00h and the counter is invalid if no special characters
are in the receive buffer
counter (if valid) contains the number of characters in the receive
buffer up to and including the last-received special character
--------S-141B-------------------------------
INT 14 - FOSSIL - RETURN INFORMATION ABOUT THE DRIVER
AH = 1Bh
DX = port number
CX = size of user buffer
ES:DI -> user buffer for driver info (see #0269)
Return: AX = number of characters transferred
CX = 3058h ("0X") (X00 FOSSIL only)
DX = 2030h (" 0") (X00 FOSSIL only)
Format of FOSSIL driver info:
Offset Size Description (Table 0269)
00h WORD size of structure in bytes
02h BYTE FOSSIL spec driver conforms to
03h BYTE revision level of this specific driver
04h DWORD pointer to ASCIZ identification string
08h WORD size of the input buffer
0Ah WORD number of bytes left in buffer
0Ch WORD size of the output buffer
0Eh WORD number of bytes left in buffer
10h BYTE width of screen
11h BYTE length of screen
12h BYTE actual baud rate, computer to modem
--------S-141C-------------------------------
INT 14 - X00 FOSSIL - ACTIVATE PORT
AH = 1Ch
DX = port number
Return: AX = 1954h if successful
BL = maximum function number supported (not including 7Eh and above)
BH = revision of FOSSIL specification supported
Note: this is a duplicate of AH=04h, so that AH=04h may be made compatible
with the PS/2 BIOS in a future release
SeeAlso: AH=04h"FOSSIL",AH=1Dh
--------S-141D-------------------------------
INT 14 - X00 FOSSIL - DEACTIVATE PORT
AH = 1Dh
DX = port number
Return: none
Notes: this is a duplicate of AH=05h, so that AH=05h may be made compatible
with the PS/2 BIOS in a future release
ignored if the port was never activated with AH=04h or AH=1Ch
SeeAlso: AH=05h"FOSSIL",AH=1Ch
--------S-141E-------------------------------
INT 14 - X00 FOSSIL - EXTENDED LINE CONTROL INITIALIZATION
AH = 1Eh
AL = break status
00h if break
01h if no break
BH = parity (see #0270)
BL = number of stop bits
00h one stop bit
01h two stop bits (1.5 if 5 bit word length)
CH = word length (see #0271)
CL = bps rate (see #0272)
DX = port number
Return: AX = port status code (see #0230,#0231)
Notes: this function is intended to exactly emulate the PS/2 BIOS AH=04h call
if the port was locked at X00 load time, the appropriate parameters are
ignored
SeeAlso: AH=00h,AH=04h"SERIAL"
(Table 0270)
Values for X00 FOSSIL parity:
00h no parity
01h odd parity
02h even parity
03h stick parity odd
04h stick parity even
SeeAlso: #0233,#0271,#0272
(Table 0271)
Values for X00 FOSSIL word length:
00h 5 bits
01h 6 bits
02h 7 bits
03h 8 bits
SeeAlso: #0234,#0270,#0272
(Table 0272)
Values for X00 FOSSIL bps rate:
00h 110
01h 150
02h 300
03h 600
04h 1200
05h 2400
06h 4800
07h 9600
08h 19200
SeeAlso: #0235,#0270,#0271
--------S-141E------------------------------------
INT 14 - HUNTER 16 - READ COMMS PARAMETERS
AH = 1Eh
CX = channel number (00h COM1, 01h COM2, ...)
DS:BX -> buffer for communications parameters (see #0273)
Return: DS:BX buffer filled
Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
SeeAlso: AH=20h"HUNTER"
Format of HUNTER 16 communications parameters:
Offset Size Description (Table 0273)
00h BYTE communications type (00h IBM, nonzero Husky)
01h BYTE port number (00h COM1, 01h COM2)
02h BYTE baud rate (00h 110 bps, 01h 150, 02h 300, 03h 600, 04h 1200,
05h 2400, 06h 4800, 07h 9600, 08h 19200, 09h 38400)
03h BYTE data bits (01h seven, 02h eight)
04h BYTE parity (00h none, 01h odd, 02h even)
05h BYTE stop bits (00h one, 01h two)
06h BYTE handshake (see #0274)
07h BYTE handshake protocol (00h none, 01h Xon/Xoff, 02h HWK3780)
08h BYTE Nulls after CR (0-20)
09h BYTE LF (00h off, 01h on)
0Ah BYTE Serig. 0..7Fh: Ignore this character
80h: Serig off
0Bh BYTE echo (00h off, 01h on)
0Ch BYTE transmit timeout in seconds (1-60) or 00h to disable
0Dh BYTE receive timeout in seconds (1-60) or 00h to disable
0Eh 5 BYTEs reserved
Bitfields for HUNTER 16 handshake:
Bit(s) Description (Table 0274)
0-1 0: RTS off, 1: RTS hold, 2: RTS true
2 DTR enabled
4 CTS enabled
5 DSR enabled
6 DCD enabled
--------S-141F-------------------------------
INT 14 - X00 FOSSIL - EXTENDED SERIAL PORT STATUS/CONTROL
AH = 1Fh
DX = port number
AL = direction
00h read modem control register
Return: BL = modem control register (see #0275)
AH = status
01h write modem control register
BL = modem control register (see #0275)
Return: AX = status
Notes: this function is intended to exactly emulate the PS/2 BIOS AH=05h call
X00 forces BL bit 3 set (interrupts cannot be disabled)
SeeAlso: AH=00h,AH=05h"SERIAL"
Bitfields for X00 FOSSIL modem control register:
Bit(s) Description (Table 0275)
0 data terminal ready
1 request to send
2 OUT1
3 OUT2 (interrupts) enabled
4 LOOP
5-7 reserved
--------S-1420-------------------------------
INT 14 - X00 FOSSIL - DESTRUCTIVE READ WITH NO WAIT
AH = 20h
DX = port number
Return: AH = 00h if character was available
AL = next character (removed from receive buffer)
AX = FFFFh if no character available
SeeAlso: AH=0Ch,AH=21h"X00"
--------S-1420-------------------------------
INT 14 - Alloy MW386 - ATTACH LOGICAL COMMUNICATIONS PORT TO PHYSICAL PORT
AH = 20h
AL = logical port (01h COM1, 02h COM2)
DX = physical port number
Return: AX = status
0000h successful
FFFFh failed
SeeAlso: AH=21h"Alloy",AH=22h"Alloy",AH=23h"Alloy",INT 17/AH=8Bh"Alloy"
--------S-1420-------------------------------
INT 14 - MultiDOS Plus - INITIALIZE PORT
AH = 20h
AL = port parameters (see #0226 at AH=00h"SERIAL")
DX = port number (0-3)
Return: AH = status
00h successful
41h no such port
64h monitor mode already active
SeeAlso: AH=00h"SERIAL",AH=04h"MultiDOS",AH=21h"MultiDOS",AH=23h"MultiDOS"
--------S-1420-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - CHECK OUTPUT QUEUE
AH = 20h
DX = port number
Return: AX = number of bytes in output buffer
SeeAlso: AH=0Ah"Digiboard"
--------S-1420------------------------------------
INT 14 - HUNTER 16 - SELECT COMMS PARAMETERS
AH = 20h
CX = channel number (00h COM1, 01h COM2, ...)
DS:BX -> buffer with communications parameter (see #0273)
Return: AX = status
0000h successful
0001h invalid parameter
SeeAlso: AH=1Eh"HUNTER",AH=21h"HUNTER"
--------S-1421-------------------------------
INT 14 - X00 FOSSIL - STUFF RECEIVE BUFFER
AH = 21h
AL = character
DX = port number
Return: nothing
Notes: the given character is inserted at the end of the receive buffer as if
it had just arrived from the serial port; all normal receive
processing (XON/XOFF, ^C/^K) is performed on the character
fully re-entrant
SeeAlso: AH=20h"X00"
--------S-1421-------------------------------
INT 14 - Alloy MW386 v1.x only - RELEASE PHYSICAL COMMUNICATIONS PORT
AH = 21h
DX = physical port number
Return: AX = status
0000h successful
FFFFh failed
SeeAlso: AH=20h"Alloy",AH=22h"Alloy"
--------S-1421-------------------------------
INT 14 - MultiDOS Plus - TRANSMIT CHARACTER
AH = 21h
AL = character to send
DX = port number
Return: AH = status (see #0276)
Note: monitor mode must have been turned on with AH=24h before calling
SeeAlso: AH=20h"MultiDOS",AH=22h"MultiDOS",AH=24h"MultiDOS"
(Table 0276)
Values for MultiDOS Plus status:
00h successful
39h no DSR or CTS
3Ch no DSR
3Bh no CTS
41h no such port
42h monitor mode not active
97h timed out
--------S-1421-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - OUTPUT CHARACTER, WITH TIMEOUT
AH = 21h
AL = char to send
DX = port number
SI = timeout in timer ticks (0000h = default)
Return: after character is sent or timeout expires
Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
operating system by The Software Link, Inc.
SeeAlso: AH=01h,AH=0Eh"Digiboard",AH=22h"PC-MOS"
--------S-1421------------------------------------
INT 14 - HUNTER 16 - EXTENDED CONTROL
AH = 21h
AL = command
01h force transmission of buffer
02h clear transmit buffer
03h clear receive buffer
DX = port (00h COM1, 01h COM2)
Return: AH = extended status
Desc: executes the command on the selected port
SeeAlso: AH=1Eh"HUNTER",AH=20h"HUNTER",AH=22h"HUNTER",AH=24h"HUNTER"
--------S-1422-------------------------------
INT 14 - Alloy MW386 v2+ - RELEASE LOGICAL COMMUNICATIONS PORT
AH = 22h
AL = logical port (01h COM1, 02h COM2)
Return: AX = status (0000h successful)
SeeAlso: AH=20h"Alloy",AH=21h"Alloy"
--------S-1422-------------------------------
INT 14 - MultiDOS Plus - RECEIVE CHARACTER
AH = 22h
DX = port number
Return: AH = status (see also AH=21h"MultiDOS")
00h successful
AL = character
3Dh framing and parity error
3Eh overrun error
3Fh framing error
40h parity error
96h ring buffer overflow
Note: if no character is available, this function waits until a character
arrives or an implementation-dependent timeout elapses
SeeAlso: AH=20h"MultiDOS",AH=21h"MultiDOS",AH=27h
--------S-1422-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - RECEIVE CHARACTER, WITH TIMEOUT
AH = 22h
DX = port number
SI = timeout in timer ticks (0000h = default)
Return: AH = port status (see also #0230 at AH=03h)
bit 7 = 1 indicates time-out
AL = character received
Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
operating system by The Software Link, Inc.
SeeAlso: AH=02h,AH=0Fh"Digiboard",AH=21h"PC-MOS"
--------S-1422------------------------------------
INT 14 - HUNTER 16 - EXTENDED STATUS
AH = 22h
DX = port (00h COM1, 01h COM2)
Return: AH = extended status
BX = number of characters in input buffer
CX = number of characters in output buffer
Desc: returns the most recent Extended Status code for the port
SeeAlso: AH=21h"HUNTER"
--------S-1423-------------------------------
INT 14 - Alloy MW386 v2+ - GET PORT NUMBER FROM LOGICAL PORT ID
AH = 23h
AL = logical port (01h COM1, 02h COM2)
DH = user ID
DL = process ID (DH,DL both FFh for current task)
Return: AL = MW386 port mode (see #0277)
CX = MW386 port number
DH = owner's user ID
DL = owner's task ID
SeeAlso: AH=20h"Alloy",INT 17/AH=8Bh"Alloy"
Bitfields for MW386 port mode:
Bit(s) Description (Table 0277)
0 port is shared (spooler only)
1 port is spooled instead of direct (spooler only)
2 port is assigned as logical COM device, not in spooler
3 port is free
--------S-1423-------------------------------
INT 14 - MultiDOS Plus - GET PORT STATUS
AH = 23h
DX = port number
Return: AH = line status (see #0230 at AH=03h)
AL = modem status (see #0231 at AH=03h)
SeeAlso: AH=03h,AH=07h"MultiDOS",AH=20h"MultiDOS"
--------S-1423-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - DECLARE PORT OWNERSHIP
AH = 23h
DX = port number
BX = TCB segment/selector address of owner task
Return: nothing
SeeAlso: AH=0Dh"Digiboard",AH=21h"PC-MOS",AH=22h"PC-MOS"
--------S-1423------------------------------------
INT 14 - HUNTER 16 - CONTROL HANDSHAKE LINES
AH = 23h
BH = handshake line to set (00h RTS, 01h DTR)
BL = new level (00h low, 01h high)
Return: nothing
Desc: sets the handshake lines of COM1 to the desired level
SeeAlso: AH=21h"HUNTER",AH=24h"HUNTER"
--------S-1424-------------------------------
INT 14 - Alloy MW386 v2+ - CHANGE PHYSICAL PORT PARAMETERS
AH = 24h
CX = physical I/O port number
DS:DX -> configuration table (see #0278)
Return: AH = 00h
Note: invalid port numbers are merely ignored
SeeAlso: INT 17/AH=96h
Format of Alloy MW386 configuration table:
Offset Size Description (Table 0278)
00h BYTE baud rate (see #0279)
01h BYTE data bits (00h=5, 01h=6, 02h=7, 03h=8)
02h BYTE parity (00h none, 01h odd, 02h even)
03h BYTE stop bits (00h=1, 01h=2)
04h BYTE receive flow control
00h none, 01h XON/XOFF, 02h DTR/DSR, 03h XPC, 04h RTS/CTS
05h BYTE transmit flow control (as for receive)
(Table 0279)
Values for Alloy MW386 baud rate:
00h 38400
01h 19200
02h 9600
03h 7200
04h 4800
05h 3600
06h 2400
07h 2000
08h 1200
09h 600
0Ah 300
0Bh 150
0Ch 134.5
SeeAlso: #0235
--------S-1424-------------------------------
INT 14 - MultiDOS Plus - SET MONITOR MODE
AH = 24h
AL = port status storage
00h single status for entire receive buffer
01h separate status kept for each byte in receive buffer
DX = port number
Return: AH = status
00h successful
3Ah invalid status storage specified
41h no such port
64h monitor mode already active
Note: in monitor mode, MultiDOS redirects all BIOS video output to a serial
port
SeeAlso: AH=20h"MultiDOS",AH=25h
--------S-1424-------------------------------
INT 14 - PC-MOS/386 v5.01 $serial.sys v5.04 - ???
AH = 24h
Return: ???
Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
operating system by The Software Link, Inc.
--------S-1424------------------------------------
INT 14 - HUNTER 16 - CONTROL CTS HANDSHAKING
AH = 24h
AL = new CTS handshake state for COM1 (00h disabled, 01h enabled)
Return: nothing
SeeAlso: AH=23h"HUNTER",AH=25h"HUNTER",AH=26h"HUNTER"
--------S-1425-------------------------------
INT 14 - MultiDOS Plus - CLEAR BUFFERS
AH = 25h
AL = function
00h only clear buffers
01h clear buffers and deactivate
DX = port number
Return: AH = status
00h successful
3Ah invalid function
41h no such port
42h monitor mode not active
SeeAlso: AH=20h"MultiDOS",AH=24h"MultiDOS"
--------S-1425------------------------------------
INT 14 - HUNTER 16 - CONTROL RS232 DRIVERS
AH = 25h
AL = new state of RS232 drivers (00h off, 01h on)
Return: nothing
Note: this function can be used to save power by turning off the RS232
drivers. It can also be used to turn on the RS232 drivers before
connecting to a remote system to avoid "garbage" while the drivers
turn on.
SeeAlso: AH=23h"HUNTER",AH=24h"HUNTER",AH=26h"HUNTER"
--------S-1426------------------------------------
INT 14 - HUNTER 16 - CONTROL RI POWER UP
AH = 26h
AL = 00h enable RI power up
else disable RI power up
Return: nothing
Desc: control whether the Ring Indicator handshake can power up the Hunter
--------S-1427-------------------------------
INT 14 - MultiDOS Plus - GET BUFFER CHARACTER COUNT
AH = 27h
DX = port number
Return: AH = status
00h successful
41h no such port
42h monitor mode not active
AL = number of characters in receive buffer
--------S-1427------------------------------------
INT 14 - HUNTER 16 - GET INSTALLED PROTOCOLS COUNT
AH = 27h
AL = number of extended protocols installed (since last call)
Return: AL = total number installed, including new ones
Desc: Returns the number of extended communication protocols installed
SeeAlso: AH=25h"HUNTER",AH=28h"HUNTER"
--------S-1428------------------------------------
INT 14 - HUNTER 16 - GET PROTOCOL NAME
AH = 28h
AL = protocol handle
DS:BX -> 8 character buffer for protocol name
Return: AH = status
00h successful
DS:BX buffer filled with the protocol name
FFh failed
SeeAlso: AH=27h"HUNTER",AH=29h"HUNTER"
--------S-1429------------------------------------
INT 14 - HUNTER 16 - GET PROTOCOL HANDLE
AH = 29h
DS:BX -> buffer containing the protocol name
Return: AH = status
00h successful
AL = handle
FFh failed
SeeAlso: AH=28h"HUNTER",AH=2Ah"HUNTER"
--------S-142A------------------------------------
INT 14 - HUNTER 16 - EXTENDED PROTOCOL MENU
AH = 2Ah
AL = protocol handle
Return: AH = status
00h successful
FFh failed
AL = menu handle
SeeAlso: AH=29h"HUNTER",AH=2Bh"HUNTER"
--------S-142B------------------------------------
INT 14 - HUNTER 16 - GET EXTENDED PROTOCOL PARAMETERS
AH = 2Bh
AL = protocol handle
DS:BX -> buffer for extended protocol parameters
Return: AH = status
00h successful
DS:BX buffer filled with extended parameters
FFh failed
SeeAlso: AH=2Ah"HUNTER"
--------S-142C00----------------------------------
INT 14 - HUNTER 16 - GET DTR
AX = 2C00h
Return: AH = 00h
BL = current state
00h normal DTR operation
else DTR is forced high
Desc: Indicates whether the DTR signal on COM1 is forced high
Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
SeeAlso: AH=2Ch"SET DTR"
--------S-142C------------------------------------
INT 14 - HUNTER 16 - SET DTR
AH = 2Ch
AL nonzero
BL = new state
00h normal operation
else force DTR high
Return: AH = 00h
Desc: determine whether the DTR signal on COM1 should be forced high
SeeAlso: AX=2C00h
--------N-1436-------------------------------
INT 14 - ComShare - INSTALLATION CHECK
AH = 36h
Return: AX = 4353h ('CS') if installed
BX = bitmap of installed ports (bit 0: COM1 is gateway, etc.)
CX reserved for future use
WORD DX:[0100h] = ComShare version number
Program: The ComShare System is a modem-sharing program for NetBIOS and
NetWare-based networks by NashaKala Corporation
Note: ComShare supports the standard BIOS INT 14h calls with a slight
change in the interpretation of speed values
(see #0235 at AH=04h"SERIAL")
SeeAlso: AH=00h"SERIAL",AH=04h"SERIAL",AX=F4FFh
--------t-144000-----------------------------
INT 14 - I1541 - INSTALLATION CHECK
AX = 4000h
Return: AX = 1541h if installed
BH = I1541 major version (BCD)
BL = I1541 minor version (BCD)
CX = 0000h
--------t-144001-----------------------------
INT 14 - I1541 - TEST IF 1541 CABLE CONNECTED
AX = 4001h
Return: CF clear if connected
BL = LPT number where 1541 cable is connected (1..3)
CF set if cable not connected
Desc: scan all the LPT ports searching for the adapter cable
SeeAlso: AX=4000h
--------t-144002-----------------------------
INT 14 - I1541 - SELECT LPT PORT FOR OUTPUT
AX = 4002h
BL = LPT number (1..3)
Return: CF clear if successful
CF set otherwise
Desc: force the input output routines to work on the cable placed on LPT BL
SeeAlso: AX=4001h
--------t-144003-----------------------------
INT 14 - I1541 - RESET ALL DEVICES
AX = 4003h
Return: nothing
Desc: send a reset pulse of 100ms to all CBM devices
Note: it is necessary to wait about 2 seconds after reset before executing
other instructions
SeeAlso: AX=4000h,AX=4004h
--------t-144004-----------------------------
INT 14 - I1541 - SEND LISTEN SIGNAL
AX = 4004h
BH = device number (0..15)
Return: CF clear if successful
CF set on error
AL = error number (see #0280)
SeeAlso: AX=4005h,AX=4006h
(Table 0280)
Values for I1541 error number:
00h device not present
01h listener not ready
02h missing EOI time-out
03h EOI not completed
04h data not released
05h frame error
--------t-144005-----------------------------
INT 14 - I1541 - SEND SECONDARY ADDRESS FOR LISTEN
AX = 4005h
BL = channel number and mode (see #0281)
Return: CF clear if successful
CF set on error
AL = error number (see #0280)
SeeAlso: AX=4004h,AX=4006h
Bitfields for I1541 channel number and mode:
Bit(s) Description (Table 0281)
7-4 mode
0110 read/write
1110 close channel
1111 open channel
3-0 channel number
--------t-144006-----------------------------
INT 14 - I1541 - SEND UNLISTEN SIGNAL
AX = 4006h
Return: CF clear if successful
CF set on error
AL = error number (see #0280)
SeeAlso: AX=4004h,AX=4005h
--------t-144007-----------------------------
INT 14 - I1541 - SEND TALK SIGNAL
AX = 4007h
BH = device number (0-15)
Return: CF clear if successful
CF set on error
AL = error number (see #0280)
SeeAlso: AX=4008h,AX=4009h
--------t-144008-----------------------------
INT 14 - I1541 - SEND SECONDARY ADDRESS FOR TALK
AX = 4008h
BL = channel number and mode (see #0281)
Return: CF clear if successful
CF set on error
AL = error number (see also #0280)
40h turn around time-out
SeeAlso: AX=4007h,AX=4009h
--------t-144009-----------------------------
INT 14 - I1541 - SEND UNTALK SIGNAL
AX = 4009h
Return: CF clear if successful
CF set on error
AL = error number (see #0280)
SeeAlso: AX=4007h,AX=4008h
--------t-14400A-----------------------------
INT 14 - I1541 - SEND A BYTE TO A DEVICE
AX = 400Ah
BL = byte to send
CL = last-byte flag
00h more bytes follow
01h this is the last byte to be sent
Return: CF clear if successful
CF set on error
AL = error number (see #0280)
SeeAlso: AX=4000h,AX=400Bh
--------t-14400B-----------------------------
INT 14 - I1541 - RECEIVE A BYTE FROM A DEVICE
AX = 400Bh
Return: CF clear if successful
AL = byte received
CL = last-byte flag
00h more bytes to follow
01h received byte is the last
CF set on error
AL = error number
80h EOI response required
81h talker not ready
82h clock not set
83h clock not released
CL = 00h
SeeAlso: AX=4000h,AX=400Ah
--------t-14400C-----------------------------
INT 14 - I1541 - WAIT
AX = 400Ch
CX = number of 838ns microticks to wait (0000h means 65536, ~55ms)
Return: after wait period elapses
SeeAlso: AX=4000h,AX=400Dh
--------t-14400D-----------------------------
INT 14 - I1541 - LONGWAIT
AX = 400Dh
DX:CX = number of 838ns microticks to wait
(0000h:0000h means 4294967296, about one hour)
Example: To wait 1s you must set DX:CX=(1s/838ns)=1193180
SeeAlso: AX=4000h,AX=400Ch
--------t-14400E-----------------------------
INT 14 - I1541 - GET INFO
AX = 400Eh
Return: AX = LPT port I/O address in use (0000h if no cable in use)
BL = LPT number (1..3) in use (00h if no cable in use)
CF set if the cable is auto-detectable
CF clear if cable could not be auto-detected or is not present
SeeAlso: AX=4000h
--------S-1456-------------------------------
INT 14 U - BWCOM14 - INSTALLATION CHECK
AH = 56h
Return: CX = 0001h if installed
Program: BWCOM14 is a network serial port emulator (simulating a Hayes modem
connected to the serial port) distributed as part of the
Beame&Whiteside BW-NFS package
SeeAlso: AH=57h,AH=58h,INT 2F/AX=DF00h/BX=5445h
--------S-1457-------------------------------
INT 14 U - BWCOM14 - INITIALIZE
AH = 57h
DL = port number
Return: AL = initialization status (00h successful, 01h already initialized)
CX = port status (0001h port redirected, 0002h and FFFFh failed)
Note: after this call, all invocations of INT 14/AH=00h-03h for the specified
port will be handled by BWCOM14 until AH=58h is called
SeeAlso: AH=00h"SERIAL",AH=56h,AH=58h
--------S-1458-------------------------------
INT 14 U - BWCOM14 - SHUTDOWN
AH = 58h
Return: CX = status (0001h successful, 0002h not initialized)
Note: after this call, BWCOM14 will no longer redirect the COM port
SeeAlso: AH=56h,AH=57h
--------N-146F--BXFFFE-----------------------
INT 14 U - Connection Manager - ???
AH = 6Fh
BX = FFFEh
???
Return: ???
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
--------N-146F--BXFFFF-----------------------
INT 14 - Connection Manager - INSTALLATION CHECK
AH = 6Fh
BX = FFFFh
Return: DX:BX -> Connection Manager Communication Table if installed
BX = FFFFh if not installed
SeeAlso: AH=0Dh/DX=FFFFh
--------S-146F00-----------------------------
INT 14 - HP Vectra EX-BIOS - "F14_INQUIRE" - INSTALLATION CHECK
AX = 6F00h
BX <> 4850h (usually set to 0000h for simplicity)
Return: BX = 4850h ("HP") if HP Extended BIOS serial port extensions available
AX destroyed
Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras
SeeAlso: AX=6F01h,AX=6F02h,AX=6F03h,AX=6F04h,INT 10/AX=6F00h,INT 14/AX=6F00h
SeeAlso: INT 17/AX=6F00h,INT 33/AX=6F00h
--------S-146F01-----------------------------
INT 14 - HP Vectra EX-BIOS - "F14_EXINIT" - INITIALIZE SERIAL PORT
AX = 6F01h
BX = port attributes (see #0282)
DX = port number (0-3)
Return: AH = line status (see #0230)
AL = modem status (see #0231)
Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras
SeeAlso: AX=6F00h
Bitfields for HP Vectra Extended BIOS serial port attributes:
Bit(s) Description (Table 0282)
8-5 data rate (110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200)
4-3 parity
00 none
01 odd
10 none
11 even
2 stop bits (0 = one, 1 = two)
1-0 bits per character
10 seven-bit characters
11 eight-bit characters
0x undefined
--------S-146F02-----------------------------
INT 14 - HP Vectra EX-BIOS - "F14_PUT_BUFFER" - TRANSMIT BUFFER
AX = 6F02h
CX = number of characters in buffer
DX = port number (0-3)
ES:DI -> buffer containing characters
Return: AH = line status (see #0230)
AL = modem status (see #0231)
CX = number of bytes actually sent
ES:DI -> next byte to be transferred (unchanged if all bytes sent)
Desc: send characters from the specified buffer until all characters have
been sent or an error/timeout is encountered
Note: supported by original HP Vectra AT and by ES/QS/RS series Vectras
SeeAlso: AX=6F00h,AX=6F03h,AX=6F04h,INT 17/AX=6F02h
--------S-146F03-----------------------------
INT 14 - HP Vectra EX-BIOS - "F14_GET_BUFFER" - READ DATA INTO BUFFER
AX = 6F03h
CX = size of buffer
DX = port number (0-3)
ES:DI -> buffer for received characters
Return: AH = line status (see #0230)
---on error (AH bit 7 set)---
AL = 00h
ES:DI -> next byte to be transferred
---if successful---
AL = last byte read
ES:DI unchanged
CX = number of bytes read
Desc: read characters into the specified buffer until the buffer is filled
or a timeout occurs
Notes: supported by original HP Vectra AT and by ES/QS/RS series Vectras
polls the Data Set Ready modem status and Data Ready line status bits
to determine when characters are available
SeeAlso: AX=6F00h,AX=6F02h,AX=6F04h
--------S-146F04-----------------------------
INT 14 - HP Vectra EX-BIOS - "F14_TRM_BUFFER" - READ UNTIL TERMINATOR
AX = 6F04h
BL = lowest termination character
BH = highest termination character
CX = size of buffer
DX = port number (0-3)
ES:DI -> buffer for received characters
Return: AH = line status (see #0230)
---on error (AH bit 7 set)---
AL = 00h
ES:DI -> next byte to be transferred
---if successful---
AL = last byte read
ES:DI unchanged
CX = number of bytes read
Desc: read characters into the specified buffer until the buffer is filled,
a character in the specified range is received, or a timeout occurs
Notes: supported by original HP Vectra AT and by ES/QS/RS series Vectras
polls the Data Set Ready modem status and Data Ready line status bits
to determine when characters are available
SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h
--------U-147000-----------------------------
INT 14 - NEWCOM - INSTALLATION CHECK
AX = 7000h
Return: AX = 4E43h ('NC') if installed
BX = 4F4Dh ('OM') if installed
CH = major version number
CL = minor version number
DH = patch level
DL = language (currently: 00h English, 01h French)
Program: Newcom is a DOS commandline-enhancer by kilobug@kali.isicom.fr
SeeAlso: INT 2F/AX=D44Dh
--------S-147E-------------------------------
INT 14 - FOSSIL - INSTALL AN EXTERNAL APPLICATION FUNCTION
AH = 7Eh
AL = code assigned to external application (80h-BFh)
80h reserved for communications FOSSIL
81h video FOSSIL
82h reserved for keyboard FOSSIL
83h reserved for system FOSSIL
ES:DX -> entry point
Return: AX = 1954h
BL = code assigned to application (same as input AL)
DH = 00h failed
01h successful
SeeAlso: AH=7Fh,AH=80h"FOSSIL",AX=8100h,AH=82h"FOSSIL",AH=83h"FOSSIL"
--------S-147F-------------------------------
INT 14 - FOSSIL - REMOVE AN EXTERNAL APPLICATION FUNCTION
AH = 7Fh
AL = code assigned to external application
ES:DX -> entry point
Return: AX = 1954h
BL = code assigned to application (same as input AL)
DH = 00h failed
01h successful
SeeAlso: AH=7Eh
--------S-1480-------------------------------
INT 14 - COMMUNICATIONS FOSSIL
AH = 80h
SeeAlso: AH=7Eh
--------S-1480-------------------------------
INT 14 - COURIERS.COM - INSTALLATION CHECK
AH = 80h
Return: AH = E8h if loaded
Program: COURIERS is a TSR utility by PC Magazine
--------S-148000-----------------------------
INT 14 - ARTICOM - INSTALLATION CHECK
AX = 8000h
Return: AL = FFh if installed
BH = major version
BL = minor version
Program: ArtiCom is an asynchronous communications driver by Artisoft which
works on top of NetBIOS and allows modem/serial-port sharing by
programs using INT 14 for serial I/O.
Note: ArtiCom supports 32 simultaneous COM ports using multiport cards and
drivers
SeeAlso: AH=00h"SERIAL",AH=01h,AH=02h,AH=03h,AH=04h"SERIAL",AH=05h"SERIAL"
SeeAlso: AX=8001h,AX=8002h
--------S-148000-----------------------------
INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET ERROR CODE AND BUFFER STATUS
AX = 8000h
DX = port number
Return: AX = code for last error (see #0283)
BX = number of characters in output buffer
CX = nubmer of characters in input buffer
DX = state flag (see #0284)
Program: COMM-DRV is a universal serial communications driver by Willies'
Computer Software Company, which supports standard INT 14 and
FOSSIL calls as well as its own interfaces
SeeAlso: AX=8001h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
(Table 0283)
Values for COMM-DRV error code:
00h no error
01h buffer not set or attempted to change buffer for active port
02h port not active
03h transmit buffer full
04h receive buffer full
05h syntax error
06h invalid buffer size
07h invalid port
08h handler changed
09h invalid baud rate
0Ah invalid parity setting
0Bh invalid data length
0Ch invalid number of stop bits
0Dh invalid protocol number
0Eh IRQ changed
0Fh port changged
10h invalid threshold setting
11h invalid IRQ number
12h interrupts not enabled
13h invalid break syntax
14h fatal error
15h CTS error
16h invalid RS232 I/O port address
17h environment variable not set
18h error on IOCTL call
19h error during atexit cleanup
1Ah error mapping for direct calls
1Bh error opening device
1Ch unable to allocate memory
1Dh error on external micro card
1Eh card changed error
1Fh card type error
20h not supported
21h parent port error
22h card command buffer full
23h no subdevice for this port
24h unknown error
25h external card busy
26h no more timers available
27h INT 14 vector changed
28h INT 08 vector changed
29h DPMI error
2Ah TSR buffer too small (or nonexistent)
2Bh out of asynchronous resources
2Ch out of timer resources
2Dh out of "other" timer resources
2Eh file I/O error
2Fh hardware memory > 64K
Bitfields for state flag :
Bit(s) Description (Table 0284)
0 port is active
1 output throttled (XOFF received, or DSR or CTS reset)
2 input throttled (XOFF sent, or DTR or RTS reset)
--------S-148001-----------------------------
INT 14 - ARTICOM - UNLOAD ASYNCHRONOUS REDIRECTOR FROM MEMORY
AX = 8001h
Return: AX = error code, if error (see #0286)
SeeAlso: AX=8000h"ARTICOM",AX=8002h"ARTICOM",AX=8003h"ARTICOM"
Index: uninstall;ARTICOM
--------S-148001-----------------------------
INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
AX = 8001h
DX = port number
Return: BX:DI -> Port Control Block (see #0293)
SeeAlso: AX=8000h"COMM-DRV",AX=8002h"COMM-DRV",AX=8003h"COMM-DRV"
--------S-148002-----------------------------
INT 14 - ARTICOM - GET ASYNCHRONOUS REDIRECTOR STATUS
AX = 8002h
ES:DI -> buffer for redirector status structure (see #0285)
Return: AX = error code, if error (see #0286)
SeeAlso: AX=8000h"ARTICOM",AX=8003h"ARTICOM"
Format of ARTICOM redirector status:
Offset Size Description (Table 0285)
00h WORD redirector major and minor version numbers
02h WORD redirectable ports found
04h WORD redirectable ports + local ports found
06h WORD redirector internal buffer size
08h WORD maximum servers maintained
0Ah WORD number of adapters found
--------S-148002-----------------------------
INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET PORT PARAMETERS
AX = 8002h
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
BX:DI -> Port Control Block (see #0293) (modifyable portion only)
SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8003h"COMM-DRV"
--------S-148003-----------------------------
INT 14 - ARTICOM - TRANSLATE ERROR CODE TO ERROR STRING
AX = 8003h
CX = error number to translate (see #0286)
Return: ES:DI -> ASCIZ error text or 0000h:0000h if unable to translate
SeeAlso: AX=8000h
(Table 0286)
Values for ARTICOM error codes:
00h "No error"
01h "An invalid port number was specified"
02h "Port is already redirected"
03h "Too many ports redirected"
04h "Cannot locate the server"
05h "Server is busy"
06h "Access denied"
07h "Resource in use"
08h "Resource in use - request queued"
09h "No such resource"
0Ah "Invalid username/password pair"
0Bh "Noncompatible version number"
0Ch "Can't remove from memory"
0Dh "Bad NETBIOS adapter number"
0Eh "No more entries in list"
0Fh "Resource is not available at this time"
10h "Invalid value to INT 14 call"
--------S-148003-----------------------------
INT 14 - COMM-DRV v14.0 - READ PORT METRICS - GET I/O BUFFER SIZES
AX = 8003h
DX = port number
Return: AX = number of characters in input buffer
BX = input buffer size
CX = number of characters in output buffer
DX = output buffer size
SeeAlso: AX=8000h"COMM-DRV",AX=8001h"COMM-DRV",AX=8002h"COMM-DRV"
--------S-148004-----------------------------
INT 14 - ARTICOM - ATTACH ASYNCHRONOUS RESOURCE
AX = 8004h
DX = port to redirect (COM1=0, COM2=1, ...)
CH = attach type
CL = adapter to use for attach, 0FFh to search all
ES:DI -> attachment structure (see #0287)
Return: AX = error code, if error (see #0286)
Note: The wildcard '*' is supported in the server and resource fields. If
wild cards are used then the first matching available server is
attached.
SeeAlso: AX=8000h,AX=8003h,AX=8005h
Format of ARTICOM attachment structure:
Offset Size Description (Table 0287)
00h 16 BYTEs server to look for attach
10h 16 BYTEs attach to resource name
20h 16 BYTEs username for attach
30h 16 BYTEs password for username or resource
40h BYTE attach type
00h normal
01h queue if resource is in use (not yet supported in v1.00)
--------S-148005-----------------------------
INT 14 - ARTICOM - DETACH ASYNCHRONOUS RESOURCE
AX = 8005h
DX = port to detach (COM1=0, COM2=1, ...)
Return: AX = error code, if error (see #0286)
Note: only a previously attached resource can be detached
SeeAlso: AX=8000h,AX=8003h,AX=8004h
--------S-148006-----------------------------
INT 14 - ARTICOM - GET RESOURCE INFORMATION
AX = 8006h
BX = remote port (COM1=0, COM2=1, ...)
CL = adapter number, FFh to try all adapters
ES:DI -> resource information structure (see #0288)
DS:SI -> 16 byte server name. See note.
Return: AX = error code, if error (see #0286)
BX = next remote port, recall to get next resource info
Note: Wild cards supported in both the resource field and server name
string DS:SI. If wild cards used then first matching available
resource information is searched. Set the resource field to FFh to
return all resources.
SeeAlso: AX=8000h,AX=8002h,AX=8003h,AX=8007h
Format of ARTICOM resource information structure:
Offset Size Description (Table 0288)
00h BYTE 00h = free, else used
01h 16 BYTEs resource name
11h 16 BYTEs username of resource user
21h WORD amount of time used
23h WORD amount of time remaining
53h 48 BYTEs description of resource
93h 64 BYTEs initialization string for modem
B3h 32 BYTEs dial string for modem
D3h 32 BYTEs hang-up string for modem
--------S-148007-----------------------------
INT 14 - ARTICOM - GET REDIRECTED PORT INFORMATION
AX = 8007h
DX = port index (COM1=0, COM2=1, ...)
ES:DI -> buffer for port information structure (see #0289)
Return: CF clear if redirection info returned and port is redirected
CF set if not a redirected port
AX = error code, if error (see #0286)
SeeAlso: AX=8000h,AX=8003h,AX=8006h,AX=8008h
Format of ARTICOM port information structure:
Offset Size Description (Table 0289)
00h 16 BYTEs server name resource is on
10h BYTE adapter number server is on
11h 16 BYTEs resource name
21h WORD remote port index, use to get additional information
23h WORD buffer size
25h WORD baud rate (see #0290)
26h BYTE modem status register
27h BYTE modem control register
28h BYTE line status register
29h BYTE line control register
2Ah BYTE flow control in use: 0 - NONE, 1 - XON/XOFF, 2 - RTS/CTS
2Bh WORD send timeout in ticks
2Dh WORD receive timeout in ticks
2Fh WORD time used on remote port
31h WORD time left before timeout
33h BYTE if server changes allowed?
34h WORD FFFFh (-1) if connection ok, else old port index
(Table 0290)
Values for ARTICOM baud rate:
00h 110
01h 150
02h 300
03h 600
04h 1200
05h 2400
06h 4800
07h 9600
08h 19200
09h 38400
0Ah 57600
0Bh 115200
0Ch 134.5
0Dh 1800
0Eh 2000
0Fh 3600
10h 7200
SeeAlso: #0235
--------S-148008-----------------------------
INT 14 - ARTICOM - GET AVAILABLE SERVER NAME
AX = 8008h
BX = server index (0,1,...)
ES:DI -> server name structure (see #0291)
Return: AX = error code, if error (see #0286)
BX = next remote port, repeat call to get next available server
Note: the wildcard '*' is supported in the server name field. Set the
server name to FFh to search for all servers.
SeeAlso: AX=8000h,AX=8003h,AX=8007h
Format of ARTICOM server name structure:
Offset Size Description (Table 0291)
00h 16 BYTEs (call) ASCIZ server name
10h BYTE (ret) the adapter server is found
--------S-148009-----------------------------
INT 14 - ARTICOM - SET SEND AND RECEIVE TIMEOUTS
AX = 8009h
BX = send timeout in ticks
CX = receive timeout in ticks
DX = port index (COM1=0, COM2=1, ...)
Return: nothing
SeeAlso: AX=8000h,AX=800Ah
--------S-14800A-----------------------------
INT 14 - ARTICOM - MODIFY FLOW CONTROL
AX = 800Ah
BL = flow control type (00h none, 01h XON/XOFF, 02h RTS/CTS)
DX = port index (COM1=0, COM2=1, ...)
Return: AX = error code, if error (see #0286)
Note: for attached ports only!
SeeAlso: AX=8000h,AX=8003h,AX=8009h
--------S-148025-----------------------------
INT 14 - ARTICOM - SET INTERNAL SEND/RECEIVE VECTOR
AX = 8025h
DS:DX -> address of trap function (see #0292) to call on read/write
Return: nothing
Note: setting the vector to a user function allows the redirector's activity
to be monitored.
SeeAlso: AX=8000h,AX=8035h,INT 21/AH=25h
(Table 0292)
Values ARTICOM trap function is called with:
AH = operation
80h reading character
81h writing character
AL = character
Return: AX must be preserved
far JUMP to old trap function (see AX=8035h)
--------S-148035-----------------------------
INT 14 - ARTICOM - GET INTERNAL SEND/RECEIVE VECTOR
AX = 8035h
Return: ES:BX -> address of current send/receive routine
Note: this function returns the address of the routine which is called
inside A-REDIR.EXE each time a character is received or sent on the
active COM port.
SeeAlso: AX=8000h,AX=8025h,INT 21/AH=35h
--------S-1481-------------------------------
INT 14 - COURIERS.COM - CHECK IF PORT BUSY
AH = 81h
AL = port number (1-4)
Return: AH = 00h port available
01h port exists but already in use
02h port nonexistent
Program: COURIERS is a TSR utility by PC Magazine
SeeAlso: AH=83h,AH=8Dh
--------S-1481-------------------------------
INT 14 - COMM-DRV - EXTENDED INITIALIZATION
AH = 81h
BX:DI -> port control block (see #0293)
DX = port number
Return: AH = line status register (see #0230)
error if bit 7 set
AL = modem status register (see #0231)
Program: COMM-DRV is a universal serial communications driver by Willies'
Computer Software Company, which supports standard INT 14 and
FOSSIL calls as well as its own interfaces
Note: AX=8001h should be called first to fill in the port control block
SeeAlso: AH=00h,AX=8001h,AH=82h"COMM-DRV",AH=86h"COMM-DRV"
Format of COMM-DRV port control block:
Offset Type Description (Table 0293)
00h WORD port IO address
02h WORD port IRQ
04h WORD baud rate
06h WORD parity
08h WORD data bits
0Ah WORD stop bits
0Ch WORD break status (0000h off)
0Eh WORD flow control protocol
10h BYTE input block
11h BYTE output block
12h WORD low threshold
14h WORD high threshold
16h WORD segment of buffer
18h WORD offset of buffer
1Ah WORD input buffer length
1Ch WORD output buffer length
1Eh BYTE auxiliary address
1Fh BYTE spare
20h 4 WORDs spares
--------V-148100-----------------------------
INT 14 - VIDEO FOSSIL - RETURN VFOSSIL INFORMATION
AX = 8100h
ES:DI -> buffer for VFOSSIL information (see #0294)
Return: AX = 1954h if installed
SeeAlso: AH=7Eh,AX=8101h
Format of VFOSSIL information:
Offset Size Description (Table 0294)
00h WORD size of information in bytes, including this field
02h WORD VFOSSIL major version
04h WORD VFOSSIL revision level
06h WORD highest VFOSSIL application function supported
--------V-148101-----------------------------
INT 14 - VIDEO FOSSIL - OPEN VFOSSIL
AX = 8101h
ES:DI -> buffer for application function table (see #0295)
CX = length of buffer in bytes
Return: AX = 1954h if installed
BH = highest VFOSSIL application function supported
Note: the number of initialized pointers in the application function table
will never exceed CX/4; if the buffer is large enough, BH+1 pointers
will be initialized
SeeAlso: AX=8102h
Format of VFOSSIL application function table:
Offset Size Description (Table 0295)
00h DWORD -> function to query current video mode (VioGetMode)(see #0300)
04h DWORD -> function to set video mode (VioSetMode) (see #0301)
08h DWORD -> function to query hardware config (VioGetConfig) (see #0302)
0Ch DWORD -> function to write data in TTY mode (VioWrtTTY) (see #0303)
10h DWORD -> function to get current ANSI state (VioGetANSI) (see #0304)
14h DWORD -> function to set new ANSI state (VioSetANSI) (see #0305)
18h DWORD -> function to get curr cursor position (VioGetCurPos)
(see #0306)
1Ch DWORD -> function to set cursor position (VioSetCurPos) (see #0307)
20h DWORD -> function to get cursor shape (VioGetCurType) (see #0308)
24h DWORD -> function to set cursor shape (VioSetCurType) (see #0309)
28h DWORD -> function to scroll screen up (VioScrollUp) (see #0310)
2Ch DWORD -> function to scroll screen down (VioScrollDn) (see #0311)
30h DWORD -> function to read cell string from screen (VioReadCellStr)
(see #0312)
34h DWORD -> function to read char string from screen (VioReadCharStr)
(see #0313)
38h DWORD -> function to write a cell string (VioWrtCellStr)
(see #0314)
3Ch DWORD -> function to write char string, leaving attr (VioWrtCharStr)
(see #0315)
40h DWORD -> function to write char string,const attr (VioWrtCharStrAttr)
(see #0316)
44h DWORD -> function to replicate an attribute (VioWrtNAttr)
(see #0317)
48h DWORD -> function to replicate a cell (VioWrtNCell)
(see #0318)
4Ch DWORD -> function to replicate a character (VioWrtNChar)
(see #0319)
Format of VFOSSIL video mode data structure:
Offset Size Description (Table 0296)
00h WORD length of structure including this field
02h BYTE mode characteristics
bit 0: clear if MDA, set otherwise
bit 1: graphics mode
bit 2: color disabled (black-and-white)
03h BYTE number of colors supported (1=2 colors, 4=16 colors, etc)
04h WORD number of text columns
06h WORD number of text rows
08h WORD reserved
0Ah WORD reserved
0Ch DWORD reserved
SeeAlso: #0300,#0301
Format of VFOSSIL video configuration data:
Offset Size Description (Table 0297)
00h WORD structure length including this field
02h WORD adapter type
00h monochrome/printer
01h CGA
02h EGA
03h VGA
07h 8514/A
04h WORD display type
00h monochrome
01h color
02h enhanced color
09h 8514
06h DWORD adapter memory size
SeeAlso: #0302
Format of VFOSSIL cursor type record:
Offset Size Description (Table 0298)
00h WORD cursor start line
02h WORD cursor end line
04h WORD cursor width (always 01h)
06h WORD cursor attribute (FFFFh = hidden)
(Table 0299)
Values for VFOSSIL error code:
0000h successful
0074h internal VIO failure
0163h unsupported mode
0166h invalid row value
0167h invalid column value
017Eh buffer too small
01A5h invalid VIO parameter
01B4h invalid VIO handle
(Table 0300)
Call VioGetMode with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to video mode data structure (see #0296)
Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0299)
SeeAlso: #0301
(Table 0301)
Call VioSetMode with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to video mode data structure (see #0296)
Return: AX = error code (00h, 74h, 163h, 17Eh, 1A5h, 1B4h) (see #0299)
SeeAlso: #0300
(Table 0302)
Call VioGetConfig with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to video configuration data buffer (see #0297)
Return: AX = error code (00h, 74h, 17Eh, 1B4h) (see #0299)
(Table 0303)
Call VioWrtTTY with:
STACK: WORD VIO handle (must be 00h)
WORD length of string
DWORD pointer to character string to be written to screen
Return: AX = error code (00h, 74h, 1B4h) (see #0299)
Notes: write wraps at end of line and terminates if it reaches end of screen
in ANSI mode, ANSI control sequences are interpreted, and this func is
not required to be reentrant; in non-ANSI mode, the function is
reentrant and may be called from within an MS-DOS function call
(Table 0304)
Call VioGetANSI with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to WORD which will be set to 00h if ANSI is off
or 01h if ANSI is on
Return: AX = error code (00h, 74h, 1B4h) (see #0299)
SeeAlso: #0305
(Table 0305)
Call VioSetANSI with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to WORD indicating new state of ANSI
00h off, 01h on
Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0299)
SeeAlso: #0304
(Table 0306)
Call VioGetCurPos with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to WORD to hold current cursor column (0-based)
DWORD pointer to WORD to hold current cursor row (0-based)
Return: AX = error code (00h, 74h, 1B4h) (see #0299)
SeeAlso: #0307
(Table 0307)
Call VioSetCurPos with:
STACK: WORD VIO handle (must be 00h)
WORD cursor column
WORD cursor row
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
Note: if either coordinate is invalid, the cursor is not moved
SeeAlso: #0306
(Table 0308)
Call VioGetCurType with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to cursor type record (see #0298)
Return: AX = error code (00h, 74h, 1B4h) (see #0299)
SeeAlso: #0309
(Table 0309)
Call VioSetCurType with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to cursor type record (see #0298)
Return: AX = error code (00h, 74h, 1A4h, 1B4h) (see #0299)
SeeAlso: #0310
(Table 0310)
Call VioScrollUp with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to char/attr cell for filling emptied rows
WORD number or rows to scroll (FFFFh = clear area)
WORD right column of scroll area
WORD bottom row of scroll area
WORD left column of scroll area
WORD top row of scroll area
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
SeeAlso: #0311,INT 10/AH=06h
(Table 0311)
Call VioScrollDn with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to char/attr cell for filling emptied rows
WORD number or rows to scroll (FFFFh = clear area)
WORD right column of scroll area
WORD bottom row of scroll area
WORD left column of scroll area
WORD top row of scroll area
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
SeeAlso: #0310,INT 10/AH=07h
(Table 0312)
Call VioReadCellStr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start reading
WORD row at which to start reading
DWORD pointer to WORD containing length of buffer in bytes
on return, WORD contains number of bytes actually read
DWORD pointer to buffer for cell string
Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0299)
(Table 0313)
Call VioReadCharStr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start reading
WORD row at which to start reading
DWORD pointer to WORD containing length of buffer in bytes
on return, WORD contains number of bytes actually read
DWORD pointer to buffer for character string
Return: AX = error code (00h, 74h, 166h ,167h, 1B4h) (see #0299)
(Table 0314)
Call VioWrtCellStr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD length of cell string in bytes
DWORD pointer to cell string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
Note: write wraps at end of line and terminates if it reaches end of screen
(Table 0315)
Call VioWrtCharStr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD length of character string
DWORD pointer to character string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
Note: write wraps at end of line and terminates if it reaches end of screen
(Table 0316)
Call VioWrtCharStrAttr with:
STACK: WORD VIO handle (must be 00h)
DWORD pointer to attribute to be applied to each character
WORD column at which to start writing
WORD row at which to start writing
WORD length of character string
DWORD pointer to character string to write
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
Note: write wraps at end of line and terminates if it reaches end of screen
(Table 0317)
Call VioWrtNAttr with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD number of times to write attribute
DWORD pointer to display attribute to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
Note: write wraps at end of line and terminates if it reaches end of screen
(Table 0318)
Call VioWrtNCell with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD number of times to write cell
DWORD pointer to cell to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
Note: write wraps at end of line and terminates if it reaches end of screen
(Table 0319)
Call VioWrtNChar with:
STACK: WORD VIO handle (must be 00h)
WORD column at which to start writing
WORD row at which to start writing
WORD number of times to write character
DWORD pointer to character to replicate
Return: AX = error code (00h, 74h, 166h, 167h, 1B4h) (see #0299)
Note: write wraps at end of line and terminates if it reaches end of screen
--------V-148102-----------------------------
INT 14 - VIDEO FOSSIL - CLOSE VFOSSIL
AX = 8102h
Return: AX = 1954h
Note: terminates all operations; after this call, the video FOSSIL may either
be removed from memory or reinitialized
SeeAlso: AX=8101h,AX=8103h
--------V-148103-----------------------------
INT 14 - VIDEO FOSSIL - UNINSTALL
AX = 8103h
Return: AX = 1954h
Note: this is an extension to the VFOSSIL spec by Bob Hartman's VFOS_IBM
--------K-1482-------------------------------
INT 14 - KEYBOARD FOSSIL
AH = 82h
SeeAlso: AH=7Eh
--------S-1482-------------------------------
INT 14 - COURIERS.COM - CONFIGURE PORT
AH = 82h
AL = port number (1-4)
BX = speed (bps)
CX = bit flags
bit 0: enable input flow control
bit 1: enable output flow control
bit 2: use X.PC protocol (not yet implemented)
Return: nothing
SeeAlso: AH=00h,AH=8Ch,INT 7A"X.PC"
--------S-1482-------------------------------
INT 14 - COMM-DRV v14.0 - PORT CLEANUP
AH = 82h
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
Desc: reset the port to its state before the AH=81h initialization and unhook
any interrupts used by the port
SeeAlso: AH=81h"COMM-DRV",AH=83h"COMM-DRV"
----------1483-------------------------------
INT 14 - SYSTEM FOSSIL
AH = 83h
SeeAlso: AH=7Eh
--------S-1483-------------------------------
INT 14 - COURIERS.COM - START INPUT
AH = 83h
ES:BX -> circular input buffer
CX = length of buffer
(should be at least 128 bytes if input flow control enabled)
Return: nothing
SeeAlso: AH=18h,AH=87h,AH=8Dh,AH=A5h"BAPI"
--------S-1483-------------------------------
INT 14 - COMM-DRV v14.0 - FLUSH COMMUNICATION BUFFERS
AH = 83h
DX = port number
AL = subfunction
00h flush input buffer
01h flush output buffer
02h flush both buffers
Return: AH bit 7 set on error
AH bit 7 clear if successful
SeeAlso: AH=81h"COMM-DRV",AH=84h"COMM-DRV"
--------S-1484-------------------------------
INT 14 - COURIERS.COM - READ CHARACTER
AH = 84h
Return: ZF set if no characters available
ZF clear
AL = character
AH = modem status bits
bit 7: set on input buffer overflow
SeeAlso: AH=02h,AH=86h,AH=89h
--------S-1484-------------------------------
INT 14 - COMM-DRV v14.0 - SEND PACKET
AH = 84h
CX = packet length in bytes
DX = port number
ES:DI -> packet to be sent
Return: AH = line status (see #0230)
bit 7 set on error
AL destroyed
SeeAlso: AH=83h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
--------S-1485-------------------------------
INT 14 - COURIERS.COM - FLUSH PENDING INPUT
AH = 85h
Return: nothing
SeeAlso: AH=0Ah,AH=88h"COURIERS"
--------S-1485-------------------------------
INT 14 - COMM-DRV v14.0 - RECEIVE PACKET
AH = 85h
CX = length of packet in bytes
DX = port number
ES:DI -> buffer for packet
Return: AH = line status (see #0230)
bit 7 set on error
AL destroyed
Note: this call requires that at least the requested number of bytes are
already present in the input buffer, and will fail if there are
fewer bytes available
SeeAlso: AH=84h"COMM-DRV",AH=86h"COMM-DRV",AH=8Eh"COMM-DRV"
--------S-1486-------------------------------
INT 14 - COURIERS.COM - START OUTPUT
AH = 86h
ES:BX -> output buffer
CX = length of output buffer
Return: nothing
SeeAlso: AH=19h,AH=83h"COURIERS",AH=A4h"BAPI"
--------S-1486-------------------------------
INT 14 - COMM-DRV v14.0 - SET INPUT/OUTPUT TIMEOUTS
AH = 86h
BL = maximum clock ticks to wait before signalling error on input func
BH = maximum clock ticks to wait before signalling error on output
DX = port number
SI = input timeout in clock ticks if BL=FFh and BH=FFh
DI = output timeout in clock ticks if BL=FFh and BH=FFh
Return: AH bit 7 set on error
AH bit 7 clear if successful
Note: functions 02h, 85h, and 8Eh will wait for the input timeout before
returning an error when no data is available; functions 01h and 84h
will wait for the output timeout before returning an error if there
is no space to output the data
SeeAlso: AH=01h,AH=02h,AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=8Eh"COMM-DRV"
--------S-1487-------------------------------
INT 14 - COURIERS.COM - OUTPUT STATUS
AH = 87h
Return: AX = number of unsent characters
SeeAlso: AH=88h"COURIERS"
--------S-1487-------------------------------
INT 14 - COMM-DRV v14.0 - TURN ON DTR
AH = 87h
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
--------S-1488-------------------------------
INT 14 - COURIERS.COM - ABORT OUTPUT
AH = 88h
SeeAlso: AH=09h"FOSSIL",AH=85h"COURIERS"
--------S-1488-------------------------------
INT 14 - COMM-DRV v14.0 - TURN OFF DTR
AH = 88h
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
Program: COMM-DRV is a universal serial communications driver by Willies'
Computer Software Company, which supports standard INT 14 and
FOSSIL calls as well as its own interfaces
SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
--------S-1489-------------------------------
INT 14 - COURIERS.COM - SEND SINGLE CHARACTER
AH = 89h
CL = character to send
Return: nothing
SeeAlso: AH=01h,AH=84h"COURIERS"
--------S-1489-------------------------------
INT 14 - COMM-DRV v14.0 - TURN ON RTS
AH = 89h
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
SeeAlso: AX=8000h"COMM-DRV",AH=87h"COMM-DRV",AH=8Ah"COMM-DRV"
--------S-148A-------------------------------
INT 14 - COURIERS.COM - SEND BREAK
AH = 8Ah
Return: nothing
SeeAlso: AH=89h"COURIERS",AH=FAh
--------S-148A-------------------------------
INT 14 - COMM-DRV v14.0 - TURN OFF RTS
AH = 8Ah
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
SeeAlso: AX=8000h"COMM-DRV",AH=88h"COMM-DRV",AH=89h"COMM-DRV"
--------S-148B-------------------------------
INT 14 - COMM-DRV v14.0 - SET USER INTERRUPT ROUTINE
AH = 8Bh
CX = bitmask of interrupt to process
00h = deinstall
BX:DI -> DWORD containing address of function to be called
Return: AH bit 7 clear if successful
AH bit 7 set on error
--------S-148C-------------------------------
INT 14 - COURIERS.COM - SET SPEED
AH = 8Ch
BX = speed in bps
Return: nothing
SeeAlso: AH=00h,AH=82h"COURIERS"
--------S-148C-------------------------------
INT 14 - COMM-DRV v14.0 - READ UART REGISTER
AH = 8Ch
AL = register offset
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
AL = contents of UART register
SeeAlso: AH=8Dh"COMM-DRV"
--------S-148D-------------------------------
INT 14 - COURIERS.COM - DECONFIGURE PORT
AH = 8Dh
Return: nothing
SeeAlso: AH=82h"COURIERS"
--------S-148D-------------------------------
INT 14 - COMM-DRV v14.0 - WRITE UART REGISTER
AH = 8Dh
AL = register offset
BL = new value for UART register
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
SeeAlso: AH=8Ch"COMM-DRV"
--------S-148E-------------------------------
INT 14 - COMM-DRV v14.0 - READ PACKET NONDESTRUCTIVELY
AH = 8Eh
CX = length of packet in bytes
DX = port number
ES:DI -> buffer for packet
Return: AH = line status (see #0230)
bit 7 set on error (see AX=8000h"COMM-DRV")
AL destroyed
Program: COMM-DRV is a universal serial communications driver by Willies'
Computer Software Company, which supports standard INT 14 and
FOSSIL calls as well as its own interfaces
Desc: retrieve a packet from the input buffer without removing it from the
buffer
Note: this call requires that at least the requested number of bytes are
already present in the input buffer, and will fail if there are
fewer bytes available
SeeAlso: AX=8000h"COMM-DRV",AH=84h"COMM-DRV",AH=85h"COMM-DRV",AH=86h"COMM-DRV"
--------S-14A0-------------------------------
INT 14 - 3com BAPI SERIAL I/O - CONNECT TO PORT
AH = A0h
ES:BX -> ASCIZ internet host name
CX = length of name
Return: AH = return code (00h,04h-06h,08h,0Ah-0Ch) (see #0320)
CL = session ID
Program: the Bridge Application Program Interface is a set of functions which
makes many of the details of LAN communications transparent
Note: Novell TELAPI.EXE returns AH=09h (not supported) and CL=00h
SeeAlso: AH=A1h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AX=AF00h
(Table 0320)
Values for 3com BAPI return code:
00h successful
01h no characters written
02h no characters read
03h no such session
04h clearinghouse name not found
05h no response from host
06h no more sessions available
07h session aborted
08h invalid clearinghouse name
09h not supported
0Ah internal (general) network error
0Bh out of memory
0Ch invalid IP address
--------S-14A0--CXFFFF-----------------------
INT 14 - Interconnections Inc. TES - INSTALLATION CHECK/STATUS REPORT
AH = A0h
CX = FFFFh
Return: CF clear if successful
AX = 5445h ('TE')
CX <> FFFFh
DX = port number
CF set on error
Program: TES is a network serial port emulation program
SeeAlso: AH=A1h"TES"
--------S-14A1-------------------------------
INT 14 - 3com BAPI SERIAL I/O - DISCONNECT FROM PORT
AH = A1h
DH = session ID (00h for external session managment)
Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0320)
AL destroyed (Novell TELAPI.EXE)
SeeAlso: AH=A0h"BAPI"
--------S-14A1-------------------------------
INT 14 - Interconnections Inc. TES - GET LIST OF SESSIONS WITH STATUS
AH = A1h
Return: CX = number of active sessions
ES:SI -> status array (see #0321)
SeeAlso: AH=A2h"TES",AH=A3h"TES"
Format of Interconnections TES status array entry:
Offset Size Description (Table 0321)
00h BYTE status
01h WORD offset of name
--------S-14A2-------------------------------
INT 14 - 3com BAPI SERIAL I/O - WRITE CHARACTER
AH = A2h
AL = character
DH = session ID (00h for external session managment)
Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0320)
SeeAlso: AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
--------S-14A2-------------------------------
INT 14 - Interconnections Inc. TES - GET LIST OF SERVER NAMES
AH = A2h
Return: CX = number of servers
ES:SI -> array of offsets from ES for server names
SeeAlso: AH=A1h"TES"
--------S-14A3-------------------------------
INT 14 - 3com BAPI SERIAL I/O - READ CHARACTER
AH = A3h
DH = session ID (00h for external session managment)
Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0320)
AL = character read or 00h if none available
SeeAlso: AH=A0h"BAPI",AH=A2h"BAPI",AH=A5h"BAPI",AH=A7h"BAPI"
--------S-14A3-------------------------------
INT 14 - Interconnections Inc. TES - START A NEW SESSION
AH = A3h
ES:SI -> ???
Return: CF clear if successful
AX = 5445h ('TE')
CX <> FFFFh
DX = port number
CF set on error
SeeAlso: AH=A1h"TES",AH=A4h"TES",AH=A6h"TES"
--------S-14A4-------------------------------
INT 14 - 3com BAPI SERIAL I/O - WRITE BLOCK
AH = A4h
CX = length of buffer in bytes
DH = session ID (00h for external session managment)
ES:BX -> buffer containing data
Return: AH = return code (00h,01h,03h,07h,0Ah,0Bh) (see #0320)
CX = number of bytes actually sent
SeeAlso: AH=19h,AH=86h,AH=A0h"BAPI",AH=A5h"BAPI"
--------S-14A4-------------------------------
INT 14 - Interconnections Inc. TES - HOLD CURRENTLY ACTIVE SESSION
AH = A4h
???
Return: ???
SeeAlso: AH=A3h"TES",AH=A5h"TES"
--------S-14A5-------------------------------
INT 14 - 3com BAPI SERIAL I/O - READ BLOCK
AH = A5h
CX = length of buffer
DH = session ID (00h for external session managment)
ES:BX -> buffer for data
Return: AH = return code (00h,02h,03h,07h,0Ah,0Bh) (see #0320)
CX = number of bytes actually read
SeeAlso: AH=18h,AH=83h"COURIERS",AH=A0h"BAPI",AH=A3h"BAPI",AH=A4h"BAPI"
SeeAlso: AH=A7h"BAPI",AX=FF02h
--------S-14A5-------------------------------
INT 14 - Interconnections Inc. TES - RESUME A SESSION
AH = A5h
AL = session number
Return: ???
SeeAlso: AH=A4h"TES",AH=A6h"TES"
--------S-14A6-------------------------------
INT 14 - 3com BAPI SERIAL I/O - SEND SHORT BREAK
AH = A6h
DH = session ID (00h for external session managment)
Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0320)
Desc: generate a short break signal; if data delivery was turned off by the
break, wait for the host to turn it on again
SeeAlso: AH=1Ah,AH=8Ah,AH=FAh,AH=A0h"BAPI"
--------S-14A6-------------------------------
INT 14 - Interconnections Inc. TES - DROP A SESSION
AH = A6h
AL = session number
Return: AH = status
00h successful
else error
SeeAlso: AH=A3h"TES",AH=A5h"TES"
--------S-14A7-------------------------------
INT 14 - 3com BAPI SERIAL I/O - READ STATUS
AH = A7h
DH = session ID (00h for external session managment)
Return: AH = return code (00h,03h,07h,0Ah,0Bh) (see #0320)
CX = number of bytes available for reading
Note: Novell TELAPI.EXE v4.01 always returns either 0 or 1 bytes available
SeeAlso: AH=A5h"BAPI"
--------S-14A7-------------------------------
INT 14 - Interconnections Inc. TES - SWITCH TO NEXT ACTIVE SESSION
AH = A7h
???
Return: ???
SeeAlso: AH=A3h"TES",AH=A5h"TES"
--------S-14A8-------------------------------
INT 14 - Interconnections Inc. TES - SEND STRING TO COMMAND INTERPRETER
AH = A8h
AL = 00h no visible response
ES:SI -> ASCIZ command
Return: ???
--------N-14A8-------------------------------
INT 14 - Novell TelAPI v4.01 - CONNECTION INFORMATION???
AH = A8h
DH = session ID???
CH = subfunction
02h ???
0Dh ???
0Fh ???
10h ???
11h ???
28h ???
else
Return: AH = 09h (not supported)
Return: AH = return code (see #0320)
00h successful
CL = ??? (0/1/8) (subfunctions 02h,0Dh,0Fh,10h)
CL = ??? (7Fh/FFh) (subfunction 28h)
CX = ??? (subfunction 11h)
SeeAlso: AH=A9h"TelAPI"
--------N-14A9-------------------------------
INT 14 - Novell TelAPI v4.01 - CONNECTION CONTROL???
AH = A9h
DH = session ID???
CH = subfunction
02h ???
0Dh ???
0Fh ???
10h ???
11h ???
28h ???
else
Return: AH = 09h (not supported)
???
Return: AH = return code (see #0320)
???
SeeAlso: AH=A8h"TelAPI",AH=E4h,INT 6B/AX=0600h
--------V-14AA01-----------------------------
INT 14 - DimVGA v2.0+ - INSTALLATION CHECK
AX = AA01h
Return: AX = FFFFh if installed, unchanged
BX = version (v1.5+ only), BH = major, BL = minor (v1.5 = 0105h)
CX = resident segment (v3.1+)
Program: DimVGA is a public domain screen saver by Menno Pieters
SeeAlso: AX=AA02h,AX=AA03h,AX=AA06h,INT 11/AX=0225h/BX=6900h,INT 12"KEYBUI"
SeeAlso: INT 2D/AL=10h"Burnout Plus",INT 2F/AX=6400h,INT 2F/AH=93h
SeeAlso: INT 2F/AX=C000h"VGAsave",INT 2F/AX=C000h"AD-DOS",INT 2F/AX=C050h
SeeAlso: INT 2F/AX=E300h
Index: screen saver;DimVGA
--------V-14AA02-----------------------------
INT 14 - DimVGA v2.0+ - SET TIME-OUT (DIMMING/BLANKING) PERIOD
AX = AA02h
BX = number of clock ticks
Return: AX = FFFFh
Note: on screen modes with 256 or less colors DimVGA will dim the screen,
when more than 256 colors can be used DimVGA will blank the screen.
SeeAlso: AX=AA01h,AX=AA03h,AX=AA04h,AX=AA06h
Index: screen saver;DimVGA
--------V-14AA03-----------------------------
INT 14 - DimVGA v2.0+ - SET DIMMING FACTOR
AX = AA03h
BX = percentage remaining visible (1-99)
Return: AX = FFFFh
SeeAlso: AX=AA02h,AX=AA05h,AX=AA06h
Index: screen saver;DimVGA
--------V-14AA04-----------------------------
INT 14 - DimVGA v2.0+ - GET TIME-OUT PERIOD
AX = AA04h
Return: AX = FFFFh
BX = current time-out in clock ticks
SeeAlso: AX=AA02h,AX=AA05h,AX=AA0Ah
Index: screen saver;DimVGA
--------V-14AA05-----------------------------
INT 14 - DimVGA v2.0+ - GET DIMMING FACTOR
AX = AA05h
Return: AX = FFFFh
BX = current dimming factor
SeeAlso: AX=AA03h,AX=AA04h,AX=AA0Ah
Index: screen saver;DimVGA
--------V-14AA06-----------------------------
INT 14 - DimVGA v2.0+ - DISABLE
AX = AA06h
Return: AX = FFFFh
SeeAlso: AX=AA01h,AX=AA07h,AX=AA0Ah
Index: screen saver;DimVGA
--------V-14AA07-----------------------------
INT 14 - DimVGA v2.0+ - ENABLE
AX = AA07h
Return: AX = FFFFh
SeeAlso: AX=AA01h,AX=AA06h,AX=AA0Ah
Index: screen saver;DimVGA
--------V-14AA08-----------------------------
INT 14 - DimVGA v2.0+ - DIM SCREEN 'MANUALLY'
AX = AA08h
Return: AX = FFFFh
Note: this function will dim the screen immediately, even if DimVGA is
currently disabled
SeeAlso: AX=AA01h,AX=AA02h,AX=AA09h
Index: screen saver;DimVGA
--------V-14AA09-----------------------------
INT 14 - DimVGA v2.0+ - UNDIM SCREEN 'MANUALLY'
AX = AA09h
Return: AX = FFFFh
Note: this function will undim the screen immediately, even if DimVGA is
currently disabled
SeeAlso: AX=AA01h,AX=AA08h
Index: screen saver;DimVGA
--------V-14AA0A-----------------------------
INT 14 - DimVGA v2.0+ - CHECK WHETHER ENABLED
AX = AA0Ah
Return: AX = FFFFh
BX = current state (0000h disabled, 0001h enabled)
SeeAlso: AX=AA01h,AX=AA06h,AX=AA07h
Index: screen saver;DimVGA
--------V-14AA0B-----------------------------
INT 14 - DimVGA v2.1+ - SET HOTKEY
AX = AA0Bh
BH = shift state (see #0322)
BL = keyboard scancode
Return: AX = FFFFh
SeeAlso: AX=AA01h,AX=AA0Ch
Index: screen saver;DimVGA
Bitfields for DimVGA hotkey shift state:
Bit(s) Description (Table 0322)
7-4 unused
3 Alt key pressed
2 Ctrl key pressed
1 Left shift key pressed
0 Right shift key pressed
--------V-14AA0C-----------------------------
INT 14 - DimVGA v2.1+ - GET HOTKEY
AX = AA0Ch
Return: AX = FFFFh
BH = shift state (see #0322)
BL = keyboard scancode
SeeAlso: AX=AA01h,AX=AA0Bh
Index: screen saver;DimVGA
--------V-14AA0D-----------------------------
INT 14 - DimVGA v3.0+ - SET MOUSE CHECK STATUS
AX = AA0Dh
BX = new mouse check status
0000h mouse checking off
0001h mouse checking on
Return: AX = FFFFh
Note: before switching mouse checking on, a mouse driver should be
found in memory. If no mouse driver is found, mouse checking
should be switched off (resident DimVGA does not check by itself).
SeeAlso: AX=AA01h,AX=AA0Eh
Index: screen saver;DimVGA
--------V-14AA0E-----------------------------
INT 14 - DimVGA v3.0+ - GET MOUSE CHECK STATUS
AX = AA0Eh
Return: BX = mouse check status (0000h disabled, 0001h enabled)
SeeAlso: AX=AA01h,AX=AA0Dh
Index: screen saver;DimVGA
--------V-14AA0F-----------------------------
INT 14 - DimVGA v3.4 - SET LOCKING STATUS
AX = AA0Fh
BX = locking status
0000h disabled
0001h enabled
Return: AX = FFFFh
SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA10h
Index: screen saver;DimVGA
--------V-14AA10-----------------------------
INT 14 - DimVGA v3.4 - GET MOUSE CHECK STATUS
AX = AA10h
Return: BX = locking status (0000h disabled, 0001h enabled)
SeeAlso: AX=AA01h,AX=AA0Dh,AX=AA0Fh
Index: screen saver;DimVGA
----------14AD-------------------------------
INT 14 - IBM SurePath BIOS - Officially "Private" Function
AH = ADh
SeeAlso: AH=AEh"IBM",AH=AFh"IBM"
----------14AE-------------------------------
INT 14 - IBM SurePath BIOS - Officially "Private" Function
AH = AEh
SeeAlso: AH=ADh"IBM",AH=AFh"IBM"
----------14AF-------------------------------
INT 14 - IBM SurePath BIOS - Officially "Private" Function
AH = AFh
SeeAlso: AH=ADh"IBM",AH=AEh"IBM"
--------S-14AF00BXAAAA-----------------------
INT 14 - 3com BAPI SERIAL I/O - INSTALLATION CHECK
AX = AF00h
BX = AAAAh
Return: AX = AF01h if installed
BH = protocol type (if BX=AAAAh on entry)
01h NetManage TCP/IP
BL = version for protocol type (if BX=AAAAh on entry)
Note: early versions of the BAPI and the ROM BIOS simply destroy AX; this
behavior is used to determine whether the newer functions (AH=B0h,
AH=B1h,etc) are available
SeeAlso: AH=A0h"BAPI"
--------S-14B0-------------------------------
INT 14 - 3com BAPI SERIAL I/O - EN/DISABLE "ENTER COMMAND MODE" (ECM) CHARACTER
AH = B0h
AL = new state (00h disabled, 01h enabled)
Return: AH = return code (00h,07h,0Ah) (see #0320)
Note: disabling the ECM character allows applications to send data which
includes the ECM character
SeeAlso: AX=AF00h"BAPI",AH=B1h,AH=B2h
--------S-14B1-------------------------------
INT 14 - 3com BAPI SERIAL I/O - ENTER COMMAND MODE
AH = B1h
Return: AH = return code (00h,07h,0Ah) (see #0320)
Desc: provide a means for the application or terminal emulator to perform
the same action normally caused by the ECM character
SeeAlso: AH=B0h,AH=B2h
--------S-14B2-------------------------------
INT 14 - 3com BAPI SERIAL I/O - GET ECM WATCH STATE
AH = B2h
Return: AH = return code (00h,07h,0Ah) (see #0320)
AL = watch flag (00h disabled, 01h enabled)
Desc: determine whether the ECM character is enabled
SeeAlso: AH=B0h,AH=B1h
--------S-14B3-------------------------------
INT 14 - 3com BAPI SERIAL I/O - GET/SET CONFIGURATION INFO
AH = B3h
AL = direction (00h get, 01h set)
DH = session ID (00h for external session managment)
DL = configuration item (00h = end-of-line mapping)
CX = new configuration item value (if AL=01h)
---if DL=00h---
CH = application EOL type (app to Telnet client)
01h application will send lone CR
02h application will send CR-? pair
CL = driver EOL type (Telnet client to Telnet server)
01h driver should send CR-NUL pair
02h driver should send CR-LF pair
Return: AH = return code (00h,03h,09h-0Bh) (see #0320)
---if AL=00h---
CX = configuration item value (above)
SeeAlso: AH=B2h
--------N-14E0-------------------------------
INT 14 - TelAPI - "telopen" - CREATE TELNET CONNECTION (BLOCKING)
AH = E0h
BX = port number to connect with (default 0017h used if <= 0)
CX:DX = Internet address of remote host
DS:DI -> 2-byte remote host (session) identifier
ES:SI -> 1700-byte buffer for Telnet state record
0000h:0000h to use TelAPI internally-allocated space
Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0323)
ES:SI buffer filled with state record
ES:SI -> internally-allocated state record in some versions
Note: the remote host identifier may be used to refer to this connection
SeeAlso: AH=E1h,AH=ECh,AX=FF00h
(Table 0323)
Values for TelAPI status:
0000h-7FFFh successful (session number)
FED3h (-301) no session allocated, or out of TelAPI data space
FF37h (-201) all sessions in use
FFBDh (-67) unknown hostname
FFC0h (-64) host not functioning
FFC3h (-61) connection attempt refused
FFC4h (-60) connection attempt timed out
FFC8h (-56) socket already connected
FFCDh (-51) network is unreachable
FFDDh (-35) operation would block
--------S-14E000-----------------------------
INT 14 - MX5 Extended FOSSIL - GET MNP STATUS BLOCK
AX = E000h
DX = port number (0-3)
Return: ES:BX -> status block (see #0324)
Program: MX5 is a FOSSIL driver by MagicSoft which emulates MNP Level 5, and
ships with the MTEZ terminal program as MTEMNP.DRV (a TSR despite
the .DRV extension)
SeeAlso: AX=E006h
Format of MX5 Extended FOSSIL status block:
Offset Size Description (Table 0324)
00h BYTE flag: active (00h no, 01h yes)
01h BYTE MNP level (2,4,5)
02h BYTE series ID from remote MNP
03h DWORD total packets transmitted
07h DWORD duplicate packets transmitted
0Bh DWORD maximum speed
0Fh DWORD total packets received
13h DWORD duplicate packets received
17h DWORD maximum speed
--------S-14E001-----------------------------
INT 14 - MX5 Extended FOSSIL - GET/SET MNP LEVEL
AX = E001h
BH = function
00h get MNP level
01h set MNP level
BL = new level (00h none, 02h/04h/05h MNP level N)
DX = port number (0-3)
Return: BL = MNP level
SeeAlso: AX=E002h,AX=E003h,AX=E004h,AX=E006h
--------S-14E002-----------------------------
INT 14 - MX5 Extended FOSSIL - GET/SET MNP ANSWER/ORIGINATE MODE
AX = E002h
BH = function
00h get answer/originate mode
01h set mode
BL = new mode (00h originate [default], 01h answer)
DX = port number (0-3)
Return: BL = answer/originate mode
SeeAlso: AX=E001h,AX=E003h,AX=E006h
--------S-14E003-----------------------------
INT 14 - MX5 Extended FOSSIL - GET/SET MNP WAIT TICKS
AX = E003h
BH = function
00h get wait ticks
01h set wait ticks
BL = MNP wait ticks (default 0Eh)
DX = port number (0-3)
Return: BL = wait ticks
SeeAlso: AX=E001h,AX=E002h,AX=E006h
--------S-14E004-----------------------------
INT 14 - MX5 Extended FOSSIL - GET/SET MNP CONNECT SOUND LEVEL
AX = E004h
BH = function
00h get sound level
01h set sound level
BL = new sound level (00h off, 01h on [default])
DX = port number
Return: BL = sound state
Desc: specify whether MX5 should generate beeps after an MNP connection
(three high beeps if successful, high then low on connection failure)
SeeAlso: AX=E002h,AX=E006h
--------S-14E005-----------------------------
INT 14 - MX5 Extended FOSSIL - UNINSTALL
AX = E005h
Return: BX = segment of MX5's memory block or 0000h on failure
Note: caller must free the returned memory block to complete the uninstall
SeeAlso: AX=E006h
--------S-14E006BX0000-----------------------
INT 14 - MX5 Extended FOSSIL - INSTALLATION CHECK
AX = E006h
BX = 0000h
Return: BX = 4D58h ('MX') if installed
AH = major version
AL = minor version
SeeAlso: AX=E000h,AX=E001h,AX=E005h,AX=E007h
--------S-14E007-----------------------------
INT 14 - MX5 Extended FOSSIL - WAIT SPECIFIED NUMBER OF TICKS
AX = E007h
CX = number of ticks to wait
Return: nothing
SeeAlso: AX=E006h
--------N-14E1-------------------------------
INT 14 - TelAPI - "telclose" - TERMINATE TELNET CONNECTION
AH = E1h
BX = connection ID
Return: AX = status (0000h,FFF7h,maybe others) (see #0323)
Note: flushes and releases all buffers and data space used by the connection
SeeAlso: AH=E0h,AH=E6h,AX=FF00h
--------N-14E2-------------------------------
INT 14 - TelAPI - "telread" - BUFFERED READ
AH = E2h
BX = connection ID (see AH=E0h"TelAPI")
CX = length of buffer in bytes
ES:SI -> buffer for data
Return: AX > 0000h number of characters actually read
AX = 0000h host has closed connection
AX < 0000h error code (see #0323)
Note: translates CRLF into local EOL if the connection is in ASCII mode,
negotiates various Telnet options, and immediately executes several
different Telnet action commands
SeeAlso: AH=07h"TelAPI",AH=E3h,AH=E6h,AX=FF00h,INT 6B/AH=01h
--------N-14E3-------------------------------
INT 14 - TelAPI - "telwrite" - BUFFERED WRITE
AH = E3h
BX = connection ID
CX = length of buffer in bytes
ES:SI -> buffer containing data
Return: AX > 0000h number of characters actually written
AX < 0000h error code (see #0323)
Note: translates local EOL into CRLF if the connection is in ASCII mode,
sends the appropriate Telnet commands for the characters selected
for IP, AYT, AO, EC, EL, and Break
SeeAlso: AH=06h"TelAPI",AH=E2h,AH=E6h,AX=FF00h,INT 6B/AH=00h
--------N-14E4-------------------------------
INT 14 - TelAPI - "telioctl" - CONNECTION CONTROL
AH = E4h
BX = connection ID (see AH=E0h"TelAPI")
CX = Telnet command/option identifier (see #0326)
ES:SI -> buffer containing command/option argument (see #0325)
Return: AX = status (0000h, etc.) (see #0323)
Desc: start filter control, initiate Telnet option negotiation, or get filter
control status
SeeAlso: AH=A9h,AH=E6h,AX=FF00h,INT 6B/AX=0600h
Format of TelAPI Telnet command/option argument:
Offset Size Description (Table 0325)
00h 5 WORD numeric arguments
0Ah DWORD -> ASCIZ string
SeeAlso: #0326
(Table 0326)
Values for TelAPI Telnet command/option identifier:
01h ASCII args: none
02h BINARY args: none
03h LOCALECHO args: none client echos data
04h REMOTEECHO args: none server echos data
05h SGA args: none Suppress Go-Ahead signal
07h CHARMODE args: none no line-buffering
08h LINEMODE args: -> erase-line ch perform line-buffering
09h RECVEOL args: EOL type
0Ah SENDEOL args: EOL type
0Bh EOR args: none enable end-of-record sequence
0Dh BREAK args: -> break char
0Eh VERBOSE args: verbosity display Telnet negotiations?
0Fh AYT args: -> AYT escape ch
10h AO args: -> AO escape char
11h IP args: -> IP escape char
12h EC args: -> escape char
13h EL args: -> escape char
14h STATUS args: type; returns data in structure
18h TERMTYPE args: -> terminal type
19h ATTACHPORT args: port number ; returns session number
1Bh TRANSMIT_EOR args: EOR enabled append EOR to every telwrite?
SeeAlso: #0325
--------N-14E5-------------------------------
INT 14 - TelAPI - "telreset" - RESET ALL CONNECTIONS
AH = E5h
Return: AX = status (0000h,other) (see also #0323)
FFFFh unable to reset
Desc: close all sessions and reset TelAPI to defaults
SeeAlso: AH=E1h,AH=E6h,AX=FF00h
--------N-14E6-------------------------------
INT 14 - TelAPI - "telunload" - UNINSTALL
AH = E6h
Return: AX = status
0000h successful
FFFFh unable to uninstall
Notes: TelAPI also supports the NASI/NACS and NCSI APIs on INT 6B
this function invokes AH=E5h internally
SeeAlso: AH=E5h,AX=FF00h,INT 6B/AH=00h,INT 6B/AH=10h
--------N-14E7-------------------------------
INT 14 - TelAPI - "tellist" - GET TELNET SESSION LIST
AH = E7h
ES:SI -> 10-word buffer for session list
Return: AX = 0000h (successful)
ES:SI buffer filled
Desc: determine, for each of the ten allowable sessions, whether the session
is currently available
Note: each word in the buffer is filled with either 0000h to indicate that
the corresponding sesion is unavailable, or 0001h if available
SeeAlso: AH=E0h,AH=E5h,AX=FF00h
--------N-14E8-------------------------------
INT 14 - TelAPI - "telattach" - ATTACH COM PORT TO/FROM TELNET SESSION
AH = E8h
BX = connection ID (see AH=E0h"TelAPI")
CX = serial port number (0000h-0003h = COM1-COM4)
Return: AX = status
0000h successful
FFFFh failed
SeeAlso: AH=E0h,AH=E9h,AX=FF00h
--------N-14E9-------------------------------
INT 14 - TelAPI - "telportosn" - GET SESSION NUMBER FOR COM PORT
AH = E9h
DX = serial port number (0000h-0003h = COM1-COM4)
Return: AX >= 0000h session number
AX < 0000h error code (see #0323)
SeeAlso: AH=E0h,AH=E8h,AH=EAh,AX=FF00h
--------N-14EA-------------------------------
INT 14 - TelAPI - "telstatus" - GET TELNET CONNECTION STATUS INFORMATION
AH = EAh
BX = connection ID (see AH=E0h"TelAPI")
ES:SI -> buffer for status info (see #0327)
Return: AX = status (0000h,FFFFh,etc.)
SeeAlso: AH=E9h,AH=EBh,AX=FF00h
Format of TelAPI Telnet connection status information:
Offset Size Description (Table 0327)
00h 4 BYTEs remote host IP address
04h 20 BYTEs reserved
18h WORD local port number
1Ah BYTE connection mode (00h = ASCII, 01h = Binary)
1Bh BYTE echo flag (00h local, 01h remote)
1Ch BYTE SGA flag (00h will, 01h won't)
1Dh BYTE EOR negotation flag (00h do negotiate, 01h don't)
1Eh BYTE buffering (00h line mode, 01h character mode)
1Fh BYTE reserved
20h BYTE verbose flag (00h no, 01h verbose mode)
21h BYTE received EOL (00h no xlat, 01h CR, 02h LF, 03h CRLF)
22h BYTE sent EOL (00h no translation, 01h CR, 02h LF)
23h BYTE break character
24h BYTE IP escape character
25h BYTE AO escape character
26h BYTE AYT escape character
27h BYTE EC escape character
28h BYTE EL escape character
29h 41 BYTEs ASCIZ Telnet-negotiated terminal type
52h 9 BYTEs session ID
SeeAlso: #0328
--------N-14EB-------------------------------
INT 14 - TelAPI - "telname" - GET AVAILABLE/INUSE STATUS FOR ALL SESSIONS
AH = EBh
ES:SI -> buffer for session statuses (see #0328)
Return: ES:SI buffer filled
SeeAlso: AH=E9h,AH=EAh,AX=FF00h
Format of TelAPI session status information [array]:
Offset Size Description (Table 0328)
00h BYTE session state (00h available, 01h connected)
01h 9 BYTEs session ID if connected
0Ah WORD attached COM port if connected, FFFFh if not
SeeAlso: #0327
--------N-14EC-------------------------------
INT 14 - TelAPI - "telnblkopen" - CREATE TELNET CONNECTION (NON-BLOCKING)
AH = ECh
BX = port number to connect with (default 0017h used if <= 0)
CX:DX = Internet address of remote host
DS:DI -> 2-byte remote host (connection) identifier
ES:SI -> 1700-byte buffer for Telnet state record
0000h:0000h to use TelAPI internally-allocated space
Return: AX = status (0000h-0009h,FED3h,FF37h,FFBDh,FFC0h,FFCDh) (see #0323)
ES:SI buffer filled with state record
ES:SI -> internally-allocated state record in some versions
Notes: the remote host identifier may be used to refer to this connection
this function returns immediately; use AH=EDh to check whether the
connection has been established yet
this function is not supported by the Microdyne TelAPI v3.7
SeeAlso: AH=E0h"TelAPI",AH=EDh,AX=FF00h
--------N-14ED-------------------------------
INT 14 - TelAPI - "telpoll" - POLL TELNET SESSION FOR CONNECTION COMPLETION
AH = EDh
BX = connection ID (see AH=ECh)
Return: AX = status (0000h,0001h,FFFFh,etc.) (see also #0323)
0000h session now connected
0001h connection still in progress
Note: this function is not supported by the Microdyne TelAPI v3.7
SeeAlso: AH=EDh,AX=FF00h
--------a-14F0F0-----------------------------
INT 14 - ASAP v1.0 - ???
AX = F0F0h
DX = ???
???
Return: ???
Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
by MicroTalk
SeeAlso: AX=F0F1h
--------a-14F0F1DX0000-----------------------
INT 14 - ASAP v1.0 - INSTALLATION CHECK
AX = F0F1h
DX = 0000h
Return: DX = segment of resident code
0000h if not installed
Program: ASAP (Automatic Screen Access Program) is a shareware screen reader
by MicroTalk
SeeAlso: AX=F0F0h,INT 10/AX=3800h
--------S-14F4FF-----------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - INSTALLATION CHECK
AX = F4FFh
DX = port (00h-03h)
Return: CF clear if present
AX = 0000h
CF set if not present
AX <> 0000h
SeeAlso: AH=36h"ComShare",AH=F9h,AH=FCh
--------S-14F9-------------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - REGAIN CONTROL
AH = F9h
DX = port (00h-03h)
Return: nothing
SeeAlso: AX=F4FFh
--------S-14FA-------------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - SEND BREAK
AH = FAh
DX = port (00h-03h)
Return: nothing
SeeAlso: AH=07h"MBBIOS",AH=1Ah,AH=8Ah
--------S-14FB-------------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - SET OUTGOING MODEM SIGNALS
AH = FBh
AL = modem control register (see #0260 at AH=05h"SERIAL")
DX = port (00h-03h)
Return: nothing
SeeAlso: AH=05h"SERIAL"
--------S-14FC-------------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - READ CHARACTER, NO WAIT
AH = FCh
DX = port (00h-03h)
Return: AH = RS232 status bits (see #0230 at AH=03h)
AL = character
SeeAlso: AH=02h,AH=0Ch,AX=FF02h
--------S-14FD02-----------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - READ STATUS
AX = FD02h
Return: CX = number of characters available
--------N-14FF00-----------------------------
INT 14 - TelAPI - "telcheck" - INSTALLATION CHECK
AX = FF00h
Return: AX = 00FFh if installed
BX = version number * 100 (decimal)
SeeAlso: AH=E6h,AX=F4FFh
--------S-14FF01-----------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - SET SEND BUFFER
AX = FF01h
CX = length of buffer (0000h to cancel buffer assignment)
DX = port (00h-03h)
ES:BX -> send buffer
Return: nothing
SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF02h
--------S-14FF02-----------------------------
INT 14 - IBM/Yale EBIOS SERIAL I/O - SET RECEIVE BUFFER
AX = FF02h
CX = length of buffer (0000h to cancel buffer assignment)
DX = port (00h-03h)
ES:BX -> receive buffer
Return: nothing
SeeAlso: AH=18h,AH=83h"COURIERS",AH=A5h"BAPI",AH=FCh,AX=FF01h
--------S-14FFF8-----------------------------
INT 14 - COMM-DRV v14.0 - SET BAUD RATE DIVISOR
AX = FFF8h
BX = card type (sub-device number)
CX = new baudrate divisor
DX = index to baud rate
Return: AH bit 7 set on error
AH bit 7 clear if successful
Program: COMM-DRV is a universal serial communications driver by Willies'
Computer Software Company, which supports standard INT 14 and
FOSSIL calls as well as its own interfaces
SeeAlso: AX=8000h"COMM-DRV"
--------S-14FFFB-----------------------------
INT 14 - COMM-DRV v14.0 - GET HIGHEST ALLOWED PORT NUMBER
AX = FFFBh
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
BX = highest port number
--------S-14FFFC-----------------------------
INT 14 - COMM-DRV v14.0 - GET INT 14 FLAGS
AX = FFFCh
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
BX = flags (see #0329)
SeeAlso: AX=FFFDh
Bitfields for INT 14h flags:
Bit(s) Description (Table 0329)
0 port active for INT 14h
1 interface behaving like a FOSSIL driver
--------S-14FFFD-----------------------------
INT 14 - COMM-DRV v14.0 - SET INT 14 FLAGS
AX = FFFDh
BX = flags (see #0329)
DX = port number
Return: AH bit 7 set on error
AH bit 7 clear if successful
SeeAlso: AX=FFFCh
--------S-14FFFE-----------------------------
INT 14 - COMM-DRV v14.0 - RESTORE INT 14 VECTOR TO ORIGINAL
AX = FFFEh
Return: AH bit 7 set on error
AH bit 7 clear if successful
--------S-14FFFF-----------------------------
INT 14 - COMM-DRV v14.0 - GET INT 14 INFORMATION AREA
AX = FFFFh
BX:SI -> DWORD buffer for address of information area (see #0330)
(initialized to zeros)
Return: BX:SI buffer filled with nonzero value if installed
Program: COMM-DRV is a universal serial communications driver by Willies'
Computer Software Company, which supports standard INT 14 and
FOSSIL calls as well as its own interfaces
Index: installation check;COMM-DRV
Format of COMM-DRV information area:
Offset Size Description (Table 0330)
00h 8 BYTEs signature "COMM-DRV"
08h 2 BYTEs 00h,00h
0Ah DWORD -> direct address mapping table
0Eh DWORD previous INT 14 vector
--------t-15---------------------------------
INT 15 - Microsoft TSR Specification
No additional information available at this time.
--------B-1500-------------------------------
INT 15 - CASSETTE - TURN ON TAPE DRIVE'S MOTOR (PC and PCjr only)
AH = 00h
Return: CF set on error
AH = 86h no cassette present
CF clear if successful
SeeAlso: AH=01h"CASSETTE",MEM 0040h:0067h"PC"
--------M-1500-------------------------------
INT 15 - Amstrad PC1512 - GET AND RESET MOUSE COUNTS
AH = 00h
Return: CX = signed X count
DX = signed Y count
--------O-1500-------------------------------
INT 15 - VMiX v2+ - INSTALLATION CHECK
AH = 00h
Return: DX = 0798h if installed
AX = version (AH = major, AL = minor)
--------T-1500-------------------------------
INT 15 - MultiDOS Plus - GIVE UP TIME SLICE
AH = 00h
Return: nothing
Note: if issued by the highest-priority task while MultiDOS is using
priority-based rather than round-robin scheduling, control will be
returned to the caller immediately
SeeAlso: AH=03h"MultiDOS",AX=1000h
--------B-1501-------------------------------
INT 15 - CASSETTE - TURN OFF TAPE DRIVE'S MOTOR (PC and PCjr only)
AH = 01h
Return: CF set on error
AH = 86h no cassette present
CF clear if successful
SeeAlso: AH=00h"CASSETTE"
--------b-1501-------------------------------
INT 15 - Amstrad PC1512 - WRITE DATA TO NON-VOLATILE RAM
AH = 01h
AL = NVRAM location (00h to 3Fh) (see #0331)
BL = NVRAM data value
Return: AH = return code
00h OK
01h address bad
02h write error
SeeAlso: AH=02h"Amstrad"
Format of Amstrad NVRAM:
Offset Size Description (Table 0331)
00h BYTE time of day: seconds
01h BYTE alarm time: seconds
02h BYTE time of day: minutes
03h BYTE alarm time: minutes
04h BYTE time of day: hours
05h BYTE alarm time: hours
06h BYTE day of week, 1 = Sunday
07h BYTE day of month
08h BYTE month
09h BYTE year mod 100
0Ah BYTE RTC status register A (see #0332)
0Bh BYTE RTC status register B (see #0333)
0Ch BYTE RTC status register C (read-only) (see #0334)
0Dh BYTE RTC status register D
bit 7: battery good
0Eh 6 BYTEs time and date machine last used
14h BYTE user RAM checksum
15h WORD Enter key scancode/ASCII code
17h WORD Forward delete key scancode/ASCII code
19h WORD Joystick fire button 1 scancode/ASCII code
1Bh WORD Joystick fire button 2 scancode/ASCII code
1Dh WORD mouse button 1 scancode/ASCII code
1Fh WORD mouse button 2 scancode/ASCII code
21h BYTE mouse X scaling factor
22h BYTE mouse Y scaling factor
23h BYTE initial VDU mode and drive count
24h BYTE initial VDU character attribute
25h BYTE size of RAM disk in 2K blocks
26h BYTE initial system UART setup byte
27h BYTE initial external UART setup byte
28h 24 BYTEs available for user application
Note: bytes 00h-0Dh are the same on the IBM AT as they are used/updated by
the clock chip
Bitfields for RTC status register A:
Bit(s) Description (Table 0332)
7 set if date/time being updated
6-4 time base speed, default 010 = 32768 Hz
3-0 interrupt rate selection, default 0110 = 1024 Hz
SeeAlso: #0331
Bitfields for RTC status register B:
Bit(s) Description (Table 0333)
7 clear if normal update, set if abort update
6 periodic interrupt enable
5 alarm interrupt enable
4 update end interrupt enable
3 square wave enable
2 date mode (clear = BCD, set = binary)
1 24-hour format
0 daylight saving time enable
SeeAlso: #0331
Bitfields for RTC status register C:
Bit(s) Description (Table 0334)
7 IRQF flag
6 PF flag
5 AF flag
4 UF flag
SeeAlso: #0331
--------O-1501-------------------------------
INT 15 - VMiX - "sys_chanreq" - I/O CHANNEL OBJECT MANAGER
AH = 01h
STACK: WORD object ID of requestor
DWORD pointer to ASCIZ name of requested method
"assign" assign channel to object
"deassign" deassign channel
"cursor" set cursor on/off
"init" initialize comm port
"open" open I/O channel
"position" set cursor position
"receive" get buffered packet from comm port
"send" send buffered packet to comm port
"vio" set current virtual I/O to specified channel
"window" make window at cursor position
---if "assign"---
WORD object UID
WORD caller UID/PID
DWORD CSL with port
---if "deassign"---
WORD channel ID
---if "cursor"---
WORD channel ID (must be a SRCSINK)
WORD new state (0000h off, 0001h on)
---if "init"---
WORD channel ID (must be a SRCSINK)
WORD comm port number (00h-03h)
WORD UART init code
---if "open"---
WORD channel ID
---if "position"---
WORD channel ID (must be a SRCSINK)
WORD position (high byte = row, low byte = column)
---if "receive"---
DWORD pointer to buffer
---if "send"---
WORD length of buffer
DWORD pointer to buffer
---if "vio"---
WORD channel ID (must be a SRCSINK)
---if "window"---
WORD top left (high byte = row, low byte = column)
WORD bottom right (high byte = row, low byte = column)
Return: DX:AX -> IRP structure or 0000h:0000h
SeeAlso: AH=00h"VMiX",AH=02h"VMiX"
--------T-1501-------------------------------
INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE
AH = 01h
AL = semaphore number (00h-3Fh)
Return: AH = status
00h successful
02h invalid semaphore number
Notes: if the semaphore is not owned, ownership is assigned to the calling
task and the call returns immediately
if the semaphore is already owned by another task, the calling task
is placed on a queue for the semaphore and suspended until it can
become owner of the semaphore
semaphore 0 is used internally by MultiDOS to synchronize DOS access
SeeAlso: AH=02h"MultiDOS",AH=10h"MultiDOS",AH=1Bh"MultiDOS"
--------B-1502-------------------------------
INT 15 - CASSETTE - READ DATA (PC and PCjr only)
AH = 02h
CX = number of bytes to read
ES:BX -> buffer
Return: CF clear if successful
DX = number of bytes read
ES:BX -> byte following last byte read
CF set on error
AH = status (see #0335)
SeeAlso: AH=00h"CASSETTE",AH=03h"CASSETTE",MEM 0040h:0069h,MEM 0040h:006Bh"PC"
(Table 0335)
Values for Cassette status:
00h successful
01h CRC error
02h bad tape signals
04h no data
80h invalid command
86h no cassette present
--------b-1502-------------------------------
INT 15 - Amstrad PC1512 - READ DATA FROM NON-VOLATILE RAM
AH = 02h
AL = NVRAM location (00h to 3Fh)
Return: AH = return code
00h OK
01h address bad
02h checksum error
AL = NVRAM data value
SeeAlso: AH=01h"Amstrad"
--------O-1502-------------------------------
INT 15 - VMiX - "sys_memreq" - MEMORY OBJECT MANAGER
AH = 02h
STACK: WORD object ID of requestor
DWORD pointer to ASCIZ name of requested method
"assign" allocate low memory block
"assign extended" allocate extended memory pages
"assign gdt" allocate GDT selector
"paged" allocate low paged memory
"paged extended" alllocate extended memory pages
"deassign" free memory block
"deassign gdt" free GDT selector
"getvpage" get physical address for virtual page
"setvpage" set physical address for virtual page
"info" get VMiX memory usage info block
"move" move contents of 32-bit memory
"newmcb" make new DOS memory control block
"owner" get process ID of MCB or PSP owner
"umb" allocate upper memory block
"video" toggle system use of video memory and get stat
---if "assign"---
WORD number of objects
WORD size in bytes (multiple of 512 bytes)
---if "assign extended"---
WORD number of objects
WORD size in bytes (multiple of 4K)
---if "assign gdt"---
WORD access type (low byte)
WORD segment size in paragraphs
DWORD pointer to start of physical segment
---if "paged"---
WORD number of 512-byte pages
---if "paged extended"
WORD number of 4K pages
---if "deassign"---
DWORD pointer returned by previous allocation call
---if "deassign gdt"---
WORD GDT selector
---if "getvpage"---
WORD owner's process ID
DWORD pointer to buffer for page structure (struct VPGE)
---if "setvpage"---
WORD owner's process ID
DWORD pointer to new page structure (struct VPGE)
---if "info"---
no additional arguments
---if "move"
DWORD 32-bit source address
DWORD 32-bit destination address
WORD number of words to move
---if "newmcb"---
DWORD pointer to new MCB's location
WORD size of memory block
DWORD pointer to ASCIZ name string (max 8 chars)
---if "owner"---
WORD MCB or PSP segment
---if "umb"---
WORD size in paragraphs
---if "video"---
no additional arguments
Return: DX:AX -> memory block or VPGE struct or 0000h:0000h
SeeAlso: AH=00h"VMiX",AH=01h"VMiX"
--------T-1502-------------------------------
INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE
AH = 02h
AL = semaphore number (00h-3Fh)
Return: AH = status
00h successful
01h not semaphore owner
02h invalid semaphore number
Notes: if any tasks are waiting for the semaphore, the first task on the wait
queue will become the new owner and be reawakened
do not use within an interrupt handler
SeeAlso: AH=01h"MultiDOS",AH=10h"MultiDOS",AH=1Ch"MultiDOS"
--------B-1503-------------------------------
INT 15 - CASSETTE - WRITE DATA (PC and PCjr only)
AH = 03h
CX = number of bytes to write
ES:BX -> data buffer
Return: CF clear if successful
ES:BX -> byte following last byte written
CF set on error
AH = status (see #0335)
CX = 0000h
SeeAlso: AH=00h"CASSETTE",AH=02h"CASSETTE"
--------V-1503-------------------------------
INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE WRITE REGISTER
AH = 03h
AL = value (I,R,G,B bits)
Return: nothing
SeeAlso: AH=04h"Amstrad"
--------O-1503-------------------------------
INT 15 - VMiX - "sys_pinput" - PROMPTED CONSOLE INPUT
AH = 03h
STACK: DWORD pointer to ASCII prompt
WORD field outline character
WORD length of input field (max 7Fh)
DWORD address of pointer to input buffer
Return: AX = length of input (input buffer is padded with blanks)
SeeAlso: AH=04h"VMiX"
--------T-1503-------------------------------
INT 15 - MultiDOS Plus - SUSPEND TASK FOR INTERVAL
AH = 03h
DX = number of time slices to remain suspended
Return: after specified interval has elapsed
Note: when priority-based scheduling is in use, high-priority tasks should
use this function to yield the processor
SeeAlso: AH=00h"MultiDOS",AH=0Ah"MultiDOS"
--------B-1504-------------------------------
INT 15 - SYSTEM - BUILD ABIOS SYSTEM PARAMETER TABLE (PS)
AH = 04h
ES:DI -> 32-byte results buffer for System Parameter Table (see #0336)
DS = segment containing ABIOS RAM extensions (zero if none)
Return: CF clear if successful
AH = 00h success
ES:DI buffer filled
AL destroyed
CF set on failure
AX destroyed
AH = 80h/86h if not supported
SeeAlso: AH=05h"ABIOS",AH=C1h
Format of ABIOS System Parameter Table:
Offset Size Description (Table 0336)
00h DWORD FAR address of ABIOS Common Start Routine
04h DWORD FAR address of ABIOS Interrupt Routine
08h DWORD FAR address of ABIOS Time-out Routine
0Ch WORD number of bytes of stack required by this ABIOS implementation
0Eh 16 BYTEs reserved
1Eh WORD number of entries in initialization table
--------V-1504-------------------------------
INT 15 - Amstrad PC1512 - WRITE VDU COLOR PLANE READ REGISTER
AH = 04h
AL = value (RDSEL1 and RDSEL0)
Return: nothing
SeeAlso: AH=03h"Amstrad",AH=05h"Amstrad"
--------O-1504-------------------------------
INT 15 - VMiX - "sys_vprintf" - FORMATTED OUTPUT TO STREAM
AH = 04h
STACK: DWORD control string
DWORD array of arguments
Return: nothing
SeeAlso: AH=03h"VMiX"
--------T-1504-------------------------------
INT 15 - MultiDOS Plus - SEND MESSAGE TO ANOTHER TASK
AH = 04h
AL = mailbox number (00h-3Fh)
CX = message length in bytes
DS:SI -> message
Return: AH = status
00h successful
01h out of message memory
02h invalid mailbox number
Note: the message is copied into a system buffer; the caller may immediately
reuse its buffer
SeeAlso: AH=05h"MultiDOS"
--------B-1505-------------------------------
INT 15 - SYSTEM - BUILD ABIOS INITIALIZATION TABLE (PS)
AH = 05h
ES:DI -> results buffer of length 18h * Number_of_Entries (see #0337)
DS = segment containing ABIOS RAM extensions (zero if none)
Return: CF clear if successful
AH = 00h success
ES:DI buffer filled
AL destroyed
CF set on failure
AX destroyed
AH = 80h/86h if not supported
SeeAlso: AH=04h"ABIOS",AH=C1h
Format of one entry of ABIOS Initialization Table:
Offset Size Description (Table 0337)
00h WORD device ID (see #0338)
02h WORD number of Logical IDs
04h WORD Device Block length (zero for ABIOS patch or extension)
06h DWORD -> init routine for Device Block and Function Transfer Table
0Ah WORD request block length
0Ch WORD Function Transfer Table length (zero for a patch)
0Eh WORD Data Pointers length (in Common Data Area)
10h BYTE secondary device ID (hardware level this ABIOS ver supports)
11h BYTE revision (device driver revision level this ABIOS supports)
12h 6 BYTEs reserved
(Table 0338)
Values for ABIOS device ID:
00h ABIOS internal calls
01h floppy disk
02h hard disk
03h video
04h keyboard
05h parallel port
06h serial port
07h system timer
08h real-time clock
09h system services
0Ah NMI
0Bh mouse
0Eh CMOS RAM
0Fh DMA
10h Programmable Option Select (POS)
16h keyboard password
--------V-1505-------------------------------
INT 15 - Amstrad PC1512 - WRITE VDU GRAPHICS BORDER REGISTER
AH = 05h
AL = value (I,R,G,B bits)
Return: nothing
SeeAlso: AH=04h"Amstrad"
--------O-1505-------------------------------
INT 15 - VMiX - "sys_getpid" - GET PROCESS ID OF CURRENT PROCESS
AH = 05h
Return: AX = process ID
SeeAlso: AH=06h"VMiX",AH=0Bh"VMiX"
--------T-1505-------------------------------
INT 15 - MultiDOS Plus - CHECK MAILBOX
AH = 05h
AL = mailbox number (00h-3Fh)
Return: AH = status
00h successful
DX = length of first message in queue, 0000h if no message
02h invalid mailbox number
SeeAlso: AH=04h"MultiDOS",AH=06h"MultiDOS"
--------b-1506-------------------------------
INT 15 - Amstrad PC1512 - GET ROS VERSION NUMBER
AH = 06h
Return: BX = version number
--------O-1506-------------------------------
INT 15 - VMiX - "sys_getpcb" - GET POINTER TO PROCESS CONTROL BLOCK
AH = 06h
STACK: WORD process ID
Return: DX:AX -> process control block
SeeAlso: AH=05h"VMiX",AH=07h"VMiX",AH=08h"VMiX"
--------T-1506-------------------------------
INT 15 - MultiDOS Plus - READ MAILBOX
AH = 06h
AL = mailbox number (00h-3Fh)
CX = size of buffer in bytes
ES:DI -> buffer for message
Return: AH = status
00h successful
CX = number of bytes copied
DX = actual length of message
02h invalid mailbox number
Note: if the caller's buffer is not large enough, the message is truncated
and the remainder is lost
SeeAlso: AH=04h"MultiDOS",AH=05h"MultiDOS"
--------O-1507-------------------------------
INT 15 - VMiX - "sys_getocb" - GET POINTER TO OBJECT CONTROL BLOCK
AH = 07h
STACK: WORD object type
Return: DX:AX -> object control block
SeeAlso: AH=06h"VMiX",AH=08h"VMiX"
----------1507-------------------------------
INT 15 - IBM SurePath BIOS - Officially "Private" Function
AH = 07h
SeeAlso: AH=08h"IBM"
--------T-1507-------------------------------
INT 15 - MultiDOS Plus - SPAWN INTERNAL TASK (CREATE NEW THREAD)
AH = 07h
BX:CX = entry point of new task
DX = stack size in paragraphs
Return: AH = status
00h successful
01h no free task control blocks
02h no free memory for task's stack
Note: execution returns immediately to calling task
SeeAlso: AH=08h"MultiDOS",AH=09h"MultiDOS",AH=13h"MultiDOS"
--------O-1508-------------------------------
INT 15 - VMiX - "sys_getccb" - GET CHANNEL CONTROL BLOCK
AH = 08h
STACK: WORD channel ID
Return: DX:AX -> channel control block
SeeAlso: AH=06h"VMiX",AH=07h"VMiX"
--------B-1508-------------------------------
INT 15 - IBM SurePath BIOS - WAIT REQUESTED TIME PERIOD
AH = 08h
AL = function
00h wait in increments of 15.025 microseconds
CX = number of time increments to wait (0000h = maximum)
80h wait in increments of 840 ns
ECX = number of time increments to wait
81h I/O event wait
BH = bitmask of bits to check
BL = expected pattern
DX = I/O port address
ECX = number of 840 ns microticks to wait
Return: ECX = 00000000h if expected pattern did not occur
82h memory event wait
BH = bitmask of bits to check
BL = expected pattern
ES:SI -> BYTE to check
ECX = number of 840 ns microticks to wait
Return: ECX = 00000000h if expected pattern did not occur
other reserved
Return: CF clear if successful
CF set on error
AH = status
00h successful
01h used 15.025 microsecond interval, time rounded up
08h reserved subfunction
86h function not supported
Notes: IBM classifies this function as optional
if the POST determines that the timer is nonfunctional, this function
uses the 15.025 microsecond refresh timer instead of the
full-resolution timer
SeeAlso: AH=07h"IBM",AH=09h"IBM",AH=86h
--------T-1508-------------------------------
INT 15 - MultiDOS Plus - TERMINATE INTERNAL TASK (KILL THREAD)
AH = 08h
Return: calling task terminated, so execution never returns to caller
Notes: an internal task must be terminated with this function rather than a
DOS termination function
task's stack space is returned to parent task's memory pool
SeeAlso: AH=07h"MultiDOS"
--------O-1509-------------------------------
INT 15 - VMiX - "sys_getqueue" - GET ID OF QUEUED ELEMENT
AH = 09h
STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type)
WORD subqueue ID
Return: AX = queue ID
SeeAlso: AH=0Ah"VMiX"
----------1509-------------------------------
INT 15 - IBM BIOS - RESERVED FOR PCMCIA SYSTEM RESOURCE TABLE ACCESS
AH = 09h
no further details available
SeeAlso: AH=08h"IBM"
--------T-1509-------------------------------
INT 15 - MultiDOS Plus - CHANGE TASK'S PRIORITY
AH = 09h
AL = new priority
Return: nothing
Note: the priority has different meanings depending on whether priority-
based or round-robin scheduling is used
SeeAlso: AH=07h"MultiDOS"
--------O-150A-------------------------------
INT 15 - VMiX - "sys_qetqnext" - GET ID OF NEXT QUEUED ELEMENT
AH = 0Ah
STACK: WORD queue ID (0 = process queue, 1 = object, 3 = type)
WORD ID of current element in queue chain
Return: AX = ID of next element
SeeAlso: AH=09h"VMiX",AH=0Fh"VMiX"
--------T-150A-------------------------------
INT 15 - MultiDOS Plus - CHANGE TIME SLICE INTERVAL
AH = 0Ah
AL = new interval
00h = 55.0 ms (default)
80h = 27.5 ms
40h = 13.75 ms
20h = 6.88 ms
10h = 3.44 ms
08h = 1.72 ms
SeeAlso: AH=03h"MultiDOS"
--------O-150B-------------------------------
INT 15 - VMiX - "sys_sysreq" - SYSTEM CONFIGURATION MANAGER
AH = 0Bh
STACK: WORD caller's UID
DWORD pointer to ASCIZ name of requested method
"abort" abort current send/receive on comm port
"block" start/end critical section
"close" terminate interrupt-drive comm I/O
"open" prepare comm port for interrupt-driven I/O
"delay" set delay timer and wait
"hibernate" put process to sleep
"ints" enable/disable interrupt-driven INT 14h
"length" get current send/receive buffer offsets
"kswitch" switch stacks
"numproc" get number of active processes
"protocol" set protocol function for comm interrupts
"relocate" set/reset VMiX flag for relocating to himem
"status" get current open comm port status
"wake" awaken a process
"xport" get comm port polled for logins
---if "abort"---
no additional arguments
---if "block"---
WORD 0000h end, 0001h start
---if "close"---
no additional arguments
---if "open"---
WORD comm port (00h-03h)
WORD BIOS parameter byte (see #0226 at INT 14/AH=00h),
except bits 7-5: 000 = 19200, 001 = 38400, 011 = 115200
---if "delay"---
WORD time in seconds
---if "hibernate"---
WORD process ID
---if "ints"---
WORD 0000h if no, 0001h if yes
---if "length","numproc","relocate","status","xport"---
no additional arguments
---if "kswitch"---
DWORD pointer to new stack
---if "protocol"---
DWORD pointer to function (must be in low "assign"ed memory
when in 386 mode)
---if "wake"---
WORD process ID
Return: DX:AX -> result or 0000h:0000h
---if "length"---
BYTE receive offset
BYTE send offset
---if "kswitch"---
DWORD old stack pointer
---if "numproc"---
WORD number of active processes
---if "status"---
current open comm port status
---if "xport"---
current comm port being polled for logins
Note: the "delay" command reportedly disables the keyboard until the delay
completes
SeeAlso: AH=05h"VMiX",AH=0Eh"VMiX"
--------T-150B-------------------------------
INT 15 - MultiDOS Plus - FORCE DISPLAY OUTPUT TO PHYSICAL SCREEN MEMORY
AH = 0Bh
Return: nothing
Notes: sets calling task's screen pointer to actual screen memory; the pointer
may be restored with AH=0Ch
caller's video mode must be same as foreground task's video mode
any text written while in the background will be saved to the
foreground task's virtual screen when it switches to the background
useful if a background task wants to display a message on the
foreground screen
SeeAlso: AH=0Ch"MultiDOS"
--------O-150C-------------------------------
INT 15 - VMiX - "sys_getstack" - GET POINTER TO PROCESS TSS STACK
AH = 0Ch
STACK: WORD process ID
Return: DX:AX -> TSS stack store
SeeAlso: AH=00h"VMiX"
--------T-150C-------------------------------
INT 15 - MultiDOS Plus - RESTORE OLD VIDEO DISPLAY MEMORY
AH = 0Ch
Return: nothing
Note: restores task's screen pointer saved by AH=0Bh; must not be called
unless AH=0Bh has been called first
SeeAlso: AH=0Bh"MultiDOS"
--------O-150D-------------------------------
INT 15 - VMiX - "sys_spawn" - START A CHILD PROCESS JOB SHELL
AH = 0Dh
STACK: DWORD ASCIZ string starting with requested I/O channel and
followed by standard VMiX shell command string
Return: AX = process ID or error code "SYS_ERROR"
Note: the maximum string length is 7Fh characters
SeeAlso: AH=0Eh"VMIX",AH=11h"VMiX",INT 21/AH=4Bh
--------T-150D-------------------------------
INT 15 - MultiDOS Plus - DISABLE MULTITASKING
AH = 0Dh
Return: nothing
Note: calling task receives all time slices until AH=0Eh is called; this
allows time-critical events or nonreentrant code to be processed
SeeAlso: AH=0Eh"MultiDOS",AH=10h"MultiDOS",AX=101Bh,AH=20h"MultiDOS"
--------O-150E-------------------------------
INT 15 - VMiX - "sys_kill" - HARD TERMINATE PROCESS
AH = 0Eh
STACK: WORD process ID
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=0Bh"VMiX",AH=0Dh"VMIX"
--------T-150E-------------------------------
INT 15 - MultiDOS Plus - ENABLE MULTITASKING
AH = 0Eh
Return: nothing
SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AH=20h"MultiDOS"
--------d-150F-------------------------------
INT 15 C - SYSTEM - FORMAT UNIT PERIODIC INTERRUPT (PS ESDI drives only)
AH = 0Fh
AL = phase code
00h reserved
01h surface analysis
02h formatting
Return: CF clear if formatting should continue
CF set if formatting should terminate
Note: called during ESDI drive formatting after each cylinder is completed
SeeAlso: INT 13/AH=1Ah
--------O-150F-------------------------------
INT 15 - VMiX - "sys_getqkey" - GET KEY FIELD OF QUEUED ELEMENT
AH = 0Fh
STACK: WORD queue ID (0 = process queue, 1 = object q, 3 = type q)
WORD ID of element in queue chain
Return: AX = key
SeeAlso: AH=0Ah"VMiX"
--------T-150F-------------------------------
INT 15 - MultiDOS Plus - EXECUTE A MULTIDOS PLUS COMMAND
AH = 0Fh
DS:BX -> ASCIZ command
Return: after command has been processed
Notes: specified string is executed as if it had been typed at the MultiDOS
command prompt
the task is placed on a queue which MultiDOS examines periodically and
is suspended until MultiDOS has processed the command
all lowercase characters up to the first blank are converted to upper
case within the given buffer
--------O-1510-------------------------------
INT 15 - VMiX - "sys_virtual" - EXECUTE CONFORMING FUNCTION IN PROTECTED MODE
AH = 10h
STACK: DWORD pointer to function
N WORDs function args
Return: AX = function's return value??? (not specified in documentation)
Note: while the function is executing, the following global descriptors are
available:
20h stack segment
38h code segment of function
40h data alias for function's code segment
additional GDT descriptors can be allocated using AH=02h with
function "assign gdt"
SeeAlso: AH=02h"VMiX",AH=51h"VMiX"
--------T-1510-------------------------------
INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE
AH = 10h
AL = semaphore number (00h-3Fh)
Return: AH = status
00h semaphore not in use
01h semaphore owned by another task
02h invalid semaphore number
03h semaphore owned by caller
SeeAlso: AH=02h"MultiDOS",AH=0Dh"MultiDOS",AH=1Dh"MultiDOS"
--------Q-151000-----------------------------
INT 15 - TopView - "PAUSE" - GIVE UP CPU TIME
AX = 1000h
Return: after other processes run
Note: under DESQview, if the process issuing this call has hooked INT 08h,
the current time-slice is set to expire at the next clock tick rather
than immediately
SeeAlso: AH=00h"MultiDOS",AX=5305h,INT 21/AH=89h,INT 21/AH=EEh"DoubleDOS"
SeeAlso: INT 2F/AX=1680h,INT 60/DI=0106h,INT 62/AH=01h,INT 6F/AH=2Ah"F_YIELD"
SeeAlso: INT 7A/BX=000Ah,INT 7F/AH=02h"MultiLink",INT 7F/AH=E8h
--------Q-151001-----------------------------
INT 15 - TopView - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
AX = 1001h
BX = number of bytes to allocate
Return: ES:DI -> block of memory or 0000h:0000h (DV v2.26+)
AX = status (DV v2.42)
0000h successful
0001h failed
Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
common memory. Under DV v2.42, this call never generates a user
prompt regardless of the SETERROR value; instead, it always returns
AX=0001h and ES:DI=0000h:0000h if out of memory
SeeAlso: AX=1002h,AX=102Eh,AX=DE0Ch,AX=DE15h
--------Q-151002-----------------------------
INT 15 - TopView - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
AX = 1002h
ES:DI -> previously allocated block
Return: block freed
SeeAlso: AX=1001h,AX=DE0Dh
--------Q-151003-----------------------------
INT 15 - TopView - "PRINTC" - DISPLAY CHARACTER/ATTRIBUTE ON SCREEN
AX = 1003h
BH = attribute
BL = character
DX = segment of object handle for window
Return: nothing
Note: BX=0000h does not display anything, it only positions the hardware
cursor to the logical cursor's current position
--------Q-1510-------------------------------
INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
AH = 10h
AL = 04h thru 12h
Return: pops up "Programming error" window in DV 2.x
--------Q-151013-----------------------------
INT 15 - TopView - "GETBIT" - DEFINE A 2ND-LEVEL INTERRUPT HANDLER
AX = 1013h
ES:DI -> FAR service routine
Return: BX = bit mask indicating which bit was allocated
0000h if no more bits available
SeeAlso: AX=1014h,AX=1015h
Note: only a few TopView/DESQview API calls are allowed during a hardware
interrupt; if other calls need to be made, the interrupt handler
must schedule a 2nd-level interrupt with "SETBIT" (AX=1015h)
--------Q-151014-----------------------------
INT 15 - TopView - "FREEBIT" - UNDEFINE A 2ND-LEVEL INTERRUPT HANDLER
AX = 1014h
BX = bit mask from INT 15/AX=1013h
Return: nothing
SeeAlso: AX=1013h,AX=1015h
--------Q-151015-----------------------------
INT 15 - TopView - "SETBIT" - SCHEDULE ONE OR MORE 2ND-LEVEL INTERRUPTS
AX = 1015h
BX = bit mask for interrupts to post
Return: indicated routines will be called: (DV 2.0x) at next task switch
(DV 2.2x) immediately on return from
hardware interrupt
Notes: this is one of the few TopView calls which are allowed from a hardware
interrupt handler
the handler will be called with ES containing the segment of the handle
of the next task to be executed; on return, ES must be the segment of
a task handle
SeeAlso: AX=1013h,AX=1014h
--------Q-151016-----------------------------
INT 15 - TopView - "ISOBJ" - VERIFY OBJECT HANDLE
AX = 1016h
ES:DI = possible object handle
Return: BX = status
FFFFh if ES:DI is a valid object handle (see #0340)
0000h if ES:DI is not
Note: under DESQview versions prior to 2.50, an object handle is always a
pointer to the object; for versions 2.50 and up, only task handles
are always pointers--other handles may consist of a unique object
number and offset into DESQview's common memory (see #0349)
SeeAlso: AX=DE14h,AX=DE2Bh,AX=DE2Ch
(Table 0339)
Values for DESQview object type:
00h window/task
01h mailbox
02h keyboard
03h timer
04h pointer
05h panel
06h objectq
Format of DESQview object:
Offset Size Description (Table 0340)
00h WORD offset in common memory of previous object of same type
02h WORD offset in common memory of next object of same type
04h WORD signature FEDCh (DV 2.42-)
signature FEDCh or object number (DV 2.50+)
06h WORD object type (see #0339)
08h DWORD object handle to return to caller
0Ch DWORD canonicalized object address (segment = common memory)
10h WORD offset in common memory of owning task
(0000h for unowned OBJECTQs)
12h WORD mapping context
offset in common memory of mapping context record (see #0342)
remainder varies by object type and DESQview version
---v2.42 keyboard object---
14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT")
bit 15: keyboard opened
16h 4 BYTEs ???
1Ah WORD priority in OBJECTQ???
1Ch ...
25h WORD offset in common memory of ??? task
27h 4 BYTEs ???
---v2.42 objectq object---
14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT")
bit 15: OBJECTQ opened
16h 2 BYTEs ???
18h WORD offset in common memory of ??? task
1Ah 6 BYTEs ???
---v2.42 mailbox object---
14h WORD flag bits (see also AH=12h/BH=0Ah"OBJECT")
bit 15: mailbox opened
1Ah WORD priority in OBJECTQ???
1Ch 6 BYTEs ???
22h WORD offset in common memory of mailbox name (counted string)
0000h if no name
<= 5 BYTEs ???
---v2.22-2.42,2.52,2.60 window/task object---
14h BYTE 00h window, 01h task
15h BYTE internal (not Switch menu) window number???
16h BYTE internal (not Switch menu) window number???
17h WORD segment of internal window record (see #0343)
19h 2 BYTEs ???
1Bh BYTE cursor row
1Ch BYTE cursor column
1Dh BYTE visible window origin, row
1Eh BYTE visible window origin, column
1Fh BYTE window height (logical)
20h BYTE window width (logical)
21h BYTE window position, row
22h BYTE window position, column
23h BYTE window height (visible)
24h BYTE window width (visible)
25h BYTE row of top of frame (or window if unframed)
26h BYTE column of left of frame (or window if unframed)
27h BYTE window height (physical, including frame)
28h BYTE window width (physical, including frame)
29h BYTE unzoomed visible origin, row (00h before first zoom)
2Ah BYTE unzoomed visible origin, column (00h before first zoom)
2Bh BYTE unzoomed window position, row (00h before first zoom)
2Ch BYTE unzoomed window position, column (00h before first zoom)
2Dh BYTE unzoomed window height (00h before first zoom)
2Eh BYTE unzoomed window width (00h before first zoom)
unzoomed parameters above are updated when window is zoomed
to full screen
2Fh BYTE ??? initially logical window height
30h BYTE ??? initially logical window width
31h 2 BYTEs ???
33h BYTE minimum height of window
34h BYTE minimum width of window
35h BYTE maximum height of window
36h BYTE maximum width of window
37h 3 BYTEs ???
3Ah 8 BYTEs window frame characters: ul,ur,ll,lr,t,b,l,r
42h 24 BYTEs attributes???
5Ah 8 BYTEs window frame characters: ul,ur,ll,lr,t,b,l,r
62h 3 BYTEs ???
65h BYTE ??? bitflags
66h BYTE bit 0: window is zoomed
67h BYTE ???
68h WORD offset in common memory of window name or 0000h if untitled
6Ah WORD length of window name
6Ch 2 BYTEs ???
6Eh WORD offset of logical cursor in window (in character cells)
70h DWORD pointer to field table for window
74h BYTE ???
75h 2 BYTEs ???
77h BYTE number of last-visited field
78h DWORD pointer to field table entry for last-visited field
7Ch 3 BYTEs ???
7Fh BYTE select field marker character
80h BYTE ??? bit flags
bit 0: allow ECh window stream opcode to change reverse logattr
bit 1: alternate field processing mode selected
81h BYTE ???
82h DWORD notification function (manager stream opcode 8Ah)
no notification if segment = 0000h
86h DWORD notification argument (manager stream opcode 8Bh)
8Ah WORD offset in common memory of ??? window object or 0000h
8Ch WORD offset in common memory of ??? window object or 0000h
8Eh WORD offset in common memory of ??? window object or 0000h
90h BYTE ??? bitflags
91h BYTE ???
---task object only
92h BYTE bit flags (bits 0-4)
93h BYTE character for ??? (default 20h)
94h BYTE ??? flag
95h WORD offset in common memory of ???
97h 2 BYTEs ???
99h WORD ???
9Bh BYTE ??? bit flags
bit 3: ???
bit 6: perform protected-attribute processing on select fields
9Ch BYTE ???
9Dh WORD offset in common memory of current register save record
(see #0341). No register save record in use if < 01C0h
9Fh WORD offset in common memory of task's keyboard object
A1h WORD offset in common memory of task's OBJECTQ object
A3h WORD offset in common memory of task's mailbox object
A5h WORD semaphore: FFFFh if on user stack, else on task's private stack
A7h DWORD user's SS:SP
ABh WORD task's private SP (SS read from offset 0Ah)
ADh 6 BYTEs ???
B3h BYTE ??? bit flags
bit 0: run in foreground only
B4h BYTE ???
B5h BYTE ??? bitflags
B6h BYTE task status (see #0479 at AX=DE2Ch)
B7h 9 BYTEs ???
C0h WORD head pointer for keyboard buffer (wraps back to 00h after 80h)
C2h WORD tail pointer for keyboard buffer (wraps back to 00h after 80h)
C4h 2 BYTEs ??? (0000h)
C6h WORD segment of keyboard buffer for task
C8h WORD offset in common memory of ??? keyboard object
CAh BYTE ???
---v2.22-2.42
CBh WORD offset in common memory of ??? object
CEh BYTE ??? flag
CFh WORD offset in common memory of default notify window for task
or 0000h if none
D1h 4 BYTEs ???
D5h BYTE window number on Switch Window menu
D6h 5 BYTEs ???
DBh WORD offset in common memory of ??? object
DDh 2 BYTEs ???
DFh WORD API level for task
E1h WORD offset in common memory of object task is waiting on if task
status is 'waiting', else 0000h
E7h WORD segment of ???
E9h 4 BYTEs ???
EDh WORD EMS handle of virtualization buffer, 0000h if no virtualization
F1h 12 BYTEs ???
FBh WORD ???
FDh BYTE ???
FFh 12 BYTEs ???
10Bh DWORD pointer to process record (see #0344,#0345)
10Dh 10 BYTEs ???
119h DWORD SS:SP for ???
11Dh 4 BYTEs ???
121h DWORD pointer to ???
125h 25 BYTEs ???
13Eh DWORD pointer to ??? in system memory
---v2.22
142h 3 BYTEs ???
145h task's default keyboard object
---v2.42
142h DWORD pointer to first task instance data record in system memory
148h DWORD pointer to last task instance data record in system memory
(see #0346)
14Ah BYTE ???
14Dh 42 BYTEs task's default keyboard object
177h 32 BYTEs task's ObjectQ object
197h 41 BYTEs task's default mailbox object
1C0h 24 BYTEs first register save record
450h -- default top of private stack
---v2.52 (probably all DV/X)
Same as v2.60 below except there is an extra 29 bytes inserted somewhere
before offset 9Fh, but not yet known exactly where. Also, for the WAIT_ON
field (v2.60 offset E3h), some X apps (probably waiting on a socket) have
0000h even when waiting.
---v2.60
CBh WORD ??? (added in 2.50 - rest is same as 2.42)
CDh WORD offset in common memory of ??? object
D0h BYTE ??? flag
D1h WORD offset in common memory of default notify window for task
or 0000h if none
D3h 4 BYTEs ???
D7h BYTE window number on Switch Window menu
D8h 5 BYTEs ???
DDh WORD offset in common memory of ??? object
DFh 2 BYTEs ???
E1h WORD API level for task
E3h WORD If status at B6h=waiting, offset in common memory of object
that task is waiting on, else 0000h. (Task with CPU also
has 0000h here)
E9h WORD segment of ???
EBh 4 BYTEs ???
EFh WORD EMS handle of virtualization buffer, 0 if no virtualization
F3h 12 BYTEs ???
FDh WORD ???
FFh BYTE ???
101h 8 BYTEs ???
109h DWORD pointer to process record in system memory
10Dh 14 BYTEs ???
11Bh DWORD SS:SP for ???
11Fh 4 BYTEs ???
123h DWORD pointer to ???
127h 25 BYTEs ???
140h DWORD pointer to ??? in system memory
144h DWORD pointer to first task instance data record in system memory
148h DWORD pointer to last task instance data record in system memory
(from INT 15/AX=DE27h) (see #0346)
14Ch BYTE ???
14Eh 42 BYTEs task's default keyboard object
179h 32 BYTEs task's ObjectQ object
199h 41 BYTEs task's default mailbox object
1C2h 24 BYTEs first register save record
452h -- default top of private stack
Format of DESQview Register Save Record:
Offset Size Description (Table 0341)
00h WORD AX
02h WORD BX
04h WORD CX
06h WORD DX
08h WORD DI
0Ah WORD SI
0Eh WORD DS
10h WORD ES
12h DWORD return address
16h WORD original flags
Format of DESQview mapping context record:
Offset Size Description (Table 0342)
00h WORD lowest segment in process's memory
(often start of system memory chain)
02h WORD size of process's memory in paragraphs
04h BYTE flag: 00h if process swapped out, 01h otherwise
05h BYTE flag: 00h if allocated in conventional memory, 01h if EMS
06h 2 BYTEs ???
08h WORD EMS handle if in EMS, else 0
0Ah 2 BYTEs ??? (nonzero if system memory resides in shared mem???)
0Ch WORD segment of system memory block that contains process record,
referenced from segment of start of system memory chain
0Eh BYTE ???
0Fh WORD size of system memory block that contains process record
and DOS memory in paragraphs
11h BYTE bit flags
Bit 0: Swapped out???
Bit 1: ???
Bit 2: Swapped out???
12h BYTE ???
13h BYTE reference count
---v2.31
14h 10 BYTEs ???
1Eh WORD segment of process record
20h 2 BYTEs ???
22h WORD segment of ??? (in first free system memory block???)
24h WORD segment of end of system memory chain
26h WORD segment of start of system memory chain
28h 8 BYTEs ???
2Ah DWORD pointer to ??? (process record???)
2Dh 10 BYTEs ???
37h BYTE lowest interrupt vector to save on context switch
38h BYTE highest interrupt vector to save on context switch
39h WORD offset in common memory of main task with this context
3Ah 12 BYTEs ???
46h BYTE internal mapping context number
47h 12 BYTEs ???
---v2.5x-2.60
14h 6 BYTEs ???
1Ah WORD segment of process record
1Ch 2 BYTEs ???
1Eh WORD segment of first free system memory block
20h WORD segment of start of system memory chain
22h WORD segment of end of system memory chain
24h 8 BYTEs ???
2Ch DWORD pointer to ??? (1 segment into process record???)
30h 3 BYTEs ???
33h WORD Offset in common memory of main task with this context
35h 7 BYTEs ???
3Ch BYTE internal mapping context number
3Dh 14 BYTEs ???
4Bh WORD first DOS memory segment (first MCB segment+1)
4Dh BYTE ??? (flag???)
---v2.53 (2.5x???)
4Eh 12 BYTEs ???
---v2.60
4Eh WORD segment of script buffer (see #0347)
50h 6 BYTEs ???
Format of DESQview Internal Window Record (v2.31-2.60):
Offset Size Description (Table 0343)
00h BYTE internal window number???
01h BYTE display page???
02h BYTE video mode
03h 3 BYTEs ???
06h BYTE logical window height
07h BYTE logical window width
08h DWORD pointer to text video buffer
0Ch 116 BYTEs ???
Format of DESQview process record (v2.31):
Offset Size Description (Table 0344)
-470h 13 BYTEs filename of ??? Script
-463h 1117 BYTEs ??? (script buffer???)
-6h 6 BYTEs ???
00h WORD segment of parent PSP in process
02h 5 BYTEs ???
07h WORD segment of current PSP in process
09h WORD segment of first MCB in process
0Bh 13 BYTEs ???
18h 1024 BYTEs process's interrupt vector table
418h 376 BYTEs ???
590h first MCB in process
SeeAlso: #0345
Format of DESQview process record (v2.52-v2.60) (probably also 2.5x):
Offset Size Description (Table 0345)
00h 28 BYTEs EXE header of last EXE, ??? if last program run was COM
1Ch ??? BYTEs overwritten with ASCIZ filename of last program run (EXE/COM)
11Ch WORD segment of parent PSP in process
11Eh 4 BYTEs ???
122h WORD segment of current PSP
124h WORD segment of current PSP
126h WORD segment of first MCB in process
128h 4 BYTEs ???
12Ch DWORD pointer to first process instance data record in system memory
130h DWORD pointer to last process instance data record in system memory
(from INT 15/AX=DE27h) (see #0346)
134h 8 BYTEs ???
13Ch WORD size of current environment
13Eh WORD segment of current environment
140h WORD segment of current PSP
142h DWORD entry point of current program
146h 10 BYTEs ???
---v2.52 (v2.5x???)
150h BYTE ???
151h WORD segment of parent PSP in process
153h WORD ???
155h WORD ???
157h WORD ???
159h 4 BYTEs ???
15Dh WORD segment of current environment
15Fh WORD segment of current PSP
161h WORD segment of ???
162h WORD ???
164h 3 BYTEs ???
168h 1024 BYTEs process's interrupt vector table
568h 120 BYTEs ???
5E0h first MCB in process
---v2.60
150h WORD segment of parent PSP in process
152h WORD ???
154h WORD ???
156h WORD ???
158h 4 BYTEs ???
15Ch WORD segment of current environment
15Eh WORD segment of current PSP
160h WORD segment of ???
162h WORD ???
164h 1024 BYTEs process's interrupt vector table
564h 108 BYTEs ???
5D0h first MCB in process
SeeAlso: #0344
Format of DESQview task or process instance data record (v2.5x???, v2.60):
Offset Size Description (Table 0346)
00h DWORD pointer to next record of same type or 00000000
04h DWORD pointer to previous record of same type or 00000000
08h DWORD pointer to source area of memory during restore state
0Ch WORD number of bytes to save/restore
0Eh DWORD pointer to destination area of memory during restore state
12h WORD ??? (0)
14h N BYTEs source memory buffer during restore state
Format of DESQview script buffer (v2.60):
Offset Size Description (Table 0347)
00h 13 BYTEs ASCIZ Script filename
0Dh 80 BYTEs ???
5Eh N BYTEs script records (see #0348)
Format of one DESQview script record (v2.60):
Offset Size Description (Table 0348)
00h BYTE signature 12h
01h 18 BYTEs blank-padded script name
13h BYTE ASCII code of key attached to script or 0 if non-ASCII key
14h BYTE scan code of key attached to script if non-ASCII, else 0
15h BYTE ???
16h WORD size of script in bytes
18h N BYTEs script (ASCII code of each keystroke; if 0, next byte is
scan code of non-ASCII key)
SeeAlso: #0347
Format of DESQview Common Memory Header (v2.31-2.60):
Offset Size Description (Table 0349)
00h WORD offset of lowest used block
02h WORD bytes of commom memory, including header
04h WORD offset of first free block
06h N BYTEs size depends of DV version, ??? (DVP buffer???)
Note: the above is located at the beginning of the commom memory segment
SeeAlso: #0350,#0351,#0359
Format of DESQview Free block header:
Offset Size Description (Table 0350)
00h WORD size of block in bytes including header
02h WORD offset of next free block
04h N BYTEs free block
SeeAlso: #0349,#0351
Format of DESQview Used block header:
Offset Size Description (Table 0351)
00h WORD size of block in bytes including header
02h N BYTEs used block
SeeAlso: #0349,#0350
--------Q-151017-----------------------------
INT 15 - TopView - UNIMPLEMENTED IN DV 2.x
AX = 1017h
Return: pops up "Programming error" window in DV 2.x
--------Q-151018-----------------------------
INT 15 - TopView - "LOCATE" - FIND WINDOW AT A GIVEN SCREEN LOCATION
AX = 1018h
BH = column
BL = row
ES = segment of object handle for window below which to search
0000h = start search with topmost window
Return: ES = segment of object handle for window which is visible at the
indicated position, or covered by indicated window
0000h if no window
SeeAlso: AX=1023h,AX=1024h
--------Q-151019-----------------------------
INT 15 - TopView - "SOUND" - MAKE TONE
AX = 1019h
BX = frequency in Hertz (0000h = silence)
CX = duration in clock ticks (18.2 ticks/sec)
Return: immediately, tone continues to completion
Notes: if another tone is already playing, the new tone does not start until
completion of the previous one. Up to 32 tones may be queued before
the process is blocked until a note completes.
in DV 2.00, the lowest tone allowed is 20 Hz
if CX = 0, the current note is cancelled; if BX = 0 as well, all queued
notes are also cancelled
SeeAlso: AH=82h"HUNTER",INT 16/AH=73h
--------Q-15101A-----------------------------
INT 15 - TopView - "OSTACK" - SWITCH TO TASK'S INTERNAL STACK
AX = 101Ah
Return: stack switched
Notes: this call may not be nested; a second call must be preceded by a call
to "USTACK" (AX=1025h)
while TopView requires many API calls to be executed while on the
task's internal stack, DESQview allows those calls to be executed
regardless of the current stack
SeeAlso: AX=1025h
--------Q-15101B-----------------------------
INT 15 - TopView - "BEGINC" - BEGIN CRITICAL REGION
AX = 101Bh
Return: task-switching temporarily disabled
Notes: will not task-switch until "ENDC" (AX = 101Ch) called unless task
voluntarily releases the CPU (upon regaining the CPU, task-switching
will again be disabled)
suspends the caller until DOS is free
SeeAlso: AH=0Dh"MultiDOS",AX=101Ch,AX=DE13h,AX=DE1Ch,INT 2F/AX=1681h
SeeAlso: INT 60/DI=0602h
--------Q-15101C-----------------------------
INT 15 - TopView - "ENDC" - END CRITICAL REGION
AX = 101Ch
Return: task-switching enabled
Note: this API call may be made from within a hardware interrupt handler
SeeAlso: AX=101Bh,AX=DE13h,AX=DE1Bh,INT 2F/AX=1682h,INT 60/DI=0603h
--------Q-15101D-----------------------------
INT 15 - TopView - "STOP" - STOP TASK
AX = 101Dh
ES = segment of object handle for task to be stopped
(== handle of main window for that task)
Return: indicated task will not get any CPU time until restarted with AX=101Eh
Note: once a task has been stopped, additional "STOP"s are ignored
BUG: in DV 2.00, this function is ignored unless the indicated task is the
current task
SeeAlso: AX=101Eh,AX=102Bh,AH=12h"VMiX",INT 21/AH=81h
--------Q-15101E-----------------------------
INT 15 - TopView - "START" - START TASK
AX = 101Eh
ES = segment of object handle for task to be started
(== handle of main window for that task)
Return: indicated task is started up again
Note: once a task has been started, additional "START"s are ignored
SeeAlso: AX=101Dh,AX=102Bh,INT 21/AH=82h
--------Q-15101F-----------------------------
INT 15 - TopView - "DISPEROR" - POP-UP ERROR WINDOW
AX = 101Fh
BX = bit fields
bits 0-12: number of characters to display
bits 13,14: which mouse button may be pressed to remove window
00 = either
01 = left
10 = right
11 = either
bit 15: beep if 1
ES:DI -> text of message
CH = width of error window (0 = default)
CL = height of error window (0 = default)
DX = segment of object handle
Return: BX = status: 1 = left button, 2 = right, 27 = ESC pressed
Note: window remains on-screen until ESC or indicated mouse button is pressed
--------Q-151020-----------------------------
INT 15 - TopView - UNIMPLEMENTED IN DV v2.00+
AX = 1020h
Return: pops up "Programming error" window in DV v2.00+
--------Q-151021-----------------------------
INT 15 - TopView - "PGMINT" - INTERRUPT ANOTHER TASK
AX = 1021h
BX = segment of object handle for task to interrupt (not self)
DX:CX -> FAR routine to jump to next time task is run
Return: nothing
Notes: the FAR routine is entered with the current ES, DS, SI, DI, and BP
values, using the task's internal stack (see AX=101Ah); only SS:SP
needs to be preserved
multiple PGMINTs to a single task are processed last-in first-out
if the other task is in a DOS or DV API call, the interruption will
occur on return from that call
--------Q-151022BX0000-----------------------
INT 15 - TopView - "GETVER" - GET VERSION
AX = 1022h
BX = 0000h
Return: BX nonzero, TopView or compatible loaded
(BL = major version, BH = minor version)
Notes: TaskView returns BX = 0001h, DESQview v2.00+ returns BX = 0A01h
--------Q-151023-----------------------------
INT 15 - TopView - "POSWIN" - POSITION WINDOW
AX = 1023h
BX = segment of object handle for parent window within which to
position the window (0 = full screen)
ES = segment of object handle for window to be positioned
DL = general window position (see #0352)
CH = number of columns to offset from position specified by DL
CL = number of rows to offset from position specified by DL
Return: nothing
Bitfields for TopView general window position:
Bit(s) Description (Table 0352)
0,1 horizontal position
00 = current, 01 = center, 10 = left, 11 = right
2,3 vertical position
00 = current, 01 = center, 10 = top, 11 = bottom
4 don't redraw screen if set
5-7 not used
--------Q-151024-----------------------------
INT 15 - TopView - "GETBUF" - GET VIRTUAL SCREEN INFO
AX = 1024h
BX = segment of object handle for window
(0 = use default)
Return: ES:DI -> virtual screen
CX = size of virtual screen in bytes
DL = 00h text screen
01h graphics screen
SeeAlso: INT 10/AH=FEh,INT 21/AH=2Bh/CX=4445h
--------Q-151025-----------------------------
INT 15 - TopView - "USTACK" - SWITCH BACK TO USER'S STACK
AX = 1025h
Return: stack switched back
Notes: call only after having switched to internal stack with AX=101Ah
while TopView requires many API calls to be executed while on the
task's private stack, DESQview allows those calls to be executed
regardless of the current stack
SeeAlso: AX=101Ah
--------Q-1510-------------------------------
INT 15 - DESQview (TopView???) - UNIMPLEMENTED IN DV 2.x
AH = 10h
AL = 26h thru 2Ah
Return: pops up "Programming error" window in DV 2.x
--------Q-15102B-----------------------------
INT 15 - DESQview v2.00+ (TopView???) - "POSTTASK" - AWAKEN TASK
AX = 102Bh
BX = segment of object handle for task
Return: nothing
Note: forces a task which is waiting on its objectq to continue by placing
the handle for the task on the objectq
SeeAlso: AX=101Dh,AX=101Eh,INT 21/AH=82h
--------Q-15102C-----------------------------
INT 15 - DESQview v2.00+ - "NEWPROC" - START NEW APPLICATION IN NEW PROCESS
AX = 102Ch
ES:DI -> contents of .PIF/.DVP file (see #0353)
BX = size of .PIF/.DVP info
Return: BX = segment of object handle for new task
0000h on error
SeeAlso: AX=DE24h,INT 21/AH=4Bh
Format of .PIF/.DVP file:
Offset Size Description (Table 0353)
00h BYTE reserved (0)
01h BYTE checksum of bytes 02h through 170h
02h 30 BYTEs blank-padded program title
20h WORD maximum memory to allocate to partition in KB
22h WORD minimum memory required in KB
24h 64 BYTEs ASCIZ program pathname
64h BYTE default drive letter ('A',...)
65h 64 BYTEs ASCIZ default directory name
A5h 64 BYTEs ASCIZ program parameters
E5h BYTE initial screen mode (0-7) (also see offset 189h)
E6h BYTE number of text pages used
E7h BYTE number of first interrupt to save
E8h BYTE number of last interrupt to save
E9h BYTE rows in virtual screen buffer
EAh BYTE columns in virtual screen buffer
EBh BYTE initial window position, row
ECh BYTE initial window position, column
EDh WORD system memory in KB
EFh 64 BYTEs ASCIZ shared program name
12Fh 64 BYTEs ASCIZ shared program data file
16Fh BYTE program flags 1 (see #0354)
170h BYTE flags2
bit 6: uses command-line parameters in field at A5h
bit 5: swaps interrupt vectors
---information unique to .DVP files---
171h 2 BYTEs keys to use on open menu
173h WORD size of script buffer in bytes
175h WORD automatically give up CPU after this many tests for keyboard
input in one clock tick (default 0 = never)
177h BYTE nonzero = "uses own colors"
178h BYTE nonzero if application swappable
179h 3 BYTEs reserved (0) according to Quarterdeck documentation
in actual .DVP files, frequently 01h
17Ch BYTE nonzero to automatically close on exit (see also #0356)
17Dh BYTE nonzero if copy-protect floppy is required
---information unique to DESQview 2.0+---
17Eh BYTE .DVP version number
00h DESQview v1.2+
01h DESQview v2.0+
02h DESQview v2.2+
17Fh BYTE reserved (0)
180h BYTE initial number of rows in physical window
181h BYTE initial number of columns in physical window
182h WORD maximum expanded memory to allow, in KB
184h BYTE DVP program flags 3 (see #0355)
185h BYTE keyboard conflict level (0-4 for DV<2.26, 00h-0Fh for DV2.26+)
(see #0357)
186h BYTE number of graphics pages used
187h WORD extra system memory size
189h BYTE initial screen mode (FFh = default) (overrides offset E5h)
---information unique to DESQview 2.2+---
18Ah BYTE serial port usage
FFh uses all serial ports
00h no serial ports
01h only COM1
02h only COM2
18Bh BYTE DVP program flags 4 (see #0356)
18Ch BYTE protection level for 386 machines
18Dh 19 BYTEs reserved (0) for regular DESQview
---information unique to DESQview/X 1.0---
18Dh BYTE X flags
bits 3-7: unused (0)
bit 2: don't display wait message when opening window
bit 1: don't display DOS window
bit 0: (XNEWPROC) use DOS client layer (DOS-to-X)
(NEWPROC) inherit DOS client layer usage
18Eh BYTE X keyboard behavior (0-3)
18Fh BYTE font scaling
00h fixed fonts
01h scalable fonts
190h 10 BYTEs reserved (0)
19Ah WORD length of data follownig XDVP signature
19Ch 4 BYTEs signature "XDVP"
1A0h N BYTEs list of variable length records (see #0358)
Bitfields for .PIF/.DVP program flags 1:
Bit(s) Description (Table 0354)
7 writes text directly to screen
6 runs in foreground only (see also #0353 offset 184h)
5 uses math coprocessor
4 accesses system keyboard buffer directly
3-1 reserved (0)
0 swappable
SeeAlso: #0353,#0355,#0356
Bitfields for .DVP program flags 3:
Bit(s) Description (Table 0355)
7 automatically assign window position
5 maximum memory value has been specified
4 disallow "Close" command
3 foreground-only when doing graphics
set by DV 2.3+ when "Runs in Background" = "D" (undoc)
2 don't virtualize (see also #0356)
1 foreground-only during DOS calls
set by DV 2.3+ when "Runs in Background" = "D" (undoc)
SeeAlso: #0353,#0354,#0356
Bitfields for .DVP program flags 4:
Bit(s) Description (Table 0356)
7 automatically close application on exit if .COM or .EXE specified
(see also #0353 offset 17Ch)
6 swappable if not using serial ports
5 start program with window hidden (v2.26+)
4 start program in background (v2.26+)
3 virtualize text (see also #0355)
2 virtualize graphics (see also #0355)
1 share CPU when foreground
0 share EGA when foreground and zoomed
SeeAlso: #0353,#0354,#0355
Bitfields for DESQview keyboard conflict level:
Bit(s) Description (Table 0357)
3 save/restore entire INT 09 handler state every taskswtch
2 take special precautions for programs which read the BIOS keyboard
buffer directly from memory
1 never indicate keystroke available during scripts/xfers
0 only indicate keystroke available every sixth poll
SeeAlso: #0353
Format of DESQview/X variable length record:
Offset Size Description (Table 0358)
00h WORD length of following record, 0000h if end of record list
02h BYTE record type
01h script filename, up to 64 characters
02h command-line parameters (allows >64 characters on cmdline)
03h environment inheritance
04h environment string
05h starting window position
---types 01h,02h,04h---
03h N BYTEs ASCII data
---type 03h---
03h BYTE inheritance
00h do not inherit
01h inherit environment
---type 05h---
03h N BYTEs ASCII copy of fields as typed into DVPMAN, separated by commas:
starting row, starting column, starting height, starting width
Note: if there are multiple occurrences of record types 01h, 02h, or 03h,
only the last instance of each type is used; multiple occurrences of
type 04h are concatenated
SeeAlso: #0353
--------Q-15102D-----------------------------
INT 15 - DESQview v2.00+ - "KMOUSE" - KEYBOARD MOUSE CONTROL
AX = 102Dh
BL = subfunction
00h determine whether using keyboard mouse
Return: BL = 00h using real mouse
01h using keyboard mouse
01h turn keyboard mouse on
02h turn keyboard mouse off
--------Q-15102E-----------------------------
INT 15 - DESQview v2.40+ - ALLOCATE SYSTEM MEMORY
AX = 102Eh
BX = number of bytes
Return: AX = status
0000h successful
ES:DI -> allocated system memory (see #0359)
0001h failed
ES:DI = 0000h:0000h
Note: under DV 2.42, this call is identical to AX=1001h
SeeAlso: AX=1001h,AX=1002h,AX=DE0Ch
Format of DESQview system memory block header:
Offset Size Description (Table 0359)
00h WORD segment of next header or 0000h
02h WORD segment of previous header or 0000h
04h WORD size of block in paragraphs, including header
06h BYTE availability flag (00h in use, 01h free)
Note: this header is located one paragraph before the memory block proper
SeeAlso: #0349
--------Q-1511-------------------------------
INT 15 - TopView commands
AH = 11h
AL = various (except 17h)
Return: varies by function
Note: in DESQview 2.x, these function calls are identical to AH=DEh, so
see those below
SeeAlso: AX=DE00h,AX=DE22h,AX=DE30h
--------T-1511-------------------------------
INT 15 - VMiX - "sys_system" - EXECUTE SHELL SYSTEM COMMANDS
AH = 11h
STACK: DWORD pointer to ASCIZ string containing a VMiX shell
request (max len = 127)
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=0Ch"VMiX"
--------T-1511-------------------------------
INT 15 - MultiDOS Plus - TURN OFF AltZ TOGGLE
AH = 11h
Note: disables the Alt-Z MultiDOS command/program-selection hotkey
SeeAlso: AH=12h"MultiDOS"
Index: hotkeys;MultiDOS Plus
--------Q-151117BX0000-----------------------
INT 15 - DESQview v2.20+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
AX = 1117h
BX = 0000h get current mapping context without setting
nonzero set new mapping context
Return: BX = mapping context in effect before call
interrupts enabled
Notes: this function differs from AX = DE17h for DESQview v2.20 through 2.25
mapping contexts determine conventional-memory addressability; setting
a mapping context ensures that the associated program and data areas
are in memory for access. Usable by drivers, TSRs and shared
programs.
caller need not be running under DESQview, but must ensure that the
stack in use will not be mapped out by the call
SeeAlso: AX=DE17h,INT 2F/AX=1685h
--------m-1511DE-----------------------------
INT 15 - DESQview - QEXT.SYS - INSTALLATION CHECK
AX = 11DEh
Return: CF clear if installed
AX = segment at which QEXT.SYS is located
Desc: QEXT.SYS is Quarterdeck's HMA manager for DESQview; more recent
versions also implement the XMS standard
Note: a private entry point (see #0360) may be found by searching the
beginning of the returned segment for the signature string
"QUARTERDECK EXTENDED MEMORY MANAGER 286"; the word immediately
prior to the signature contains the QEXT version number in BCD,
and the word prior to that contains the offset within the QEXT
code segment of the private entry point
SeeAlso: INT 2F/AX=4310h"XMS",INT 67/AH=3Fh
(Table 0360)
Call QEXT.SYS private entry point with:
AH = 00h ???
AH = nonzero ???
--------!---Section--------------------------
Interrupt List, part 3 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------T-1512-------------------------------
INT 15 - VMiX - "sys_sleep" - PUT PROCESS TO SLEEP
AH = 12h
STACK: WORD process ID
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=03h"MultiDOS",AX=101Dh,AH=13h"VMiX"
--------T-1512-------------------------------
INT 15 - MultiDOS Plus - TURN ON AltZ TOGGLE
AH = 12h
Note: enables the Alt-Z MultiDOS command/program-selection hotkey
SeeAlso: AH=11h"MultiDOS"
Index: hotkeys;MultiDOS Plus
--------Q-1512--BH00-------------------------
INT 15 - TopView - SEND MESSAGE - "HANDLE" - RETURN OBJECT HANDLE
AH = 12h
BH = 00h
BL = which handle to return
00h handle in DWORD on top of stack
01h current task's window handle
02h given task's mailbox handle (task's handle on stack)
03h current task's mailbox handle
04h given task's keyboard handle (task's handle on stack)
05h current task's keyboard object handle
06h given task's OBJECTQ handle (task's handle on stack)
07h current task's OBJECTQ handle
08h \
thru > return 0000:0000 under DV < 2.26
10h /
0Ch (2.26+) task owning object with handle in DWORD on top of stack
0Dh (2.26+) task handle of owner (parent) of current task
Return: DWORD on top of stack is object handle
Note: BL=0Ch,0Dh returns 00000000h if the object is not open (keyboard,
mailbox, panel, pointer, and timer objects) or is an orphan (task,
window)
SeeAlso: AH=12h/BH=02h,AH=12h/BH=80h
--------Q-1512--BH01-------------------------
INT 15 - TopView - SEND MESSAGE - "NEW" - CREATE NEW OBJECT
AH = 12h
BH = 01h
BL = object type to create (see #0361)
STACK: (only if window object or WINDOW class)
DWORD address to jump to (no new task if high word == 0)
DWORD (reserved) 0 = non-task window, FFFFh = task window
DWORD bytes for task's private stack (FFFFh == default of 0100h)
DWORD bytes system memory for input buffer for READ/READN
(0 == none, -1 == default--same as logical window size)
DWORD window size, columns
DWORD window size, rows
DWORD length of window title
DWORD address of window title
Return: DWORD on top of stack is new object handle
Notes: if a new task is created, it is started with
AX = BX = SI = DI = BP = 0
DX:CX = handle of parent task
DS = ES = SS = segment of private stack (and new task's handle)
new windows are orphans, inherit the colors/hidden status of the
creating task's window, and are placed in the upper left hand corner
of the screen but not automatically redrawn
new keyboards are closed, and have all object bits cleared except for
the hardware cursor bit
SeeAlso: AH=12h/BH=02h,AH=12h/BH=81h
(Table 0361)
Values for TopView/DESQview object type (for creation):
00h (DV 2.0x only) handle is DWORD on top of stack
01h (DV 2.0x only) use task's window handle
02h (DV 2.0x only) given task's mailbox (task's handle on stack)
03h (DV 2.0x only) current task's mailbox
04h (DV 2.0x only) given task's keyboard (task's handle on stack)
05h (DV 2.0x only) current task's keyboard object
08h WINDOW class
09h MAILBOX class
0Ah KEYBOARD class
0Bh TIMER object (counts down 32-bit time in 10ms increments)
0Fh POINTER object
10h PANEL object
--------Q-1512--BH02-------------------------
INT 15 - TopView - SEND MESSAGE - "FREE" - FREE AN OBJECT
AH = 12h
BH = 02h
BL = object
00h handle in DWORD on top of stack
window: close window and free
timer: free timer
panel: free panel object
pointer: free pointer
01h task's window handle - kills task, never returns
02h given task's mailbox (task's handle on top of stack)
03h current task's mailbox
04h given task's keyboard (task's handle on top of stack)
05h current task's keyboard object
Return: STACK popped if handle passed on stack
Notes: when a window is freed, its keyboard and pointer objects are freed;
task windows also free any mailbox, objectq, and panel objects held
by the task and any child tasks
if the keyboard being freed is the default keyboard for a task, this
call is equivalent to CLOSE
panel and pointer objects are automatically closed if open
SeeAlso: AH=12h/BH=01h,AH=12h/BH=0Dh,AH=12h/BH=82h
--------Q-1512--BH03-------------------------
INT 15 - TopView - SEND MESSAGE - "ADDR" - GET HANDLE OF MESSAGE SENDER
AH = 12h
BH = 03h
BL = object
00h mailbox handle in DWORD on top of stack
02h sender of last msg read from mailbox (task's handle on stack)
03h sender of last msg read from current task's mailbox
Return: DWORD on stack is task handle of message sender
SeeAlso: AH=12h/BH=00h,AH=12h/BH=83h
--------Q-1512--BH03-------------------------
INT 15 - DESQview v2.26+ - "CONNECT" - CONNECT TWO WINDOWS
AH = 12h
BH = 03h
BL = window to be connected
00h handle of window to be attached in DWORD on top of stack
01h attach current task's main window
STACK: DWORD handle of window to attach to or 00000000h to detach
Return: STACK popped
Notes: when two windows are connected, both will move if the user moves either
multiple windows may be attached to a single window, but each window
may only be attached to one window at a time
SeeAlso: AH=12h/BH=83h
--------Q-1512--BX0300-----------------------
INT 15 - TopView - SEND MESSAGE - "DIR" - GET PANEL FILE DIRECTORY
AH = 12h
BX = 0300h
STACK: DWORD handle of panel object (see #0362)
Return: STACK: DWORD length of directory (always multiple of 14 bytes)
DWORD address of directory
Note: a null string is returned if the object is not open
SeeAlso: AH=12h/BX=0400h"APPLY",AH=12h/BH=83h
Format of TopView panel file:
Offset Size Description (Table 0362)
00h 2 BYTEs C0h C3h
02h BYTE number of panels in file
03h for each panel in file:
8 BYTEs blank-padded panel name
DWORD panel offset in file
WORD panel length
data for panels (each consists of one or more window/query/manager
streams); first byte of each panel must be 1Bh, fifth byte must be
E5h
--------Q-1512--BH04-------------------------
INT 15 - TopView - SEND MESSAGE - "READ" - READ NEXT LOGICAL LINE OF WINDOW
AH = 12h
BH = 04h
BL = window to read from
00h handle is DWORD on top of stack
01h use calling task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent task of current task
Return: STACK: DWORD number of bytes read
DWORD address of buffer
Notes: reading starts at the current logical cursor position; the cursor is
updated to point at the character following the last one read
any translucent blanks (FFh) which are visible on screen are changed
to the character which is seen through them
the string produced by the read is placed in an input buffer which may
be reused by the next READ or READN of a window
window stream opcodes D8h and D9h determine whether the read returns
characters or attributes
SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=12h,AH=12h/BH=84h
--------Q-1512--BH04-------------------------
INT 15 - TopView - SEND MESSAGE - "READ" - GET NEXT RECORD FROM OBJECT
AH = 12h
BH = 04h
BL = object
00h handle is DWORD on top of stack
mailbox: wait for and get next message
keyboard: wait for and get pointer to next input buffer
pointer: wait for and get next message
02h get next message from mailbox (task's handle on top of stack)
03h get next message from current task's mailbox
04h get the next input from keyboard (handle on top of stack)
05h get the next input from task's default keyboard
06h wait for input from any object in OBJECTQ (handle on stack)
07h wait for input from any object in task's default OBJECTQ
Return: STACK: (if objectq) DWORD handle of object with input
(otherwise) DWORD number of bytes
DWORD address of pointer message (see #0363)
Notes: for a keyboard in keystroke mode, the input buffer is a single byte
containing the character code as returned by the BIOS; the BIOS scan
code is available via the STATUS call if the character is zero
for a keyboard in field mode, the input buffer format is determined
by the field table header for the window the keyboard is attached to
keyboard input buffers and mailbox message buffers may be invalidated
by the next READ, ERASE, CLOSE, or FREE message to the same object
SeeAlso: AH=12h/BH=05h"OBJECT",AH=12h/BH=84h
Format of DESQview pointer message:
Offset Size Description (Table 0363)
00h WORD row
02h WORD column
04h BYTE status (see #0364)
05h BYTE field number or zero (APILEVEL >= 2.00 only)
Bitfields for DESQview pointer status:
Bit(s) Description (Table 0364)
7-2 number of clicks-1 if multiple-click mode active
7 set when press/release mode active and button pressed
6 set when press/release mode active and button released
1-0 button pressed (00=none,01=button1,10=button2)
SeeAlso: #0363
--------Q-1512--BX0400-----------------------
INT 15 - TopView - SEND MESSAGE - "READ" - WAIT FOR TIMER TO EXPIRE
AH = 12h
BX = 0400h
STACK: DWORD timer's handle
Return: after timer expires
STACK: DWORD time in 1/100 sec after midnight when timer expired
SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=84h
--------Q-1512--BX0400-----------------------
INT 15 - TopView - SEND MESSAGE - "APPLY" - WRITE PANEL TO WINDOW
AH = 12h
BX = 0400h
STACK: DWORD handle of panel object
DWORD window's handle (or 0 for current task's window)
DWORD length of panel name
DWORD pointer to panel name
Return: STACK: DWORD handle of window which was used
DWORD handle of keyboard or 0
Notes: status of APPLY may be checked with STATUS message
panel MUST have the following format
first byte must be 1Bh (i.e. must start with a stream)
first opcode in stream must be E5h
single byte arg of opcode is interpreted thus:
bits 7,6 11 means create new window
10 means create new field table for existing window
01 means use existing window and field table
bit 5 if set, panel contains a field table
(creates a new keyboard and puts it in field mode)
bit 4 if set, panel contains input fields
bit 3 if set, panel contains select fields but no input fields
if the panel contains input or select fields, a keyboard handle is
returned; either the window's current open keyboard or a
newly-created keyboard object. The caller should read that keyboard
to obtain input from the panel.
SeeAlso: AH=12h/BH=84h
--------Q-1512--BH05------------------------
INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE TO OBJECT
AH = 12h
BH = 05h
BL = object
00h handle is DWORD on top of stack
timer: start timer to end at a specified time
keyboard: add input buffer to queue
pointer: move pointer icon to specified position
02h send message by value/status=0 to mbox (task's handle on stack)
03h send message by value/status=0 to current task's mailbox
04h add input buffer to KEYBOARD queue (handle on top of stack)
05h add input buffer to task's default KEYBOARD queue
06h add an object to OBJECTQ (handle on top of stack)
07h add an object to task's default OBJECTQ
STACK: (if mailbox) DWORD length
DWORD address
(if keyboard) DWORD status (scan code in keystroke mode)
DWORD length (should be 1 in keystroke mode)
DWORD address
(if objectq) DWORD handle of object to add
(if timer) DWORD 1/100ths seconds since midnight (actually
only accurate to 1/18 sec)
(if pointer) DWORD column relative to origin of window
DWORD row relative to origin of window
Return: STACK popped
Notes: under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
the data and status written to a keyboard object must match the format
returned by the keyboard object in the current mode
the pointer position is scaled according to the current scaling factors
SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
--------Q-1512--BH05-------------------------
INT 15 - TopView - SEND MESSAGE - "WRITE" - WRITE STRING TO WINDOW
AH = 12h
BH = 05h
BL = window to write to
00h DWORD on top of stack is window handle
01h write string to task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD object handle if handle passed on stack
DWORD total length of string (high word == 0)
DWORD address of string to display (see #0365)
Return: indicated actions performed
a. non-control characters are displayed (opcodes DEh and DFh control
whether the attributes are left or changed to the current attrib)
b. CR/LF/BS/Tab cause the usual cursor movement
c. ESC starts a data structure with additional commands if following
byte is less than 20h; otherwise, it is written to the window
STACK: DWORD handle of new window if window stream opcode E6h
else nothing (arguments have been popped)
SeeAlso: AH=12h/BH=04h,AH=12h/BH=85h
Format of stream data structure:
Offset Size Description (Table 0365)
00h BYTE 1Bh magic value identifying start of stream
01h BYTE stream type (00h, 01h, 10h, 14h-1Fh legal)
(see #0366,#0372,#0373,#0374)
02h WORD length of remainder of stream in bytes
var-length fields follow, each an OPCODE followed by
zero or more args
(Table 0366)
Values for MODE 00h (set or display values) "WINDOW STREAM" opcodes:
Opcodes:args
00h display 20h blanks with the default attribute
01h-1Fh display OPCODE blanks with the default attribute
20h display char with default attribute 20h times
BYTE char to repeat
21h-3Fh display char with default attribute OPCODE-20h times
BYTE char to repeat
40h display 20h blanks with specified attribute
BYTE attribute of blanks
41h-5Fh display OPCODE-40h blanks with specified attribute
BYTE attribute of blanks
60h display next 20h characters
20h BYTEs characters to display
61h-7Fh display next OPCODE-60h characters
N BYTEs characters to display
80h-87h display N blanks with default attribute
BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
[000h means 800h]
88h-8Fh display N copies of the character
BYTE low 8 bits of 11-bit count (high 3 in low 3 bits of OPCODE)
[000h means 800h]
BYTE character to repeat
90h-97h display N blanks with specified attribute
BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
[000h means 800h]
BYTE attribute
98h-9Fh display string at logical cursor pos
BYTE low 8 bits of 11-bit length (high 3 in low 3 bits of OPCODE)
[000h means 800h]
N BYTEs string to display
A0h set logical cursor row
BYTE row number (0 is top)
A1h set logical cursor column
BYTE column number (0 is leftmost)
A2h set top edge of scrolling region
BYTE row
A3h set left edge of scrolling region
BYTE column
A4h set row of physical window position
BYTE line
A5h set column of physical window position
BYTE column
A6h set height of physical window
BYTE number of rows
A7h set width of physical window
BYTE number of columns
A8h set viewport row
BYTE row
A9h set viewport column
BYTE column
AAh set virtual screen height [contents of window unpredictable after]
BYTE rows
ABh set virtual screen width [contents of window unpredictable after]
BYTE columns
ACh-AEh unused
AFh set compatible/preferred video modes
BYTE compatibility/preference mask
bit 7 compatible with monochrome
bit 6 compatible with color text, EGA/VGA graphics
bit 5 compatible with medium-resolution CGA graphics
bit 4 compatible with high-resolution CGA graphics
bit 3 prefer monochrome
bit 2 prefer color text, EGA/VGA graphics
bit 1 prefer medium-resolution CGA graphics
bit 0 prefer high-resolution CGA graphics
B0h move logical cursor down
BYTE number of rows (signed, negative values move up)
[if rows=0 and hardware cursor owner, update hardware cursor]
B1h move logical cursor right
BYTE number of columns (signed, negative values move left)
[if cols=0 and hardware cursor owner, update hardware cursor]
B2h shift top edge of scrolling region
BYTE number of rows (signed)
B3h shift left edge of scrolling region
BYTE number of columns (signed)
B4h shift physical window down
BYTE number of lines (signed)
B5h shift physical window right
BYTE number of columns (signed)
B6h expand physical window vertically
BYTE number of lines (signed)
B7h expand physical window horizontally
BYTE number of columns (signed)
B8h adjust viewport row
BYTE number of rows (signed)
B9h adjust viewport column
BYTE number of columns (signed)
BAh adjust virtual screen height [contents of window unpredict after]
BYTE number of rows to increase (signed)
BBh adjust virtual screen width [contents of window unpredictbl after]
BYTE number of columns to increase (signed)
BCh-BFh reserved (currently unused)
C0h set logical cursor position
BYTE row number (0 is top border)
BYTE column number (0 is left border)
C1h set top left corner of scrolling region
BYTE row
BYTE column
C2h set physical window pos
BYTE upper left row (no top border if 0)
BYTE upper left column (no left border if 0)
C3h set current window size
BYTE number of rows
BYTE number of columns
C4h set upper left corner of viewport (portion of virtual screen displayed
in window)
BYTE row
BYTE column
C5h set size of virtual screen [contents unpredictable afterwards]
BYTE number of rows
BYTE number of columns
C6h unused
C7h unused
C8h set logical cursor relative to current position
BYTE number of rows to move down (signed)
BYTE number of columns to move right (signed)
[if rows=cols=0 and hardware cursor owner, update hardw cursor]
C9h shift top left corner of scrolling region
BYTE number of rows (signed)
BYTE number of columns (signed)
CAh set window pos relative to current position
BYTE number of rows to shift down (signed)
BYTE number of columns to shift right (signed)
CBh set window size relative to current size
BYTE number of rows to expand (signed)
BYTE number of cols to expand (signed)
CCh shift viewport relative to current position
BYTE rows to shift (signed)
BYTE cols to shift (signed)
CDh resize virtual screen
BYTE number of rows to expand (signed)
BYTE number of columns to expand (signed)
CEh scroll text when using E8h-EBh/F8h-FBh opcodes (default)
CFh scroll attributes when using E8h-EBh/F8h-FBh opcodes
D0h allow window frame to extend beyond screen
D1h always display a complete frame, even if window extends beyond edge of
screen
D2h allow DV to change logical colors on video mode switch (default)
D3h application changes logical attributes
D4h window is visible [must redraw to actually make visible]
D5h window is hidden [must redraw to actually remove]
D6h window has frame (default)
D7h window unframed [must redraw to actually remove frame]
D8h READ/READN will read characters from window (default)
D9h READ/READN will read attributes from window
DAh use logical attributes, which may be remapped (see #0367)
DBh use physical attributes for characters
DCh enable special actions for control characters (default)
DDh disable special control char handling, all chars displayable by BIOS TTY
call
DEh write both character and attribute (default)
DFh write character only, leave attribute untouched
E0h repeat following commands through E1h opcode
BYTE number of times to repeat (00h means 256 times)
E1h end of commands to repeat, start repeating them
E2h set current output color
BYTE color
E3h clear virtual screen from scroll origin to end using current color
E4h redraw window
E5h select menu style
BYTE style (normally 18h)
bits 5,4 = 01 use two-letter menu entries for remainder of
this stream
E5h (panel file only)
BYTE modifier
bits 7,6 = 11 panel stream creates new window
= 10 panel defines new field table for existing window
= 01 panel stream uses existing window & field table
bit 5 = 1 stream contains a field table (create kyboard object)
bit 4 = 1 stream defines input fields (create keyboard object)
bit 3 = 1 stream defines select fields but not input fields
bit 2 = 1 stream defines exclusive input window (DV 2.2)
bit 1 reserved
bit 0 reserved
E6h create new window and perform rest of manipulations in new window
BYTE number of rows
BYTE number of columns
Return: DWORD object handle of new window returned on stack at end
Note: the window is created with a physical size of 0x0 at the
same position as the window to which this stream was sent
E7h no operation
E8h scroll area up (top left corner defined by opcode C1h)
BYTE height
BYTE width
E9h scroll area down (top left corner defined by opcode C1h)
BYTE height
BYTE width
EAh scroll area left (top left corner defined by opcode C1h)
BYTE height
BYTE width
EBh scroll area right (top left corner defined by opcode C1h)
BYTE height
BYTE width
ECh set logical attributes for window contents
BYTE video modes command applies to
bit 7 monochrome
bit 6 color text, EGA/VGA graphics
bit 5 medium-resolution CGA graphics
bit 4 high-resolution CGA graphics
BYTE which attributes to set
bit 7 if set, copy single following byte to indicated attribs
bits 4-6 number of first attribute to change - 1
bits 0-3 number of consecutive attributes to change
N BYTEs new attributes
EDh set logical attributes for window frame
BYTE video modes command applies to (also see opcode ECh)
BYTE which attributes to set
bit 7 if set, copy single following byte to indicated attrs
bits 4-6 number of first attribute to change - 1
bits 0-3 number of consecutive attributes to change
N BYTEs new attributes
attributes
1 = top left corner
2 = top right corner
3 = bottom left corner
4 = bottom right corner
5 = top edge
6 = bottom edge
7 = left edge
8 = right edge
EEh set characters for window frame
BYTE video modes command applies to (also see opcode ECh)
BYTE which characters to set
bit 7 if set, copy single following byte to indicated chars
bits 4-6 number of first character to change - 1
bits 0-3 number of consecutive characters to change
N BYTEs new chars (same relative position as attributes above)
EFh set window name
BYTE length of name (should be in range 0 to logical screen width)
N BYTEs name
F0h clear input field to blanks
BYTE field number
F1h fill input field with character
BYTE field number
BYTE char
F2h set color of input field
BYTE field number (1-N)
BYTE attribute
F3h set initial contents of input field
BYTE field number (1-N)
N BYTEs enough chars to exactly fill field as defined by op FFh
F4h position cursor to start of specific input field
BYTE field number (1-N)
F5h change field table entry
BYTE field number
7-8 BYTEs field table entry (also see opcode FFh below)
F6h set field type
BYTE field number
BYTE type
00h inactive
40h output field
80h input field
C0h deselected field
C2h selected field
F7h "broadcast write" write data to fields with program output bit set in
the field table entry, in field number order
N BYTEs (total length of all program output fields)
F8h scroll field up a line
BYTE field number
F9h scroll field down a line
BYTE field number
FAh scroll field left
BYTE field number
FBh scroll field right
BYTE field number
FCh set field table header
6 BYTEs field table header (see #0368)
FDh reset modified bit for all fields
FEh reset selected and modified bits for all fields
FFh set up input fields
6 BYTEs table header (see #0368)
7/8N BYTEs the field table entries, one for each field (see #0370)
Note: DESQview uses and updates the actual copy of the information
which is contained in the stream. Thus this info must remain
intact until after the data entry is complete.
SeeAlso: #0365,#0372
(Table 0367)
Values for TopView logical attributes:
01h normal text
02h highlighted normal text
03h help text
04h highlighted help text
05h error message
06h highlighted error message
07h emphasized text
08h marked text
9-16 reverse video versions of 1-8
SeeAlso: #0366
Format of TopView field table header:
Offset Size Description (Table 0368)
00h BYTE number of fields (must be <= existing number of fields)
01h BYTE screen behavior bits (see #0369)
02h BYTE current input field (updated by DESQview)
03h BYTE current select field (updated by DESQview)
04h BYTE attribute for select fields when they are pointed at
05h BYTE attribute for select fields which have been selected
SeeAlso: #0366,#0370
Bitfields for TopView screen behavior bits:
Bit(s) Description (Table 0369)
7 reserved
6 menu items may be selected via keyboard
5 left mouse button in "status" mode (press anywhere in window
immediately returns control to application)
4 right mouse button in "status" mode
3 select fields return contents or blanks rather than 'Y' or 'N'
2 modified bits reset on return to application
1-0 type of data returned
00 no data returned on read of keyboard
01 data returned as array of characters containing all fields packed
together, with no field numbers
10 data returned as numbered variable-length records for all fields
11 data returned as numbered variable-length records for the fields
which were modified
SeeAlso: #0366
Format of TopView field table entry:
Offset Size Description (Table 0370)
00h BYTE start row \
01h BYTE start column \ if menu selection and start is to
02h BYTE end row / right or below end, select from kbd only
03h BYTE end column /
04h BYTE field type (see #0371)
05h BYTE modifier
if type is fill-in, then bit flags to determine behavior
bit 7 automatically enter CR when field full
bit 6 move to next field when current field is full
bit 5 enter text from right end (for numbers)
bit 4 force input to uppercase
bit 3 clear old contents on first keystroke
bit 2 input returned when cursor moves out of
modified field ("validate", API level 2.02+)
bit 1 reserved
bit 0 reserved
if select field, first key to press to activate
00h if have to point-&-click or is an extended-ASCII
keystroke (only if two-key menus enabled)
06h BYTE (select field only) normal color of field
07h BYTE second key for select field. This byte is present iff
two-letter menu entries selected with opcode E5h, and in that
case is present regardless of field type
SeeAlso: #0368
Bitfields for TopView field type:
Bit(s) Description (Table 0371)
7,6 field class
00 inactive (non-entry) field
01 echos keystrokes input to make menu selection
10 fill-in field
11 select field
5 field can be filled by broadcast write (F7h opcode)
4 reserved
3 reserved
2 reserved
1 set if field selected
0 set if field modified
SeeAlso: #0370
(Table 0372)
Values for MODE 01h "QUERY STREAM" opcodes:
(valid only for those opcodes listed here)
A0h return logical cursor row in next byte
A1h return logical cursor column in next byte
A2h return top row of scrolling region in next byte
A3h return left column of scrolling region in next byte
A4h return row of physical window origin in next byte
A5h return column of physical window origin in next byte
A6h return height of physcial window in next byte
A7h return width of physical window in next byte
A8h return row of viewport origin in next byte
A9h return column of viewport origin in next byte
AAh return height of virtual screen in next byte
ABh return width of virtual screen in next byte
AFh return current video mode in next byte
C0h return current logical cursor position in next two bytes
C1h return top left corner of scrolling region in next two bytes
C2h return current window position in next two bytes
C3h return current window size in next two bytes
C4h return current viewport origin in next two bytes
C5h return current virtual screen size in next two bytes
D0h \ overwritten with D0h if frames may fall off screen edge
D1h / D1h if frames always displayed entirely
D2h \ overwritten with D2h if DESQview controls color palette
D3h / D3h if application changes color palette
D4h \ overwritten with D4h if window visible
D5h / D5h if window hidden
D6h \ overwritten with D6h if window has frame
D7h / D7h if window unframed
D8h \ overwritten with D8h if reading characters from window
D9h / D9h if reading attributes from window
DAh \ overwritten with DAh if using logical attributes
DBh / DBh if using physical attributes
DCh \ overwritten with DCh if TTY control char interpretation on
DDh / DDh if TTY control char interpretation off
DEh \ overwritten with DEh if writing both characters and attributes
DFh / DFh if leaving attributes untouched
E2h return current color in next byte
ECh get logical attributes for window contents
BYTE execute call if currently in specified video mode
bit 7 monochrome
bit 6 color text, EGA/VGA graphics
bit 5 medium-resolution CGA graphics
bit 4 high-resolution CGA graphics
BYTE which attributes to get
bit 7 unused???
bits 4-6 first attribute to get - 1
bits 0-3 number of consecutive attributes
N BYTEs buffer to hold attributes
EDh get logical attributes for window frame
BYTE execute call if currently in video mode (also see opcode ECh)
BYTE which attributes to get
bit 7 unused???
bits 4-6 first attribute to get - 1
bits 0-3 number of consecutive attributes
N BYTEs buffer to hold attributes
EEh get characters for window frame
BYTE execute call if currently in video mode (also see opcode ECh)
BYTE which attributes to get
bit 7 unused???
bits 4-6 first char to get - 1
bits 0-3 number of consecutive chars
N BYTEs buffer to hold chars
EFh return first N characters of current window name
BYTE max length of returned name
N BYTEs buffer to hold window name
F3h return contents of specified field
BYTE field number
N BYTEs buffer to hold field contents (size equal to field size)
F5h get field table entry
BYTE field number
7-8 BYTEs buffer to hold field table entry (see #0370)
Notes: DV < 2.26 always returns 7 bytes
DV 2.26+ w/ APILEVEL < 2.26 returns 8 bytes iff field table
is using 8-byte entries and eighth byte after F5h is E7h
(NOP); otherwise, 7 bytes are returned
DV 2.26+ w/ APILEVEL > 2.26 returns 7 or 8 bytes depending
on the field table entry size
F6h get type of a field
BYTE field number
BYTE type
FCh get field table header
6 BYTEs buffer to store field table header (see #0368)
SeeAlso: #0365,#0373
(Table 0373)
Values for MODE 10h "MANAGER STREAM" opcodes (valid only for those listed):
00h allow window to be moved horizontally
01h allow window to be moved vertically
02h allow window to change width
03h allow window to change height
04h allow window to be scrolled horizontally
05h allow window to be scrolled vertically
06h allow "Close Window" menu selection for application
07h allow "Hide Window" menu selection for application
08h allow application to be suspended ("Rearrange/Freeze")
0Eh allow "Scissors" menu
10h allow DESQview main menu to be popped up
11h allow "Switch Windows" menu
12h allow "Open Window" menu
13h allow "Quit" menu selection
20h-33h opposite of 00h-13h, disallow specified action
40h notify if horizontal position of window changes
41h notify if vertical position of window changes
42h notify if width of window changes
43h notify if height of window changes
44h notify if window scrolled horizontally
45h notify if window scrolled vertically
46h notify if window is closed--program has to clean up and exit itself
47h notify if window is hidden
48h notify if "?" on main menu selected
49h notify if pointer message sent to window
4Ah notify if window is placed in foreground
4Bh notify if window is placed in background
4Ch notify if video mode changes
4Dh notify if "Scissors" menu "Cut" option selected
4Eh notify if "Scissors" menu "Copy" option selected
4Fh notify if "Scissors" menu "Paste" option selected
50h notify if DESQview main menu about to pop up
51h notify if DESQview main menu popped down
60h-71h opposite of 40h-51h: don't notify on specified event
84h attach window to parent task's window (both move together)
85h detach window from parent task's window (may move independently)
86h disable background operation for application
87h enable running in background
88h set minimum size of physical window
BYTE rows
BYTE columns
89h set maximum size of physical window
BYTE rows
BYTE cols
8Ah set primary asynchronous notification routine (see #0375)
DWORD address of routine, 0000h:0000h means none (see also below)
8Bh set async notification parameter
DWORD 32-bit value passed to 8Ah async routine in DS:SI
ACh (DV2.2+) perform regular select field attribute processing
ADh (DV2.2+) protect attributes in selected field from being lost
AEh make window default notify window for owning app (API level 2.00+)
AFh set selected field marker character
BYTE character to display at left edge of selected fields
BCh set standard field processing mode
BDh set alternate field processing mode (enables cursor pad for menus)
BEh disables changing reverse logical attributes with ECh opcode
BFh enables changing reverse logical attributes with ECh opcode
C0h make current window topmost in system
C1h force current process into foreground
C2h make current window topmost in process
C3h position mouse pointer relative to origin of current field
BYTE rows below upper left corner of field
BYTE columns to right of upper left corner of field
C4h position mouse pointer relative to origin of given field
BYTE field number
BYTE rows below upper left corner of field
BYTE columns to right of upper left corner of field
C5h orphan current window (also hides it)
Note: must be last in stream; all subsequent commands ignored
C6h show all windows for this process
C7h hide all windows for this process
C8h suspend process and hide all its windows
C9h force current process into background
CAh make current window bottom-most in process
CBh cancel current window manager operation, remove DV menu, give control
to topmost application
CCh orphan window and give it to the system for use as paste data
CEh reorder windows
DWORD pointer to null-terminated list of words; each word is segment
of object handle for a window
FFh no operation
SeeAlso: #0365,#0372,#0374
(Table 0374)
Values for MODES 14h to 1Fh "USER STREAMS":
normally NOPs, but may be defined by SETESC message to invoke FAR
routines, one for each mode number
on entry to handler,
DS:SI -> first byte of actual stream (not header)
CX = number of bytes in stream
ES:DI = window's handle
SeeAlso: #0372,#0373
(Table 0375)
Values asynchronous notification routine defined by man.stream 8Ah called with:
ES:DI = handle of window
DS:SI is 32-bit value set by 8Bh manager stream opcode
mailbox contains message indicating event
Opcode
40h horizontal movement
DWORD object handle of window
BYTE new row
BYTE new col
41h vertical movement
DWORD object handle of window
BYTE new row
BYTE new col
42h horizontal size change
DWORD object handle of window
BYTE new rows
BYTE new cols
43h vertical size change
DWORD object handle of window
BYTE new rows
BYTE new cols
44h scrolled horizontally
DWORD object handle of window
BYTE mouse row within window
BYTE mouse column within window
BYTE field mouse is on, 0 if none
BYTE amount moved: >0 right, <0 left, 0 done
45h scrolled vertically
DWORD object hande of window
BYTE mouse row within window
BYTE mouse column within window
BYTE field mouse is on, 0 if none
BYTE amount moved: >0 down, <0 up, 0 done
46h window close request
DWORD object handle of window
BYTE mouse pointer row
BYTE mouse pointer column
BYTE field mouse is on, 0 if none
47h application's windows hidden
48h Help for Program selected
DWORD object handle of window
BYTE mouse pointer row
BYTE mouse pointer column
BYTE field mouse is on, 0 if none
49h pointer message sent to window
DWORD pointer handle which received message
4Ah switched to window from another ("raise")
4Bh switched away from the window ("lower")
4Ch video mode changed
BYTE new BIOS video mode
4Dh Scissors/cUt selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window created with
copy of data from specified region
BYTE height of region
BYTE width of region
4Eh Scissors/Copy selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window created with
copy of data from specified region
BYTE height of region
BYTE width of region
4Fh Scissors/Paste selected
DWORD object handle of window
BYTE row of upper left corner
BYTE column of upper left corner
BYTE field number ul corner is in, 0=none
DWORD handle of orphaned window with data
BYTE height of region
BYTE width of region
Note: orphaned data window should be adopted or freed
when done
50h main menu about to pop up
51h main menu popped down
Return: all registers unchanged
--------Q-1512--BH06-------------------------
INT 15 - DESQview 2.20+ - SEND MESSAGE - "SETPRI" - SET PRIORITY WITHIN OBJECTQ
AH = 12h
BH = 06h
BL = object
00h object handle in DWORD on top of stack
mailbox, keyboard, pointer, or timer
(DV 2.50+) window
01h (DV 2.50+) current task's window
04h given task's keyboard (task's handle on top of stack)
05h current task's default keyboard
STACK: DWORD new priority of object in task's OBJECTQ
(new priority of task if window handle)
Return: STACK popped
Notes: initially all objects have the same default value. Should only make
relative adjustments to this default value.
when changing priorities, all objects already on the objectq are
reordered
for window handles, only the non-blocked task(s) with the highest
priority receive CPU time under DESQview 2.50-2.52; the default
priority is 0Ah
SeeAlso: AH=12h/BH=07h,AH=12h/BH=87h
--------Q-1512--BH07-------------------------
INT 15 - DESQview 2.20+ - SEND MESSAGE - "GETPRI" - GET PRIORITY WITHIN OBJECTQ
AH = 12h
BH = 07h
BL = object
00h object handle in DWORD on top of stack
mailbox, keyboard, pointer, or timer
(DV 2.50+) window
01h (DV 2.50+) current task's window
04h given task's keyboard (task's handle on top of stack)
05h current task's default keyboard
Return: STACK: DWORD object priority
Note: initially all objects have the same default value. Should only make
relative adjustments to this default value.
SeeAlso: AH=12h/BH=06h
--------Q-1512--BH08-------------------------
INT 15 - TopView - SEND MESSAGE - "SIZEOF" - GET OBJECT SIZE
AH = 12h
BH = 08h
BL = object
00h handle in DWORD on top of stack
window: total character positions in window
timer: elapsed time since timer started
pointer: number of messages queued to pointer object
panel: number of panels in panel file
keyboard: number of input buffers queued
01h total chars in current task's default window
02h number of messages in task's mailbox (task's handle on stack)
03h number of messages in current task's mailbox
04h number of input buffers queued in task's kbd (handle on stack)
05h number of input buffers queued for current task's default kbd
06h number of objects queued in OBJECTQ (task's handle on stack)
07h number of objects queued in current task's OBJECTQ
0Ch (DV 2.26+) total chars in window owning handle on top of stack
0Dh (DV 2.26+) total chars in parent task's window
Return: DWORD on top of stack is result (any handle on stack has been popped)
Note: for panel objects, a count of zero is returned if no panel file is open
for the object
SeeAlso: AH=12h/BH=04h,AH=12h/BH=09h
--------Q-1512--BH09-------------------------
INT 15 - TopView - SEND MESSAGE - "LEN" - GET OBJECT LENGTH
AH = 12h
BH = 09h
BL = object
00h handle in DWORD on top of stack
window: get chars/line
timer: get 1/100 seconds remaining before timer expires
mailbox: (DV/X) get number of bytes queued to mailbox
01h get number of chars/line in current task's default window
0Ch (DV 2.26+) get chars/line in window owning handle on top of stk
0Dh (DV 2.26+) get chars/line in parent task's window
Return: DWORD on top of stack is length (any handle on stack has been popped)
SeeAlso: AH=12h/BH=08h
--------Q-1512--BH0A-------------------------
INT 15 - TopView - SEND MESSAGE - "ADDTO" - WRITE CHARS AND ATTRIBS TO WINDOW
AH = 12h
BH = 0Ah
BL = window to write to
00h window handle is DWORD on top of stack
01h current task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD count of attributes
DWORD address of attribute string
DWORD count of characters
DWORD address of character string
Return: STACK popped
Notes: if one string is longer than the other, the shorter one will be reused
until the longer one is exhausted
the cursor is left just after the last character written
SeeAlso: AH=12h/BH=0Bh"WINDOW"
--------Q-1512--BH0A-------------------------
INT 15 - TopView - SEND MESSAGE - "ADDTO" - SEND MAILBOX MESSAGE/STAT BY VALUE
AH = 12h
BH = 0Ah
BL = mailbox to write to
00h handle is DWORD on top of stack
02h default mailbox of task whose handle is on top of stack
03h current task's default mailbox
STACK: DWORD status (low byte)
DWORD length of message
DWORD address of message
Return: STACK popped
Notes: the message is copied into either system or common memory
insufficient memory normally causes the process to be aborted; under
DESQview 2.2+, failed writes may return CF set instead (see AX=DE15h)
SeeAlso: AH=12h/BH=0Bh"MAILBOX"
--------Q-1512--BH0A-------------------------
INT 15 - TopView - SEND MESSAGE - "ADDTO" - SET OBJECT BITS
AH = 12h
BH = 0Ah
BL = object
00h handle is DWORD on top of stack
timer: start timer for specified interval
pointer: set control flags (see #0377)
keyboard: set control flags (see #0376)
04h set control flags on KEYBOARD object (handle on top of stack)
05h set control flags on task's default KEYBOARD object
STACK: (if timer) DWORD duration in 1/100 seconds
(otherwise) DWORD bits to set
Return: STACK popped
SeeAlso: AH=12h/BH=0Bh"OBJECT"
Bitfields for DESQview keyboard object bits:
Bit(s) Description (Table 0376)
15 reserved, can't be set
14 unused
13 reserved, can't be set
12-6 unused
5 (DV 2.2+) exclusive input
4 filter all keys (used with handler established by SETESC)
if 0, only keys that would normally be displayed are filtered
3 program continues executing while input in progress
2 insert mode active for field mode
1 hardware cursor displayed when task is hardware cursor owner
must be set if keyboard in field mode and field table includes input
fields
0 keyboard is in field mode rather than keystroke mode
Bitfields for DESQview pointer object bits:
Bit(s) Description (Table 0377)
15 reserved, can't be set
14-8 unused
7 mouse pointer is hidden while in window
6 get messages even if window not topmost
5 get messages even if window not foreground
4 multiple clicks separated by less than 1/3 second are counted and
returned in a single message
3 pointer position is relative to screen origin, not window origin
2 send message on button release as well as button press
1 (DV 2.23+) send message with row=FFFFh and col=FFFFh whenever the
pointer leaves the window
0 send message only on button activity, not movement
DV-specific, and INT 15/AX=DE0Fh must have been called first
--------Q-1512--BH0B-------------------------
INT 15 - TopView - SEND MESSAGE - "SUBFROM" - WRITE ATTRIBUTES TO WINDOW
AH = 12h
BH = 0Bh
BL = window to write attributes to
00h handle is DWORD on top of stack
01h current task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD number of attributes to write
DWORD address of attributes
Return: STACK popped
Note: the attributes are written starting at the current cursor position; the
cursor is left just after the last position written
SeeAlso: AH=12h/BH=0Ah"WINDOW"
--------Q-1512--BH0B-------------------------
INT 15 - TopView - SEND MESSAGE - "SUBFROM" - SEND MAILBOX MESSAGE/STAT BY REF
AH = 12h
BH = 0Bh
BL = mailbox to write to
00h handle is DWORD on top of stack
02h default mailbox of task whose handle is on top of stack
03h current task's default mailbox
STACK: DWORD status (low byte)
DWORD length of message
DWORD address of message
Return: STACK popped
Notes: only a pointer to the message is stored, but the write may still fail
due to insufficient memory
under DV 2.2+, failed mailbox writes may return CF set (see AX=DE15h)
SeeAlso: AH=12h/BH=0Ah"MAILBOX"
--------Q-1512--BH0B-------------------------
INT 15 - TopView - SEND MESSAGE - "SUBFROM" - REMOVE OBJECT FROM OBJECTQ
AH = 12h
BH = 0Bh
BL = OBJECTQ from which to remove all copies of a particular object
06h OBJECTQ of task whose handle is on top of stack
07h task's default OBJECTQ
STACK: DWORD handle of object to remove
Return: STACK popped
Note: should be sent whenever an object is erased or closed
--------Q-1512--BH0B-------------------------
INT 15 - TopView - SEND MESSAGE - "SUBFROM" - RESET OBJECT BITS
AH = 12h
BH = 0Bh
BL = object
00h handle is DWORD on top of stack
pointer: reset control flags
keyboard: reset control flags
04h clear control flags on KEYBOARD object (handle on top of stack)
05h clear control flags on task's default KEYBOARD object
STACK: DWORD which bits to clear (see #0376,#0377)
Return: STACK popped
SeeAlso: AH=12h/BH=0Ah"OBJECT"
--------Q-1512--BH0C-------------------------
INT 15 - TopView - SEND MESSAGE - "OPEN" - OPEN OBJECT
AH = 12h
BH = 0Ch
BL = object
00h handle is DWORD on top of stack
window: fill with given character from scroll origin to end
keyboard: attach to a window
timer: open
pointer: start taking input for window
panel: associate with a panel file
01h fill task's default window with given char from scrl org to end
02h open given task's mailbox for input (task's handle on stack)
03h open current task's mailbox
04h attach a KEYBOARD to a window (handle on top of stack)
05h attach task's default KEYBOARD to a window
06h open a task's OBJECTQ (task's handle on top of stack)
07h open current task's OBJECTQ
0Ch (DV 2.26+) fill def window of task owning handle on top of stck
0Dh (DV 2.26+) fill default window of parent of current task
STACK: (if window) DWORD character to fill with
(if keyboard) DWORD handle of window to attach to
(if pointer) DWORD handle of window to attach to
(if panel) DWORD length of filename or resident panel
DWORD address of filename or resident panel
(otherwise) nothing
Return: STACK popped
Notes: if first byte of panel file name is 1Bh, then the "name" IS a panel
if first two bytes of panel file "name" are C0hC3h, then the "name" IS
the panel file
result code of open may be retrieved with STATUS message
logical cursor is left at scroll origin after filling window
the task opening a mailbox becomes its owner, and the only task allowed
to read the mailbox
messages are only sent to a pointer object when the mouse is positioned
in the window to which the pointer has been attached
there is no need to explicitly open a timer object, as ADDTO and WRITE
messages automatically open the timer
SeeAlso: AH=12h/BH=0Dh,AH=12h/BH=14h"LOCK"
--------Q-1512--BH0D-------------------------
INT 15 - TopView - SEND MESSAGE - "CLOSE" - CLOSE OBJECT
AH = 12h
BH = 0Dh
BL = object
00h handle is DWORD on top of stack
timer: close
keyboard: detach from window and discard queued input
pointer: stop taking input
panel: close
mailbox: close, unlock, and discard any pending messages
02h close given task's mailbox (task's handle on top of stack)
03h close task's default mailbox
04h close KEYBOARD object (handle on top of stack)
05h close task's default KEYBOARD
06h close given task's OBJECTQ (task's handle on top of stack)
07h close current task's OBJECTQ
Return: STACK popped if handle passed on stack
Notes: when an OBJECTQ is closed, each object in the OBJECTQ is sent an
ERASE message (AH=12h/BH=0Eh)
when a panel object is closed, the panel file and any panels currently
in use are freed; window and keyboard objects created by APPLY are
not affected, but field mode input ceases
open but idle timer objects consume a small amount of CPU time
SeeAlso: AH=12h/BH=0Ch,AH=12h/BH=0Eh,AH=12h/BH=14h"LOCK"
--------Q-1512--BH0E-------------------------
INT 15 - TopView - SEND MESSAGE - "ERASE" - ERASE OBJECT
AH = 12h
BH = 0Eh
BL = object
00h handle is DWORD on top of stack
window: clear from scroll origin to end of window
keyboard: discard input
timer: cancel current interval
pointer: discard all pending messages
mailbox: discard all pending messages
01h clear task's default window from scroll origin to end
02h discard all queued messages in mailbox (handle on top of stack)
03h discard all queued messages in current task's default mailbox
04h discard all input queued to KEYBOARD (handle on top of stack)
05h discard all input queued to task's default KEYBOARD
06h remove all objects from OBJECTQ (task's handle on top of stack)
07h remove all objects from current task's OBJECTQ
0Ch (DV 2.26+) clear window of task owning handle on top of stack
0Dh (DV 2.26+) clear default window of parent of current task
Return: STACK popped if handle passed on stack
Note: when an OBJECTQ is erased, each object in the OBJECTQ is also erased
SeeAlso: AH=12h/BH=02h
--------Q-1512--BH0F-------------------------
INT 15 - TopView - SEND MESSAGE - "STATUS" - GET OBJECT STATUS
AH = 12h
BH = 0Fh
BL = object
00h handle is DWORD on top of stack
timer: is it running?
pointer: return status of last message
panel: verify success of last OPEN or APPLY
02h return status of last msg READ from mailbox (handle on stack)
03h return status of last msg READ from task's default mailbox
04h get stat of last msg from task's KEYBOARD (task handle on stk)
05h get status of last msg from task's default KEYBOARD
06h return whether OBJECTQ is open or not (handle on top of stack)
07h return whether task's default OBJECTQ is open or not
Return: DWORD on top of stack is status (any handle passed on stack popped)
Notes: if object is a panel object, the status indicates the error code:
00h successful
14h panel name not in panel directory
15h not enough memory to apply panel
16h invalid panel format
17h panel file already open
81h-92h DOS error codes+80h \ codes > 80h indicate
95h not enough memory to open panel file > that the panel was
98h null panel file name / not opened
if object is a timer, the status is:
00000000h open but not running
40000000h open and running
80000000h closed
if object is an OBJECTQ, the status is:
00000000h open
80000000h closed
if object is a keyboard in keystroke mode, the status is the extended
character code (scan code) of the last keystroke
if object is a keyboard in field mode, the status indicates the reason
for the last return from the field manager
00h Enter key pressed
01h Button 1 or keystroke selection
02h Button 2
03h validation
04h auto Enter on field
1Bh Escape pressed
46h ^Break pressed
other: extended code for key terminating input
the status of mailbox messages sent by the window manager is always 80h
the status of a pointer message is the same as the status field in the
message
SeeAlso: AH=12h/BH=04h"READ"
--------Q-1512--BH10-------------------------
INT 15 - TopView - SEND MESSAGE - "EOF" - GET OBJECT EOF STATUS
AH = 12h
BH = 10h
BL = object
00h handle is DWORD on top of stack
window: return TRUE if logical cursor past end of window
mailbox: ???
01h returns TRUE if logical cursor past end of task's def window
02h return ??? for task's mailbox (task's handle on top of stack)
03h return ??? for current task's mailbox
0Ch (DV 2.26+) check log crsr of window owning handle on top of stk
0Dh (DV 2.26+) check log cursor of window of parent task
Return: DWORD on top of stack is status (any handle on stack has been popped)
--------Q-1512--BH11-------------------------
INT 15 - TopView - SEND MESSAGE - "AT" - POSITION OBJECT CURSOR
AH = 12h
BH = 11h
BL = window for which to move cursor
00h window's handle is DWORD on top of stack
01h task's default window
0Ch (DV 2.26+) default window of task owning handle on top of stack
0Dh (DV 2.26+) default window of parent of current task
STACK: DWORD column
DWORD row
Return: STACK popped
--------Q-1512--BH11-------------------------
INT 15 - TopView - SEND MESSAGE - "SETNAME" - ASSIGN NAME TO MAILBOX
AH = 12h
BH = 11h
BL = mailbox to name
00h DWORD on top of stack is mailbox handle
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
STACK: DWORD length of name
DWORD address of name
Return: STACK popped
SeeAlso: AH=12h/BH=12h"GETNAME",AX=DE0Eh
--------Q-1512--BX1100-----------------------
INT 15 - TopView - SEND MESSAGE - "SETSCALE" - SET POINTER SCALE FACTOR
AH = 12h
BX = 1100h
STACK: DWORD object handle for pointer object
DWORD number of colums to scale pointer position to
DWORD number of rows to scale pointer position to
Return: STACK popped
SeeAlso: AH=12h/BX=1200h
--------Q-1512--BH12-------------------------
INT 15 - TopView - SEND MESSAGE - "READN" - GET NEXT N OBJECT BYTES
AH = 12h
BH = 12h
BL = window to read from
00h handle is DWORD on top of stack
01h read next N chars or attributes on task's default window
0Ch (DV 2.26+) read window of task owning handle on top of stack
0Dh (DV 2.26+) read default window of parent of current task
STACK: DWORD count
Return: STACK: DWORD number of bytes actually read
DWORD address of buffer containing data
Notes: reading starts at the current logical cursor position; the cursor is
updated to point at the character following the last one read
any translucent blanks (FFh) which are visible on screen are changed
to the character which is seen through them
the string produced by the read is placed in an input buffer which may
be reused by the next READ or READN of a window
window stream opcodes D8h and D9h determine whether the read returns
characters or attributes
SeeAlso: AH=12h/BH=04h"WINDOW",AH=12h/BH=05h"WINDOW"
--------Q-1512--BH12-------------------------
INT 15 - DESQview 2.50+ - SEND MESSAGE - "GETNAME" - GET NAME OF MAILBOX
AH = 12h
BH = 12h
BL = mailbox for which to retrieve name
00h DWORD on top of stack is mailbox handle
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
STACK: DWORD length of buffer for name
DWORD pointer to buffer
Return: STACK: DWORD length of returned name (or size of buffer, if less)
Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
Note: the returned name is not NUL-terminated
SeeAlso: AH=12h/BH=11h"SETNAME",AX=DE0Eh
--------Q-1512--BX1200-----------------------
INT 15 - TopView - SEND MESSAGE - "GETSCALE" - GET POINTER SCALE FACTOR
AH = 12h
BX = 1200h
STACK: DWORD object handle for pointer
Return: STACK: DWORD pointer pos scaled as if window were this many colums wide
DWORD pointer pos scaled as if window were this many rows high
SeeAlso: AH=12h/BX=1100h
--------Q-1512--BH13-------------------------
INT 15 - TopView - SEND MESSAGE - "REDRAW" - REDRAW WINDOW
AH = 12h
BH = 13h
BL = window object
00h DWORD on top of stack is handle for window to redraw
01h redraw task's default window
0Ch (DV 2.26+) redraw window of task owning handle on top of stack
0Dh (DV 2.26+) redraw default window of parent of current task
Return: STACK popped if handle was passed on stack
SeeAlso: AH=12h/BH=05h"WINDOW",AH=12h/BH=0Eh
--------Q-1512--BH13-------------------------
INT 15 - DESQview 2.50+ - SEND MESSAGE - "READINTO" - GET NEXT MAIL MESSAGE
AH = 12h
BH = 13h
BL = mailbox from which to read
00h DWORD on top of stack is mailbox handle
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
STACK: DWORD size of buffer in bytes
DWORD pointer to buffer
Return: STACK: DWORD number of bytes read
Program: DESQview 2.5x is distributed as part of DESQview/X 1.0x
Notes: this call blocks if no input is available, but will return less than
the requested number of bytes if some (but insufficient) data is
available
use this call instead of AH=12h/BH=04h if the mailbox has flag bits
4 or 5 set, as common memory may be exhausted by that call when
attempting to read the next message
SeeAlso: AH=12h/BH=04h"READ",AH=12h/BH=05h,AH=12h/BH=16h
--------Q-1512--BX1300-----------------------
INT 15 - TopView - SEND MESSAGE - "SETICON" - SPECIFY POINTER ICON
AH = 12h
BX = 1300h
STACK: DWORD object handle for pointer
DWORD character to use for pointer
Return: STACK popped
--------Q-1512--BH14-------------------------
INT 15 - TopView - SEND MESSAGE - "SETESC" - SET ESCAPE ROUTINE ADDRESS
AH = 12h
BH = 14h
BL = message modifier
00h handle is DWORD on top of stack
01h define user stream
04h intercept keystrokes from KEYBOARD to window (handle on stack)
05h intercept keystrokes from task's default KEYBOARD to a window
STACK: (if window) DWORD user stream number (14h-1Fh)
DWORD address of FAR user stream handler
(if keyboard) DWORD address of FAR filter function (see #0378)
Return: STACK popped
(Table 0378)
Values keyboard filter function is called with when keyboard is in field mode:
AL = character
AH = 00h or extended ASCII code if AL = 00h
BL = field number
CH = cursor column
CL = cursor row
DL = field type modifier (sixth item in field table entry)
DH = seventh item in field table entry
ES:SI = window's handle
DS:DI -> field table entry for field containing the cursor
Return: AH = action to take
00h use keystroke
01h ignore keystroke
FFh beep and ignore keystroke
Note: the filter function is not allowed to make INT 15, DOS, or BIOS calls
--------Q-1512--BH14-------------------------
INT 15 - TopView - SEND MESSAGE - "LOCK" - REQUEST EXCLUSIVE ACCESS TO RESOURCE
AH = 12h
BH = 14h
BL = object
00h mailbox handle is DWORD on top of stack
02h use given task's mailbox (task's handle on top of stack)
03h use current task's default mailbox
Return: STACK popped if BL=00h
Note: release exclusive access by sending CLOSE message to mailbox
access may be requested multiple times, and requires multiple CLOSEs
SeeAlso: AH=12h/BH=0Dh
--------Q-1512--BH15-------------------------
INT 15 - DESQview v2.20+ - SEND MESSAGE - "SETFLAGS" - SET OBJECT FLAGS
AH = 12h
BH = 15h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
STACK: DWORD flags (see #0379,#0380)
Return: STACK popped
Notes: only available if the API level has been set to at least 2.20
equivalent to performing SUBFROM and ADDTO calls on the object
if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
"READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=16h
Bitfields for DESQview mailbox object flags:
Bit(s) Description (Table 0379)
0 all mail messages in common memory
1 allow write even if closed
2 don't erase messages when mailbox closed
4 (DV/X) append messages with like status and sender (stream-oriented
mail)
5 (DV/X) store mail in expanded memory (pool grows as needed)
6 (DV/X) make mailbox into non-owned mailbox
Bitfields for DESQview keyboard object flags:
Bit(s) Description (Table 0380)
5 exclusive input when keyboard in use for input
--------Q-1512--BH16-------------------------
INT 15 - DESQview v2.20+ - SEND MESSAGE - "GETFLAGS" - GET OBJECT FLAGS
AH = 12h
BH = 16h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
Return: STACK: DWORD current control flags (see #0379,#0380)
Notes: only available if the API level has been set to at least 2.20
if a mailbox has bits 4 or 5 set, you must use "READINTO" rather than
"READ" (see AH=12h/BH=13h"READINTO") to retrieve messages
SeeAlso: AH=12h/BH=0Ah,AH=12h/BH=0Bh,AH=12h/BH=13h"READINTO",AH=12h/BH=15h
--------Q-1512--BH17-------------------------
INT 15 - DESQview v2.42-2.52 - BUG
AH = 12h
BH = 17h
BL = object
00h DWORD on top of stack
mailbox, keyboard, or pointer only
02h mailbox for task whose handle is on top of stack
03h mailbox for current task
04h keyboard for task whose handle is on top of stack
05h keyboard for current task
Return: STACK popped if handle passed on stack
Notes: due to a fencepost error, message 17h is accepted for mailboxes,
keyboards, and pointers, but causes a random branch
DESQview v2.50-2.52 are distributed as part of DESQview/X v1.02
--------Q-1512--BH80-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 00h WITH ERROR RECOVERY
AH = 12h
BH = 80h
Note: this function is identical to AH=12h/BH=00h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=00h
(Table 0381)
Values for DESQview error code:
00h no error
01h invalid values
02h alias invalid
03h handle valid but wrong type
04h invalid handle
--------Q-1512--BH81-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 01h WITH ERROR RECOVERY
AH = 12h
BH = 81h
Note: this function is identical to AH=12h/BH=01h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=01h
--------Q-1512--BH82-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 02h WITH ERROR RECOVERY
AH = 12h
BH = 82h
Note: this function is identical to AH=12h/BH=02h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=02h
--------Q-1512--BH83-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 03h WITH ERROR RECOVERY
AH = 12h
BH = 83h
Note: this function is identical to AH=12h/BH=03h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=03h,AH=12h/BX=0300h
--------Q-1512--BH84-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 04h WITH ERROR RECOVERY
AH = 12h
BH = 84h
Note: this function is identical to AH=12h/BH=04h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=04h,AH=12h/BX=0400h
--------Q-1512--BH85-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 05h WITH ERROR RECOVERY
AH = 12h
BH = 85h
Note: this function is identical to AH=12h/BH=05h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=05h
--------Q-1512--BH86-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 06h WITH ERROR RECOVERY
AH = 12h
BH = 86h
Note: this function is identical to AH=12h/BH=06h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=06h
--------Q-1512--BH87-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 07h WITH ERROR RECOVERY
AH = 12h
BH = 87h
Note: this function is identical to AH=12h/BH=07h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=07h
--------Q-1512--BH88-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 08h WITH ERROR RECOVERY
AH = 12h
BH = 88h
Note: this function is identical to AH=12h/BH=08h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=08h
--------Q-1512--BH89-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 09h WITH ERROR RECOVERY
AH = 12h
BH = 89h
Note: this function is identical to AH=12h/BH=09h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=09h
--------Q-1512--BH8A-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ah WITH ERROR RECOVERY
AH = 12h
BH = 8Ah
Note: this function is identical to AH=12h/BH=0Ah, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=0Ah
--------Q-1512--BH8B-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 0Bh WITH ERROR RECOVERY
AH = 12h
BH = 8Bh
Note: this function is identical to AH=12h/BH=0Bh, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=0Bh
--------Q-1512--BH8C-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 0Ch WITH ERROR RECOVERY
AH = 12h
BH = 8Ch
Note: this function is identical to AH=12h/BH=0Ch, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=0Ch
--------Q-1512--BH8D-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 0Dh WITH ERROR RECOVERY
AH = 12h
BH = 8Dh
Note: this function is identical to AH=12h/BH=0Dh, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=0Dh
--------Q-1512--BH8E-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 0Eh WITH ERROR RECOVERY
AH = 12h
BH = 8Eh
Note: this function is identical to AH=12h/BH=0Eh, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=0Eh
--------Q-1512--BH8F-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 0Fh WITH ERROR RECOVERY
AH = 12h
BH = 8Fh
Note: this function is identical to AH=12h/BH=0Fh, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=0Fh
--------Q-1512--BH90-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 10h WITH ERROR RECOVERY
AH = 12h
BH = 90h
Note: this function is identical to AH=12h/BH=10h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=10h
--------Q-1512--BH91-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 11h WITH ERROR RECOVERY
AH = 12h
BH = 91h
Note: this function is identical to AH=12h/BH=11h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=11h,AH=12h/BX=1100h
--------Q-1512--BH92-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 12h WITH ERROR RECOVERY
AH = 12h
BH = 92h
Note: this function is identical to AH=12h/BH=12h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=12h,AH=12h/BX=1200h
--------Q-1512--BH93-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 13h WITH ERROR RECOVERY
AH = 12h
BH = 93h
Note: this function is identical to AH=12h/BH=13h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=13h
--------Q-1512--BH94-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 14h WITH ERROR RECOVERY
AH = 12h
BH = 94h
Note: this function is identical to AH=12h/BH=14h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=14h
--------Q-1512--BH95-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 15h WITH ERROR RECOVERY
AH = 12h
BH = 95h
Note: this function is identical to AH=12h/BH=15h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=15h
--------Q-1512--BH96-------------------------
INT 15 - DESQview v2.50+ - SEND MESSAGE 16h WITH ERROR RECOVERY
AH = 12h
BH = 96h
Note: this function is identical to AH=12h/BH=16h, except that DESQview will
not pop up a "Programming Error" window, instead returning an error
code in AL (see #0381)
SeeAlso: AH=12h/BH=16h
--------T-1513-------------------------------
INT 15 - VMiX - "sys_wake" - WAKE SLEEPING PROCESS
AH = 13h
STACK: WORD process ID
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=12h"VMiX"
--------T-1513-------------------------------
INT 15 - MultiDOS Plus - GET TASK CONTROL BLOCK
AH = 13h
Return: BX:AX -> task control block (see #0382)
SeeAlso: AH=15h"MultiDOS"
Format of MultiDOS Plus v4.0 task control block:
Offset Size Description (Table 0382)
00h DWORD pointer to next TCB
04h 8 BYTEs ASCIZ task name
0Ch 2 BYTEs ???
0Eh WORD task PSP segment
10h WORD abort/suspend flags
12h WORD current screen segment (see AH=0Bh,AH=0Ch)
14h WORD priority level (0000h-FFFEh)
16h WORD time slice counter
18h 2 BYTEs ???
1Ah WORD suspend timer value
1Ch WORD stack segment
1Eh WORD stack pointer
20h WORD display type
22h WORD display memory
24h 2 BYTEs ???
26h WORD termination count
28h WORD equipment flag for BIO10 driver
2Ah BYTE background CRT mode
2Bh WORD screen width in columns
2Dh WORD screen size in bytes
2Fh WORD segment of physical screen memory
31h 16 BYTEs eight cursor positions
41h WORD current cursor shape
43h BYTE active display page
44h WORD CRT controller I/O port base
46h 2 BYTEs ???
48h WORD foreground task flag
4Ah 6 BYTEs ???
50h WORD saved video segment (see AH=0Bh,AH=0Ch)
52h DWORD old INT 22
56h DWORD old INT 23
5Ah DWORD old INT 24
5Eh WORD top of memory for task
60h 4 BYTEs ???
64h WORD DTA segment (see INT 21/AH=1Ah)
66h WORD DTA offset
68h 4 BYTEs ???
6Ch BYTE current ANSI.SYS attribute
6Dh BYTE current ANSI.SYS column
6Eh BYTE current ANSI.SYS row
6Fh BYTE current ANSI.SYS display state
70h BYTE maximum ANSI.SYS columns
71h BYTE current ANSI.SYS page
72h WORD saved ANSI.SYS cursor position
74h BYTE ANSI.SYS parameter buffer index
75h BYTE current ANSI.SYS screen mode
76h BYTE ANSI.SYS wrap flag
77h 6 BYTEs ANSI.SYS parameter buffer
7Dh BYTE ANSI.SYS keyboard DSR state
7Eh 7 BYTEs ANSI.SYS keyboard DSR buffer
85h 3 BYTEs ???
88h 16 BYTEs request header for DOS driver calls
98h 14 BYTEs ???
A6h WORD segment of EMS map if EMS task
A8h WORD flag: task makes EMS calls
AAh WORD EMS handle for task
ACh WORD keyboard shift state
AEh 12 BYTEs ???
BAh WORD TCB of parent if child task
BCh WORD termination code
BEh WORD COM port number
C0h 4 BYTEs ???
C4h WORD current IRQ number
C6h 2 BYTEs ???
C8h WORD miscellaneous flag word
CAh 2 BYTEs ???
CCh DWORD old INT 10
D0h WORD EMS alternate map set number
D2h 414 BYTEs DOS current disk and directory context (optional)
--------T-1514-------------------------------
INT 15 - VMiX - "sys_clrwindow" - CLEAR WINDOW
AH = 14h
STACK: WORD top left corner of window (high byte = row, low = col)
WORD bottom right corner of window (high = row, low = col)
Return: AX = status (SYS_OK)
Note: clears window to color set with "sys_setcolors" (AH=18h)
SeeAlso: AH=15h"VMiX",AH=16h"VMiX",AH=18h"VMiX",AH=1Fh"VMiX"
--------T-1514-------------------------------
INT 15 - MultiDOS Plus - CHECK IF MultiDOS FOREGROUND OR BACKGROUND
AH = 14h
Return: AX = current state
0000h MultiDOS Plus command prompt is background task
0001h command prompt is foreground task
SeeAlso: AH=0Bh"MultiDOS"
--------T-1515-------------------------------
INT 15 - VMiX - "sys_setbwindow" - SET BANNER WINDOW MESSAGE
AH = 15h
STACK: DWORD pointer to ASCIZ banner message for top of screen
Return: AX = status (SYS_OK)
SeeAlso: AH=14h"VMiX",AH=16h"VMiX"
--------T-1515-------------------------------
INT 15 - MultiDOS Plus - GET SYSTEM BLOCK
AH = 15h
Return: BX:AX -> system block (see #0383)
SeeAlso: AH=13h"MultiDOS"
Format of MultiDOS Plus 4.0 system block:
Offset Size Description (Table 0383)
00h WORD segment of system control block
02h WORD redirection flag set by /NOREDIRECT
04h WORD no-INT 10 flag set by /NO10
06h DWORD old INT 10
0Ah DWORD new INT 10
0Eh DWORD pointer to WORD with current TCB offset (see #0382)
12h DWORD pointer to WORD with idle task TCB offset
16h DWORD pointer to WORD with foreground TCB offset (see #0382)
1Ah DWORD pointer to WORD with MultiDOS TCB offset (see #0382)
1Eh WORD Task Control Block size
20h WORD number of TCBs
22h WORD flag: EMS present
24h WORD EMS page frame base segment
26h WORD 16K pages in EMS page frame
28h WORD base segment for conventional memory tasks
2Ah WORD conventional memory size in paragraphs
2Ch DWORD pointer to list of queue pointers
--------T-1516-------------------------------
INT 15 - VMiX - "sys_setwindow" - SET ROOT WINDOW SIZE AND HOME CURSOR
AH = 16h
STACK: DWORD pointer to I/O Request Packet
WORD top left corner of window (high byte = row, low = col)
WORD bottom right corner of window (high = row, low = col)
Return: AX = status (SYS_OK or SYS_ERROR)
SeeAlso: AH=14h"VMiX",AH=17h"VMiX"
--------T-1516-------------------------------
INT 15 - MultiDOS Plus - INITIALIZATION
AH = 16h
Note: used internally during initialization; any other calls will cause
unpredictable results
--------T-1517-------------------------------
INT 15 - VMiX - "sys_getcolors" - GET CONSOLE WINDOW COLORS
AH = 17h
Return: AH = foreground color
AL = background color
SeeAlso: AH=16h"VMiX",AH=18h"VMiX"
--------T-1517-------------------------------
INT 15 - MultiDOS Plus - MAP IRQ
AH = 17h
AL = IRQ to map (01h-0Fh)
BX = offset of task control block (see #0382) to associate with IRQ
Return: AX = status
0000h successful
other invalid IRQ
Note: the EMS map of the specified TCB is associated with the given interrupt
SeeAlso: AH=18h"MultiDOS",AH=19h"MultiDOS"
--------T-1518-------------------------------
INT 15 - VMiX - "sys_setcolors" - SET CONSOLE COLORS
AH = 18h
STACK: WORD new background/foreground colors
bits 3-0: foreground
bits 7-4: background
bits 15-8: unused
Return: AX = color
SeeAlso: AH=14h"VMiX",AH=17h"VMiX",AH=19h"VMiX"
--------T-1518-------------------------------
INT 15 - MultiDOS Plus - UNMAP IRQ
AH = 18h
AL = IRQ to unmap (01h-0Fh)
Return: AX = status
0000h successful
0001h invalid IRQ
Note: results are unpredictable if the IRQ has not been mapped
SeeAlso: AH=17h"MultiDOS",AH=19h"MultiDOS"
--------T-1519-------------------------------
INT 15 - VMiX v2+ - "sys_setconwn" - SET WINDOW COLORS
AH = 19h
STACK: WORD new background/foreground colors
bits 3-0: foreground
bits 7-4: background
bits 15-8: unused
Return: AX = color
SeeAlso: AH=18h"VMiX"
--------T-1519-------------------------------
INT 15 - MultiDOS Plus - UNMAP ALL IRQs
AH = 19h
Return: AX destroyed
Note: for MultiDOS internal use only
SeeAlso: AH=17h"MultiDOS",AH=18h"MultiDOS"
--------T-151A-------------------------------
INT 15 - VMiX v2+ - "sys_sint" - INVOKE SOFTWARE INTERRUPT
AH = 1Ah
STACK: WORD interrupt number
DWORD pointer to register structure
Return: AX = returned flags
--------T-151A-------------------------------
INT 15 - MultiDOS Plus - MAP SEMAPHORE NAME TO NUMBER
AH = 1Ah
DS:SI -> 8-byte name
Return: AL = status
00h successful
AH = semaphore number (20h-3Fh)
04h out of string space
Notes: all eight bytes of the name are significant
if the name does not already exist, it is added to the name table and
associated with a free semaphore number
names cannot be destroyed
SeeAlso: AH=1Bh"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
--------T-151B-------------------------------
INT 15 - VMiX v2+ - "sys_blkmov" - MOVE MEMORY BLOCK
AH = 1Bh
STACK: DWORD source address
DWORD destination address
WORD number of words to move
Return: nothing
--------T-151B-------------------------------
INT 15 - MultiDOS Plus - REQUEST RESOURCE SEMAPHORE BY NAME
AH = 1Bh
DS:SI -> 8-byte name
Return: AH = status
00h successful
02h invalid semaphore number
03h caller already owns semaphore
04h out of string space
Notes: (see AH=01h"MultiDOS")
equivalent to AH=1Ah followed by AH=01h
SeeAlso: AH=01h"MultiDOS",AH=1Ah"MultiDOS",AH=1Ch"MultiDOS",AH=1Dh"MultiDOS"
--------T-151C-------------------------------
INT 15 - VMiX v2+ - "sys_bitblt" - PUT GRAPHICAL OBJECT AT CURSOR POSITION
AH = 1Ch
STACK: WORD AND/OR pixel with background (00h = OR, 01h = AND)
DWORD pointer to object bitmap
WORD object width in pixels
WORD object height in pixels
Return: nothing
SeeAlso: AH=1Dh"VMiX"
--------T-151C-------------------------------
INT 15 - MultiDOS Plus - RELEASE RESOURCE SEMAPHORE BY NAME
AH = 1Ch
DS:SI -> 8-byte name
Return: AH = status
00h successful
01h not semaphore owner
02h invalid semaphore number
04h out of string space
Notes: (see AH=02h"MultiDOS")
equivalent to AH=1Ah followed by AH=02h
SeeAlso: AH=02h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Dh"MultiDOS"
--------T-151D-------------------------------
INT 15 - VMiX v2+ - "sys_getfont" - GET CURRENT CONSOLE GRAPHICS FONT
AH = 1Dh
Return: AX = current font number (00h-03h)
SeeAlso: AH=1Ch"VMiX",AH=1Eh"VMiX"
--------T-151D-------------------------------
INT 15 - MultiDOS Plus - TEST RESOURCE SEMAPHORE BY NAME
AH = 1Dh
DS:SI -> 8-byte name
Return: AH = status
00h semaphore not in use
01h semaphore owned by another task
02h invalid semaphore number
03h caller owns semaphore
04h out of string space
Notes: (see AH=10h"MultiDOS")
equivalent to AH=1Ah followed by AH=10h
SeeAlso: AH=10h"MultiDOS",AH=1Ah"MultiDOS",AH=1Bh"MultiDOS",AH=1Ch"MultiDOS"
--------T-151E-------------------------------
INT 15 - VMiX v2+ - "sys_setfont" - SET CONSOLE GRAPHICS FONT
AH = 1Eh
STACK: WORD new font number (00h-03h)
Return: AX = current font number (00h-03h)
SeeAlso: AH=1Dh"VMiX"
--------T-151E00-----------------------------
INT 15 - MultiDOS Plus - CLEAR EVENT COUNTER
AX = 1E00h
DX = event/trigger number (00h-3Fh)
Return: AH = status
00h successful
SeeAlso: AX=1E01h,AX=1E02h
--------T-151E01-----------------------------
INT 15 - MultiDOS Plus - TRIGGER EVENT
AX = 1E01h
DX = event/trigger number (00h-3Fh)
Return: AH = status
00h successful
01h invalid event/trigger number
Notes: schedules any task waiting for event; if no task is waiting, the event
counter is incremented (and will roll over if it was 65535)
may be invoked by interrupt handler
SeeAlso: AX=1E00h,AX=1E02h
--------T-151E02-----------------------------
INT 15 - MultiDOS Plus - WAIT FOR EVENT
AX = 1E02h
DX = event/trigger number (00h-3Fh)
Return: AH = status
00h successful
01h invalid event/trigger number
Note: if the event counter is zero, the task is suspended until the event is
triggered with AX=1E01h; else, the counter is decremented and the
call returns immediately
SeeAlso: AX=1E00h,AX=1E01h
--------T-151E08-----------------------------
INT 15 - MultiDOS Plus 4.01 - SET CONTEXT-SWITCH FUNCTIONS
AX = 1E08h
DX:BX -> context save handler (see #0384)
DX:CX -> context restore handler (see #0384)
Return: nothing
Note: handlers may be removed by setting addresses to 0000h:0000h
(Table 0384)
Values MultiDOS Plus context-switch handlers are called with:
ES:BX -> task's TCB
Return: all registers preserved
--------T-151F-------------------------------
INT 15 - VMiX v2.???+ - "sys_scrollwin" - SCROLL WINDOW
AH = 1Fh
STACK: WORD top left corner of window (high byte = row, low = col)
WORD bottom right corner of window
Return: AX = status (SYS_OK)
SeeAlso: AH=14h"VMiX",AH=18h"VMiX"
--------T-151F-------------------------------
INT 15 - MultiDOS Plus v4.01 - GET MEMORY PARAMETERS
AH = 1Fh
Return: BX = first segment of conventional memory
DX = first segment of EMS swap frame into which MultiDOS will load
programs
--------T-1520-------------------------------
INT 15 - MultiDOS Plus v4.01 - CHECK IF MULTITASKING ENABLED
AH = 20h
Return: AX = current state
0000h multitasking enabled
other TCB of task that disabled multitasking
SeeAlso: AH=0Dh"MultiDOS",AH=13h"MultiDOS"
--------c-152000-----------------------------
INT 15 U - DOS 3.0+ PRINT.COM - DISABLE CRITICAL REGION FLAG
AX = 2000h
Return: nothing
Desc: stop setting user flag on entry to PRINT critical region
Note: also supported by PC Network v1.00 RECEIVER.COM
SeeAlso: AX=2001h
--------c-152001-----------------------------
INT 15 U - DOS 3.0+ PRINT.COM - SET CRITICAL REGION FLAG
AX = 2001h
ES:BX -> byte which is to be incremented while in a DOS call
Return: nothing
Desc: specify a user flag which PRINT should set to let an interested
application know it is in a critical region
Note: also supported by PC Network v1.00 RECEIVER.COM
SeeAlso: AX=2000h
--------O-152010-----------------------------
INT 15 - OS HOOK - SETUP SYSREQ ROUTINE (AT,XT286,PS50+)
AX = 2010h
???
Return: ???
SeeAlso: AX=2011h
--------O-152011-----------------------------
INT 15 - OS HOOK - COMPLETION OF SYSREQ FUNCTION (AT,XT286,PS50+)
AX = 2011h
???
Return: ???
SeeAlso: AX=2010h
--------B-1521-------------------------------
INT 15 - SYSTEM - POWER-ON SELF-TEST ERROR LOG (PS50+)
AH = 21h
AL = subfunction
00h read POST log
01h write POST log
BH = device ID
BL = error code
Return: CF clear if successful
CF set on error
AH = status
00h OK
01h list full
02h unsupported subfunction
80h invalid command
86h unsupported function
if function 00h:
BX = number of error codes stored
ES:DI -> error log
Notes: the log is a series of words, the first byte of which identifies the
error code and the second the device.
supported by AMI PCI BIOS
IBM considers this a required BIOS function
if the device ID is FFh, the "error code" is the actual device number
minus 255 (thus these devices have no specific error codes)
SeeAlso: AH=23h"SYSTEM",AH=24h"SYSTEM"
--------B-1522-------------------------------
INT 15 - SYSTEM - later PS/2s - LOCATE ROM BASIC
AH = 22h
Return: CF set on error
AH = status (86h if function not supported)
CF clear on success
AH = 00h
ES:BX -> ROM BASIC
Notes: if this function is not supported, ROM BASIC is at F600h:0000h
IBM classifies this function as optional
SeeAlso: INT 86"BASIC",INT F0"BASIC"
--------B-152300-----------------------------
INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ??? CMOS DATA
AX = 2300h
Return: CF clear if successful
CL = value of CMOS location 2Dh
CH = value of CMOS location 2Eh
CF set on error
AH = error code (80h,86h)
Note: IBM classifies this function as optional
SeeAlso: AX=2301h,AX=2304h,AX=2305h
--------B-152301-----------------------------
INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SET ??? CMOS DATA
AX = 2301h
CL = new value for CMOS location 2Dh
CH = new value for CMOS location 2Eh
Return: CF clear if successful
CF set on error
AH = error code (80h,86h)
Notes: sets the contents of CMOS locations 2Dh and 2Eh
IBM classifies this function as optional
SeeAlso: AX=2300h,AX=2304h,AX=2305h
--------B-152302-----------------------------
INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET ROM STARTUP VIDEO REG TABLES
AX = 2302h
BL = data index (00h-0Dh) (see #0385)
Return: ES:BX -> table for register (see #0386,#0387)
CX = size of table in bytes (may be 0000h)
Note: IBM classifies this function as optional
SeeAlso: AX=2300h,AX=2301h,AX=2303h
(Table 0385)
Values for PS/1 ROM startup video register tables:
00h DAC registers
01h ???
02h Palette registers
03h-0Dh ???
Format of PS/1 ROM startup DAC register table:
Offset Size Description (Table 0386)
00h WORD number of DAC registers in table
02h var array of 3-byte DAC register values, starting at register 00h
SeeAlso: #0385
Format of PS/1 ROM startup Palette register table:
Offset Size Description (Table 0387)
00h 16 BYTEs colors for palette registers 00h through 0Fh
10h BYTE border color
SeeAlso: #0385,#0017
--------B-152303-----------------------------
INT 15 U - IBM BIOS - SMART ENERGY SYSTEM - ???
AX = 2303h
BX = ??? ('x')
DX = 'y' and 'z'
bits 15-7 = 'y'
bits 6-3 unused
bits 2-0 = 'z'
DI = ??? (0352h)
Return: ???
Notes: performs graphics functions, writes to segment A000h and VGA I/O ports
IBM classifies this function as optional
--------B-152304-----------------------------
INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - SYSTEM SETUP
AX = 2304h
DX = segment of 32K buffer
Return: CF clear if successful
AX = 0003h (left over from setting video mode 3)
BX,CX,DX,BP,DS,ES destroyed
CF set on error
AH = error code (80h,86h)
Desc: run system setup utility, and optionally save any changed settings to
CMOS RAM
Note: IBM classifies this function as optional
SeeAlso: AX=2301h,AX=2305h
--------B-152305-----------------------------
INT 15 u - IBM BIOS - SMART ENERGY SYSTEM - GET PROCESSOR SPEED
AX = 2305h
Return: CF clear if successful
AL = processor speed in MHz
CF set on error
AL = FFh (speed unknown or >80 MHz)
AL = error code (80h,86h = unsupported function)
Note: IBM classifies this function as optional
SeeAlso: AX=2301h,AX=2304h,AH=BCh
--------b-152400-----------------------------
INT 15 - SYSTEM - later PS/2s - DISABLE A20 GATE
AX = 2400h
Return: CF clear if successful
AH = 00h
CF set on error
AH = status
01h keyboard controller is in secure mode
86h function not supported
Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
IBM classifies this function as optional
BUG: AMI BIOS v1.00.03.AV0M never reports an error on failure to disable
the A20 gate; it simply writes 0 to PORT 0092h
SeeAlso: AX=2401h,AX=2402h,AX=2403h,PORT 0092h
--------b-152401-----------------------------
INT 15 - SYSTEM - later PS/2s - ENABLE A20 GATE
AX = 2401h
Return: CF clear if successful
AH = 00h
CF set on error
AH = status
01h keyboard controller is in secure mode
86h function not supported
Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
IBM classifies this function as optional
SeeAlso: AX=2400h,AX=2402h,PORT 0092h
--------b-152402-----------------------------
INT 15 - SYSTEM - later PS/2s - GET A20 GATE STATUS
AX = 2402h
Return: CF clear if successful
AH = 00h
AL = current state (00h disabled, 01h enabled)
CX = ??? (set to 0000h-000Bh or FFFFh by AMI BIOS v1.00.03.AV0M)
FFFFh if keyboard controller does not become ready within C000h
read attempts
CF set on error
AH = status
01h keyboard controller is in secure mode
86h function not supported
Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
IBM classifies this function as optional
SeeAlso: AX=2400h,AX=2401h
--------b-152403-----------------------------
INT 15 - SYSTEM - later PS/2s - QUERY A20 GATE SUPPORT
AX = 2403h
Return: CF clear if successful
AH = 00h
BX = status of A20 gate support (see #0388)
CF set on error
AH = status
01h keyboard controller is in secure mode
86h function not supported
Notes: also supported by AMI PCI BIOS and Qualitas 386MAX v6.01+
IBM classifies this function as optional
BUG: at one point early in processing INT 15/AH=24h, the AMI PCI BIOS
version 1.00.05.AX1 compares whether AL==03h instead of AL>=03h,
thus causing a random branch on any value of AL greater than 3.
SeeAlso: AX=2402h
Bitfields for A20 gate support status:
Bit(s) Description (Table 0388)
0 supported on keyboard controller
1 supported with bit 1 of I/O port 92h
14-2 reserved
15 additional data is available (location not yet defined)
--------T-153000-----------------------------
INT 15 - Object Kernel for DOS - INSTALLATION CHECK
AX = 3000h
Return: AX:BX = 4F42h:4A21h ('OBJ!') if installed
CX = resident segment
Program: the Object Kernel is a program by M.W. Pieters which is currently
under development
Note: Central Point's CPBACKUP v9 calls INT 15/AX=3000h at startup, but it
may be checking for a different program's presence
SeeAlso: AX=3001h,AX=3008h
--------T-153001-----------------------------
INT 15 - Object Kernel for DOS - GET STATUS BLOCK
AX = 3001h
Return: AX = FFFFh
ES:DI -> status block
SeeAlso: AX=3000h,AX=3008h
--------T-153002-----------------------------
INT 15 - Object Kernel for DOS - KILL PROCESS
AX = 3002h
(not yet implemented)
SeeAlso: AX=3000h
--------T-153003-----------------------------
INT 15 - Object Kernel for DOS - STOP PROCESS
AX = 3003h
(not yet implemented)
SeeAlso: AX=3000h
--------T-153004-----------------------------
INT 15 - Object Kernel for DOS - START PROCESS
AX = 3004h
(not yet implemented)
SeeAlso: AX=3000h
--------T-153005-----------------------------
INT 15 - Object Kernel for DOS - RESTART PROCESS
AX = 3005h
(not yet implemented)
SeeAlso: AX=3000h
--------T-153006-----------------------------
INT 15 - Object Kernel for DOS - EXECUTE PROCESS
AX = 3006h
(not yet implemented)
SeeAlso: AX=3000h
--------T-153007-----------------------------
INT 15 - Object Kernel for DOS - LIST PROCESSES
AX = 3007h
(not yet implemented)
SeeAlso: AX=3000h
--------T-153008-----------------------------
INT 15 - Object Kernel for DOS - SWITCH ObjectKernel ON/OFF
AX = 3008h
BH = new state (00h disabled, 01h enabled)
Return: AX = FFFFh
SeeAlso: AX=3000h,AX=3009h
--------T-153009-----------------------------
INT 15 - Object Kernel for DOS - RESERVED FOR FUTURE USE
AX = 3009h to 30FFh
SeeAlso: AX=3000h
Program: the Object Kernel is a program by M.W. Pieters which is currently
under development
----------153D-------------------------------
INT 15 - IBM SurePath BIOS - Officially "Private" Function
AH = 3Dh
SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
----------153E-------------------------------
INT 15 - IBM SurePath BIOS - Officially "Private" Function
AH = 3Eh
SeeAlso: AH=3Dh"IBM",AH=3Fh"IBM"
----------153F-------------------------------
INT 15 - IBM SurePath BIOS - Officially "Private" Function
AH = 3Fh
SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
--------B-1540-------------------------------
INT 15 - SYSTEM - READ/MODIFY PROFILES (CONVERTIBLE)
AH = 40h
AL = subfunction
00h get system profile in CX and BX
01h set system profile from CX and BX
02h get internal modem profile in BX
03h set internal modem profile from BX
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (80h = profile execution failed)
--------V-154000-----------------------------
INT 15 - Compaq SLT/286 or Portable 386 - READ LCD/PLASMA TIMEOUT
AX = 4000h
Return: AX = 4000h
CL = timeout in minutes, 00h if disabled
SeeAlso: AX=4001h,AX=4600h
--------V-154001-----------------------------
INT 15 - Compaq SLT/286 or Portable 386 - SET LCD/PLASMA TIMEOUT
AX = 4001h
CL = timeout in minutes, 00h to disable
Return: AL = status
00h timeout modified
01h timeout cannot be modified
40h timeout cannot be modified
CL = timeout in minutes, 00h if disabled
SeeAlso: AX=4000h,AX=4601h
--------B-1541-------------------------------
INT 15 - SYSTEM - WAIT ON EXTERNAL EVENT (CONVERTIBLE and some others)
AH = 41h
AL = condition type (see #0389)
BH = condition compare or mask value
BL = timeout value times 55 milliseconds
00h means no timeout
DX = I/O port address if AL bit 4 set
ES:DI -> user byte if AL bit 4 clear
Return: after event or timeout occurs
Note: call AH=C0h and examine bit 3 of feature byte 1 to determine whether
this function is supported
SeeAlso: AH=83h,AH=86h,AH=C0h
Bitfields for external event wait condition type:
Bit(s) Description (Table 0389)
0-2 condition to wait for
0 any external event
1 compare and return if equal
2 compare and return if not equal
3 test and return if not zero
4 test and return if zero
3 reserved
4 1=port address, 0=user byte
5-7 reserved
--------B-1542-------------------------------
INT 15 - SYSTEM - REQUEST POWER OFF (CONVERTIBLE,HP 95LX)
AH = 42h
AL = suspend type
00h to use system profile
01h to force suspend regardless of system profile
Return: nothing
Note: the HP 95LX apparently suspends regardless of the value in AL; on
power-up, execution will resume following the instruction calling
this function
SeeAlso: AH=44h
--------b-154280-----------------------------
INT 15 - Compaq SLT/286 - ENTER STANDBY
AX = 4280h
Return: AH = 42h
CF clear if successful
CF set if unable to enter standby
SeeAlso: AX=4600h,AX=5307h/CX=0001h"STAND-BY"
--------B-1543-------------------------------
INT 15 - SYSTEM - READ SYSTEM STATUS (CONVERTIBLE)
AH = 43h
Return: AL = status bits (see #0390)
Bitfields for Convertible system status:
Bit(s) Description (Table 0390)
7 power low
6 external power in use
5 standby power lost
4 power activated by alarm
3 internal modem powered on
2 RS232/parallel adapter powered on
1 reserved
0 LCD detached
--------B-1544-------------------------------
INT 15 - SYSTEM - (DE)ACTIVATE INTERNAL MODEM POWER (CONVERTIBLE)
AH = 44h
AL = new modem power state (00h power off, 01h power on)
Return: nothing
SeeAlso: AH=42h
--------b-1544C0-----------------------------
INT 15 - Olivetti Quaderno - INITIALIZE DIGITAL SIGNAL PROCESSING???
AX = 44C0h
ES:DI -> new DSP procedure (exchanged with CMOS[28h])
ES:SI -> ??? buffer
Return: ES:DI -> old DSP procedure
ES:SI buffer filled with ten bytes from CMOS (addresses 14h-1Ch)
followed by 00h (addresses 15h-1Ch copied only if less than 21h)
Note: this function is also supported by XBIOS.COM
SeeAlso: AX=44C9h
--------b-1544C1-----------------------------
INT 15 - Olivetti Quaderno - ???
AX = 44C1h
???
Return: ???
Note: this function is also supported by XBIOS.COM
SeeAlso: AX=44C9h
--------b-1544C2-----------------------------
INT 15 - Olivetti Quaderno - ???
AX = 44C2h
DL = byte to be written to I/O port 350h
Note: this function is also supported by XBIOS.COM
SeeAlso: AX=44C3h,AX=44C9h
--------b-1544C3-----------------------------
INT 15 - Olivetti Quaderno - GET ???
AX = 44C3h
Return: DH = bitfields (see #0391)
DL = value read from I/O port 350h
Note: this function is also supported by XBIOS.COM
SeeAlso: AX=44C2h,AX=44C9h
Bitfields for Olivetti Quaderno ???:
Bit(s) Description (Table 0391)
5-7 5-7 read from I/O port 351h
2-4 zero
1-0 "tres complique"
--------b-1544C4-----------------------------
INT 15 - Olivetti Quaderno - ???
AX = 44C4h and 44C5h
???
Return: ???
Note: this function is also supported by XBIOS.COM
SeeAlso: AX=44C9h
--------b-1544C6-----------------------------
INT 15 - Olivetti Quaderno - READ LCD
AX = 44C6h
Return: DX = FFFFh clock is displayed on LCD display
DX = other: hex number displayed in first four positions of display
BH = left alphanumeric character on display (see #0392)
BL = right alphanumeric character on display (see #0392)
CL = colon flags (see #0393)
Notes: the LCD display has the format HH:HH:AA, where H is a hex digit and A
is an alphanumeric character
this function is also supported by XBIOS.COM
SeeAlso: AX=44C7h,AX=44C9h
(Table 0392)
Values for Olivetti Quaderno LCD alphanumeric characters:
00h-0Fh hex digit
2Bh "+"
2Dh "-"
30h-39h "0" to "9"
41h-5Ah "A" to "Z"
61h-6Ah "a" to "z"
else blank
Bitfields for Olivetti Quaderno LCD colon flags:
Bit(s) Description (Table 0393)
0 left colon on
1 right colon on
2-7 unused
--------b-1544C7-----------------------------
INT 15 - Olivetti Quaderno - WRITE LCD
AX = 44C7h
DX = hex display
FFFFh display clock and "HI", "Md", or "Lo"
BH,BL,CL unused
other: display specified hex number in first four positions
BH = left alphanumeric character on display (see #0392)
BL = right alphanumeric character on display (see #0392)
CL = colon flags (see #0393)
Return: nothing
Note: this function is also supported by XBIOS.COM
SeeAlso: AX=44C6h
--------b-1544C8-----------------------------
INT 15 - Olivetti Quaderno - ???
AX = 44C8h
CL = ??? (00h,02h,21h)
CH = ???
???
Return: ???
Note: this function is also supported by XBIOS.COM
SeeAlso: AX=44C9h
--------b-1544C9-----------------------------
INT 15 - Olivetti Quaderno - GET XBIOS VERSION
AX = 44C9h
Return: AL = major version
AH = minor version
Note: this function is also supported by XBIOS.COM
--------B-1544F1-----------------------------
INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
AX = 44F1h
DS:DX -> byte with 00h ???
Return: ???
Note: used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
between USER and SUPERVISOR security level
SeeAlso: AX=44F2h,AX=44F3h
--------B-1544F2BX0604-----------------------
INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
AX = 44F2h
BX = 0604h ???
Return: CF = ???
AH = ???
DX = ???
Note: used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
between USER and SUPERVISOR security level
SeeAlso: AX=44F1h,AX=44F3h
--------B-1544F3-----------------------------
INT 15 U - Toshiba laptops - SECURITY LEVEL CHECK
AX = 44F3h
DS:DX -> byte with 00h or 01h ???
Return: DS:DX -> changed ???
Note: used by Toshiba BIOS setup utility TSETUP.EXE to distinguish
between USER and SUPERVISOR security level
SeeAlso: AX=44F1h,AX=44F2h
--------b-1545-------------------------------
INT 15 U - HP 100LX/200LX - SET DISPLAY CONTROL STATUS
AH = 45h
AL = new display control status
bit 0: DISPCTL flag +C instead of -C
bit 1: DISPCTL flag +K instead of -K
SeeAlso: AH=46h"HP",AH=47h"HP"
--------b-1546-------------------------------
INT 15 U - HP 100LX/200LX - SET POWER OFF TIMEOUT
AH = 46h
BX = timeout value in ticks
0000h inhibit auto power off
Note: the 200LX default timeout is 0CCDh = 3277 ticks = approx. 3 min.
SeeAlso: AH=45h"HP",AH=47h"HP"
--------b-154600-----------------------------
INT 15 - Compaq SLT/286 - READ POWER CONSERVATION/MODEM CONFIGURATION
AX = 4600h
Return: AH = modem configuration information (see #0394)
AL = power conservation status information (see #0395)
BH = default system inactivity timeout (1-21 minutes)
BL = current system inactivity timeout (1-21 minutes)
CH = default video display inactivity timeout (1-63 minutes)
CL = current video display inactivity timeout (1-63 minutes)
DH = default fixed disk drive inactivity timeout (1-21 minutes)
DL = current fixed disk drive inactivity timeout (1-21 minutes)
SeeAlso: AX=4280h,AX=4601h,INT 77
Bitfields for Compaq SLT/286 modem configuration information:
Bit(s) Description (Table 0394)
0 powerup state (0 off, 1 on)
1 modem installed
2 IRQ line assignment (0 IRQ 4, 1 IRQ 3)
3 COM port assignment (0 = COM 2, 1 = COM 1)
4 modem state (0 not assigned, 1 assigned)
5 modem is on
Bitfields for Compaq SLT/286 power conservation status:
Bit(s) Description (Table 0395)
0 power source (0 internal, 1 external)
1-2 low battery state
00 no low battery condition
01 low battery 1
10 reserved
11 low battery 2
3-4 power conservation mode
00 automatic, 01 on, 10 off, 11 reserved
--------b-154601-----------------------------
INT 15 - Compaq SLT/286 - MODIFY POWER CONSERVATION/MODEM CONFIGURATION
AX = 4601h
BL = system inactivity timeout (1-21 minutes)
FFh do not change
CL = video display inactivity timeout (1-63 minutes)
FFh do not change
DL = current fixed disk drive inactivity timeout (1-21 minutes)
FFh do not change
DH = new modem state (00h turn off, 01h turn on, FFh don't change)
Return: CF clear if successful
AH = 00h
BL = current system inactivity timeout (1-21 minutes)
CL = current video display inactivity timeout (1-63 minutes)
DL = current fixed disk drive inactivity timeout (1-21 minutes)
DH = modem state (FFh unchanged, 00h turned off, 01h turned on)
CF set on error
AH = error code
01h input is out of range
02h no modem present
SeeAlso: AX=4600h,INT 77
--------b-154604-----------------------------
INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - GET ???
AX = 4604h
Return: CF clear if successful
AL = byte read from I/O port 03F8h
CF set on error (not supported)
AH = 86h (unsupported function)
Note: also supported by 7/26/93 LTE Lite 386 ROM
--------b-154605-----------------------------
INT 15 - Compaq Contura 486 and "Alladin" 08/05/93 ROMs - ???
AX = 4605h
Return: CF clear if successful
CF set on error (not supported)
AH = 86h (unsupported function)
Note: this function is a NOP (other than clearing CF) in the 08/05/93 version
of the Contura 486/486c/486cx and "Aladdin" ROM, and the 7/26/93
LTE Lite 386 ROM
--------b-1547-------------------------------
INT 15 U - HP 100LX/200LX - GET/SET DISPLAY CONTRAST
AH = 47h
AL = subfunction
00h set contrast
BL = new contrast
(00h-0Fh, 0Fh is darkest, 10h-FFh are same as 0Fh)
other get current contrast
Return: AL = contrast (00h-0Fh, 0Fh is darkest)
Note: may be for backward compatibility with HP95LX, as INT 15/AH=62h does
substantially the same thing as this function
SeeAlso: AH=45h"HP",AH=48h"HP",AH=62h"HP"
--------b-1548-------------------------------
INT 15 U - HP 100LX/200LX - SET BUZZER VOLUME
AH = 48h
AL = volume (00h-03h; 03h is loudest, 04h-FFh are same as 03h)
SeeAlso: AH=47h"HP"
--------S-1549-------------------------------
INT 15 U - HP 100LX/200LX - SERIAL INTERFACE SELECT
AH = 49h
AL = serial interface
00h wired (COM1)
01h infrared
Note: interface should only be changed in deactivated state (see AH=4Ah)
SeeAlso: AH=4Ah"HP"
--------J-154900-----------------------------
INT 15 - Far East MS-DOS - GET BIOS TYPE
AX = 4900h
Return: CF clear if successful
AH = 00h
BL = BIOS mode
00h DOS/V
01h standard DBCS DOS (hardware DBCS support)
CF set on error
AH = 86h (function not supported)
Note: in practice, DOS/J returns AH=86h; AX DOS does not support this call
SeeAlso: AH=50h,INT 21/AH=30h
--------S-154A-------------------------------
INT 15 U - HP 100LX/200LX - SERIAL INTERFACE CONTROL
AH = 4Ah
AL = control
00h deactivate
01h activate
Note: interface selected with AH=49h will be (de)activated
SeeAlso: AH=49h"HP",AH=4Bh"HP"
--------b-154B-------------------------------
INT 15 U - HP 100LX/200LX - ADJUST SYSTEM TIME
AH = 4Bh
Desc: adjust system time based on real-time clock
SeeAlso: AH=4Ah"HP",INT 1A/AH=02h,INT 21/AH=2Ch
--------b-154DD4-----------------------------
INT 15 - HP 95LX/100LX/200LX - INSTALLATION CHECK
AX = 4DD4h
Return: BX = 4850h ("HP") if HP 95LX/100LX/200LX
CX = model
0101h HP 95LX
0102h HP 100LX/200LX
DH = ???
02h HP 200LX 2MB BIOS 1.01 A D german
DL = ???
00h HP 95LX
01h HP 200LX 2MB BIOS 1.01 A D german
SeeAlso: INT 0B"HP 95LX",INT 0F"HP 95LX",INT 5F/AH=00h,INT 60/DI=0100h
SeeAlso: INT 61"HP 95LX"
--------b-154E-------------------------------
INT 15 - HP 95LX - ENABLE/DISABLE LIGHT SLEEP
AH = 4Eh
AL = light sleep
00h disabled
01h enabled
Note: when light sleep is disabled, the system will continue running at full
speed; when enabled, it may automatically slow to conserve batteries
SeeAlso: INT 06"HP 95LX",INT 60/DI=0100h
----------154E-------------------------------
INT 15 - IBM SurePath BIOS - Officially "Private" Function
AH = 4Eh
SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
--------B-154F-------------------------------
INT 15 C - KEYBOARD - KEYBOARD INTERCEPT (AT model 3x9,XT2,XT286,CONV,PS)
AH = 4Fh
AL = hardware scan code (see #0005)
CF set
Return: CF set to continue processing scan code
AL = possibly-altered hardware scan code (see #0005)
CF clear
scan code should be ignored
Notes: called by INT 09 handler to translate scan codes; the INT 09 code does
not examine the scan code it reads from the keyboard until after
this function returns. This permits software to rearrange the
keyboard; for example, swapping the CapsLock and Control keys, or
turning the right Shift key into Enter.
DOS 6 KEYB.COM will not pass through this function if Ctrl-Alt-Del is
pressed and a SmartDrive v4-compatible cache is installed which has
dirty cache buffers; some other disk caches such as HyperDisk
operate similarly in order to prevent loss of cached data which has
not yet been written to disk
IBM classifies this function as required
SeeAlso: INT 09,INT 15/AH=C0h
--------J-1550-------------------------------
INT 15 - DOS/V - FONT SUBSYSTEM ACCESS
AH = 50h
AL = which function address to retrieve
00h "read font" function
01h "write font" function
BL = 00h
BH = character size (00h single-byte, 01h double-byte)
DH = width of character cell
DL = height of character cell
BP = code page (see #0396)
Return: CF clear if successful
AH = 00h
ES:BX -> requested function's address
CF set on error
AH = error code (see #0397)
SeeAlso: AH=49h
(Table 0396)
Values for DOS/V code page:
0 default
437 US English
932 Japanese
934 Korea
936 China
938 Taiwan
SeeAlso: #1446
(Table 0397)
Values for DOS/V error code:
01h invalid font type in BH
02h BL not zero
03h invalid font size
04h invalid code page
80h unsupported function (PC)
86h unsupported function (XT)
SeeAlso: #1366
--------T-1550-------------------------------
INT 15 - VMIX v2.???+ - "sys_vm_page" - SET NEW VIRTUAL PAGE TABLE
AH = 50h
BX = segment of page directory table
CX = page number of page table
SeeAlso: AH=10h"VMiX",AH=51h"VMiX",AH=52h"VMiX"
--------T-1551-------------------------------
INT 15 - VMiX v2.???+ - "sys_vm_func" - EXECUTE FUNCTION IN PROTECTED MODE
AH = 51h
STACK: DWORD selector:offset of function
Return: registers as returned by function
Note: executes function with privilege level 0 (highest privilege)
SeeAlso: AH=10h"VMiX",AH=52h"VMiX"
--------B-155101-----------------------------
INT 15 - SYSTEM - later PS/2s - EXPANSION UNIT, RETURN CONFIGURATION NUMBER
AX = 5101h
Return: CF set if successful
AH = 00h
AL = current configuration number
00h system unit only
FFh configuration not recognized
BX = status flag
bits 0-14: reserved
bit 15: additional data is available (location TBD)
CF clear on error
AH = status
01h expansion unit is not present
86h function not supported
Note: CF convention is the reverse of the standard convention for this
interrupt. (Perhaps a typo in the IBM BIOS Tech Ref?)
--------T-1552-------------------------------
INT 15 - VMiX v2.???+ - "sys_vm_init" - INITIALIZE PROTECTED-MODE ENVIRONMENT
AH = 52h
SeeAlso: AH=50h"VMiX",AH=51h"VMiX"
--------d-1552-------------------------------
INT 15 C - IBM/MS INT 13 Extensions - MEDIA EJECT INTERCEPT
AH = 52h
DL = drive number
Return: CF clear if OK to eject media
AH = 00h
CF set if ejection disallowed
AH = error code (B1h,B3h) (see #0166)
Note: called by the IBM/MS INT 13 Extensions driver/BIOS when an ejection
request is made
SeeAlso: INT 13/AH=46h"INT 13 Extensions"
--------p-155300-----------------------------
INT 15 - Advanced Power Management v1.0+ - INSTALLATION CHECK
AX = 5300h
BX = device ID of system BIOS (0000h)
Return: CF clear if successful
AH = major version (BCD)
AL = minor version (BCD)
BX = 504Dh ("PM")
CX = flags (see #0398)
CF set on error
AH = error code (06h,09h,86h) (see #0399)
BUG: early versions of the Award Modular BIOS with built-in APM support
reportedly do not set BX on return
Bitfields for APM flags:
Bit(s) Description (Table 0398)
0 16-bit protected mode interface supported
1 32-bit protected mode interface supported
2 CPU idle call reduces processor speed
3 BIOS power management disabled
4 BIOS power management disengaged (APM v1.1)
5-7 reserved
(Table 0399)
Values for APM error code:
01h power management functionality disabled
02h interface connection already in effect
03h interface not connected
04h real-mode interface not connected
05h 16-bit protected-mode interface already connected
06h 16-bit protected-mode interface not supported
07h 32-bit protected-mode interface already connected
08h 32-bit protected-mode interface not supported
09h unrecognized device ID
0Ah invalid parameter value in CX
0Bh (APM v1.1) interface not engaged
0Ch (APM v1.2) function not supported
0Dh (APM v1.2) Resume Timer disabled
0Eh-1Fh reserved for other interface and general errors
20h-3Fh reserved for CPU errors
40h-5Fh reserved for device errors
60h can't enter requested state
61h-7Fh reserved for other system errors
80h no power management events pending
81h-85h reserved for other power management event errors
86h APM not present
87h-9Fh reserved for other power management event errors
A0h-FEh reserved
FFh undefined
--------p-155301-----------------------------
INT 15 - Advanced Power Management v1.0+ - CONNECT REAL-MODE INTERFACE
AX = 5301h
BX = device ID of system BIOS (0000h)
Return: CF clear if successful
CF set on error
AH = error code (02h,05h,07h,09h) (see #0399)
Note: on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
compatibility mode until it is informed that the user supports a
newer version of APM (see AX=530Eh)
SeeAlso: AX=5302h,AX=5303h,AX=5304h
--------p-155302-----------------------------
INT 15 R - Advanced Power Management v1.0+ - CONNECT 16-BIT PROTMODE INTERFACE
AX = 5302h
BX = device ID of system BIOS (0000h)
Return: CF clear if successful
AX = real-mode segment base address of protected-mode 16-bit code
segment
BX = offset of entry point
CX = real-mode segment base address of protected-mode 16-bit data
segment
---APM v1.1---
SI = APM BIOS code segment length
DI = APM BIOS data segment length
CF set on error
AH = error code (02h,05h,06h,07h,09h) (see #0399)
Notes: the caller must initialize two consecutive descriptors with the
returned segment base addresses; these descriptors must be valid
whenever the protected-mode interface is called, and will have
their limits arbitrarily set to 64K.
the protected mode interface is invoked by making a far call with the
same register values as for INT 15; it must be invoked while CPL=0,
the code segment descriptor must have a DPL of 0, the stack must be
in a 16-bit segment and have enough room for BIOS use and possible
interrupts, and the current I/O permission bit map must allow access
to the I/O ports used for power management.
functions 00h-03h are not available from protected mode
on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
compatibility mode until it is informed that the user supports a
newer version of APM (see AX=530Eh)
SeeAlso: AX=5301h,AX=5303h,AX=5304h
--------p-155303-----------------------------
INT 15 - Advanced Power Management v1.0+ - CONNECT 32-BIT PROTMODE INTERFACE
AX = 5303h
BX = device ID of system BIOS (0000h)
Return: CF clear if successful
AX = real-mode segment base address of protected-mode 32-bit code
segment
EBX = offset of entry point
CX = real-mode segment base address of protected-mode 16-bit code
segment
DX = real-mode segment base address of protected-mode 16-bit data
segment
---APM v1.1---
SI = APM BIOS code segment length
DI = APM BIOS data segment length
CF set on error
AH = error code (02h,05h,07h,08h,09h) (see #0399)
Notes: the caller must initialize three consecutive descriptors with the
returned segment base addresses for 32-bit code, 16-bit code, and
16-bit data, respectively; these descriptors must be valid whenever
the protected-mode interface is called, and will have their limits
arbitrarily set to 64K.
the protected mode interface is invoked by making a far call to the
32-bit code segment with the same register values as for INT 15; it
must be invoked while CPL=0, the code segment descriptor must have a
DPL of 0, the stack must be in a 32-bit segment and have enough room
for BIOS use and possible interrupts, and the current I/O permission
bit map must allow access to the I/O ports used for power management.
functions 00h-03h are not available from protected mode
on connection, an APM v1.1 or v1.2 BIOS switches to APM v1.0
compatibility mode until it is informed that the user supports a
newer version of APM (see AX=530Eh)
SeeAlso: AX=5301h,AX=5302h,AX=5304h
--------p-155304-----------------------------
INT 15 - Advanced Power Management v1.0+ - DISCONNECT INTERFACE
AX = 5304h
BX = device ID of system BIOS (0000h)
Return: CF clear if successful
CF set on error
AH = error code (03h,09h) (see #0399)
SeeAlso: AX=5301h,AX=5302h,AX=5303h
--------p-155305-----------------------------
INT 15 - Advanced Power Management v1.0+ - CPU IDLE
AX = 5305h
Return: CF clear if successful (after system leaves idle state)
CF set on error
AH = error code (03h,0Bh) (see #0399)
Notes: call when the system is idle and should be suspended until the next
system event or interrupt
should not be called from within a hardware interrupt handler to avoid
reentrance problems
if an interrupt causes the system to resume normal processing, the
interrupt may or may not have been handled when the BIOS returns
from this call; thus, the caller should allow interrupts on return
interrupt handlers may not retain control if the BIOS allows
interrupts while in idle mode even if they are able to determine
that they were called from idle mode
the caller should issue this call continuously in a loop until it needs
to perform some processing of its own
SeeAlso: AX=1000h,AX=5306h,INT 2F/AX=1680h
--------p-155306-----------------------------
INT 15 - Advanced Power Management v1.0+ - CPU BUSY
AX = 5306h
Return: CF clear if successful
CF set on error
AH = error code (03h,0Bh) (see #0399)
Notes: called to ensure that the system runs at full speed even on systems
where the BIOS is unable to recognize increased activity (especially
if interrupts are hooked by other programs and not chained to the
BIOS)
this call may be made even when the system is already running at full
speed, but it will create unnecessary overhead
should not be called from within a hardware interrupt handler to avoid
reentrance problems
SeeAlso: AX=5305h
--------p-155307-----------------------------
INT 15 - Advanced Power Management v1.0+ - SET POWER STATE
AX = 5307h
BX = device ID (see #0400)
CX = system state ID (see #0401)
Return: CF clear if successful
CF set on error
AH = error code (01h,03h,09h,0Ah,0Bh,60h) (see #0399)
Note: should not be called from within a hardware interrupt handler to avoid
reentrance problems
SeeAlso: AX=530Ch
(Table 0400)
Values for APM device IDs:
0000h system BIOS
0001h all devices for which the system BIOS manages power
01xxh display (01FFh for all attached display devices)
02xxh secondary storage (02FFh for all attached secondary storage devices)
03xxh parallel ports (03FFh for all attached parallel ports)
04xxh serial ports (04FFh for all attached serial ports)
---APM v1.1+ ---
05xxh network adapters (05FFh for all attached network adapters)
06xxh PCMCIA sockets (06FFh for all)
0700h-7FFFh reserved
80xxh system battery devices (APM v1.2)
8100h-DFFFh reserved
Exxxh OEM-defined power device IDs
F000h-FFFFh reserved
(Table 0401)
Values for system state ID:
0000h ready (not supported for device ID 0001h)
0001h stand-by
0002h suspend
0003h off (not supported for device ID 0001h)
---APM v1.1---
0004h last request processing notification (only for device ID 0001h)
0005h last request rejected (only for device ID 0001h)
0006h-001Fh reserved system states
0020h-003Fh OEM-defined system states
0040h-007Fh OEM-defined device states
0080h-FFFFh reserved device states
--------p-155307CX0001-----------------------
INT 15 - Advanced Power Management v1.0+ - SYSTEM STAND-BY
AX = 5307h
CX = 0001h
BX = 0001h (device ID for all power-managed devices)
Return: CF clear
Notes: puts the entire system into stand-by mode; normally called in response
to a System Stand-by Request notification after any necessary
processing, but may also be invoked at the caller's discretion
should not be called from within a hardware interrupt handler to avoid
reentrance problems
the stand-by state is typically exited on an interrupt
SeeAlso: AX=4280h,AX=5307h/CX=0002h"SUSPEND",AX=530Bh
--------p-155307CX0002-----------------------
INT 15 - Advanced Power Management v1.0+ - SUSPEND SYSTEM
AX = 5307h
CX = 0002h
BX = 0001h (device ID for all power-managed devices)
Return: after system is resumed
CF clear
Notes: puts the entire system into a low-power suspended state; normally
called in response to a Suspend System Request notification after
any necessary processing, but may also be invoked at the caller's
discretion
should not be called from within a hardware interrupt handler to avoid
reentrance problems
the caller may need to update its date and time values because the
system could have been suspended for a long period of time
SeeAlso: AX=5307h/CX=0001h"STAND-BY",AX=530Bh
--------p-155308-----------------------------
INT 15 - Advanced Power Management v1.0+ - ENABLE/DISABLE POWER MANAGEMENT
AX = 5308h
BX = device ID for all devices power-managed by APM
0001h (APM v1.1+)
FFFFh (APM v1.0)
CX = new state
0000h disabled
0001h enabled
Return: CF clear if successful
CF set on error
AH = error code (01h,03h,09h,0Ah,0Bh) (see #0399)
Notes: when power management is disabled, the system BIOS will not
automatically power down devices, enter stand-by or suspended mode,
or perform any power-saving actions in response to AX=5305h calls
should not be called from within a hardware interrupt handler to avoid
reentrance problems
the APM BIOS should never be both disabled and disengaged at the same
time
SeeAlso: AX=5309h,AX=530Dh,AX=530Fh
--------p-155309-----------------------------
INT 15 - Advanced Power Management v1.0+ - RESTORE POWER-ON DEFAULTS
AX = 5309h
BX = device ID for all devices power-managed by APM
0001h (APM v1.1)
FFFFh (APM v1.0)
Return: CF clear if successful
CF set on error
AH = error code (03h,09h,0Bh) (see #0399)
Note: should not be called from within a hardware interrupt handler to avoid
reentrance problems
SeeAlso: AX=5308h
--------p-15530A-----------------------------
INT 15 - Advanced Power Management v1.0+ - GET POWER STATUS
AX = 530Ah
BX = device ID
0001h all devices power-managed by APM
80xxh specific battery unit number XXh (01h-FFh) (APM v1.2)
Return: CF clear if successful
BH = AC line status
00h off-line
01h on-line
02h on backup power (APM v1.1)
FFh unknown
other reserved
BL = battery status (see #0402)
CH = battery flag (APM v1.1+) (see #0403)
CL = remaining battery life, percentage
00h-64h (0-100) percentage of full charge
FFh unknown
DX = remaining battery life, time (APM v1.1) (see #0404)
---if specific battery unit specified---
SI = number of battery units currently installed
CF set on error
AH = error code (09h,0Ah) (see #0399)
Notes: should not be called from within a hardware interrupt handler to avoid
reentrance problems
supported in real mode (INT 15) and both 16-bit and 32-bit protected
mode
(Table 0402)
Values for APM v1.0+ battery status:
00h high
01h low
02h critical
03h charging
FFh unknown
other reserved
SeeAlso: #0403,#0404
Bitfields for APM v1.1+ battery flag:
Bit(s) Description (Table 0403)
0 high
1 low
2 critical
3 charging
4 selected battery not present (APM v1.2)
5-6 reserved (0)
7 no system battery
Note: all bits set (FFh) if unknown
SeeAlso: #0402,#0404
Bitfields for APM v1.1+ remaining battery life:
Bit(s) Description (Table 0404)
15 time units: 0=seconds, 1=minutes
14-0 battery life in minutes or seconds
Note: all bits set (FFFFh) if unknown
SeeAlso: #0402,#0403
--------p-15530B-----------------------------
INT 15 - Advanced Power Management v1.0+ - GET POWER MANAGEMENT EVENT
AX = 530Bh
Return: CF clear if successful
BX = event code (see #0405)
CX = event information (APM v1.2) if BX=0003h or BX=0004h
bit 0: PCMCIA socket was powered down in suspend state
CF set on error
AH = error code (03h,0Bh,80h) (see #0399)
Notes: although power management events are often asynchronous, notification
will not be made until polled via this call to permit software to
only receive event notification when it is prepared to process
power management events; since these events are not very time-
critical, it should be sufficient to poll once or twice per second
the critical resume notification is made after the system resumes
from an emergency suspension; normally, the system BIOS only notifies
its partner that it wishes to suspend and relies on the partner to
actually request the suspension, but no notification is made on an
emergency suspension
should not be called from within a hardware interrupt handler to avoid
reentrance problems
SeeAlso: AX=5307h,AX=5307h/CX=0001h"STAND-BY",AX=5307h/CX=0002h"SUSPEND"
(Table 0405)
Values for APM event code:
0001h system stand-by request
0002h system suspend request
0003h normal resume system notification
0004h critical resume system notification
0005h battery low notification
---APM v1.1---
0006h power status change notification
0007h update time notification
0008h critical system suspend notification
0009h user system standby request notification
000Ah user system suspend request notification
000Bh system standby resume notification
---APM v1.2---
000Ch capabilities change notification (see AX=5310h)
------
000Dh-00FFh reserved system events
01xxh reserved device events
02xxh OEM-defined APM events
0300h-FFFFh reserved
--------p-15530C-----------------------------
INT 15 - Advanced Power Management v1.1+ - GET POWER STATE
AX = 530Ch
BX = device ID (see #0400)
Return: CF clear if successful
CX = system state ID (see #0401)
CF set on error
AH = error code (01h,09h) (see #0399)
SeeAlso: AX=5307h
--------p-15530D-----------------------------
INT 15 - Advanced Power Management v1.1+ - EN/DISABLE DEVICE POWER MANAGEMENT
AX = 530Dh
BX = device ID (see #0400)
CX = function
0000h disable power management
0001h enable power management
Return: CF clear if successful
CF set on error
AH = error code (01h,03h,09h,0Ah,0Bh) (see #0399)
Desc: specify whether automatic power management should be active for a
given device
SeeAlso: AX=5308h,AX=530Fh
--------p-15530E-----------------------------
INT 15 - Advanced Power Management v1.1+ - DRIVER VERSION
AX = 530Eh
BX = device ID of system BIOS (0000h)
CH = APM driver major version (BCD)
CL = APM driver minor version (BCD) (02h for APM v1.2)
Return: CF clear if successful
AH = APM connection major version (BCD)
AL = APM connection minor version (BCD)
CF set on error
AH = error code (03h,09h,0Bh) (see #0399)
SeeAlso: AX=5300h,AX=5303h
--------p-15530F-----------------------------
INT 15 - Advanced Power Management v1.1+ - ENGAGE/DISENGAGE POWER MANAGEMENT
AX = 530Fh
BX = device ID (see #0400)
CX = function
0000h disengage power management
0001h engage power management
Return: CF clear if successful
CF set on error
AH = error code (01h,09h) (see #0399)
Notes: unlike AX=5308h, this call does not affect the functioning of the APM
BIOS
when cooperative power management is disengaged, the APM BIOS performs
automatic power management of the system or device
SeeAlso: AX=5308h,AX=530Dh
--------p-155310-----------------------------
INT 15 - Advanced Power Management v1.2 - GET CAPABILITIES
AX = 5310h
BX = device ID (see #0400)
0000h (APM BIOS)
other reserved
Return: CF clear if successful
BL = number of battery units supported (00h if no system batteries)
CX = capabilities flags (see #0406)
CF set on error
AH = error code (01h,09h,86h) (see #0399)
Notes: this function is supported via the INT 15, 16-bit protected mode, and
32-bit protected mode interfaces; it does not require that a
connection be established prior to use
this function will return the capabilities currently in effect, not
any new settings which have been made but do not take effect until
a system restart
SeeAlso: AX=5300h,AX=530Fh,AX=5311h,AX=5312h,AX=5313h
Bitfields for APM v1.2 capabilities flags:
Bit(s) Description (Table 0406)
0 can enter global standby state
1 can enter global suspend state
2 resume timer will wake up system from standby mode
3 resume timer will wake up system from suspend mode
4 Resume on Ring Indicator will wake up system from standby mode
5 Resume on Ring Indicator will wake up system from suspend mode
6 PCMCIA Ring Indicator will wake up system from standby mode
7 PCMCIA Ring Indicator will wake up system from suspend mode
--------p-155311-----------------------------
INT 15 - Advanced Power Management v1.2 - GET/SET/DISABLE RESUME TIMER
AX = 5311h
BX = device ID (see #0400)
0000h (APM BIOS)
other reserved
CL = function
00h disable Resume Timer
01h get Resume Timer
02h set Resume Timer
CH = resume time, seconds (BCD)
DL = resume time, minutes (BCD)
DH = resume time, hours (BCD)
SI = resume date (BCD), high byte = month, low byte = day
DI = resume date, year (BCD)
Return: CF clear if successful
---if getting timer---
CH = resume time, seconds (BCD)
DL = resume time, minutes (BCD)
DH = resume time, hours (BCD)
SI = resume date (BCD), high byte = month, low byte = day
DI = resume date, year (BCD)
CF set on error
AH = error code (03h,09h,0Ah,0Bh,0Ch,0Dh,86h) (see #0399)
Notes: this function is supported via the INT 15, 16-bit protected mode, and
32-bit protected mode interfaces
SeeAlso: AX=5300h,AX=5310h,AX=5312h,AX=5313h
--------p-155312-----------------------------
INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE RESUME ON RING
AX = 5312h
BX = device ID (see #0400)
0000h (APM BIOS)
other reserved
CL = function
00h disable Resume on Ring Indicator
01h enable Resume on Ring Indicator
02h get Resume on Ring Indicator status
Return: CF clear if successful
CX = resume status (0000h disabled, 0001h enabled)
CF set on error
AH = error code (03h,09h,0Ah,0Bh,0Ch,86h) (see #0399)
Notes: this function is supported via the INT 15, 16-bit protected mode, and
32-bit protected mode interfaces
SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5313h
--------p-155313-----------------------------
INT 15 - Advanced Power Management v1.2 - ENABLE/DISABLE TIMER-BASED REQUESTS
AX = 5313h
BX = device ID (see #0400)
0000h (APM BIOS)
other reserved
CL = function
00h disable timer-based requests
01h enable timer-based requests
02h get timer-based requests status
Return: CF clear if successful
CX = timer-based requests status (0000h disabled, 0001h enabled)
CF set on error
AH = error code (03h,09h,0Ah,0Bh,86h) (see #0399)
Notes: this function is supported via the INT 15, 16-bit protected mode, and
32-bit protected mode interfaces
SeeAlso: AX=5300h,AX=5310h,AX=5311h,AX=5312h
--------p-155380BH00-------------------------
INT 15 - APM SL Enhanced v1.0 - GET SUSPEND/GLOBAL STANDBY MODE
AX = 5380h
BH = 00h
Return: CF clear if successful
AL = 82360SL Auto Power Off Timer High Count (APWR_TMRH)
BL = sustdbymode (see #0407)
SeeAlso: AX=5380h/BH=01h,AX=5380h/BH=02h,AX=5380h/BH=7Fh
Bitfields for APM SL sustdbymode:
Bit(s) Description (Table 0407)
2 ???
1 Auto Power Off Timer Enable (APWR_TMR_EN)
0 ???
--------p-155380BH01-------------------------
INT 15 - APM SL Enhanced v1.0 - SET SUSPEND/GLOBAL STANDBY MODE
AX = 5380h
BH = 01h
BL = sustdbymode (see #0407)
Return: CF clear if successful
SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
--------p-155380BH02-------------------------
INT 15 - APM SL Enhanced v1.0 - GET GLOBAL STANDBY TIMER
AX = 5380h
BH = 02h
Return: CF clear if successful
SI:DI = timer count in seconds (actually 1.024 seconds)
Desc: reads the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=03h,AX=5380h/BH=04h,AX=5380h/BH=7Fh
--------p-155380BH03-------------------------
INT 15 - APM SL Enhanced v1.0 - SET GLOBAL STANDBY TIMER
AX = 5380h
BH = 03h
SI:DI = timer count in seconds (actually 1.024 seconds)
Return: CF clear if successful
Desc: sets the value of 82360SL GSTDBY_TMRH & GSTDBY_TMRL registers
Note: the maximum timer count is 268431 seconds
SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=7Fh
--------p-155380BH04-------------------------
INT 15 - APM SL Enhanced v1.0 - GET AUTO POWER OFF TIMER
AX = 5380h
BH = 04h
Return: CF clear if successful
SI:DI = timer count in seconds (actually 1.024 seconds)
Desc: reads the value of 82360SL APWR_TMRH & APWR_TMRL registers
SeeAlso: AX=5380h/BH=02h,AX=5380h/BH=05h,AX=5380h/BH=06h,AX=5380h/BH=7Fh
--------p-155380BH05-------------------------
INT 15 - APM SL Enhanced v1.0 - SET AUTO POWER OFF TIMER
AX = 5380h
BH = 05h
SI:DI = timer count in seconds (actually 1.024 seconds)
Return: CF clear if successful
Desc: sets the value of 82360SL APWR_TMRH & APWR_TMRL registers
Note: the maximum timer count is 134213 seconds
SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=7Fh
--------p-155380BH06-------------------------
INT 15 - APM SL Enhanced v1.0 - GET RESUME CONDITION
AX = 5380h
BH = 06h
Return: CF clear if successful
BL = resume condition (see #0408)
Desc: reads the value of 82360SL RESUME_MASK register
SeeAlso: AX=5380h/BH=04h,AX=5380h/BH=07h,AX=5380h/BH=08h,AX=5380h/BH=7Fh
Bitfields for APM SL resume condition:
Bit(s) Description (Table 0408)
7-2 reserved (0)
1 alarm enabled (resume on CMOS alarm)
0 ring enabled
--------p-155380BH07-------------------------
INT 15 - APM SL Enhanced v1.0 - SET RESUME CONDITION
AX = 5380h
BH = 07h
BL = resume condition (see #0408)
Return: CF clear if successful
Desc: sets the value of 82360SL RESUME_MASK register
SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=7Fh
--------p-155380BH08-------------------------
INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT TIME
AX = 5380h
BH = 08h
Return: CF clear if successful
CH = hours
CL = minutes
SI = seconds
CF set on error
AH = error code (see #0409)
Desc: gets calendar event time from CMOS ram
SeeAlso: AX=5380h/BH=06h,AX=5380h/BH=09h,AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
(Table 0409)
Values for APM SL error code:
02h no alarm set
03h no battery
--------p-155380BH09-------------------------
INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT TIME
AX = 5380h
BH = 09h
CH = hours
CL = minutes
SI = seconds
Return: CF clear if successful
CF set on error
AH = error code (see #0409)
Desc: sets calendar event time in CMOS ram, enables Alarm resume
SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=7Fh
--------p-155380BH0A-------------------------
INT 15 - APM SL Enhanced v1.0 - GET CALENDAR EVENT DATE
AX = 5380h
BH = 0Ah
Return: CF clear if successful
SI = century
DI = year
CH = month
CL = day
CF set on error
AH = error code (see #0409)
Desc: reads calendar event date from Extended CMOS ram
SeeAlso: AX=5380h/BH=08h,AX=5380h/BH=0Bh,AX=5380h/BH=0Ch,AX=5380h/BH=7Fh
--------p-155380BH0B-------------------------
INT 15 - APM SL Enhanced v1.0 - SET CALENDAR EVENT DATE
AX = 5380h
BH = 0Bh
SI = century
DI = year
CH = month
CL = day
Return: CF clear if successful
CF set on error
AH = error code (see #0409)
Desc: sets calendar event date in Extended CMOS ram
SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=7Fh
--------p-155380BH0C-------------------------
INT 15 - APM SL Enhanced v1.0 - GET CPU SPEED MODE
AX = 5380h
BH = 0Ch
Return: CF clear if successful
CL = CPU clock divider (1,2,4 or 8)
BL = autocpumode ???
Desc: reads bits 4-5 of CPUPWRMODE register
SeeAlso: AX=5380h/BH=0Ah,AX=5380h/BH=0Dh,AX=5380h/BH=7Fh
--------p-155380BH0D-------------------------
INT 15 - APM SL Enhanced v1.0 - SET CPU SPEED MODE
AX = 5380h
BH = 0Dh
CL = CPU clock divider (1,2,4 or 8)
BL = autocpumode ???
Return: CF clear if successful
Desc: writes bits 4-5 of CPUPWRMODE register
SeeAlso: AX=5380h/BH=0Ch,AX=5380h/BH=7Eh,AX=5380h/BH=7Fh
--------p-155380BH7E-------------------------
INT 15 - APM SL Enhanced v1.0 - SL HW PARAMETER
AX = 5380h
BH = 7Eh
Return: AL = ???
03h on A-Step 386SL BIOSes
12h on later steps
BX = Control port (00B0h)
SeeAlso: AX=5380h/BH=00h,AX=5380h/BH=7Fh
--------p-155380BH7F-------------------------
INT 15 - Advanced Power Management v1.1 - OEM APM INSTALLATION CHECK
AX = 5380h
BH = 7Fh
Return: CF clear if successful
BX = OEM identifier
all other registers OEM-defined
---Intel SL Enhanced Option BIOS---
BX = 534Ch ('SL')
CL = 4Fh ('O')
AL = version (10h = 1.0)
---HP APM BIOS---
BX = 4850h ('HP')
CX = version (0001h)
CF set on error
AH = error code (03h) (see #0399)
SeeAlso: AX=5380h/BH=00h
--------p-155380-----------------------------
INT 15 - Advanced Power Management v1.1 - OEM APM FUNCTIONS
AX = 5380h
BH <> 7Fh
all other registers OEM-defined
Return: OEM-defined
SeeAlso: AX=5380h/BH=7Fh
--------X-1553B0BH00-------------------------
INT 15 - Intel System Management Bus - RESERVED
AX = 53B0h
BH = 00h
Program: the SMBus is a variant of ACCESS.bus being used by Intel and Duracell
for the Smart Battery proposal, but designed to be generic enough to
handle other devices besides batteries
--------X-1553B0BH01-------------------------
INT 15 - Intel System Management Bus - INSTALLATION CHECK
AX = 53B0h
BH = 01h
BL = 72h ('r')
CX = 6164h ('ad')
Return: CF clear if installed
AH = SMBus BIOS Interface Specification major version (01h)
AL = SMBus BIOS Interface Specification minor version (00h)
BL = number of SMBus devices present
CX = 6941h ('iA')
DX = vendor-specified SMBus hardware code
0000h means undefined hardware type
CF set if error
AH = Error code 0Ah, 86h (see #0410)
Note: this function is only supported in INT 15h mode
SeeAlso: AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=06h
(Table 0410)
Values for Intel System Management Bus error codes:
00h SMBus OK
01h SMBus connect failed
02h SMBus already connected (see also #0411)
03h SMBus disconnect failed
04h SMBus not connected
05h SMBus INT 15 interface disabled
06h SMBus device address request out of range
07h SMBus unknown failure
08h SMBus message list empty
09h SMBus message list overflow
0Ah SMBus invalid signature
10h SMBus device address not acknowledged
11h SMBus device error detected
12h SMBus device command access denied
13h SMBus unknown error
14h SMBus transaction pending
15h SMBus no transaction pending
16h SMBus request does not match pending transaction
17h SMBus device access denied
18h SMBus timeout
19h SMBus protocol not supported
1Ah SMBus busy
1Bh SMBus SMI detected
80h SMBus OK (previously unreported SMI occurred)
86h SMBus not supported
(Table 0411)
Values for Intel System Management Bus Already Connected sub-error codes:
01h real mode connect already established
02h 16-bit PMode connect already established
03h 32-bit PMode connect already established
SeeAlso: #0410
--------X-1553B0BH02-------------------------
INT 15 - Intel System Management Bus - REAL MODE CONNECT
AX = 53B0h
BH = 02h
CX = 6941h ('iA')
Return: CF clear if successful
AX = SMBus Real mode code segment
BX = offset of entry point into SMBus BIOS Interface
CX = SMBus Real mode data segment
CF set if error
AH = error code (01h,02h,0Ah,86h) (see #0410)
AL = sub-error code if error code is 02h (see #0411)
Desc: connect to SMBus interface; once connected, all SMBus calls are made
to the supplied entry point instead of INT 15 (with registers
identical to those described here for INT 15)
Notes: Support for this function is optional
this function is only supported in INT 15 mode when implemented
SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=03h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
--------X-1553B0BH03-------------------------
INT 15 - Intel System Management Bus - 16-BIT PROTECTED-MODE CONNECT
AX = 53B0h
BH = 03h
CX = 6941h ('iA')
Return: CF clear if successful
AX = SMBus 16-bit code segment (real mode base address)
BX = offset of entry point into SMBus BIOS Interface
CX = SMBus 16-bit data segment (real mode base address)
SI = code segment length in bytes
DI = data segment length in bytes
CF set if error
AH = error code (01h,02h,0Ah,86h) (see #0410)
AL = sub-error code if error code is 02h (see #0411)
Desc: connect to SMBus interface; once connected, all SMBus calls are made
to the supplied entry point instead of INT 15 (with registers
identical to those described here for INT 15)
Notes: before calling the entry point, two descriptors must be initialized
in the GDT or LDT. They must be consecutive and be in the order of
code, then data. At the time of the call, the descriptors must be
valid and have CPL=0.
the code descriptor must be ring-0 privilege
this function is only supported in INT 15 mode
SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=04h,AX=53B0h/BH=05h
--------X-1553B0BH04-------------------------
INT 15 - Intel System Management Bus - 32-BIT PROTECTED-MODE CONNECT
AX = 53B0h
BH = 04h
CX = 6941h ('iA')
Return: CF clear if successful
AX = SMBus 32-bit code segment (real mode base address)
EBX = offset of entry point into SMBus BIOS Interface
CX = SMBus 16-bit code segment (real mode base address)
DX = SMBus data segment (real mode base address)
SI = code segment length in bytes
DI = data segment length in bytes
CF set if error
AH = error code (01h,02h,0Ah,86h) (see #0410)
AL = sub-error code if error code is 02h (see #0411)
Desc: connect to SMBus interface; once connected, all SMBus calls are made
to the supplied entry point instead of INT 15 (with registers
identical to those described here for INT 15)
Notes: before calling the entry point, two descriptors must be initialized in
the GDT or LDT. They must be consecutive and be in the order of
32-bit code, 16-bit code, then data. At the time of the call, the
descriptors must be valid and have CPL=0.
the code descriptors must be ring-0 privilege
this function is supported only in INT 15 mode
SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=05h
--------X-1553B0BH05-------------------------
INT 15 - Intel System Management Bus - DISCONNECT
AX = 53B0h
BH = 05h
CX = 6941h ('iA')
Return: CF clear if successful
AH = 00h (SMBus OK)
CF set if error
AH = error code (03h,04h,05h,0Ah,86h) (see #0410)
Note: this function is supported in connected mode (far CALL entry point)
only
SeeAlso: AX=53B0h/BH=01h,AX=53B0h/BH=02h,AX=53B0h/BH=03h,AX=53B0h/BH=04h
--------X-1553B0BH06-------------------------
INT 15 - Intel System Management Bus - GET DEVICE ADDRESSES
AX = 53B0h
BH = 06h
BL = position in list to report
CH = 6941h ('iA')
Return: CF clear if successful
AH = 00h (SMBus OK)
BH = number of SMBus devices
BL = SMBus Device Address of device at position BL in list
(see #0412)
CF set if error
AH = error code (06h,0Ah,86h) (see #0410)
Desc: retrieves already assigned SMBus device addresses
Notes: this function is supported in INT 15h mode only
bit 0 of the device address indicates read/write, so a device may
be listed at both xxxxxxx0b and xxxxxxx1b
(Table 0412)
Values for System Management Bus predefined device addresses:
10h SMBus host
12h Smart Battery charger
14h Smart Battery selector
16h Smart Battery
18h SMBus Alert response
50h ACCESS.bus host
58h LCD contrast controller
5Ah CCFL backlight driver
6Eh ACCESS.bus default address
80h-86h PCMCIA socket controllers
88h VGA graphics controller
90h-96h unrestricted addresses
82h SMBus device default address
--------X-1553B0BH07-------------------------
INT 15 - Intel System Management Bus - RETRIEVE CRITICAL MESSAGES
AX = 53B0h
BH = 07h
CX = 6941h ('iA')
Return: CF clear if successful
AH = 00h (SMBus OK)
AL = device address
BX = device message
CF set if error
AH = error code (05h,07h,08h,09h,0Ah,86h) (see #0410)
Desc: retrieves oldest queued critical message from an SMBus device to the
host
Notes: up to five messages are queued; if the queue is full, messages will be
lost and error 09h returned
--------X-1553B0BH08-------------------------
INT 15 - Intel System Management Bus - RESERVED
AX = 53B0h
BH = 08h-0Fh
--------X-1553B0BH10-------------------------
INT 15 - Intel System Management Bus - REQUEST
AX = 53B0h
BH = 10h
BL = protocol (see #0413)
CH = device address
CL = device command (see #0414)
DH = MSB Data or block length (for BlockWrite)
DL = LSB Data or first byte of block (for BlockWrite)
Return: CF clear if successful
AH = 00h or 80h (SMBus OK)
(80h indicates a previously unreported SMI took place)
CF set if error
AH = error code (05h,10h,11h,12h,13h,14h,17h,19h,1Ah,86h)
(see #0410)
Desc: request access to a device on the SMBus
SeeAlso: AX=53B0h/BH=11h, AX=53B0h/BH=13h
(Table 0413)
Values for Intel System Management Bus protocol codes:
00h Quick Command
01h Send Byte
02h Receive Byte
03h Write Byte
04h Read Byte
05h Write Word
06h Read Word
07h Block Write
08h Block Read
09h Process Call
0Ah-FFh reserved
SeeAlso: #0414
(Table 0414)
Values for Intel System Management Bus Smart Battery command codes:
Cmd Protocol(s) Description
00h Rd/Wr Word "ManufacturerAccess" implementation-specific
01h Rd/Wr Word get/set Low Capacity Alarm threshold
02h Rd/Wr Word get/set Remaining Time Alarm value (in minutes)
03h Rd/Wr Word get/set battery characteristics (see #0415)
04h Rd/Wr Word "AtRate" indicate charge/discharge rate
05h Read Word "AtRateTimeToFull" time to completely charge (in min.)
06h Read Word "AtRateTimeToEmpty" time to entirely discharge (min.)
07h Read Word "AtRateOK" boolean: can battery supply another 10sec?
08h Read Word internal battery temperature (in 0.1 Kelvins)
09h Read Word current battery voltage in millivolts
0Ah Read Word current flowing through battery in milliamperes
(positive if charging, negative if discharging)
0Bh Read Word average current over the past minute
0Ch Read Word expected error margin in capacity computations in %
0Dh Read Word predicted remaining charge as % of full charge
0Eh Read Word predicted remaining charge as % of design capacity
0Fh Read Word predicted remaining charge in mAh or 10mWh
10h Read Word predicted full charge capacity in mAh or 10mWh
11h Read Word predicted remaining battery life in minutes
FFFFh = not discharging
12h Read Word rolling average of predicted life over past minute
13h Read Word rolling average of predicted charge time over past min.
FFFFh = not charging
14h Read Word get battery's desired charging current in mA
14h Write Word set charging current in mA
15h Read Word get battery's desired charging current in mV
15h Write Word set desired charging voltage in mV
16h Read Word get current battery status (see #0416)
17h Read Word get number of charge/discharge cycles for battery
18h Read Word get design capacity in mAh or 10mWh
19h Read Word get design voltage
1Ah Read Word get specification information (see #0417)
1Bh Read Word get manufacture date (see #1351 at INT 21/AX=5700h)
1Ch Read Word get serial number
1Dh-1Fh reserved
20h Read Block get manufacturer's name
21h Read Block get device name
22h Read Block get device chemistry (see #0418)
23h Read Block get manufacturer data
24h-2Eh reserved
2Fh manufacturer-specific
30h-3Bh reserved
3Ch-3Fh manufacturer-specific
Note: bits 7-6 are reserved for addressing multiple batteries in a future
version of the specification
SeeAlso: #0413
Bitfields for Smart Battery battery characteristics:
Bit(s) Description (Table 0415)
0 battery has internal charge controller (read-only)
1 primary/secondary battery support (read-only)
6-2 reserved
7 conditioning cycle requested
8 internal charge controller enabled
9 battery operating in primary mode
13-10 reserved
14 disable broadcast to charger
15 report capacity in units of 10mW / 10mWh instead of mA / mAh
SeeAlso: #0414,#0416
Bitfields for Smart Battery battery status:
Bit(s) Description (Table 0416)
15 overcharged
14 terminate-charge alarm
13 reserved
12 over-temperature alarm
11 terminate-discharge alarm
10 reserved
9 remaining-capacity alarm
8 remaining-time alarm
7 initialized
6 charging
5 fully charged
4 fully discharged
3-0 error codes
0000 OK
0001 busy
0010 reserved command
0011 unsupported command
0100 access denied (tried to write to read-only value)
0101 overflow/underflow
0110 bad size
0111 unknown error
SeeAlso: #0414,#0415,#0417
Bitfields for Smart Battery specification information:
Bit(s) Description (Table 0417)
3-0 SmartBattery specification minor revision number
7-4 SmartBattery specification version number
11-8 voltage scaling (0-3, multiply voltages by 10^scale)
15-12 current scaling (0-3, multiply currents by 10^scale)
SeeAlso: #0414,#0416
(Table 0418)
Values for Smart Battery device chemistry (not case-sensitive):
"LION" Lithium ion
"NiMH" Nickel metal hydride
"PbAc" lead-acid
"NiCd" Nickel Cadmium
"NiZn" Nickel Zinc
"RAM" rechargeable Alkaline Manganese
"ZnAr" Zinc-Air
SeeAlso: #0414
--------X-1553B0BH11-------------------------
INT 15 - Intel System Management Bus - REQUEST CONTINUATION
AX = 53B0h
BH = 11h
BL = protocol (see #0413)
CH = device address
CL = number of valid bytes in DX (1 or 2)
DH = MSB Data (CL = 1 or 2)
DL = LSB Data (CL = 2)
Return: CF clear if successful
AH = 00h (SMBus OK)
CL = SMBus status
00h SMBus hardware not ready for more data
01h SMBus hardware ready for 2 more data bytes
CF set if error
AH = error code (05h,11h,13h,15h,16h,18h,1Bh,86h) (see #0410)
Desc: continue WriteBlock protocol started with function 10h
SeeAlso: AX=53B0h/BH=10h, AX=53B0h/BH=13h
--------X-1553B0BH12-------------------------
INT 15 - Intel System Management Bus - REQUEST ABORT
AX = 53B0h
BH = 12h
BL = protocol (see #0413)
CH = device address
CL = device command
Return: CF clear if successful
AH = 00h (SMBus OK)
CF set if error
AH = error code (05h,13h,15h,16h,86h) (see #0410)
Desc: stop the currently pending SMBus request; usually used to terminate
a request after an SMI Detected error
--------X-1553B0BH13-------------------------
INT 15 - Intel System Management Bus - REQUEST DATA AND STATUS
AX = 53B0h
BH = 13h
BL = protocol (see #0413)
CH = device address
CL = device command
Return: CF clear if successful
AH = 00h (SMBus OK)
CH = status
00h no data pending, transaction complete
01h no data pending, transaction continues
02h data pending
CL = number of valid bytes in DX (0-2)
DH = MSB data
DL = LSB data
CF set if error
AH = error code (05h,10h,11h,13h,15h,16h,18h,1Bh,86h) (see #0410)
Desc: determine when a transaction is complete, gather data returned by read
transactions
Note: for Block Read protocol (08h), first call returns block length in DH
and the first byte of the block in DL
----------1554-------------------------------
INT 15 - IBM SurePath BIOS - Officially "Private" Function
AH = 54h
SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
--------T-155400-----------------------------
INT 15 C - Omniview Multitasker - INSTALLATION NOTIFICATION
AX = 5400h
ES:BX -> device information tables
DI:DX -> dispatcher entry point
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5407h,INT 2F/AX=DE00h
--------T-155401-----------------------------
INT 15 C - Omniview Multitasker - PROCESS CREATION
AX = 5401h
ES:BX = process handle
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5402h,INT 2F/AX=DE04h
--------T-155402-----------------------------
INT 15 C - Omniview Multitasker - PROCESS DESTRUCTION
AX = 5402h
ES:DX = process handle
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5401h,INT 2F/AX=DE05h
--------T-155403-----------------------------
INT 15 C - Omniview Multitasker - SAVE
AX = 5403h
ES:DX = process swapping out
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5404h,INT 2F/AX=DE08h
--------T-155404-----------------------------
INT 15 C - Omniview Multitasker - RESTORE
AX = 5404h
ES:DX = process swapping in
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5403h,INT 2F/AX=DE09h
--------T-155405-----------------------------
INT 15 C - Omniview Multitasker - SWITCHING TO BACKGROUND
AX = 5405h
ES:DX = process swapping in
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5406h
--------T-155406-----------------------------
INT 15 C - Omniview Multitasker - SWITCHING TO FOREGROUND
AX = 5406h
ES:DX = process swapping in
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5405h
--------T-155407-----------------------------
INT 15 C - Omniview Multitasker - EXIT NOTIFICATION
AX = 5407h
Note: called by OmniView to notify programs loaded before OmniView of state
changes inside OmniView
SeeAlso: AX=5400h,INT 2F/AX=DE03h
--------b-1560------------------------------------
INT 15 - HUNTER 16 - SET SYSTEM CLOCK SPEED
AH = 60h
AL = new speed
00h normal (8 MHz)
01h Slow Mode 1 (4 MHz)
02h Slow Mode 2 (2 MHz)
Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
SeeAlso: AX=6301h
--------p-156000-----------------------------
INT 15 U - HP 100LX/200LX - GET MAIN BATTERY LEVEL
AX = 6000h
Return: AX = battery level
Note: multiply the returned value with 1Bh and add 622h to get millivolts
SeeAlso: AX=6001h,AX=6002h,AX=6003h,AX=6004h
--------p-156001-----------------------------
INT 15 U - HP 100LX/200LX - GET BACKUP BATTERY LEVEL
AX = 6001h
Return: AX = battery level
Note: multiply the returned value with 1Bh and add 622h to get millivolts
SeeAlso: AX=6000h,AX=6002h
--------p-156002-----------------------------
INT 15 U - HP 100LX/200LX - GET POWER INFO
AX = 6002h
Return: AL = power settings (see #0419)
SeeAlso: AX=6000h,AX=6003h,AX=6004h
Bitfields for power settings:
Bit(s) Description (Table 0419)
0-1 unused ???
2 card battery status low (OK if bit clear)
3 battery charging off (disabled if bits 3-5 clear)
4 battery charging slow
5 battery charging fast
6 power adaptor active
7 battery type NiCad (alkaline if bit clear)
--------p-156003-----------------------------
INT 15 U - HP 100LX/200LX - SET MAIN BATTERY TYPE
AX = 6003h
BL = battery type
00h alkaline
01h NiCad
SeeAlso: AX=6000h,AX=6004h
--------p-156004-----------------------------
INT 15 U - HP 100LX/200LX - SET BATTERY CHARGING MODE
AX = 6004h
BL = charging
00h disabled
01h enabled
SeeAlso: AX=6000h,AX=6003h
--------b-1561------------------------------------
INT 15 - HUNTER 16 - GET POWER LEVEL
AH = 61h
Return: AH = percentage of full power left (0..100)
Desc: determine how much battery power is left
SeeAlso: AH=62h,AH=66h,AH=73h"HUNTER"
--------b-1561-------------------------------
INT 15 U - HP 100LX/200LX - SET ANNOUNCIATORS POSITION
AH = 61h
AL = position (20h = left, 60h = right)
Note: The announciators are the indicator symbols for the Shift and Fn keys
in the bottom line
SeeAlso: AH=62h"HP",INT 16/AH=02h
--------b-1562------------------------------------
INT 15 - HUNTER 16 - SET LOW POWER THRESHOLD
AH = 62h
AL = level (00h 5%, 01h 10%, ... 12h 95%)
BX = interval between power low warnings in seconds (1..600)
Return: AH = Status
Desc: set the level (relative to full power) when power-low warnings begin
and the interval between the warnings
SeeAlso: AH=61h,AH=65h,AH=66h
--------b-1562-------------------------------
INT 15 U - HP 100LX/200LX - SET DISPLAY CONTRAST
AH = 62h
BL = contrast (00h-1Fh, 1Fh is the darkest)
SeeAlso: AH=47h"HP",AH=61h"HP"
--------b-156300----------------------------------
INT 15 - HUNTER 16 - GET IDLE TIMEOUT
AX = 6300h
Return: AH = status
BX = timeout in seconds (0-3600)
Desc: get the idle timeout value, the interval without keyboard or
communications activity before the system shuts down
SeeAlso: AX=6301h
--------b-156301----------------------------------
INT 15 - HUNTER 16 - SET IDLE TIMEOUT
AX = 6301h
BX = timeout in seconds (0-3600)
Desc: sets the idle timeout value, the interval without keyboard or
communications activity before the system shuts down
SeeAlso: AX=6300h
--------b-1564------------------------------------
INT 15 - HUNTER 16 - CONTROL RESUME MODE
AH = 64h
AL = new state
00h disable Resume mode
01h enable Resume mode
Return: AH = status
Desc: turn Resume mode on or off. In Resume mode the system starts in
the application that was running when it shut down as if nothing
had happened.
SeeAlso: AH=67h,AH=68h,AH=69h
--------b-1565------------------------------------
INT 15 - HUNTER 16 - AUTHORISE CHARGING
AH = 65h
AL = charging level
01h charging not allowed
02h charging allowed until power down
03h charging allowed until batteries changed or fail.
Ask user if charging is still allowed on next poweron
04h charging allowed indefinitely
BX = 0203h
CX = 0405h
DX = 0607h
Return: AH = status
SeeAlso: AH=66h,AH=68h
--------b-1566------------------------------------
INT 15 - HUNTER 16 - SET BATTERY LEVEL
AH = 66h
AL = level in percent of maximum (0..100)
Return: AH = status
SeeAlso: AH=61h,AH=65h
--------b-1567------------------------------------
INT 15 - HUNTER 16 - CONTROL STOP MODE
AH = 67h
AL = mode when waiting for input
00h use STOP mode (allows communication)
01h use HALT mode (disallows communication)
Return: AH = status
Desc: select the power save mode to use when waiting for input
SeeAlso: AH=69h
--------b-1568------------------------------------
INT 15 - HUNTER 16 - REQUEST POWER DOWN
AH = 68h
Desc: turns off the Hunter 16 if power down is allowed (see AH=69h)
SeeAlso: AH=69h
--------b-1569------------------------------------
INT 15 - HUNTER 16 - CONTROL POWER DOWN AVAILABILITY
AH = 69h
AL = mode
00h inhibit power down
01h allow power down
Return: AH = status
SeeAlso: AH=67h,AH=68h,AH=6Ah
--------b-156A------------------------------------
INT 15 - HUNTER 16 - CONTROL SLOW MODE
AH = 6Ah
AL = mode
00h inhibit Slow mode
01h allow Slow mode
Return: AH = status
SeeAlso: AH=69h
--------b-156B------------------------------------
INT 15 - HUNTER 16 - GET ROM BIOS VERSION
AH = 6Bh
Return: BH = version number (ASCII)
BL = release number (ASCII)
CH = major??? release number (ASCII)
CL = minor??? release number (ASCII)
SeeAlso: AH=6Ch
--------b-156C------------------------------------
INT 15 - HUNTER 16 - GET SERIAL NUMBER
AH = 6Ch
Return: BL:CX = BCD serial number
Note: when shipped, all Hunter 16s have the same Serial Number, but a
different number can be stored (see AH=72h)
SeeAlso: AH=6Bh,AH=72h
--------b-156D------------------------------------
INT 15 - HUNTER 16 - GET EVENT DETAIL
AH = 6Dh
Return: AH = 00h if successful
CX:BX = event flags bit 0..31 (see #0420)
Note: this function allows testing for events
SeeAlso: AH=6Eh,AH=6Fh
Bitfields for HUNTER 16 events:
Bit(s) Description (Table 0420)
6 RI received
5 RTC Alarm
4 data received on COM2
3 data received on COM1
2 error on COM2
1 error on COM1
0 PWR button pressed
--------b-156E------------------------------------
INT 15 - HUNTER 16 - ENABLE/TRAP EVENT
AH = 6Eh
AL = Software Interrupt
00h do not trap event
else trap as software interrupt number AL
BH = event number (see AH=6Dh)
BL = enable mask
00h disable event
01h enable event
Return: AH = 00h if successful
SeeAlso: AH=6Dh,AH=6Fh
--------b-156F------------------------------------
INT 15 - HUNTER 16 - ACKNOWLEDGE EVENT
AH = 6Fh
AL = event number (see AH=6Dh)
Return: AH = 00h if successful
Desc: Acknowledges the event, so the next similar event can be detected
SeeAlso: AH=6Dh"HUNTER",AH=6Eh
--------b-1570------------------------------------
INT 15 - HUNTER 16 - CONTROL SOUND
AH = 70h
AL = new state
00h disable sound
else enable sound
Note: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
--------x-157000-----------------------------
INT 15 - Tandy 1000SL/TL - READ FROM EEPROM
AX = 7000h
BL = number of word to read (00h-3Fh)
Return: CF clear if function supported
DX = contents of EEPROM word
Note: newer Tandy 1000-series machines use EEPROM instead of CMOS RAM in
the clock chip to store system configuration information
SeeAlso: AX=7001h
--------x-157001-----------------------------
INT 15 - Tandy 1000SL/TL - WRITE TO EEPROM
AX = 7001h
BL = number of word to read (00h-3Fh)
DX = new value for EEPROM word
Return: CF clear if function supported
Note: the EEPROMs are normally written only by the system setup program;
changing the values can badly mess up a Tandy
SeeAlso: AX=7000h
----------157002-----------------------------
INT 15 U - Tandy 1000 Model ??? - GET ROM PAGE
AX = 7002h
Return: AL = ROM page mapped at 0E0000h (0-6 (13?))
Note: some Tandy machines have DOS and DeskMate in a 512k paged ROM. The
BIOS uses this call to determine what ROM page is mapped in the 64k
segment at 0E0000h.
the 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
0F0000h. There may be 16 32k ROM pages on other systems.
SeeAlso: AX=7003h,INT E0"DeskMate"
----------157003-----------------------------
INT 15 U - Tandy 1000 Model ??? - SET ROM PAGE
AX = 7003h
DL = ROM page to be mapped at 0E0000h (0-6 (13?))
Return: CF clear if valid ROM page specified
Note: Some Tandy machines have DOS and DeskMate in a 512k paged ROM. The
BIOS uses this call to map ROM pages in the 64k segment at 0E0000h.
The 1000TL has 8 64k ROM pages; page 7 is permanently mapped at
0F0000h. There may be 16 32k ROM pages on other systems.
SeeAlso: AX=7002h,INT E0"DeskMate"
--------b-1571------------------------------------
INT 15 - HUNTER 16 - SELECT POWER UP KEYS
AH = 71h
BL = column
BH = row
AL = column switch (00h disable, 01h enable)
CL = row switch (00h disable, 01h enable)
Return: AH = status
SeeAlso: AH=7Bh,AH=88h
--------b-157200----------------------------------
INT 15 - HUNTER 16 - RESET SERIAL NUMBER
AX = 7200h
Return: AH = 00h if successful
Desc: reset the serial number to the default serial number present when the
Hunter 16 was shipped
SeeAlso: AH=6Ch,AH=72h
--------b-1572------------------------------------
INT 15 - HUNTER 16 - REDIRECT SERIAL NUMBER
AH = 72h
AL nonzero
DS:BX -> new serial number (6 ASCII digits)
Return: AH = 00h if successful
Desc: install a new serial number
SeeAlso: AH=6Ch,AX=7200h
--------b-1573------------------------------------
INT 15 - HUNTER 16 - GET ORACLE GT POWER LEVEL
AH = 73h
AL = drive (0: A:, 1: B:)
Return: AH = status
00h successful
FFh Oracle GT drive not connected
AL = power level in percent of maximum (0..100)
Desc: get the power remaining in the Oracle GT batteries
SeeAlso: AH=61h
--------b-1574------------------------------------
INT 15 - HUNTER 16 - SET BACKLIGHT POWER UP STATE
AH = 74h
AL = new level
01h off
02h unchanged
03h change level
BL = desired level (00h-7Fh)
Return: AH = status
Desc: select the backlight level to use when the Hunter is next turned on
SeeAlso: AH=64h,AH=75h,INT 10/AH=64h,INT 10/AH=78h
--------b-1575------------------------------------
INT 15 - HUNTER 16 - SET CONTRAST POWER UP STATE
AH = 75h
AL = new level
01h off
02h unchanged
03h change level
BL = desired level (00h-7Fh)
Return: AH = status
Desc: select the LCD contrast level to use when the Hunter is next turned on
SeeAlso: AH=63h,AH=74h
--------b-1576------------------------------------
INT 15 - HUNTER 16 - CONTROL POWER SAVE
AH = 76h
BX = power save control (see #0421)
SeeAlso: AH=74h
Bitfields for HUNTER 16 power save control:
Bit(s) Description (Table 0421)
0 power save enabled
1 inhibit power save when waiting for COM1 data
2 inhibit power save when waiting for COM2 data
3 inhibit power save when waiting for data from barcode wand
4 inhibit power up on timer tick
--------b-1579------------------------------------
INT 15 - HUNTER 16 - REDIRECT LPT1
AH = 79h
AL = port to which to redirect (00h COM1, 01h COM2)
--------b-157A------------------------------------
INT 15 - HUNTER 16 - INVOKE HOT KEY
AH = 7Ah
Desc: this function has the same effect as pressing the HOT key
SeeAlso: AH=7Bh
--------b-157B------------------------------------
INT 15 - HUNTER 16 - CONTROL HOT KEY
AH = 7Bh
AL = 00h prevent HOT key
else allow HOT key
Desc: Allow or prevent the HOT key function which is used to examine and
change the Hunter setup
SeeAlso: AH=71h,AH=7Ah,AH=7Ch
--------b-157C------------------------------------
INT 15 - HUNTER 16 - CONTROL HOT KEY POWER OPTION
AH = 7Ch
AL = 00h prevent HOT key power option
else allow HOT key power option
Desc: allow or prevent changing the power options
SeeAlso: AH=7Bh,AH=7Dh
--------b-157D------------------------------------
INT 15 - HUNTER 16 - OVERRIDE LOW POWER TURN OFF
AH = 7Dh
AL = 00h turn off after 10 warnings
else never turn off
Desc: specify whether the Hunter 16 turns off after 10 low power warnings
SeeAlso: AH=7Ch
--------b-157E------------------------------------
INT 15 - HUNTER 16 - CONTROL BATTERY CHANGE FACILITIES (APM)
AH = 7Eh
AL = 00h do not prompt
else prompt
Desc: select whether the user is prompted for the battery state if the
battery cap has been off when the system is turned on
SeeAlso: AH=7Fh
--------b-157F------------------------------------
INT 15 - HUNTER 16 - SET BATTERY TYPE (APM)
AH = 7Fh
AL = battery type
00h non-rechargeable
else rechargeable
SeeAlso: AH=7Eh
--------B-1580-------------------------------
INT 15 C - OS HOOK - DEVICE OPEN (AT,XT286,PS)
AH = 80h
BX = device ID
CX = process ID
CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see #0422)
Note: this function should be hooked by a multitasker which wishes to keep
track of device ownership; the default BIOS handler merely returns
successfully
SeeAlso: AH=81h,AH=82h
(Table 0422)
Values for status:
80h invalid command (PC,PCjr)
86h function not supported (XT)
--------b-1580------------------------------------
INT 15 - HUNTER 16 - GET/SET BATTERY CAPACITY (APM)
AH = 80h
AL = function
00h get
Return: AL = capacity (500mA + AL * 50mA, max 40 = 2500mA)
else set
BL = battery capacity (same as AL above)
SeeAlso: AH=61h"HUNTER",AH=81h"HUNTER"
--------B-1581-------------------------------
INT 15 C - OS HOOK - DEVICE CLOSE
AH = 81h
BX = device ID
CX = process ID
CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see #0422)
Note: this function should be hooked by a multitasker which wishes to keep
track of device ownership; the default BIOS handler merely returns
successfully
SeeAlso: AH=80h,AH=82h
--------b-1581------------------------------------
INT 15 - HUNTER 16 - CONTROL POWER OUTPUT
AH = 81h
AL = new state of power output (00h off, nonzero on)
Desc: turn the +5V low power output on or off
SeeAlso: AH=80h"HUNTER"
--------B-1582-------------------------------
INT 15 C - OS HOOK - PROGRAM TERMINATION
AH = 82h
BX = process ID
CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see #0422)
Notes: closes all devices opened by the given process ID with function 80h
this function should be hooked by a multitasker which wishes to keep
track of device ownership; the default BIOS handler merely returns
successfully
SeeAlso: AH=80h,AH=81h
--------b-1582------------------------------------
INT 15 - HUNTER 16 - SOUND OUTPUT
AH = 82h
DX = length (duration in seconds = DX * 666670 / frequency)
BX = pitch (see #0423)
Desc: Sound the tone specified in BX for the duration in DX
SeeAlso: AX=1019h
(Table 0423)
Values for HUNTER 16 sound pitch:
BX(dec) Note Frequency BX(dec) Note Frequency
425 G 1568.000 1515 A 440.000
451 F# 1479.503 1605 G# 415.307
477 F 1396.900 1701 G 392.000
506 E 1318.500 1802 F# 369.998
536 D# 1244.523 1909 F 349.230
568 D 1174.700 2022 E 329.630
601 C# 1108.749 2143 D# 311.127
637 C 1046.500 2270 D 293.660
675 B 958.770 2405 C# 277.183
715 A# 932.329 2548 MID C 261.630
758 A 880.000 2700 B 246.940
803 G# 830.609 2860 A# 233.081
850 G 783.990 3030 A 220.000
901 F# 739.990 3210 G# 207.654
954 F 698.460 3401 G 196.000
1011 E 659.260 3604 F# 184.996
1071 D# 622.257 3818 F 174.610
1135 D 587.330 4045 E 164.810
1203 C# 554.365 4286 D# 155.560
1274 C 523.250 4540 D 146.830
1350 B 493.880 4668 C# 142.827
1430 A# 466.162 4803 C 138.810
--------B-1583-------------------------------
INT 15 - BIOS - SET EVENT WAIT INTERVAL (AT,PS50+)
AH = 83h
AL = subfunction
00h set interval
CX:DX = microseconds to delay
ES:BX -> byte whose high bit is to be set at end of interval
01h cancel wait interval
Return: CF set on error or function already busy
AH = status
80h invalid command (PC,PCjr)
86h function not supported (XT and later)
CF clear if successful
Notes: the resolution of the wait period is 977 microseconds on many systems
because many BIOSes use the 1/1024 second fast interrupt from the AT
real-time clock chip which is available on INT 70
IBM AT 1/10/84 BIOS ignores AL and always performs subfunction 00h
SeeAlso: AH=41h,AH=86h,INT 70,MEM 0040h:0098h,MEM 0040h:009Ch
--------b-1583------------------------------------
INT 15 - HUNTER 16 - CONTROL SCREEN SYNCHRONISATION
AH = 83h
AL = state of LCD window (00h disabled, nonzero enabled)
Desc: Enable/disable the facility where the displayed window tracks the
cursor output to keep the focus visible
--------B-1584-------------------------------
INT 15 - BIOS - JOYSTICK SUPPORT (XT after 11/8/82,AT,XT286,PS)
AH = 84h
DX = subfunction
0000h read joystick switches
Return: AL bits 7-4 = switch settings
0001h read positions of joysticks
Return: AX = X position of joystick A
BX = Y position of joystick A
CX = X position of joystick B
DX = Y position of joystick B
Return: CF set on error
AH = status (see #0422)
CF clear if successful
Notes: if no game port is installed, subfunction 0000h returns AL=00h (all
switches open) and subfunction 0001h returns AX=BX=CX=DX=0000h
a 250kOhm joystick typically returns 0000h-01A0h
SeeAlso: AH=84h"V20-XT-BIOS"
--------b-1584-------------------------------
INT 15 - V20-XT-BIOS - JOYSTICK SUPPORT
AH = 84h
DX = subfunction
0000h read joystick switches
Return: AL bits 7-4 = switch settings
other: read positions of joysticks as indicated by bits 0-3
Return: AX = X position of joystick A (if DX bit 0 set)
BX = Y position of joystick A (if DX bit 1 set)
CX = X position of joystick B (if DX bit 2 set)
DX = Y position of joystick B (if DX bit 3 set)
Return: CF set on error
AH = status (see #0422)
CF clear if successful
Program: V20-XT-BIOS is a ROM BIOS replacement with extensions by Peter
Koehlmann / c't magazine
SeeAlso: AH=84h"PS",INT 10/AH=0Eh/CX=ABCDh
--------b-158400----------------------------------
INT 15 - HUNTER 16 - GET DISKETTE PORT
AX = 8400h
BH = Drive (0: A:, 1: B:)
Return: AL = Port (0: COM1, >0: COM2)
Desc: return the COM port used for the floppy drive
SeeAlso: AX=8401h
--------b-158401----------------------------------
INT 15 - HUNTER 16 - SET DISKETTE PORT
AX = 8401h
BH = Drive (0: A:, 1: B:)
BL = Port (0: COM1, >0: COM2)
Desc: set the COM port used for the floppy drive
SeeAlso: AX=8400h
--------B-1585-------------------------------
INT 15 C - OS HOOK - SysReq KEY ACTIVITY (AT,PS)
AH = 85h
AL = SysReq key action (00h pressed, 01h released)
CF clear
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (see #0422)
Notes: called by keyboard decode routine
the default handler simply returns successfully; programs which wish
to monitor the SysReq key must hook this call
the SysReq key is often labeled SysRq
SeeAlso: INT 09
--------b-158500----------------------------------
INT 15 - HUNTER 16 - RESTORE POWER MENU (APM)
AX = 8500h
Desc: restore the standard power menu
SeeAlso: AX=8501h"HUNTER"
--------b-158501----------------------------------
INT 15 - HUNTER 16 - SET POWER MENU (APM)
AX = 8501h
BL = user software interrupt number
Desc: install an alternate power menu routine
SeeAlso: AX=8500h"HUNTER"
--------B-1586-------------------------------
INT 15 - BIOS - WAIT (AT,PS)
AH = 86h
CX:DX = interval in microseconds
Return: CF clear if successful (wait interval elapsed)
CF set on error or AH=83h wait already in progress
AH = status (see #0422)
Note: the resolution of the wait period is 977 microseconds on many systems
because many BIOSes use the 1/1024 second fast interrupt from the AT
real-time clock chip which is available on INT 70; because newer
BIOSes may have much more precise timers available, it is not
possible to use this function accurately for very short delays unless
the precise behavior of the BIOS is known (or found through testing)
SeeAlso: AH=41h,AH=83h,INT 1A/AX=FF01h,INT 70
--------b-1586------------------------------------
INT 15 - HUNTER 16 - GET/SET SCREEN ATTRIBUTE TABLE
AH = 86h
AL = function (00h get, nonzero set)
BX = 1234h
DS:SI -> 256-byte Attribute buffer
Note: In text modes each character has its attribute byte XOR'd with the
corresponding byte in the attribute table. If the attribute is 15,
15 is XOR'd with Table[15]
--------B-1587-------------------------------
INT 15 - SYSTEM - COPY EXTENDED MEMORY
AH = 87h
CX = number of words to copy (max 8000h)
ES:SI -> global descriptor table (see #0425)
Return: CF set on error
CF clear if successful
AH = status (see #0424)
Notes: copy is done in protected mode with interrupts disabled by the default
BIOS handler; many 386 memory managers perform the copy with
interrupts enabled
this function is incompatible with the OS/2 compatibility box
SeeAlso: AH=88h,AH=89h,INT 1F/AH=90h
(Table 0424)
Values for extended-memory copy status:
00h source copied into destination
01h parity error
02h interrupt error
03h address line 20 gating failed
80h invalid command (PC,PCjr)
86h unsupported function (XT,PS30)
Format of global descriptor table:
Offset Size Description (Table 0425)
00h 16 BYTEs zeros (used by BIOS)
10h WORD source segment length in bytes (2*CX-1 or greater)
12h 3 BYTEs 24-bit linear source address, low byte first
15h BYTE source segment access rights (93h)
16h WORD zero
18h WORD destination segment length in bytes (2*CX-1 or greater)
1Ah 3 BYTEs 24-bit linear destination address, low byte first
1Dh BYTE destination segment access rights (93h)
1Eh 18 BYTEs zeros (used by BIOS to build CS and SS descriptors)
--------b-1587------------------------------------
INT 15 - HUNTER 16 - SET INT 72h VECTOR
AH = 87h
DS:DX = new service routine
Desc: set the INT 72h vector which is called in 2 cases:
- when the machine is about to turn off or reboot, INT 72h is called
with AH=0
- when the machine is powering up INT 72h is called with AH=01h
Note: the actual INT 72h vector must also be changed with INT 21/AH=25h
--------B-1588-------------------------------
INT 15 - SYSTEM - GET EXTENDED MEMORY SIZE (286+)
AH = 88h
Return: CF clear if successful
AX = number of contiguous KB starting at absolute address 100000h
CF set on error
AH = status
80h invalid command (PC,PCjr)
86h unsupported function (XT,PS30)
Notes: TSRs which wish to allocate extended memory to themselves often hook
this call, and return a reduced memory size. They are then free to
use the memory between the new and old sizes at will.
the standard BIOS only returns memory between 1MB and 16MB; use AH=C7h
for memory beyond 16MB
not all BIOSes correctly return the carry flag, making this call
unreliable unless one first checks whether it is supported through
a mechanism other than calling the function and testing CF
SeeAlso: AH=87h,AH=8Ah"Phoenix",AH=C7h,AX=DA88h,AX=E801h,AX=E820h
--------b-1588------------------------------------
INT 15 - HUNTER 16 - GET POWER UP KEYS
AH = 88h
Return: AH = 00h
BX = column
CL = row
SeeAlso: AH=71h
--------B-1589-------------------------------
INT 15 - SYSTEM - SWITCH TO PROTECTED MODE
AH = 89h
BL = interrupt number of IRQ0 (IRQ1-7 use next 7 interrupts)
BH = interrupt number of IRQ8 (IRQ9-F use next 7 interrupts)
ES:SI -> GDT for protected mode (see #0426)
Return: CF set on error
AH = FFh error enabling address line 20
CF clear if successful
AH = 00h
in protected mode at specified address
BP may be destroyed; all segment registers change
Notes: BL and BH must be multiples of 8
the protected-mode CS must reference the same memory as the CS this
function is called from because execution continues with the address
following the interrupt call
SeeAlso: AH=87h,AH=88h,INT 67/AX=DE0Ch
Format of BIOS switch-to-protected-mode Global Descriptor Table:
Offset Size Description (Table 0426)
00h 8 BYTEs null descriptor (initialize to zeros)
08h 8 BYTEs GDT descriptor (see #0427)
10h 8 BYTEs IDT descriptor
18h 8 BYTEs DS descriptor
20h 8 BYTEs ES
28h 8 BYTEs SS
30h 8 BYTEs CS
38h 8 BYTEs uninitialized, used to build descriptor for BIOS CS
Format of segment descriptor table entry:
Offset Size Description (Table 0427)
00h WORD segment limit, low word
02h 3 BYTEs segment base address, low 24 bits
05h BYTE access mode (see #0428)
06h BYTE 386+ extended access mode (see #0429)
07h BYTE 386+ segment base address, high 8 bits
SeeAlso: #0426,INT 2C/AX=0002h,INT 31/AX=0009h
Bitfields for segment descriptor table access mode field:
Bit(s) Description (Table 0428)
3-0 segment type
4 descriptor type (1 = application, 0 = system)
6-5 descriptor privilege level
7 segment is present in RAM
SeeAlso: #0427,#0429
Bitfields for 386+ segment descriptor table extended access mode field:
Bit(s) Description (Table 0429)
3-0 high 4 bits of segment limit
4 available
5 reserved (0)
6 default operation size (1 = 32 bits, 0 = 16 bits)
7 granularity (1 = 4K, 0 = byte)
SeeAlso: #0427,#0428,#2245
--------b-158900----------------------------------
INT 15 - HUNTER 16 - GET POWER MODE
AX = 8900h
Return: AH = 00h
BL = current power mode
00h Standard Power Mode (SPM)
01h Advanced Power Mode (APM)
SeeAlso: AX=8901h
--------b-158901----------------------------------
INT 15 - HUNTER 16 - SET POWER MODE
AX = 8901h
BL = new mode
00h Standard Power Mode (SPM)
01h Advanced Power Mode (APM)
Return: AH = 00h
SeeAlso: AX=8900h
--------b-158A------------------------------------
INT 15 - HUNTER 16 - CONTROL POWER INPUT (SPM)
AH = 8Ah
AL = new state of Power Input (00h disabled, nonzero enabled)
SI = 1234h
DI = 5678h
Return: AH = status
00h success
FFh failure
Desc: Enable or disable Power Input. When Power Input is disabled the AC
adapter will neither charge the batteries nor supply power to the
Hunter 16. Disable Power Input if using Alkaline batteries.
--------b-158A-------------------------------
INT 15 - Phoenix BIOS v4.0 - GET BIG MEMORY SIZE
AH = 8Ah
Return: DX:AX = extended memory size in K
SeeAlso: AH=88h,AX=E801h,AX=E820h
--------b-158B------------------------------------
INT 15 - HUNTER 16 - GET/SET CHARGER TEMPERATURE OVERRIDE
AH = 8Bh
AL = function
00h get
Return: BH = Maximum charging temperature
Temp = -20 + (n * 0.63) degrees Centigrade
BL = Minimum charging temperature
else set
BH = maximum charging temperature (as above)
BL = minimum charging temperature (as above)
Return: AH = status
00h success
FFh failure
Desc: get/set the temperature interval within which the charger should
operate
--------b-158C------------------------------------
INT 15 - HUNTER 16 - GET/SET POWER SAVE ENTRY FLAG
AH = 8Ch
AL = function
00h get
Return: BX = which operations disable power save (see #0430)
else set
BX = which operations should disable power save (see #0430)
SeeAlso: AH=8Dh
Bitfields for HUNTER 16 operations disabling power save:
Bit(s) Description (Table 0430)
0 INT 10h prevents power save
1 INT 13h prevents power save
2 INT 14h prevents power save
3 INT 15h prevents power save
4 INT 1Ah prevents power save
5 INT 21h prevents power save
6 direct write to video RAM prevents power save
7 access to 8250 UART prevents power save
8 access to 8253 (Sound) prevents power save
--------b-158D------------------------------------
INT 15 - HUNTER 16 - GET/SET BOOST CHARGE (SPM)
AH = 8Dh
AL = function
00h get
Return: AL = Fast Charge state (00h prevented, else allowed)
nonzero set
BH = Fast Charge state (00h prevent, nonzero allow)
Return: AH = status
00h success
FFh failure
Desc: control whether Fast Charging (200ma rather than 70ma) is allowed
SeeAlso: AH=8Ch
--------B-1590-------------------------------
INT 15 - OS HOOK - DEVICE BUSY (AT,PS)
AH = 90h
AL = device type (see #0431)
ES:BX -> request block for type codes 80h through BFh
CF clear
Return: CF set if wait time satisfied
CF clear if driver must perform wait
AH = 00h
Notes: type codes are allocated as follows:
00-7F non-reentrant devices; OS must arbitrate access
80-BF reentrant devices; ES:BX points to a unique control block
C0-FF wait-only calls, no complementary INT 15/AH=91h call
floppy and hard disk BIOS code uses this call to implement a timeout;
for device types 00h and 01h, a return of CF set means that the
timeout expired before the disk responded.
this function should be hooked by a multitasker to allow other tasks
to execute while the BIOS is waiting for I/O completion; the default
handler merely returns with AH=00h and CF clear
SeeAlso: AH=91h,INT 13/AH=00h,INT 17/AH=00h,INT 1A/AH=83h
(Table 0431)
Values for device type:
00h disk
01h diskette
02h keyboard
03h PS/2 pointing device
21h waiting for keyboard input (Phoenix BIOS)
80h network
FBh digital sound (Tandy)
FCh disk reset (PS)
FDh diskette motor start
FEh printer
--------B-1591-------------------------------
INT 15 - OS HOOK - DEVICE POST (AT,PS)
AH = 91h
AL = device type (see #0431)
ES:BX -> request block for type codes 80h through BFh
CF clear
Return: AH = 00h
Note: this function should be hooked by a multitasker to allow other tasks
to execute while the BIOS is waiting for I/O completion; the default
handler merely returns with AH=00h and CF clear
SeeAlso: AH=90h
--------B-1592-------------------------------
INT 15 - IBM SurePath BIOS - Officially "Private" Function
AH = 92h
SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
--------B-15A0-------------------------------
INT 15 - IBM SurePath BIOS - ACCESS LOADABLE-ABIOS SIGNATURE
AH = A0h
AL = function
00h get loadable-ABIOS signature
Return: BL = signature value
00h loadable-ABIOS prompting not required
A1h loadable-ABIOS prompting is required
01h write loadable-ABIOS signature
BL = new signature value
00h loadable-ABIOS prompting not required
A1h loadable-ABIOS prompting is required
Return: CF clear if successful
CF set on error
AH = status
00h successful
01h invalid subfunction
02h unable to read/write signature
86h function not supported
Note: IBM classifies this function as optional
SeeAlso: AH=08h"IBM"
--------x-15A100-----------------------------
INT 15 U - AMI PCI BIOS - SET ??? FLAG
AX = A100h
Return: AX = 0000h
CF clear
BX,CX,DI may be destroyed
Desc: sets bit 7 of CMOS RAM location 37h and updates the CMOS checksum in
locations 3Eh and 3Fh
Notes: in the examined version of the BIOS, nonzero values in AL cause it to
drop through to checking the next possible value of AH, i.e. only
subfunction 00h is supported
also supported by Dell XPS P90 and IBM PS/PV 6384, which also use
AMI BIOSes
--------B-15AB-------------------------------
INT 15 - IBM SurePath BIOS - Officially "Private" Function
AH = ABh
SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
----------15B001CX5354-----------------------
INT 15 - Stac ??? - INSTALLATION CHECK
AX = B001h
CX = 5354h ('ST')
DX = 4143h ('AC')
Return: AX = 4F4Bh ('OK') if installed
Note: this function is called by Novell DOS 7 NWCACHE v1.01
--------n-15BA10-----------------------------
INT 15 - HP OmniShare - Pen Driver - REPORT PEN CONTROL AREA EVENT
AX = BA10h
BL = event
00h the pen left control areas
01h the pen entered the Brightness- area
02h the pen entered the Brightness+ area
03h the pen entered the Contrast- area
04h the pen entered the Contrast+ area
Return: CF clear if successfully processed
CF set on error (function not supported, ie. not an OmniShare BIOS)
Note: The pen driver is responsible for detecting when the pen enters and
leaves control areas of the OmniShare tablet, and notifying the BIOS.
The BIOS manages the events, including the autorepetition, and sets
the status LEDs.
SeeAlso: AX=BA20h,AX=BA13h
--------n-15BA11-----------------------------
INT 15 - HP OmniShare - Pen Driver - SET THE COMMUNICATION LED STATE
AX = BA11h
BL = new LED state (00h steady, 01h flashing)
Return: CF clear if successful
CF set on error
Note: this function is for use by communication software to give visual
feedback of active communications even if the display is in standby
mode.
SeeAlso: AX=BA10h,AX=BA24h
--------n-15BA12-----------------------------
INT 15 - HP OmniShare - Pen Driver - STORE PEN BATTERY CHARGE
AX = BA12h
BL = new battery state (00h good, 01h low charge)
Return: CF set on error
CF clear if successfully stored in CMOS
Note: The last report will be displayed by the Power-On Self Test the next
time the OmniShare boots. This allows something meaningful to be
reported even if the pen is not detected during the POST.
SeeAlso: AX=BA13h
--------n-15BA13-----------------------------
INT 15 - HP OmniShare - Pen Driver - GET PEN BATTERY CHARGE
AX = BA13h
Return: CF clear if successful
BL = pen battery state (00h good, 01h low charge)
CF set on error
Note: returns the last value set by AX=BA12h.
SeeAlso: AX=BA12h
--------p-15BA20-----------------------------
INT 15 - HP OmniShare - STANDBY.COM - INSTALLATION CHECK
AX = BA20h
Return: CF clear if successful (installed)
CF set on error (not installed)
Notes: The display controller can enter a standby mode after a given timeout,
to conserve power or (for the OmniShare) to increase the life of
the backlight.
A side effect of standby mode is that the communications LED turns on
automatically when the display is in standby mode. This is done in
hardware, and is intended to show that the unit is still on.
SeeAlso: AX=BA10h,AX=BA20h,AX=BA22h,AX=BA24h,AX=BA26h
--------p-15BA21-----------------------------
INT 15 - HP OmniShare - STANDBY.COM - SET STANDBY DURATION
AX = BA21h
BL = new timeout before standby mode in minutes (01h-0Fh)
00h to disable automatic switch to standby mode
Return: CF clear if successful
CF set on error (function not supported)
Note: The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
instead of (N*60) seconds as documented.
SeeAlso: AX=BA20h,AX=BA22h
--------p-15BA22-----------------------------
INT 15 - HP OmniShare - STANDBY.COM - GET STANDBY DURATION
AX = BA22h
Return: CF clear if successful
BL = standy duration in minutes (01h-0Fh), or 00h if disabled
CF set on error (function not supported)
Note: The actual timeout with a GD6205 controller is ((N*64)-32) seconds,
instead of (N*60) seconds as documented.
SeeAlso: AX=BA20h,AX=BA21h
--------p-15BA23-----------------------------
INT 15 - HP OmniShare - STANDBY.COM - TURN ON THE SCREEN IMMEDIATELY
AX = BA23h
Return: CF clear if successful
CF set on error
SeeAlso: AX=BA11h,AX=BA20h,AX=BA24h
--------p-15BA24-----------------------------
INT 15 - HP OmniShare - STANDBY.COM - TURN OFF THE SCREEN IMMEDIATELY
AX = BA24h
Return: CF clear if successful
CF set on error
Note: This function is not implemented yet. Reserved for future versions
of the OmniShare.
SeeAlso: AX=BA11h,AX=BA20h,AX=BA23h
--------p-15BA25-----------------------------
INT 15 - HP OmniShare - STANDBY.COM - PREPARE FOR UNINSTALL
AX = BA25h
Return: CF clear if successful
AX = 25BAh
BX = PSP of STANDBY.COM resident portion
DX:CX -> previous INT 15 handler
CF set on error
Note: This function is used internally by the STANDBY.COM /u option, and
should not be used by application programs.
SeeAlso: AX=BA20h
--------p-15BA26-----------------------------
INT 15 - HP OmniShare - STANDBY.COM - IS THE DISPLAY IN STANDBY MODE?
AX = BA26h
Return: CF clear if successful
AL = display state (00h active, 01h in standby mode)
CF set on error (function not supported)
SeeAlso: AX=BA20h,AX=BA23h
--------p-15BA27-----------------------------
INT 15 - HP OmniShare - STANDBY.COM - RESERVED FUNCTIONS
AX = BA27h to BA2Fh
Desc: reserved for future use
--------b-15BC-------------------------------
INT 15 - Phoenix 386 BIOS - DETERMINE CPU SPEED FOR DELAY LOOPS
AH = BCh
Return: CF clear
(Phoenix 1.10 10a) BYTE 0040h:00B0h set to delay loop count
(Dell 4xxDE BIOS A11) WORD 0040h:00ECh set to delay loop count
Note: this function reads system timer channel 0 twice, then does
calculations on the returned values to determine the delay loop
counter needed by the BIOS for beeps and floppy timeouts
SeeAlso: AX=2305h,MEM 0040h:00B0h
--------E-15BF00-----------------------------
INT 15 - Rational Systems DOS/16M - ???
AX = BF00h
???
Return: ???
Note: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
SeeAlso: AX=BF02h
--------E-15BF01-----------------------------
INT 15 - Rational Systems DOS/16M - ???
AX = BF01h
???
Return: ???
Notes: under DESQview/X 1.02 DVDOS4GX.DVR, this call is identical to AX=BF02h
called by DOS/4GW
SeeAlso: AX=BF00h,AX=BF02h
--------E-15BF02DX0000-----------------------
INT 15 - Rational Systems DOS/16M - INSTALLATION CHECK
AX = BF02h
DX = 0000h
Return: DX = nonzero if installed
DX:SI -> XBRK structure (see #0432)
Note: this function is also supported by DOS/4G
SeeAlso: AX=BF01h,AX=BFDCh,AX=BFDEh/BX=0000h
SeeAlso: INT 21/AH=FFh/DH=0Eh,INT 2F/AH=A1h,INT 2F/AX=F100h,INT 2F/AX=FBA1h
Format of DOS/16M XBRK structure:
Offset Size Description (Table 0432)
00h DWORD linear address of first available byte
04h DWORD linear address of last available byte + 1 ???
08h DWORD real-mode address of XBRK structure???
0Ch DWORD ???
10h 2 BYTEs ???
12h WORD segment of ???
14h 8 BYTEs ???
1Ch 512 BYTEs protected-mode IDT
21Ch N BYTEs protected-mode GDT
--------E-15BF03-----------------------------
INT 15 - Rational Systems DOS/4GW - UNINSTALL???
AX = BF03h
BX = PSP segment of extender
???
Return: ???
Note: if BX is not the PSP segment of the extender, it passes the call down
the INT 15 chain; this allows nested instances of the extender
SeeAlso: AX=BF06h
--------E-15BF04-----------------------------
INT 15 - Rational Systems DOS/4GW - ???
AX = BF04h
BX = PSP segment of extender
Return: nothing???
Notes: if BX is not the PSP segment of the extender, it passes the call down
the INT 15 chain; this allows nested instances of the extender
grabs INT 2Fh and installs handlers for INT 2F/AX=1605h-1607h
SeeAlso: INT 2F/AX=1607h/BX=22C0h
--------E-15BF05-----------------------------
INT 15 - Rational Systems DOS/4GW - INITIALIZE PROTECTED-MODE INTERFACE
AX = BF05h
BX = PSP segment of extender
Return: nothing???
Notes: if BX is not the PSP segment of the extender, it passes the call down
the INT 15 chain; this allows nested instances of the extender
calls INT 67/AX=DE01h if ???
--------E-15BF06-----------------------------
INT 15 - Rational Systems DOS/4GW - ???
AX = BF06h
BX = PSP segment of extender
???
Return: ???
Note: if BX is not the PSP segment of the extender, it passes the call down
the INT 15 chain; this allows nested instances of the extender
SeeAlso: AX=BF03h
--------E-15BFDCDX0000-----------------------
INT 15 - Rational Systems DOS/4GW - INSTALLATION CHECK
AX = BFDCh
DX = 0000h
SI = 0000h
Return: DX = nonzero if installed
DX:SI -> XBRK structure (see #0432)
SeeAlso: AX=BF02h
--------E-15BFDEBX0000-----------------------
INT 15 - DESQview/X - DVDOS4GX.DVR - INSTALLATION CHECK
AX = BFDEh
BX = 0000h
Return: AX = ??? (0003h)
BX = FFFFh
SeeAlso: AX=BF02h
--------E-15BFDEBX0001-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROCESS MANAGER NAME
AX = BFDEh
BX = 0001h
Return: BX = 0000h (success)
CX:DX -> name of process manager executable
SeeAlso: AX=BFDEh/BX=0000h
--------E-15BFDEBX0002-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
AX = BFDEh
BX = 0002h
CX:DX -> ???
Return: BX = 0000h (success)
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0003h
--------E-15BFDEBX0003-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0003h
Return: BX = 0000h (success)
CX:DX -> ???
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0002h
--------E-15BFDEBX0004-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 0004h
CL = ???
Return: BX = 0000h (success)
CX:DX -> XBRK structure (see #0432)
SeeAlso: AX=BFDEh/BX=0000h
--------E-15BFDEBX0005-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 0005h
CX = new value for ???
Return: BX = 0000h (success)
AX = old value of ???
DS:SI -> ??? (if AX nonzero on return)
ES:DI -> ??? (if AX zero on return)
Note: called by DOS4GW.EXE
SeeAlso: AX=BFDEh/BX=0000h
--------E-15BFDEBX0006-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0006h
Return: BX = 0000h (success)
AH = interrupt number??? (BEh)
CX:DX = ???
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0007h,INT BE"DESQview"
--------E-15BFDEBX0007-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
AX = BFDEh
BX = 0007h
CX:DX = ???
Return: BX = 0000h (success)
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=0006h
--------E-15BFDEBX0008-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 0008h
CX = segment of ???
DS = ???
Return: BX = status
0000h successful
AL = ??? (80h or C0h)
DX = ??? (0603h) if AL=C0h
0001h failed
AX = 0000h
Note: called by DOS4GW.EXE
SeeAlso: AX=BFDEh/BX=0000h
--------E-15BFDEBX0009-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET PROTECTED MODE PROGRAM LOADER
AX = BFDEh
BX = 0009h
Return: BX = 0000h (success)
CX:DX -> full pathname to LOAD32.EXP
SeeAlso: AX=BFDEh/BX=0000h
--------E-15BFDEBX000A-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - DECREMENT ???
AX = BFDEh
BX = 000Ah
Return: BX = 0000h (success)
AX = new value of ??? counter
Notes: also resets a variety of values if the counter goes negative
called by DOS4GW.EXE
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Bh
--------E-15BFDEBX000B-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - INCREMENT ???
AX = BFDEh
BX = 000Bh
Return: AX = new value of ??? counter
Note: called by DOS4GW.EXE
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Ah
--------E-15BFDEBX000C-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 000Ch
CL = ???
00h
nonzero
Return: ???
SeeAlso: AX=BFDEh/BX=0000h
--------E-15BFDEBX000D-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 000Dh
???
Return: ???
SeeAlso: AX=BFDEh/BX=0000h
--------E-15BFDEBX000E-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 000Eh
DX:CX -> ???
Return: AX = segment of handle for calling task
BX = ??? (probably destroyed)
DX:CX -> ???
SeeAlso: AX=BFDEh/BX=0000h,AX=BFDEh/BX=000Fh,AX=BFDEh/BX=0013h
--------E-15BFDEBX000F-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - ???
AX = BFDEh
BX = 000Fh
Return: AX = segment of handle for calling task
BX = ??? (probably destroyed)
DX:CX -> ???
Note: identical to AX=BFDEh/BX=000Eh with CX:DX = 0000h:0000h
SeeAlso: AX=BFDEh/BX=000Eh,AX=BFDEh/BX=0010h
--------E-15BFDEBX0010-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET TASK HANDLE
AX = BFDEh
BX = 0010h
Return: AX = segment of caller's task handle
BX destroyed
SeeAlso: AX=BFDEh/BX=000Fh
--------E-15BFDEBX0011-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0011h
Return: CX = code segment of DVDOS4GX.DVR
BX = ??? (0004h)
SeeAlso: AX=BFDEh/BX=0000h
--------E-15BFDEBX0012-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0012h
Return: DX = code segment of DVDOS4GX.DVR
BX = ??? (012Ch)
CX = ??? (0006h)
SeeAlso: AX=BFDEh/BX=0000h
--------E-15BFDEBX0013-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = 0013h
Return: DX:CX -> ???
SeeAlso: AX=BFDEh/BX=000Eh
--------E-15BFDEBX0014-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - LOCK ??? MAILBOX
AX = BFDEh
BX = 0014h
CX = index of ??? mailbox
(0000h-0004h valid, but no range checking done)
Return: AX,BX destroyed
SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
--------E-15BFDEBX0015-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - UNLOCK ??? MAILBOX
AX = BFDEh
BX = 0015h
CX = index of ??? mailbox
(0000h-0004h valid, but no range checking done)
Return: AX,BX destroyed
SeeAlso: AX=BFDEh/BX=0014h,AX=BFDEh/BX=0016h
--------E-15BFDEBX0016-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - CHECK IF ??? MAILBOX OWNED
AX = BFDEh
BX = 0016h
CX = index of ??? mailbox
(0000h-0004h valid, but no range checking done)
Return: AX = status
0000h no one owns mailbox
0001h mailbox has an owner
BX destroyed
SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0017h
--------E-15BFDEBX0017-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ??? MAILBOX OWNER
AX = BFDEh
BX = 0017h
CX = index of ??? mailbox
(0000h-0004h valid, but no range checking done)
Return: AX = segment of mailbox owner's handle
BX = segment of caller's task handle
SeeAlso: AX=BFDEh/BX=0015h,AX=BFDEh/BX=0016h
--------E-15BFDEBXFFFD-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - GET ???
AX = BFDEh
BX = FFFDh
Return: CX:DX = ???
SeeAlso: AX=BFDEh/BX=FFFEh
--------E-15BFDEBXFFFE-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - SET ???
AX = BFDEh
BX = FFFEh
CX:DX = ???
SeeAlso: AX=BFDEh/BX=FFFDh
--------E-15BFDEBXFFFF-----------------------
INT 15 - DESQview/X 1.02+ - DVDOS4GX.DVR - NOP
AX = BFDEh
BX = FFFFh
SeeAlso: AX=BFDEh/BX=0000h
--------B-15C0-------------------------------
INT 15 - SYSTEM - GET CONFIGURATION (XT after 1/10/86,AT mdl 3x9,CONV,XT286,PS)
AH = C0h
Return: CF set if BIOS doesn't support call
CF clear on success
ES:BX -> ROM table (see #0433)
AH = status
00h successful
86h unsupported function
Notes: the 1/10/86 XT BIOS returns an incorrect value for the feature byte
the configuration table is at F000h:E6F5h in 100% compatible BIOSes
Dell machines contain the signature "DELL" or "Dell" at absolute FE076h
and a model byte at absolute address FE845h (see #0440)
Hewlett-Packard machines contain the signature "HP" at F000h:00F8h and
a product identifier at F000h:00FAh (see #0443)
Compaq machines can be identified by the signature string "COMPAQ" at
F000h:FFEAh, and is preceded by additional information (see #0441)
Tandy 1000 machines contain 21h in the byte at F000h:C000h and FFh in
the byte at FFFFh:000Eh; Tandy 1000SL/TL machines only provide the
first three data bytes (model/submodel/revision) in the returned
table
Toshiba laptops contain the signature "TOSHIBA" at FE010h as part of
a laptop information record at F000h:E000h (see #0444)
some AST machines contain the string "COPYRIGHT AST RESEARCH" one byte
past the end of the configuration table
the Phoenix 386 BIOS contains a second version and date string
(presumably the last modification for that OEM version) beginning at
F000h:FFD8h, with each byte doubled (so that both ROM chips contain
the complete information)
SeeAlso: AH=C7h,AH=C9h,AX=D100h,AX=D103h
Format of ROM configuration table:
Offset Size Description (Table 0433)
00h WORD number of bytes following
02h BYTE model (see #0439)
03h BYTE submodel (see #0439)
04h BYTE BIOS revision: 0 for first release, 1 for 2nd, etc.
05h BYTE feature byte 1 (see #0434)
06h BYTE feature byte 2 (see #0435)
07h BYTE feature byte 3 (see #0436)
08h BYTE feature byte 4 (see #0437)
09h BYTE feature byte 5 (see #0438)
??? (08h) (Phoenix 386 v1.10)
??? (0Fh) (Phoenix 486 v1.03 PCI)
---AWARD BIOS---
0Ah N BYTEs AWARD copyright notice
---Phoenix BIOS---
0Ah BYTE ??? (00h)
0Bh BYTE major version
0Ch BYTE minor version (BCD)
0Dh 4 BYTEs ASCIZ string "PTL" (Phoenix Technologies Ltd)
---Quadram Quad386---
0Ah 17 BYTEs ASCII signature string "Quadram Quad386XT"
Bitfields for feature byte 1:
Bit(s) Description (Table 0434)
7 DMA channel 3 used by hard disk BIOS
6 2nd 8259 installed
5 Real-Time Clock installed
4 INT 15/AH=4Fh called upon INT 09h
3 wait for external event (INT 15/AH=41h) supported
2 extended BIOS area allocated (usually at top of RAM)
1 bus is Micro Channel instead of ISA
0 system has dual bus (Micro Channel + ISA)
SeeAlso: #0433,#0435
Bitfields for feature byte 2:
Bit(s) Description (Table 0435)
7 32-bit DMA supported
6 INT 16/AH=09h (keyboard functionality) supported (see #0509)
5 INT 15/AH=C6h (get POS data) supported
4 INT 15/AH=C7h (return memory map info) supported
3 INT 15/AH=C8h (en/disable CPU functions) supported
2 non-8042 keyboard controller
1 data streaming supported
0 reserved
SeeAlso: #0433,#0436,AH=C6h,AH=C7h,AH=C8h,INT 16/AH=09h
Bitfields for feature byte 3:
Bit(s) Description (Table 0436)
7 not used
6-5 reserved
4 POST supports ROM-to-RAM enable/disable
3 SCSI subsystem supported on system board
2 information panel installed
1 IML (Initial Machine Load) system (BIOS loaded from disk)
0 SCSI supported in IML
SeeAlso: #0433,#0435,#0436
Bitfields for feature byte 4:
Bit(s) Description (Table 0437)
7 IBM "private" (set on N51SX, CL57SX)
6 system has EEPROM
5-3 ABIOS presence
001 not supported
010 supported in ROM
011 supported in RAM (must be loaded)
2 "private"
1 system supports memory split at/above 16M
0 POSTEXT directly supported by POST
SeeAlso: #0433,#0436,#0438
Bitfields for feature byte 5 (IBM):
Bit(s) Description (Table 0438)
7-5 IBM "private"
4-2 reserved
1 system has enhanced mouse mode
0 flash EPROM
SeeAlso: #0433,#0437
(Table 0439)
Values for model/submodel/revision:
Model Submdl Rev BIOS date System
FFh * * 04/24/81 PC (original)
FFh * * 10/19/81 PC (some bugfixes)
FFh * * 10/27/82 PC (HD, 640K, EGA support)
FFh 00h rev ??? Tandy 1000SL
FFh 01h rev ??? Tandy 1000TL
FFh 46h *** ??? Olivetti M15
FEh * * 08/16/82 PC XT
FEh * * 11/08/82 PC XT and Portable
FEh * * ../..x.. Toshiba laptops up to ~1987
("x"=product ID) (see #0445)
FEh 43h *** ??? Olivetti M240
FEh A6h ??? ??? Quadram Quad386
FDh * * 06/01/83 PCjr
FCh * * 01/10/84 AT models 068,099 6 MHz 20MB
FCh * * 02/25/93 Linux DOSEMU (all versions)
FCh 00h 00h ??? PC3270/AT
FCh 00h 01h 06/10/85 AT model 239 6 MHz 30MB
FCh 00h > 01h ??? 7531/2 Industrial AT
FCh 01h 00h 11/15/85 AT models 319,339 8 MHz, Enh Keyb, 3.5"
FCh 01h 00h 09/17/87 Tandy 3000
FCh 01h 00h ../..x.. Toshiba laptops since ~1988
("x"=product ID) (see #0445)
FCh 01h 00h 03/08/93 Compaq DESKPRO/i
FCh 01h 00h various Compaq DESKPRO, SystemPro, ProSignia
FCh 01h 00h 07/20/93 Zenith Z-Lite 425L
FCh 01h 00h 04/09/90 AMI BIOS
FCh 01h 20h 06/10/92 AST
FCh 01h 30h ??? Tandy 3000NL
FCh 01h ??? ??? Compaq 286/386
FCh 02h 00h 04/21/86 PC XT-286
FCh 02h 00h various Compaq LTE Lite
FCh 02h 00h 08/05/93 Compaq Contura 486/486c/486cx
FCh 02h 00h 08/11/88 SoftWindows 1.0.1 (Power Macintosh)
FCh 04h 00h 02/13/87 ** PS/2 Model 50 (10 MHz/1 ws 286)
FCh 04h 01h 05/09/87 PS/2 Model 50 (10 Mhz 286, LW-type 32)
FCh 04h 02h ??? PS/2 Model 50
FCh 04h 02h 01/28/88 PS/2 Model 50Z (10 Mhz 286, LW-type 33)
FCh 04h 03h 04/18/88 PS/2 Model 50Z (10 MHz/0 ws 286)
FCh 04h 04h ??? PS/2 Model 50Z
FCh 05h 00h 02/13/87 ** PS/2 Model 60 (10 MHz 286)
FCh 06h 00h ??? IBM 7552-140 "Gearbox"
FCh 06h 01h ??? IBM 7552-540 "Gearbox"
FCh 08h *** ??? Epson, unknown model
FCh 08h 00h ??? PS/2 Model 25/286
FCh 09h 00h ??? PS/2 Model 25 (10 MHz 286)
FCh 09h 00h 08/25/88 PS/2 Model 30 286 (10 Mhz, LW-type 37)
FCh 09h 02h 06/28/89 PS/2 Model 30-286
FCh 09h 02h 06/28/89 PS/2 Model 25 286 (10 Mhz, LW-type 37)
FCh 0Bh 00h 12/01/89 PS/1 (LW-Type 44)
FCh 0Bh 00h 02/16/90 PS/1 Model 2011 (10 MHz 286)
FCh 20h 00h 02/18/93 Compaq ProLinea
FCh 30h *** ??? Epson, unknown model
FCh 31h *** ??? Epson, unknown model
FCh 33h *** ??? Epson, unknown model
FCh 42h *** ??? Olivetti M280
FCh 45h *** ??? Olivetti M380 (XP 1, XP3, XP 5)
FCh 48h *** ??? Olivetti M290
FCh 4Fh *** ??? Olivetti M250
FCh 50h *** ??? Olivetti M380 (XP 7)
FCh 51h *** ??? Olivetti PCS286
FCh 52h *** ??? Olivetti M300
FCh 81h 00h 01/15/88 Phoenix 386 BIOS v1.10 10a
FCh 81h 01h ??? "OEM machine"
FCh 82h 01h ??? "OEM machine"
FCh 94h 00h ??? Zenith 386
FBh 00h 01h 01/10/86 PC XT-089, Enh Keyb, 3.5" support
FBh 00h 01h 05/13/94 HP 200LX 2MB BIOS 1.01 A D german
FBh 00h 02h 05/09/86 PC XT
FBh 00h 04h 08/19/93 HP 100LX 1MB BIOS 1.04 A
FBh 4Ch *** ??? Olivetti M200
FAh 00h 00h 09/02/86 PS/2 Model 30 (8 MHz 8086)
FAh 00h 01h 12/12/86 PS/2 Model 30
FAh 00h 02h 02/05/87 PS/2 Model 30
FAh 01h 00h 06/26/87 PS/2 Model 25/25L (8 MHz 8086)
FAh 30h 00h ??? IBM Restaurant Terminal
FAh 4Eh *** ??? Olivetti M111
FAh FEh 00h ??? IBM PCradio 9075
F9h 00h 00h 09/13/85 PC Convertible
F9h FFh 00h ??? PC Convertible
F8h 00h 00h 03/30/87 ** PS/2 Model 80 (16MHz 386)
F8h 00h 00h ??? PS/2 Model 75 486 (33Mhz 486)
F8h 01h 00h 10/07/87 PS/2 Model 80 (20MHz 386)
F8h 02h 00h ??? PS/2 Model 55-5571
F8h 04h 00h 01/29/88 PS/2 Model 70 (20 Mhz 386DX,LW-type 33)
F8h 04h 02h 04/11/88 PS/2 Model 70 20MHz, type 2 system brd
F8h 04h 03h 03/17/89 PS/2 Model 70 20MHz, type 2 system brd
F8h 05h 00h ??? IBM PC 7568
F8h 06h 00h ??? PS/2 Model 55-5571
F8h 07h 00h ??? IBM PC 7561/2
F8h 07h 01h ??? PS/2 Model 55-5551
F8h 07h 02h ??? IBM PC 7561/2
F8h 07h 03h ??? PS/2 Model 55-5551
F8h 09h 00h 01/29/88 PS/2 Model 70 16MHz 386DX, type 1 sysbd
F8h 09h 02h 04/11/88 PS/2 Model 70 some models
F8h 09h 03h 03/17/89 PS/2 Model 70 some models
F8h 09h 04h 12/15/89 PS/2 Model 70 (16 Mhz 386, LW-type 33)
F8h 0Bh 00h 01/18/89 PS/2 Model P70 (8573-121) typ 2 sys brd
F8h 0Bh 02h 12/16/89 PS/2 Model P70 ??
F8h 0Ch 00h 11/02/88 PS/2 Model 55SX (16 MHz 386SX)
F8h 0Dh 00h ??? PS/2 Model 70 25MHz, type 3 system brd
F8h 0Dh 00h 06/08/88 PS/2 Model 70 386 25MHz, type 3 sys brd
F8h 0Dh 01h 02/20/89 PS/2 Model 70 386 25MHz, type 3 sys brd
F8h 0Dh ??? 12/01/89 PS/2 Model 70 486 25Mhz, type 3 sys brd
F8h 0Eh 00h ??? PS/1 486SX
F8h 0Fh 00h ??? PS/1 486DX
F8h 10h 00h ??? PS/2 Model 55-5551
F8h 11h 00h 10/01/90 PS/2 Model 90 XP (25 MHz 486)
F8h 12h 00h ??? PS/2 Model 95 XP
F8h 13h 00h 10/01/90 PS/2 Model 90 XP (33 MHz 486)
F8h 14h 00h 10/01/90 PS/2 Model 90-AK9 (25 MHz 486), 95 XP
F8h 15h 00h ??? PS/2 Model 90 XP
F8h 16h 00h 10/01/90 PS/2 Model 90-AKD / 95XP486 (33MHz 486)
F8h 17h 00h ??? PS/2 Model 90 XP
F8h 19h 05h ??? PS/2 Model 35/35LS or 40 (20 MHz 386SX)
F8h 19h 05h 03/15/91 PS/2 Model 35 SX / 40 SX (LW-type 37)
F8h 19h 06h 04/04/91 PS/2 Model 35 SX / 40 SX (LW-type 37)
F8h 1Ah 00h ??? PS/2 Model 95 XP
F8h 1Bh 00h 09/29/89 PS/2 Model 70 486 (25 Mhz 386DX)
F8h 1Bh 00h 10/02/89 PS/2 Model 70-486 (25 MHz 486)
F8h 1Ch 00h 02/08/90 PS/2 Model 65-121 / 65 SX (16MHz 386SX)
F8h 1Eh 00h 02/08/90 PS/2 Model 55LS (16 MHz 386SX)
F8h 23h 00h ??? PS/2 Model L40 SX
F8h 23h 01h ??? PS/2 Model L40 SX (20 MHz 386SX)
F8h 23h 02h 02/27/91 PS/2 Model L40 SX (20Mhz386SX,LW-typ37)
F8h 25h 00h ??? PS/2 Model 57 SLC
F8h 25h 06h ??? PS/2 Model M57 (20 MHz 386SLC)
F8h 26h 00h ??? PS/2 Model 57 SX
F8h 26h 01h ??? PS/2 Model 57 (20 MHz 386SX)
F8h 26h 02h 07/03/91 PS/2 Model 57 SX (20Mhz 386SX, SCSI)
F8h 28h 00h ??? PS/2 Model 95 XP
F8h 29h 00h ??? PS/2 Model 90 XP
F8h 2Ah 00h ??? PS/2 Model 95 XP (50 MHz 486)
F8h 2Bh 00h ??? PS/2 Model 90 / 90XP486 (50 MHz 486)
F8h 2Ch 00h ??? PS/2 Model 95 XP
F8h 2Ch 01h ??? PS/2 Model 95 (20 MHz 486SX)
F8h 2Dh 00h ??? PS/2 Model 90 XP (20 MHz 486SX)
F8h 2Eh 00h ??? PS/2 Model 95 XP
F8h 2Eh 00h ??? PS/2 Model 95 XP486 (20 Mhz 486SX)
F8h 2Eh 01h ??? PS/2 Model 95 (20 MHz 486SX + 487SX)
F8h 2Fh 00h ??? PS/2 Model 90 XP (20 MHz 486SX + 487SX)
F8h 30h 00h ??? PS/1 Model 2121 (16 MHz 386SX)
F8h 33h 00h ??? PS/2 Model 30-386
F8h 34h 00h ??? PS/2 Model 25-386
F8h 36h 00h ??? PS/2 Model 95 XP
F8h 37h 00h ??? PS/2 Model 90 XP
F8h 38h 00h ??? PS/2 Model 57
F8h 39h 00h ??? PS/2 Model 95 XP
F8h 3Fh 00h ??? PS/2 Model 90 XP
F8h 40h 00h ??? PS/2 Model 95 XP
F8h 41h 00h ??? PS/2 Model 77
F8h 45h 00h ??? PS/2 Model 90 XP (Pentium)
F8h 46h 00h ??? PS/2 Model 95 XP (Pentium)
F8h 47h 00h ??? PS/2 Model 90/95 E (Pentium)
F8h 48h 00h ??? PS/2 Model 85
F8h 49h 00h ??? PS/ValuePoint 325T
F8h 4Ah 00h ??? PS/ValuePoint 425SX
F8h 4Bh 00h ??? PS/ValuePoint 433DX
F8h 4Eh 00h ??? PS/2 Model 295
F8h 50h 00h ??? PS/2 Model P70 (8573) (16 MHz 386)
F8h 50h 01h 12/16/89 PS/2 Model P70 (8570-031)
F8h 52h 00h ??? PS/2 Model P75 (33 MHz 486)
F8h 56h 00h ??? PS/2 Model CL57 SX
F8h 57h 00h ??? PS/2 Model 90 XP
F8h 58h 00h ??? PS/2 Model 95 XP
F8h 59h 00h ??? PS/2 Model 90 XP
F8h 5Ah 00h ??? PS/2 Model 95 XP
F8h 5Bh 00h ??? PS/2 Model 90 XP
F8h 5Ch 00h ??? PS/2 Model 95 XP
F8h 5Dh 00h ??? PS/2 Model N51 SLC
F8h 5Eh 00h ??? IBM ThinkPad 700
F8h 61h *** ??? Olivetti P500
F8h 62h *** ??? Olivetti P800
F8h 80h 00h ??? PS/2 Model 80 (25 MHz 386)
F8h 80h 01h 11/21/89 PS/2 Model 80-A21 (25 Mhz 386)
F8h 81h 00h ??? PS/2 Model 55-5502
F8h 87h 00h ??? PS/2 Model N33SX
F8h 88h 00h ??? PS/2 Model 55-5530T
F8h 97h 00h ??? PS/2 Model 55 Note N23SX
F8h 99h 00h ??? PS/2 Model N51 SX
F8h F2h 30h ??? Reply Model 32
F8h F6h 30h ??? Memorex Telex
F8h FDh 00h ??? IBM Processor Complex (with VPD)
F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX)
F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX)
F8h ??? ??? ??? PS/2 Model 90 (25 MHz 486SX + 487SX)
F8h ??? ??? ??? PS/2 Model 95 (25 MHz 486SX + 487SX)
E4h ??? ??? ??? Triumph Adler PC/XT
E1h ??? ??? ??? ??? (checked for by DOS4GW.EXE)
E1h 00h 00h ??? PS/2 Model 55-5530 Laptop
D9h ??? ??? ??? Peacock XT
9Ah * * ??? Compaq XT/Compaq Plus
30h ??? ??? ??? Sperry PC
2Dh * * ??? Compaq PC/Compaq Deskpro
??? 56h ??? ??? Olivetti, unknown model
??? 74h ??? ??? Olivetti, unknown model
Notes: BIOS dates may vary without changes to the revision code, especially
for non-IBM machines
* This BIOS call is not implemented in these early versions or under
Linux's DOSEMU. Read the Model byte at F000h:FFFEh and BIOS date at
F000h:FFF5h instead.
** These BIOS versions require the DASDDRVR.SYS patches.
*** These Olivetti and Epson machines store the submodel in the byte at
F000h:FFFDh.
SeeAlso: #0433,#0440
(Table 0440)
Values for Dell model byte:
02h Dell 200
03h Dell 300
05h Dell 220
06h Dell 310
07h Dell 325
09h Dell 310A
0Ah Dell 316
0Bh Dell 220E
0Ch Dell 210
0Dh Dell 316SX
0Eh Dell 316LT
0Fh Dell 320LX
11h Dell 425E
SeeAlso: #0433,#0439
Format of Compaq product information:
Address Size Description (Table 0441)
F000h:FFE4h BYTE product family code (first byte)
F000h:FFE4h BYTE Point release number
F000h:FFE4h BYTE ROM version code
F000h:FFE4h BYTE product family code (second byte)
F000h:FFE8h WORD BIOS type code
SeeAlso: #0442,#0444
Format of Hewlett-Packard ROM ID at F000h:00F8h:
Offset Size Description (Table 0442)
00h 2 BYTEs signature "HP" (48h 50h)
02h 2 BYTEs 00h 00h
04h BYTE secondary code revision
05h BYTE primary code revision
06h BYTE date code, year-1960 (BCD)
07h BYTE date code, week of year (BCD)
SeeAlso: #0441,#0443
Bitfields for Hewlett-Packard product identifier:
Bit(s) Description (Table 0443)
4-0 machine code
0 original Vectra
1 ES/12
2 RS/20
3 Portable/CS
4 ES
5 CS
6 RS/16
other reserved
7-5 CPU type
0 = 80286
1 = 8088
2 = 8086
3 = 80386
other reserved
SeeAlso: #0442
Format of Toshiba laptop information:
Offset Size Description (Table 0444)
00h 8 BYTEs ASCII product number (e.g. "T2200SX ")
08h 8 BYTEs ASCII version number (e.g. "V1.20 ")
10h 8 BYTEs ASCII signature string "TOSHIBA "
18h 8 BYTEs always zero???
20h DWORD -> built-in BIOS setup program entry point or 0000h:0000h
Note: this record is located at F000h:E000h
SeeAlso: #0441,#0442
(Table 0445)
Values for Toshiba product ID:
model prodID version date product number
FEh 29h ../..).. Toshiba T1000LE
FEh 2Ah ../..*.. Toshiba T1000XE
FEh 2Bh ../..+.. Toshiba T1000SE
FEh 2Ch ../..,.. Toshiba T1000
FEh 2Dh ../..-.. Toshiba T1200F
FEh 2Dh V4.00 12/26-87 Toshiba T1200H
FEh 2Eh ../..... Toshiba T1100+
FCh 22h ../..".. Toshiba T8500
FCh 26h 01/15&88 Toshiba T5200
FCh 27h ../..'.. Toshiba T5100
FCh 28h ../..(.. Toshiba T2000
FCh 2Ah 12/26*89 Toshiba T1200XE
FCh 2Bh ../..+.. Toshiba T1600
FCh 2Ch ../..,.. Toshiba T3100e
FCh 2Dh ../..-.. Toshiba T3200
FCh 2Fh ../../.. Toshiba T3100
FCh 34h V1.50 02/04494 Toshiba T100X
FCh 38h ../..8.. Toshiba T2000SXe
FCh 39h V1.20 09/16991 Toshiba T2200SX
FCh 39h V1.40 10/01992 Toshiba T2200SX
FCh 3Ch V1.50 01/28<91 Toshiba T2000SX
FCh 3Dh ../..=.. Toshiba T3200SXC
FCh 3Eh ../..>.. Toshiba T3100SX
FCh 3Fh ../..?.. Toshiba T3200SX
FCh 40h ../..@.. Toshiba T4500C
FCh 41h V1.20 04/05A92 Toshiba T4500 ("T4500SXC" ???)
FCh 45h V3.20 04/14E92 Toshiba T4400SX ("C" or "SXC" on cover)
FCh 45h 01/13E93 Toshiba T4400SXC
FCh 46h * ../..F.. Toshiba T6400
FCh 46h * ../..F.. Toshiba T6400C
FCh 5Fh V1.40 01/18_94 Toshiba T3300SL
FCh 69h ../..i.. Toshiba T1900C ("T1900CT" ???)
FCh 6Ah V1.30 05/19j93 Toshiba T1900 ("T1900S" ???)
FCh 6Dh V1.10 12/25m92 Toshiba T1850C
FCh 6Eh V1.00 08/19n92 Toshiba T1850
FCh 6Eh V1.10 12/25n92 Toshiba T1850
FCh 6Fh V1.00 07/17o92 Toshiba T1800
FCh 6Fh V1.10 12/25o92 Toshiba T1800
FCh 7Eh V1.30 06/17~93 Toshiba T4600C
FCh 7Fh V1.40 11/10x94 Toshiba T4600
FCh 8Ah V1.30 10/22x93 Toshiba T6600C
FCh 91h V1.20 07/15x94 Toshiba T2400CT
FCh 91h V5.00 07/28x95 Toshiba T2400CS/CT
FCh 92h V5.00 07/28x95 Toshiba T3600CT
FCh 96h * V1.40 12/08x94 Toshiba T200
FCh 96h * V1.50 12/08x94 Toshiba T200CS (T200)
FCh 97h ../..x.. Toshiba T4800CT
FCh 98h * V1.10 12/22x93 Toshiba T1910
FCh 98h * V2.40 07/12x94 Toshiba T1910/CS (T19XX)
FCh 99h ../..x.. Toshiba T4700CS
FCh 9Bh V2.30 01/31x94 Toshiba T4700CT
FCh 9Bh V2.50 03/22x94 Toshiba T4700CT
FCh 9Bh V5.00 07/28x95 Toshiba T4700CT
FCh 9Ch V1.30 01/11x94 Toshiba T1950CT
FCh 9Ch V2.50 07/22x94 Toshiba T1950CT (T19XX)
FCh 9Dh * V2.40 07/12x94 Toshiba T1950/CS (T19XX)
FCh 9Eh * V1.20 12/25x93 Toshiba T3400
FCh 9Eh * V1.30 03/22x94 Toshiba T3400/CT
FCh B5h ** V5.10 08/25x95 Toshiba T2110/CS (T21XX)
FCh B5h V5.10 08/25x95 Toshiba T2130CS/CT (T21XX)
FCh BAh V1.30 02/16x95 Toshiba T2150CDS/CDT
FCh BAh V5.00 07/27x95 Toshiba T2150CDS/CDT (T2150)
FCh BBh ** V1.30 01/25x95 Toshiba T2100/CS/CT
FCh BBh ** V5.00 07/27x95 Toshiba T2100/CS/CT
FCh BCh V1.20 12/05x94 Toshiba T2450CT
FCh BCh V5.00 07/28x95 Toshiba T2450CT
FCh BEh V5.00 07/28x95 Toshiba T4850CT
FCh C0h V5.20 05/30x96 Toshiba 420CDS/CDT
FCh C1h V5.20 03/27x96 Toshiba 100CS
FCh C3h V5.60 07/19x96 Toshiba 710CDT / 720CDT
FCh C6h V5.30 11/30x95 Toshiba 410CS/CDT
FCh CAh V5.10 08/18x95 Toshiba 400CS/CDT
FCh CAh V5.40 12/18x95 Toshiba 400CS/CDT
FCh CBh V5.10 09/01x95 Toshiba 610CT
FCh CCh V5.50 06/13x96 Toshiba 700CS/CT
FCh CFh V5.00 08/07x95 Toshiba T4900CT
FCh DCh V5.10 06/17x96 Toshiba 650CT
FCh DCh V5.10 05/10x96 Toshiba 110CS/CT
FCh DDh V5.10 05/10x96 Toshiba 110CS/CT
FCh DFh V5.20 05/27x96 Toshiba 500CS/CDT
FCh ??? V5.??? ../..x.. Toshiba 620CT
FCh ??? V5.??? ../..x.. Toshiba 660CDT
FCh ??? V5.30 11/22/96 Toshiba 730CDT
FCh ??? V6.00 09/20/96 Toshiba 200CDS/CDT
FCh ??? V6.20 11/14/96 Toshiba 430CDS/CDT
FCh ??? V6.40 12/05/96 Toshiba 510CS/CDT
Notes: the 8-bit ASCII graphics character in the "date" column above
has been substituted by "x" if larger than 80h
BIOS version numbers and dates may vary, esp. due to harddisk and
(flash) BIOS upgrades; all BIOS versions 5.xx are flash updates
for Windows95, the product number may indicate the series only
(T21XX) or does no longer contain the exact type suffix (CS/CT)
the most recent versions of the BIOS have stopped including the
product ID code in the BIOS date
[*] These models have monochrome and color versions which can be
distinguished with INT 42/AX=7503h (WD90C24 chipset)
[**] These models have monochrome and color versions which can be
distinguished with INT 10/AX=5F50h (CT655xx chipset)
models not found here like T21x5 are variants differing only in
bundled software
SeeAlso: #0439
--------B-15C1-------------------------------
INT 15 - SYSTEM - RETURN EXTENDED-BIOS DATA-AREA SEGMENT ADDRESS (PS)
AH = C1h
Return: CF set on error
CF clear if successful
ES = segment of data area (see #M001,#M004,#M005)
SeeAlso: AH=04h"ABIOS",MEM 0040h:000Eh"DATA"
--------M-15C200-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - ENABLE/DISABLE
AX = C200h
BH = new state
00h disabled
01h enabled
Return: CF set on error
AH = status (see #0446)
Note: IBM classifies this function as required
SeeAlso: AX=C201h,AX=C207h,AX=C208h
(Table 0446)
Values for pointing device function status:
00h successful
01h invalid function
02h invalid input
03h interface error
04h need to resend
05h no device handler installed
--------M-15C201-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - RESET
AX = C201h
Return: CF set on error
AH = status (see #0446)
CF clear if successful
BH = device ID
BL = value returned by attached device after reset
AAh if device is a mouse
Notes: after successful completion of this call, the pointing device is set
as follows: disabled, sample rate 100 Hz, resolution 4 counts/mm,
scaling 1:1, unchanged data package size
IBM classifies this function as required
SeeAlso: INT 33/AX=0000h,AX=C200h,AX=C207h
--------M-15C202-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET SAMPLING RATE
AX = C202h
BH = sampling rate
00h 10/second
01h 20/second
02h 40/second
03h 60/second
04h 80/second
05h 100/second
06h 200/second
Return: CF set on error
AH = status (see #0446)
SeeAlso: INT 33/AX=001Ch
--------M-15C203-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET RESOLUTION
AX = C203h
BH = resolution (see #0447)
Return: CF set on error
AH = status (see #0446)
(Table 0447)
Values for pointing device resolution:
00h one count per mm
01h two counts per mm
02h four counts per mm
03h eight counts per mm
--------M-15C204-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - GET TYPE
AX = C204h
Return: CF set on error
AH = status (see #0446)
CF clear if successful
BH = device ID
--------M-15C205-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - INITIALIZE
AX = C205h
BH = data package size (1 - 8 bytes)
Return: CF set on error
AH = status (see #0446)
Note: the pointing device is set as follows: disabled, 100 Hz sample rate,
resolution 4 counts/mm, scaling 1:1
SeeAlso: AX=C201h
--------M-15C206-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - EXTENDED COMMANDS
AX = C206h
BH = subfunction
00h return device status
Return: BL = pointing device status (see #0448)
CL = resolution (see #0447)
DL = sample rate, reports per second
01h set scaling at 1:1
02h set scaling at 2:1
Return: CF set on error
AH = status (see #0446)
Bitfields for pointing device status:
Bit(s) Description (Table 0448)
0 right button pressed
1 reserved
2 left button pressed
3 reserved
4 0 if 1:1 scaling, 1 if 2:1 scaling
5 device enabled
6 0 if stream mode, 1 if remote mode
7 reserved
--------M-15C207-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE (PS) - SET DEVICE HANDLER ADDR
AX = C207h
ES:BX -> FAR user device handler or 0000h:0000h to cancel
Return: CF set on error
AH = status (see #0446)
Note: when the subroutine is called, it is passed the following values on
the stack; the handler should return with a FAR return without
popping the stack:
WORD 1: status (see #0449)
WORD 2: X data (high byte = 00h)
WORD 3: Y data (high byte = 00h)
WORD 4: 0000h
SeeAlso: INT 33/AX=000Ch
Bitfields for pointing device status:
Bit(s) Description (Table 0449)
15-8 reserved (0)
7 Y data overflowed
6 X data overflowed
5 Y data is negative
4 X data is negative
3 reserved (1)
2 reserved (0)
1 right button pressed
0 left button pressed
--------M-15C208-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - WRITE TO POINTER PORT
AX = C208h
BL = byte to be sent to the pointing device
Note: IBM classifies this function as optional
SeeAlso: AX=C200h,AX=C209h
--------M-15C209-----------------------------
INT 15 - SYSTEM - POINTING DEVICE BIOS INTERFACE - READ FROM POINTER PORT
AX = C209h
Return: BL = first byte read from pointing device
CL = second byte read
DL = third byte read
Note: IBM classifies this function as optional
SeeAlso: AX=C200h,AX=C208h
--------M-15C2-------------------------------
INT 15 - IBM SurePath BIOS - Officially "Private" Function
AH = C2h
AL = 10h-23h
SeeAlso: AH=07h"IBM",AH=3Eh"IBM"
--------B-15C3------------------------------
INT 15 - SYSTEM - ENABLE/DISABLE WATCHDOG TIMEOUT (PS50+)
AH = C3h
AL = function
00h disable PS/2 watchdog timer
01h enable PS/2 watchdog timer
BX = timer counter (0001h-00FFh)
02h disable Gearbox system
03h enable Gearbox system
Return: CF set on error
CF clear if successful
Note: the watchdog timer generates an NMI
SeeAlso: INT 21/AH=2Bh/CX=6269h"WDTSR"
--------B-15C4-------------------------------
INT 15 - SYSTEM - PROGRAMMABLE OPTION SELECT (PS50+)
AH = C4h
AL = subfunction
00h return base POS register address
01h enable selected slot for setup
BL = slot number (1 to 8)
02h disable setup for all slots (enable adapter)
Return: CF set on error
DX = base POS register address (if subfunction 00h)
SeeAlso: AH=C6h
--------B-15C5-------------------------------
INT 15 UC - OS HOOK - ROM BIOS TRACING CALLOUT (PS30/286,PS50Z,PS95)
AH = C5h
AL = interrupt being invoked
01h INT 19
02h INT 14
03h INT 16
04h INT 40 (floppy INT 13)
05h INT 17
06h INT 10
07h INT 12
08h INT 11
09h INT 1A
Return: all registers except AX must be preserved
Notes: called as the very first action of the indicated ROM BIOS interrupt
handlers on the PS/2 Models 30/286, 50Z, and 95
default handler does nothing and returns CF clear for the above
subfunctions, CF set and AH=86h for all other subfunctions
value of AX passed to the original interrupt handler is pushed on
stack immediately prior to call
--------B-15C6-------------------------------
INT 15 U - later PS/2 models - GET POS DATA
AH = C6h
???
Return: ???
Notes: this function is referenced by name and number in some IBM BIOS manuals
IBM reports that "there are a number of problems with this call" and
does not recommend its use.
SeeAlso: AH=C4h
--------B-15C7-------------------------------
INT 15 - SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
AH = C7h
DS:SI -> user supplied memory map table (see #0450)
Notes: call AH=C0h and examine bit 4 of feature byte 2 to check if this
function is supported
IBM classifies this function as optional
Return: CF set on error, clear if successful
SeeAlso: AH=C0h,AH=C9h,AH=D1h,AX=E820h
Format of memory-map table structure:
Offset Size Description (Table 0450)
00h WORD length of table (excluding this word)
02h DWORD local memory between 1M and 16M, in 1K blocks
06h DWORD local memory between 16M and 4G, in 1K blocks
0Ah DWORD system memory between 1M and 16M, in 1K blocks
0Eh DWORD system memory between 16M and 4G, in 1K blocks
12h DWORD cacheable memory between 1M and 16M, in 1K blocks
16h DWORD cacheable memory between 16M and 4G, in 1K blocks
1Ah DWORD 1K blocks before start of non-system memory between 1M and 16M
1Eh DWORD 1K blocks before start of non-system memory between 16M and 4G
22h WORD start segment of largest free block from C0000h-DFFFFh
24h WORD size of largest free block
26h DWORD reserved
--------B-15C8-------------------------------
INT 15 - SYSTEM - ENABLE/DISABLE PROCESSOR FUNCTIONS
AH = C8h
AL = function
00h disable L1 cache
01h enable L1 cache
---models 90 and 95 only---
02h disable L2 cache
03h enable L2 cache
04h disable both caches
05h enable both caches
06h return status of both caches
07h-FFh Reserved
Return: CF set on error
CF clear if successful
AH = status (see #0451)
For subfunction 06h only:
BL = status of L1 cache
00h enabled
01h disabled or not installed
02h disabled due to test error (can not be enabled)
BH = status of L2 cache (same codes as BL)
Notes: supported by at least PS/2 70, 70/486, 80-A21, 90, 95
call AH=C0h and examine bit 3 of feature byte 2 to check if this
function is supported.
on a 486 system, any external caches must be disabled when the
on-chip cache (L1) is disabled.
SeeAlso: AH=C0h
(Table 0451)
Values for status:
00h operation successful
01h function choice (in AL) is invalid
02h NVRAM data is invalid
03h cache test error
04h (90 and 95 only) cannot perform operation requested due to state of
other cache (also see note above)
05h no L2 cache is present
07h invalid input values
09h CPU in protected mode
--------B-15C9-------------------------------
INT 15 - newer PS/2; various BIOSes - GET CPU TYPE AND MASK REVISION
AH = C9h
AL = 10h (may be required on some non-PS BIOSes)
Return: CF clear if successful
AH = 00h
CH = CPU type (see #0452)
CL = mask revision (stepping level) (see #0453)
CF set on error
AH = status (80h,86h = function not supported)
Notes: the BIOS must save DX at startup in order to be able to support this
call; PS/2 Models 56, 57, 90, and 95 are known to support it
the PS/2 BIOS merely reads CMOS locations 190h (type) and 191h (rev)
IBM classifies this function as optional
SeeAlso: AX=D100h,AX=DA92h,MEM 0040h:00BCh
(Table 0452)
Values for CPU type:
03h 80386DX or clone
04h 80486
05h Pentium
23h 80386SX or clone
33h Intel i376
43h 80386SL or clone
A3h IBM 386SLC
A4h IBM 486SLC
(Table 0453)
Values for stepping level:
---i376 (type code 33h)---
05h A0
08h B
---80386/80386DX (type code 03h)---
03h Intel B1 to B10, Am386DX/DXL step A
05h Intel D0
08h Intel D1/D2/E1, Am386DX/DXL step B
---80386SL (type code 43h)---
05h A
1xh B
---80386SX (type code 23h)---
04h Intel A0
05h Intel B, Am386SX/SXL step A1
08h Intel C/D1, Am386SX/SXL step B
09h Intel 386CX/386EX/386SXstatic step A
---80486DX (type code 04h)---
00h Intel A0/A1
01h Intel B2 to B6
02h Intel C0
03h Intel C1
04h Intel D0
10h Intel cA2/cA3, Cx486SLC step A
11h Intel cB0/cB1
---486DX2 (type code 04h)---
02h Am486DX2 (unknown stepping)
32h Intel DX2/Overdrive steps A0 to A2
33h Intel DX2/Overdrive step B1
---486SX (type code 04h)---
20h Intel A0
22h Intel B0
27h Intel cA0
28h Intel cB0
---486SL (type code 04h)---
40h Intel A
---IntelSX2 (type code 04h)---
5xh Intel A
---IntelDX4 (type code 04h)---
8xh Intel A
---487SX (type code 04h)---
20h Intel A0
21h Intel B0
---Pentium (type code 05h)---
0xh Intel P5 steps Ax (1993)
1xh Intel P5 steps Bx (1994)
2xh Intel P54C step A
---RapidCAD (type code 03h)---
40h A
--------B-15CA-------------------------------
INT 15 U - PS/2 Model 95 - READ/WRITE CMOS MEMORY
AH = CAh
AL = function
00h read CMOS
Return: CL = value of CMOS location
01h write CMOS
CL = new value for CMOS location
BL = CMOS location (0Eh-3Fh)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (see #0454)
Note: writes do not update the CMOS checksum
(Table 0454)
Values for CMOS read/write error code:
01h CMOS lost power or has invalid checksum
03h specified location out of range (too high)
04h specified location out of range (too low)
80h unsupported function (PC)
86h unsupported function (XT)
--------B-15CB-------------------------------
INT 15 U - PS/2 Model 95 - RESERVED
AH = CBh
???
Return: ???
--------B-15CC-------------------------------
INT 15 U - PS/2 Model 95 - RESERVED
AH = CCh
???
Return: ???
--------V-15CCCC-----------------------------
INT 15 U - Toshiba laptops - VCHAD.EXE - INSTALLATION CHECK
AX = CCCCh
Return: AX = ABCDh if installed
Note: supported by Toshiba VGA change display utility VCHAD.EXE ver 2.90+
older versions have the string "VCHAD" 2 bytes after the address of
the INT 15 handler which is hooked by all versions for the SysReq key
SeeAlso: AH=85h
--------B-15CD-------------------------------
INT 15 U - PS/2 Model 95 - RESERVED
AH = CDh
???
Return: ???
--------B-15CE--BL00-------------------------
INT 15 - later PS/2s - ALLOCATE DMA ARBITRATION LEVEL
AH = CEh
BL = 00h-0Eh arbitration level to be allocated
0Fh-FFh reserved
AL = option byte
bit 7-1: reserved (0)
bit 0: 0 = need DMA channel for arbitration level requested
1 = no channel required for arbitration level
Return: CF set on error
AH = status (80h,86h = function not supported)
CF clear on success
AL = channel number
00h-07h channel number allocated for the arbiration level
08h-FEh reserved
FFh no channel requested for arbitration level
AH = status (see #0455)
Notes: arbitration level 00h has the highest priority, 0Eh the lowest
to perform a DMA transfer operation, be sure to call this function
first, and call AH=CFh afterward. Failure to use this function
can cause unpredictable results.
SeeAlso: AH=CFh
(Table 0455)
Values for DMA arbitration status:
00h success
01h arbitration level not available
02h channel not available
03h invalid arbitration level passed
--------B-15CF-------------------------------
INT 15 - later PS/2s - DEALLOCATE DMA ARBITRATION LEVEL
AH = CFh
BL = arbitration level to be deallocated (see AH=CEh)
Return: CF set on error
AH = status (80h,86h = function not supported)
CF clear on success
AH = status
00h success
04h arbitration level not allocated
SeeAlso: AH=CEh
--------B-15D0-------------------------------
INT 15 - later PS/2s - RESERVED
AH = D0h
???
Return: ???
----------15D042BL00-------------------------
INT 15 R - Intel Pentium Pro BIOS UPDATE - INSTALLATION CHECK
AX = D042h
BL = 00h
Return: CF clear if successful
CF set on error
AH = status
00h successful
EBX:ECX = signature "INTELPEP"
EDX = BIOS update loader version
SI = number of 2K update blocks which can be recorded in NVRAM
86h not implemented
AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
00h successful
Program: the Pentium Pro BIOS update allows the system BIOS or other software
to install a microcode patch into the Pentium Pro processor
Notes: this API must be called from actual real mode, not V86 mode
at least 32K stack space must be available when this function is called
SeeAlso: AX=D042h/BL=01h,AX=D042h/BL=02h,AX=D042h/BL=03h
SeeAlso: @xxxxh:xxxxh"Intel BIOS Upgrade",MSR 00000079h
----------15D042BL01-------------------------
INT 15 R - Intel Pentium Pro BIOS UPDATE - WRITE BIOS UPDATE AREA
AX = D042h
BL = 01h
ES:DI -> microcode update block (see #0457)
CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
Return: CF clear if successful
CF set on error
AH = status (see #0456)
AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
00h successful
Notes: a microcode update may also be initiated by a WRMSR instruction
with ECX=0079h, EDX=00000000h, and EAX=linear address of update
block (see #0457)
at least 32K stack space must be available when this function is called
SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h,MSR 00000079h
(Table 0456)
Values for Pentium Pro BIOS update status:
00h successful
86h not implemented
90h unable to erase NVRAM device
91h unable to write to NVRAM device
92h unable to read storage
93h NVRAM is full
94h specified processor stepping is not present in system
95h invalid header or loader version
96h wrong checksum in header
97h processor rejected the update
98h the same or a more recent update is already stored
99h update block number was out of range
Format of Pentium Pro microcode update block:
Offset Size Description (Table 0457)
00h DWORD update header version number (currently 00000001h)
FFFFFFFFh = unused block
04h DWORD revision number of this microcode update
08h DWORD update creation date, as BCD mmddyyyy (month,day,year)
0Ch DWORD family/model/stepping of processor to which update applied
(same value as returned by CPUID instruction)
10h DWORD checksum (used to force sum of all 512 DWORDs of the update
block to 00000000h)
14h DWORD revision number of loader needed to install update
(currently 00000001h)
18h 24 BYTEs reserved for future expansion
30h 2000 BYTEs encrypted microcode data
SeeAlso: MSR 00000079h,OPCODE "CPUID"
----------15D042BL02-------------------------
INT 15 R - Intel Pentium Pro BIOS UPDATE - BIOS UPDATE CONTROL
AX = D042h
BL = 02h
BH = function
01h enable update loading at initialization time
02h check whether update loading is enabled
CX,DX,SI = segments of three 64K scratchpad areas for BIOS use
Return: CF clear if successful
CF set on error
AH = status (see #0456)
00h successful
BL = enabled/disabled flag
86h not implemented
AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
00h successful
Notes: this API must be called from actual real mode, not V86 mode
at least 32K stack space must be available when this function is called
there is no call to disable update loading due to security risks; the
BIOS setup can disable loading
SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=02h,AX=D042h/BL=03h
----------15D042BL03-------------------------
INT 15 R - Intel Pentium Pro BIOS UPDATE - READ BIOS UPDATE AREA
AX = D042h
BL = 03h
ES:DI -> buffer for microcode update block (see #0457)
ECX = two real-mode 64K scratchpad segments (upper and lower words)
DX = segment of 64K scratchpad area for BIOS use
SI = zero-based index number of update block to retrieve
Return: CF clear if successful
CF set on error
AH = status
00h successful
ES:DI buffer filled with 2048-byte update block
86h not implemented
AL = OEM error (if AH is not 00h or 86h, otherwise undefined)
00h successful
Program: the Pentium Pro BIOS update allows the system BIOS or other software
to install a microcode patch into the Pentium Pro processor
Notes: this API must be called from actual real mode, not V86 mode
at least 32K stack space must be available when this function is called
SeeAlso: AX=D042h/BL=00h,AX=D042h/BL=01h,AX=D042h/BL=03h
--------B-15D100DX0000-----------------------
INT 15 - later PS/2s - GET NUMBER OF DEVICE DESCRIPTOR TABLE (DDT) ENTRIES
AX = D100h
DX = 0000h (reserved, must set to 0)
Return: BL = size of one DDT entry, in bytes
CX = number of DDT entries
AH = return code (see #0458)
CF set on error
CF clear on success
SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D101h,AX=D102h,AX=D103h,AX=D104h
(Table 0458)
Values for return code:
00h success
01h requested DDT entry not found
02h DDT data not valid
86h function not supported
--------B-15D101-----------------------------
INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY NUMBER
AX = D101h
BX = number of requested entry (starting with 1)
DX = 0000h (reserved, must be set to 0)
ES:DI -> buffer to contain DDT entry (see #0459)
Return: AH = return code (see #0458)
CF set on error
CF clear on success
ES:DI buffer filled with DDT entry
SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D102h,AX=D104h
Format of Device Descriptor Table (DDT):
Offset Size Description (Table 0459)
00h BYTE bits 7-4: reserved (set to 0)
bits 3-0: slot of device (0 = system board)
01h BYTE bits 7-4: second interrupt for this device (0 = none)
bits 3-0: first interrupt for this device (0 = none)
02h BYTE bits 7-4: second arbitration level for this device
bits 3-0: first arbitration level for this device
03h WORD DDT indicators (see #0460)
05h BYTE reserved (0)
06h WORD device ID (0 = none)
08h WORD starting address of first I/O block (0 = none)
0Ah WORD starting address of second I/O block (0 = none)
OCh WORD starting address of third I/O block (0 = none)
OEh DWORD start of first non-system memory block (0 = none)
12h WORD size of first non-system memory block (in kilobytes)
14h DWORD start of second non-system memory block (0 = none)
18h WORD size of second non-system memory block (in kilobytes)
1Ah BYTE implementation identifier of the device
1Bh BYTE implementation revision level of the device
Note: I/O block addresses and non-system memory addresses are listed in
ascending order in each DDT entry.
Bitfields for DDT indicators:
Bit(s) Description (Table 0460)
15 reserved (0)
14 second arbitration level exists
13 first arbitration level exists
12 serial interface is RS-422
11 not address limited
10 DMA channel used
9 second arbitration level can be shared
8 first arbitration level can be shared
7-0 reserved (0)
--------B-15D102-----------------------------
INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY I/O ADDRSS
AX = D102h
BX = entry number at which to start searching
CX = requested I/O port address
DX = 0000h (reserved, must be set to 0)
ES:DI -> buffer to contain DDT entry (see #0459)
Return: AH = return code (see #0458)
BX = DDT entry number where I/O port was found, or total entries
plus 1 if port was not found.
CF set on error
CF clear on success
ES:DI buffer filled with DDT entry
Desc: the DDT is searched from the specified entry for the I/O port in CX,
and the first entry in which it is found is returned
SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h,AX=D104h
--------B-15D103DX0000-----------------------
INT 15 - later PS/2s - RETURN ENTIRE DDT
AX = D103h
DX = 0000h (reserved, must be set to 0)
ES:DI -> buffer to contain DDT entry (see #0459)
Return: AH = return code (see #0458)
CF set on error
CF clear on success
ES:DI buffer filled with DDT entry
SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D104h
--------B-15D104-----------------------------
INT 15 - later PS/2s - RETURN DEVICE DESCRIPTOR TABLE (DDT) ENTRY BY DEVICE ID
AX = D104h
BX = entry number at which to start searching
CX = requested device ID
DX = 0000h (reserved, must be set to 0)
ES:DI -> buffer to contain DDT entry (see #0459)
Return: AH = return code (see #0458)
BX = DDT entry number where device ID was found, or total entries
plus 1 if port was not found.
CF set on error
CF clear on success
ES:DI buffer filled with DDT entry
Desc: the DDT is searched from the specified entry for the device ID in CX,
and the first entry in which it is found is returned.
SeeAlso: AH=C0h,AH=C7h,AH=C9h,AX=D100h,AX=D101h,AX=D103h
--------B-15D2-------------------------------
INT 15 - later PS/2s - RESERVED
AH = D2h
???
Return: ???
--------B-15D3-------------------------------
INT 15 - later PS/2s - RESERVED
AH = D3h
???
Return: ???
--------B-15D4-------------------------------
INT 15 - later PS/2s - GET PHYSICAL FIXED DISK DRIVE NUMBER (SELECTABLE BOOT)
AH = D4h
DL = logical fixed disk drive number
Return: AH = return code (see #0461)
CF set on error
CF clear on success
AL = physical fixed disk drive number
(Table 0461)
Values for return code:
00h success
01h specified logical drive number is invalid
80h function not supported (on PCjr and PC)
86h function not supported
--------B-15D5-------------------------------
INT 15 - later PS/2s - RESERVED
AH = D5h
???
Return: ???
--------B-15D600BL00-------------------------
INT 15 - later PS/2s - READ BOOT DEVICE ID
AX = D600h
BL = 00h
DX = device ID
Return: CF clear if successful
AH = 00h
CF set on error
AH = status (86h for function not supported)
SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h,AX=D602h
--------B-15D600BL01-------------------------
INT 15 - later PS/2s - WRITE BOOT DEVICE ID
AX = D600h
BL = 01h
DX = device ID
Return: CF clear on success
AH = 00h
CF set on error
AH = status (86h for function not supported)
SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h
--------B-15D601BL00-------------------------
INT 15 - later PS/2s - READ BOOT DEVICE KEY
AX = D601h
BL = 00h
DX = device ID
Return: CF clear on success
AH = 00h
CF set on error
AH = status (86h for function not supported)
SeeAlso: AX=D600h/BL=00h,AX=D601h/BL=01h,AX=D602h
--------B-15D601BL01-------------------------
INT 15 - later PS/2s - WRITE BOOT DEVICE KEY
AX = D601h
BL = 01h
DX = device ID
Return: CF clear on success
AH = 00h
CF set on error
AH = status (86h for function not supported)
SeeAlso: AX=D600h/BL=01h,AX=D601h/BL=00h
--------B-15D602-----------------------------
INT 15 - later PS/2s - QUERY BOOT REFERENCE PARTITION
AX = D602h
Return: CF clear on success
AH = 00h
AL = status of reference-partition boot request
00h boot not requested
01h boot requested
CF set on error
AH = status (86h for function not supported)
SeeAlso: AX=D601h/BL=00h
--------X-15D800-----------------------------
INT 15 - EISA SYSTEM ROM - READ SLOT CONFIGURATION INFORMATION
AX = D800h
CL = slot number (including embedded and virtual)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (80h,82h,83h,86h,87h)(see #0463)
AL = bit flags (see #0462)
BH = major revision level of configuration utility
BL = minor revision level of configuration utility
CX = checksum of configuration file
DH = number of device functions
DL = combined function information byte (see #0464)
SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
Note: call with AL=80h if using 32-bit CS addressing mode instead of 16-bit
SeeAlso: AX=D801h,AX=D804h
Bitfields for EISA AL bit flags:
Bit(s) Description (Table 0462)
7 set if duplicate IDs
6 set if product ID readable
4,5 slot type (00=expansion, 01=embedded, 10=virtual device)
0-3 duplicate ID number if bit 7 set
SeeAlso: #0464
(Table 0463)
Values for EISA error code:
80h invalid slot number
81h invalid function number
82h EISA CMOS corrupt
83h empty slot
84h error clearing CMOS
85h EISA CMOS is full
86h invalid BIOS-FW function call
87h invalid system configuration
88h config utility version not supported
Bitfields for EISA combined function information byte:
Bit(s) Description (Table 0464)
7 reserved
6 slot has free-form data entries
5 slot has port initialization entries
4 slot has port-range entries
3 slot has DMA entries
2 slot has IRQ entries
1 slot has memory entries
0 slot has function type entries
SeeAlso: #0462
--------X-15D801-----------------------------
INT 15 - EISA SYSTEM ROM - READ FUNCTION CONFIGURATION INFORMATION
AX = D801h
CH = function number to read
CL = slot number (including embedded and virtual)
DS:SI -> 320-byte buffer for standard configuration data block
Return: CF clear if successful
AH = 00h
DS:SI buffer filled
CF set on error
AH = error code (80h-83h,86h,87h) (see #0463)
BX destroyed
Note: call with AL=81h if using 32-bit CS addressing mode instead of 16-bit
--------X-15D802-----------------------------
INT 15 - EISA SYSTEM ROM - CLEAR NONVOLATILE MEMORY (EISA CMOS)
AX = D802h
BH = EISA config utility major revision level
BL = EISA config utility minor revision level
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (84h,86h,88h) (see #0463)
Note: call with AL=82h if using 32-bit CS addressing mode instead of 16-bit
SeeAlso: AX=D803h
--------X-15D803-----------------------------
INT 15 - EISA SYSTEM ROM - WRITE NONVOLATILE MEMORY
AX = D803h
CX = length of data structure (0000h = empty slot)
includes two bytes for config file checksum
DS:SI -> configuration data
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (84h-86h) (see #0463)
Note: call with AL=83h if using 32-bit CS addressing mode instead of 16-bit
SeeAlso: AX=D802h
--------X-15D804-----------------------------
INT 15 - EISA SYSTEM ROM - READ PHYSICAL SLOT
AX = D804h
CL = slot number (including embedded and virtual)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (80h,83h,86h) (see #0463)
SI:DI = 4-byte compressed ID (DI = bytes 0&1, SI = bytes 2&3)
Note: call with AL=84h if using 32-bit CS addressing mode instead of 16-bit
SeeAlso: AX=D800h
--------b-15D820-----------------------------
INT 15 - Compaq LTE Lite - GET ???
AX = D820h
DS:SI -> 17-byte buffer for ???
Return: DS:SI buffer filled (first byte is length of remaining data, unless
it is greater than 10h, in which case the second byte is 00h and no
other data is returned)
Note: this function is also supported by Compaq's EISA System ROM, Contura
486/486c/486cx and recent DESKPRO/i ROMs
SeeAlso: AX=D821h
--------b-15D821-----------------------------
INT 15 - Compaq LTE Lite - SET ???
AX = D821h
DS:SI -> counted string (should not be more than 16 bytes)
Return: AH = 00h
Note: this function is also supported by Compaq's EISA System ROM, Contura
486/486c/486cx and recent DESKPRO/i ROMs
SeeAlso: AX=D820h
--------b-15D822BL00-------------------------
INT 15 - Compaq EISA System ROM 04/08/93 - GET ???
AX = D822h
BL = 00h
CX = size of buffer or 0000h to retrieve required buffer size
DS:SI -> buffer for ??? (if CX nonzero)
Return: CF clear if successful
AH = 00h
DH = 08h
CX = required buffer size to retrieve all data (if CX=0 on entry)
DS:SI buffer filled (if CX nonzero on entry)
CF set on error (BL nonzero)
AH = 86h
--------b-15D823-----------------------------
INT 15 - Compaq EISA System ROM 04/08/93 - ???
AX = D823h
BL = subfunction??? (00h or 80h)
BH = ???
DS:SI -> buffer for ??? (see #0465)
Return: CF clear if successful
AH = 00h
DH = 08h
DL = ???
CF set on error
AH = error code
86h BL neither 00h nor 80h
87h ???
Format of Compaq EISA buffer:
Offset Size Description (Table 0465)
00h BYTE ???
01h WORD ???
03h BYTE ???
04h WORD ???
06h WORD ???
???
----------15D824-----------------------------
INT 15 - Compaq EISA System ROM 04/08/93 - ???
AX = D824h
CX = ???
DS:SI -> ASCIZ string containing ???
Return: CF clear if successful
AH = 00h
CX = ???
CF set on error
AH = error code
87h ??? failed
88h ???
Note: these functions are only available if ??? from keyboard controller
command C0h
----------15D825-----------------------------
INT 15 - Compaq EISA System ROM 04/08/93 - ???
AX = D825h
CX = ???
SI = ???
DI = ???
???
Return: CF clear if successful
AH = 00h
CX = ???
CF set on error
AH = error code
87h ??? failed
88h ???
CX = ???
Note: these functions are only available if ??? from keyboard controller
command C0h
----------15D826-----------------------------
INT 15 - Compaq EISA System ROM 04/08/93 - ???
AX = D826h
BX = ???
CX = size of buffer in bytes
DS:SI -> buffer for ???
???
Return: CF clear if successful
AH = 00h
CX = ???
CF set on error
AH = error code
87h ??? failed
88h ???
Note: these functions are only available if ??? from keyboard controller
command C0h
--------X-15D8-------------------------------
INT 15 - EISA SYSTEM ROM - 32-bit CS ADDRESSING MODE CALLS
AH = D8h
AL = 80h to 84h
other registers as appropriate for AL=00h to 04h
Return: as appropriate for AL=00h to 04h
Note: these functions are identical to AX=D800h to D804h, except that they
should be called when using 32-bit CS addressing mode (pointers use
ESI rather than SI as offset) instead of 16-bit addressing mode
SeeAlso: AX=D800h,AX=D801h,AX=D802h,AX=D803h,AX=D804h
--------b-15D8-------------------------------
INT 15 - Compaq EISA System ROM 04/08/93 - 32-bit CS ADDRESSING MODE CALLS
AH = D8h
AL = A0h to A6h
other registers as appropriate for AL=20h to 26h
Return: as appropriate for AL=20h to 26h
Note: these functions are identical to AX=D820h to D826h, except that they
should be called when using 32-bit CS addressing mode
----------15DA-------------------------------
INT 15 U - AMI PCI BIOS v1.00.05.AX1 - ???
AH = DAh
AL = function (00h-08h,12h,14h,15h,19h,88h-8Eh,92h,99h)
other registers vary by function
Return: CF clear if successful
varies by function
CF set on error
AH = error code (86h unsupported [sub]function)
Note: functions not listed above always return CF set and AH=86h; in the
examined BIOS, functions 02h-04h,06h-07h,89h-8Bh, and 8Dh also
always return CF set and AH=86h
SeeAlso: AX=DA00h,AX=DA01h,AX=DA88h,AX=DA99h,AX=DB00h
--------b-15DA00-----------------------------
INT 15 U - AMI PCI BIOS - ???
AX = DA00h
CL = subfunction
00h ???
01h ???
02h get ???
???
Return: CF clear if successful
???
CF set on error
AH = error code (86h unsupported subfunction)
Note: in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h always return
failure
SeeAlso: AX=DA01h
--------b-15DA01-----------------------------
INT 15 U - AMI PCI BIOS - CPU SPEED CONTROL
AX = DA01h
CL = subfunction (00h-02h)
00h set low CPU speed
01h set high CPU speed
02h get current CPU speed
Return: CF clear if successful
AH = current/new CPU speed (00h low, 01h high)
AL = ??? (00h)
CF set on error
AH = error code (86h unsupported subfunction)
Notes: in the v1.00.05.AX1 BIOS, subfunctions 00h and 01h are NOPs in both
protected and V86 modes due to a test of MSW bit 0
setting the CPU speed also generates the same audible signals generated
when manually switching speeds with Ctrl-Alt-Gray- and Ctrl-Alt-Gray+
BUG: the BIOS apparently intends to return CF set if ???, but fails to use
a different exit path in that case, resulting in CF clear
----------15DA05-----------------------------
INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
AX = DA05h
ES:SI -> 8-byte buffer for ??? and BIOS revision strings
Return: CF clear
ES:SI buffer filled
AL = 00h
CX = ??? (0000h)
Notes: for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
string is "AX1 "
SeeAlso: AX=DA15h,AX=DB04h
----------15DA08-----------------------------
INT 15 U - AMI PCI BIOS - ???
AX = DA08h
???
Return: CF clear if successful
???
CF set on error
AH = error code (86h unsupported subfunction)
Note: in the examined v1.00.05.AX1 BIOS, this call always returns failure
----------15DA12-----------------------------
INT 15 U - AMI PCI BIOS - v1.00.05.AX1 - ???
AX = DA12h
CL = subfunction
00h ???
01h ???
02h get ???
03h ???
04h ???
???
Return: CF clear if successful
???
CF set on error
AH = error code (86h unsupported subfunction)
Desc: ??? performs various manipulations on system chipset registers
Notes: subfunctions 00h and 01h are NOPs in protected and V86 modes due to
a test of MSW bit 0
subfunctions 00h-02h always return success
----------15DA14-----------------------------
INT 15 U - AMI PCI BIOS - GET/SET ???
AX = DA14h
CL = subfunction
00h read
01h write
DH = new value for ??? (00h-02h)
DL = index of ??? (00h-03h, but not range-checked)
???
Return: CF clear if successful
DH = current value of ??? if reading
CF set on error
AH = error code (86h unsupported subfunction)
Note: the values for indexes 00h and 01h are stored in CMOS RAM location 19h,
and the values for 02h and 03h are stored in location 36h
BUG: the v1.00.05.AX1 BIOS range-checks DH on subfunction 00h instead of
subfunction 01h, even though DH is never used by subfunction 00h
----------15DA15-----------------------------
INT 15 U - AMI PCI BIOS - GET ??? AND BIOS REVISION STRINGS
AX = DA15h
ES:DI -> 8-byte buffer for ??? and BIOS revision strings
Return: CF clear
ES:DI buffer filled
AL = 00h
Note: for BIOS v1.00.05.AX1, the ??? string is "IDNO" and the BIOS revision
string is "AX1 "
SeeAlso: AX=DA05h,AX=DB04h
----------15DA19-----------------------------
INT 15 U - AMI PCI BIOS - GET/SET ???
AX = DA19h
CL = subfunction
00h get first ???
01h get second ???
02h set first ???
BX = ???
DX = ???
03h set second ???
BX = ???
DX = ???
Return: CF clear if successful
AX = 0000h
BX,DX = ??? (subfunctions 00h and 01h only)
CF set on error
AH = error code (86h unsupported subfunction)
Note: the first ??? is stored in CMOS RAM locations 1Bh-1Eh, the second in
locations 1Fh-22h in the v1.00.05.AX1 BIOS
--------b-15DA20-----------------------------
INT 15 U - AMI PCI BIOS v1.00.12.AX1T - CMOS RAM BITFIELD MANIPULATION
AX = DA20h
BL = subfunction
00h set CMOS data field
BH = CMOS data field number (00h-4Dh)
CH = new value for bitfield (in lowest bits of register)
01h read CMOS data field
BH = CMOS data field number (00h-4Dh)
Return: CH = value of bitfield
CL = mask of valid bits
Note: both CL/CH shifted to move valid bits into lowest pos
02h set CMOS byte
CL = CMOS RAM address (00h-7Fh)
CH = new value for CMOS byte
03h get CMOS byte
CL = CMOS RAM address (00h-7Fh)
Return: CH = value of CMOS byte
04h update CMOS checksums
Note: sets 2Eh/2Fh to checksum of 10h-2Dh and 7Eh/7Fh to
checksum of 48h-7Dh
05h verify CMOS checksums
Return: CF clear if checksums OK
AH = 00h
CF set if checksum mismatch
AH = 01h
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (86h unsupported function/data field)
Notes: this function was not supported by the v1.00.05.AX1 BIOS, but had been
added by 1.00.12.AX1T
after using subfunctions 00h or 02h, the application must call
subfunction 04h to update the checksums to prevent an error the next
time the system is booted
(Table 0466)
Values for AMI BIOS v1.00.12.AX1T CMOS bitfield identifier:
ID address bit(s) contents
00h 1Ah 7-6
01h 1Dh 7-6
02h 6Eh 1
03h 77h 0
04h 77h 1
05h 77h 2
06h 77h 3
07h 77h 5
08h 77h 6
09h 77h 7
0Ah 78h 7 power management enabled???
0Bh 78h 6
0Ch 10h 7-4 first floppy drive type
0Dh 10h 3-0 second floppy drive type
0Eh 11h 7
0Fh 20h 4-0 selected language for error messages/setup utility
10h 11h 2-1
11h 11h 4
12h 11h 0
13h 11h 3
14h 13h 7
15h 13h 6-5
16h 13h 4-2
17h 19h 7
18h 19h 6
19h 19h 5
1Ah 19h 4
1Bh 1Eh 2-0
1Ch 1Bh 7-6
1Dh 1Ch 7
1Eh 1Ch 3
1Fh 1Ah 5-4
20h 1Dh 5-4
21h 1Bh 5-4
22h 1Ch 6
23h 1Ch 2
24h 1Ah 3-2
25h 1Dh 3-2
26h 1Bh 3-2
27h 1Ch 5
28h 1Ch 1
29h 1Ah 1-0
2Ah 1Dh 1-0
2Bh 1Bh 1-0
2Ch 1Ch 4
2Dh 1Ch 0
2Eh 50h 7-0
2Fh 51h 7-0
30h 52h 7-0
31h 53h 7-0
32h 60h 0
33h 60h 0
34h 60h 0
35h 60h 0
36h 60h 0
37h 60h 0
38h 60h 1
39h 61h 7
3Ah 60h 2
3Bh 61h 6-4
3Ch 61h 2-0
3Dh 60h 7-6
3Eh 60h 5-4
3Fh 78h 5-4
40h 6Eh 5
41h 1Eh 3
42h 6Eh 0
43h 6Eh 2
44h 6Fh 1-0
45h 6Fh 1-0
46h 28h 4-2
47h 28h 7-5
48h 6Eh 4
49h 6Eh 3
4Ah 76h 7-0
4Bh 77h 4
4Ch 11h 6
4Dh 1Fh 7-0
----------15DA88-----------------------------
INT 15 U - AMI PCI BIOS - GET EXTENDED MEMORY SIZE
AX = DA88h
Return: CF clear (successful)
AX = 0000h
CL:BX = extended memory size in KBytes
SeeAlso: AH=88h
----------15DA8C-----------------------------
INT 15 U - AMI PCI BIOS - GET BIOS AND CHIPSET IDENTIFICATION
AX = DA8Ch
CL = subfunction
00h get BIOS version string
ES:DI -> 12-byte buffer for version string
01h get chipset identification
BL = what to retrieve
(00h host/PCI bridge,01h motherboard chipset)
ES:DI -> 12-byte buffer for chipset identification (see #0467)
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AH = error code (86h unsupported subfunction)
Notes: the v1.00.05.AX1 BIOS returns "1.00.05.AX1 " as its version string
subfunction 01h returns the five bytes read from the PCI configuration
registers 00h-05h (see #0798), padded to 12 bytes with NULs
SeeAlso: AX=DB04h,PORT C000h"Neptune"
Format of AMI PCI BIOS chipset identification:
Offset Size Description (Table 0467)
00h WORD vendor ID (see #0656 at AX=B102h)
8086h = Intel
02h WORD device ID
0484h (BL=01h)
04A3h (BL=00h)
04h BYTE low byte of PCI Command Register
05h 7 BYTEs unused (00h)
----------15DA8E-----------------------------
INT 15 U - AMI PCI BIOS - ???
AX = DA8Eh
???
Return: CF clear if successful
???
CF set on error
AH = error code (86h unsupported subfunction)
Note: in the v1.00.05.AX1 BIOS, this call always returns failure
----------15DA92-----------------------------
INT 15 U - AMI PCI BIOS - GET CPU TYPE AND SPEED
AX = DA92h
Return: CF clear (successful)
AL = CPU stepping (see also #0453 at INT 15/AH=C9h)
AH = CPU model
BL = CPU family (05h = Pentium, etc.)
CX = external clock speed in MHz (BCD)
(0040h,0050h,0060h,0066h are possible return values on my
Pentium with the Intel "Neptune" chipset)
EAX high word destroyed
Note: 90 MHz and faster Pentium CPUs can be configured to run at varying
multiples of the external clock speed, i.e. a typical 90 MHz Pentium
system will run the motherboard at 60 MHz (my 90 MHz Pentium returns
0060h in CX)
SeeAlso: AH=C9h
----------15DA99-----------------------------
INT 15 U - AMI PCI BIOS - GET/SET ??? FLAG
AX = DA99h
CL = subfunction
00h check if ???
01h set ??? flag
02h clear ??? flag
Return: CF clear if successful
AH = ??? (00h,01h)
AL = 00h
CF set on error
AH = error code (86h unsupported subfunction)
Note: the flag is stored in bit 0 of CMOS RAM location 2Ch for BIOS
v1.00.05.AX1
--------b-15DB00-----------------------------
INT 15 U - AMI BIOS - Flash ROM - READ FLASH BIOS
AX = DB00h
DS:SI -> parameter block (see #0468)
ES:DI -> buffer for copied information
Return: CF clear if successful
CF set on error
AH = status (86h if not implemented)
DS,ES destroyed, possibly other registers
Note: used by FMUP.EXE, Intel's Flash Memory Update utility
SeeAlso: AH=DAh,AX=DB01h,AX=DB04h
Format of AMI BIOS Flash ROM parameter block:
Offset Size Description (Table 0468)
00h 32 BYTEs ASCIZ description of the file's contents
20h BYTE Logical area type (see #0469)
21h DWORD logical area size (overall size of area)
25h BYTE flag: load from file (FF=yes, 00=no)
26h BYTE flag: reboot after update (FF=yes, 00=no)
27h BYTE flag: update entire image (FF=yes, 00=no)
28h 24 BYTEs ASCIZ logical area name (cooresponds to offset 20)
"System BIOS"
"Logo Data Area", etc.
40h 15 BYTEs ASCIZ time stamp string: MM/DD/YY-HH:MM
4Fh BYTE checksum for this header (sum of all bytes except this one)
if checksum would be 00h,01h, or FFh, it is set to 2Ah
50h DWORD this file's starting address (offset in image)
54h DWORD size of image chunk in this file
58h BYTE logical area type - same as offset 20h
59h BYTE flag: last file in chain (FF=yes, 00=no)
5Ah 6 BYTEs ASCIZ signature "FLASH"
60h 16 BYTEs ASCIZ filename of next file in chain
70h 16 BYTEs ASCIZ BIOS reserved string (usually version #)
Notes: this block is identical in format to the 128-byte header on an AMI
BIOS Update file
for AX=DB00h, the following fields must be specified: 50h,54h,58h;
the fields at offset 20h and 5Ah should also be set if possible
the fields at offsets 40h and 70h will be set on return, if available
SeeAlso: #0470
--------b-15DB01-----------------------------
INT 15 U - AMI BIOS - Flash ROM - GET BIOS SUBSYSTEM INFORMATION
AX = DB01h
CL = BIOS subsystem information identifier (see #0469)
Return: CF clear if successful
AX = 0000h
ES:DI -> 56-byte record describing subsystem (see #0470)
CF set on error
AH = status
01h nonexistent subsystem
86h function not supported
AL = 00h
Note: used by FMUP.EXE, Intel's Flash Memory Update utility
SeeAlso: AX=DB00h,AX=DB02h
(Table 0469)
Values for AMI BIOS subsystem identifier:
00h recovery code
01h system BIOS
02h PCI configuration data
03h OEM logo data area (see #0471)
04h system BIOS/Language Set (one system)
configuration utility (another system)
SeeAlso: #0470
Format of AMI BIOS subsystem information:
Offset Size Description (Table 0470)
00h BYTE subsystem identifier/logical area type (see #0469)
01h DWORD subsystem (FlashROM page) size in bytes
05h BYTE flag: loadable from file (FFh=yes)
06h BYTE flag: reboot after update (FFh=yes)
07h BYTE flag: update entire image (FFh=yes)
08h 24 BYTEs subsystem/logical area name
20h BYTE subsystem identifier???
21h BYTE flag: reprogrammable if FFh
22h BYTE ??? (01h,02h seen)
23h 5 BYTEs ??? (apparently always 00h)
28h 16 BYTEs BIOS reserved string (usually version number)
SeeAlso: #0468
Format of AMI OEM Logo data area:
Offset Size Description (Table 0471)
00h 8 BYTEs signature
"TEXTLOGO" if text-mode OEM logo
8 DUP (FFh) if unused
08h WORD offset of logo font definition table
0Ah WORD offset of logo data
0Ch WORD size of logo font table in words
0Eh WORD offset of upper left corner of logo in video page
10h WORD width of logo
12h WORD height of logo
14h BYTE reserved???
var var logo font definition (16 bytes per character)
var var logo data as character/attribute pairs
Note: the attribute for the logo characters specifies which font will be used
for that character. If bit 3 is cleared, the normal system font is
used; if bit 3 is set, the logo font is used, with screen colors
adjusted to match the corresponding non-bright attribute for the
system font
SeeAlso: #0469,#0470
--------b-15DB02-----------------------------
INT 15 U - AMI BIOS - Flash ROM - GET SIZE OF FLASH ROM PROGRAMMING CODE
AX = DB02h
Return: CF clear
AX = 0000h
BX = size of ROM programming code in bytes
Note: used by FMUP.EXE, Intel's Flash Memory Update utility
SeeAlso: AX=DB00h,AX=DB03h
--------b-15DB03-----------------------------
INT 15 U - AMI BIOS - Flash ROM - GET FLASH ROM PROGRAMMING CODE
AX = DB03h
DS:SI -> ???
ES:DI -> buffer for Flash ROM programming code
BX = ???
DX = ???
Return: CF clear if successful
AH = ???
BX = ???
DX = ???
CF set on error
AH = error code
Notes: the entry point for the copied code (which is fully relocatable) is
the very first byte (see #0472)
used by FMUP.EXE, Intel's Flash Memory Update utility
SeeAlso: AX=DB00h,AX=DB02h
(Table 0472)
Call AMI BIOS ??? code with:
AL = function
00h erase Flash ROM block
CX = ???
bit 8: address line A16 inverted
???
01h program new data into Flash ROM
???
02h perform cold reboot
DS:SI -> ??? (see #0473)
ES:DI -> ???
Return: AH = status
00h successful
01h invalid function
02h ???
03h ???
04h ???
Note: DS:SI and ES:DI are ignored for function 02h
Format of AMI BIOS Flash ROM programming parameters:
Offset Size Description (Table 0473)
00h 32 BYTEs ???
20h BYTE BIOS section number
21h DWORD length of BIOS code/data in bytes
25h 43 BYTEs ???
50h DWORD ???
54h 44 BYTEs ???
SeeAlso: #0472
--------b-15DB04-----------------------------
INT 15 U - AMI BIOS - Flash ROM - GET BIOS REVISION
AX = DB04h
Return: CF clear if supported
BL:BH:DL:DH = BIOS revision string
(e.g. 'AX1 ' for v1.00.05.AX1, 'AV0M' for v1.00.03.AV0M)
CL = flag: DH valid?
00h ignore DH; ignore DL as well if 20h (space)
01h ignore DH if 20h (space)
CH = BIOS status
00h normal mode
01h ROM recovery mode
AL = ??? (02h)
Note: used by FMUP.EXE, Intel's Flash Memory Update utility
SeeAlso: AX=DA05h,AX=DA15h,AX=DA8Ch,AX=DB00h,AX=DB03h
--------Q-15DE00-----------------------------
INT 15 - DESQview - GET PROGRAM NAME
AX = DE00h
Return: AX = offset into DESQVIEW.DVO of program most recently selected from
the "Switch Windows" menu (see #0474)
Note: always returns AX=0000h under DESQview/X
SeeAlso: AX=DE07h
Format of program entry in DESQVIEW.DVO:
Offset Size Description (Table 0474)
00h BYTE length of name (FFh if end of file)
01h N BYTEs name
2 BYTEs keys to invoke program (second = 00h if only one key used)
BYTE program type
00h normal program
04h divider
80h Delete a Program
81h Change a Program
WORD ??? apparently always 0000h
--------Q-15DE01-----------------------------
INT 15 - DESQview - UPDATE "OPEN WINDOW" MENU
AX = DE01h
Return: nothing
Notes: reads DESQVIEW.DVO, disables Open menu if file not in current directory
NOP for DESQview/X
--------Q-15DE02-----------------------------
INT 15 - DESQview 1.x only - SET ??? FLAG FOR CURRENT WINDOW
AX = DE02h
Return: nothing
Note: this call is a NOP in DV 2.x
SeeAlso: AX=DE03h
--------Q-15DE03-----------------------------
INT 15 - DESQview 1.x only - GET ??? FOR CURRENT WINDOW
AX = DE03h
Return: AX = ??? for current window
BX = ??? for current window
Note: this call is a NOP in DV 2.x
SeeAlso: AX=DE02h
--------Q-15DE04-----------------------------
INT 15 - DESQview - GET AVAILABLE COMMON MEMORY
AX = DE04h
Return: BX = bytes of common memory available
CX = largest block available
DX = total common memory in bytes
SeeAlso: AX=DE05h,AX=DE06h
--------Q-15DE05-----------------------------
INT 15 - DESQview - GET AVAILABLE CONVENTIONAL MEMORY
AX = DE05h
Return: BX = KB of memory available
CX = largest block available
DX = total conventional memory in KB
SeeAlso: AX=DE04h,AX=DE06h
--------Q-15DE06-----------------------------
INT 15 - DESQview - GET AVAILABLE EXPANDED MEMORY
AX = DE06h
Return: BX = KB of expanded memory available
CX = largest block available
DX = total expanded memory in KB
SeeAlso: AX=DE04h,AX=DE05h
--------Q-15DE07-----------------------------
INT 15 - DESQview - "APPNUM" - GET CURRENT PROGRAM'S NUMBER
AX = DE07h
Return: AX = number of program as it appears on the "Switch Windows" menu
Note: this API call may be made from a hardware interrupt handler
SeeAlso: AX=DE00h
--------Q-15DE08-----------------------------
INT 15 - DESQview - GET ???
AX = DE08h
Return: AX = 0000h if ??? is not set to the current task
0001h if ??? is set to the current task
--------Q-15DE09-----------------------------
INT 15 - DESQview - UNIMPLEMENTED
AX = DE09h
Return: nothing (NOP in DV 1.x and 2.x)
--------Q-15DE0A-----------------------------
INT 15 - DESQview v2.00+ - "DBGPOKE" - DISPLAY CHARACTER ON STATUS LINE
AX = DE0Ah
BL = character
Return: character displayed, next call will display in next position (which
wraps back to the start of the line if off the right edge of screen)
Notes: displays character on bottom line of *physical* screen, regardless
of current size of window (even entirely hidden)
does not know about graphics display modes, just pokes the characters
into display memory
this API call may be made from a hardware interrupt handler
SeeAlso: AX=1003h
--------Q-15DE0B-----------------------------
INT 15 - DESQview v2.00+ - "APILEVEL" - DEFINE MINIMUM API LEVEL REQUIRED
AX = DE0Bh
BL = API level minor version number
BH = API level major version number
Return: AX = maximum API level (AH = major, AL = minor)
Notes: if the requested API level is greater than the version of DESQview, a
"You need a newer version" error window is popped up
the API level defaults to 1.00, and is inherited by child tasks
--------Q-15DE0C-----------------------------
INT 15 - DESQview v2.00+ - "GETMEM" - ALLOCATE "SYSTEM" MEMORY
AX = DE0Ch
BX = number of bytes
Return: ES:DI -> allocated block or 0000h:0000h (DV 2.26+)
Note: use SETERROR (AX=DE15h) to avoid a user prompt if there is insufficient
system memory
SeeAlso: AX=1001h,AX=102Eh,AX=DE0Dh,AX=DE15h,AX=DE19h
--------Q-15DE0D-----------------------------
INT 15 - DESQview v2.00+ - "PUTMEM" - DEALLOCATE "SYSTEM" MEMORY
AX = DE0Dh
ES:DI -> previously allocated block
Return: nothing
SeeAlso: AX=1002h,AX=DE0Ch
--------Q-15DE0E-----------------------------
INT 15 - DESQview v2.00+ - "FINDMAIL" - FIND MAILBOX BY NAME
AX = DE0Eh
ES:DI -> name to find (see #0475)
CX = length of name
Return: BX = 0000h not found
0001h found
DS:SI = object handle
SeeAlso: AH=12h/BH=11h,AH=12h/BH=12h"GETNAME"
(Table 0475)
Values for special DESQview mailbox names:
"COM1" ... "COM4" RBcomm using COM1 ... COM4
"DESQview/X Help Engine"
"DESQview/X Network Server" Network Manager
"DESQview X Server0" X-Windows server
"DESQview X Server7" X-Windows printing service
"INBOX" DESQview/X LPD requests
"OUTBOX" DESQview/X LPD responses
"WAITBOX" semaphore to synchronize DESQview/X LPD communications
"_DVNM_" DV/X v1.10 network manager
--------Q-15DE0F-----------------------------
INT 15 - DESQview v2.00+ - ENABLE DESQview EXTENSIONS
AX = DE0Fh
Return: AX and BX destroyed (seems to be bug, weren't saved&restored)
Notes: sends a manager stream with opcodes AEh, BDh, and BFh to task's window
enables an additional mouse mode
--------Q-15DE10-----------------------------
INT 15 - DESQview v2.00+ - "PUSHKEY" - PUT KEY INTO KEYBOARD INPUT STREAM
AX = DE10h
BH = scan code
BL = character
Return: nothing
Notes: a later read will get the keystroke as if it had been typed by the user
multiple pushes are read last-in first-out
if a script exists for the pushed key in the current application, the
script will be executed
early copies of DV 2.00 destroy AX, BX, ES, and DI
SeeAlso: INT 16/AH=05h
--------Q-15DE11BL00-------------------------
INT 15 - DESQview v2.00+ - "JUSTIFY" - EN/DISABLE AUTOM. WINDOW JUSTIFICATION
AX = DE11h
BL = 00h viewport will not move automatically
nonzero viewport will move to keep cursor visible (default)
Return: nothing
--------Q-15DE12BX0000-----------------------
INT 15 - DESQview v2.01+ - "CSTYLE" - SET "C"-COMPATIBLE CONTROL CHAR INTERPRET
AX = DE12h
BX = 0000h select normal style (linefeed only moves down)
nonzero select C style (linefeed moves to start of next line)
Return: nothing
Note: set on a per-task basis, and inherited from the parent task
--------Q-15DE13-----------------------------
INT 15 - DESQview v2.20+ - "GETCRIT" - GET CRITICAL NESTING COUNT
AX = DE13h
Return: BX = number of calls to BEGINC or ENTERC
(see INT 15/AX=101Bh,INT 15/AX=DE1Ch) without matching ENDC
(see INT 15/AX=101Ch)
Note: this API call may be made from within a hardware interrupt handler
SeeAlso: AX=101Bh,AX=101Ch,AX=DE1Bh,AX=DE1Ch
--------Q-15DE14-----------------------------
INT 15 - DESQview v2.20+ - GET OBJECT TYPE
AX = DE14h
ES:DI -> object
Return: BL = 00h not an object
08h window or task
09h mailbox
0Ah keyboard
0Bh timer
0Ch objectq
0Fh pointer
10h panel
SeeAlso: AX=1016h
--------Q-15DE15-----------------------------
INT 15 - DESQview v2.20+ - SET ERROR HANDLING
AX = DE15h
BL = error handling mode
00h post system error on all error conditions
01h return carry flag set on calls to ADDTO, SUBFROM, and WRITE
messages sent to mailboxes which fail due to lack of system
or common memory
02h (v2.26+) same as 01h, but also return null pointer for GETMEM
calls which fail due to lack of system memory
Return: nothing
SeeAlso: AX=DE0Ch,AX=DE16h
--------Q-15DE16-----------------------------
INT 15 - DESQview v2.20+ - GET ERROR HANDLING
AX = DE16h
Return: BL = current mode
00h always post system error
01h return carry flag set on failed mailbox writes
02h return CF set on failed mailbox writes and NULL on failed
GETMEM calls
SeeAlso: AX=DE15h
--------Q-15DE17-----------------------------
INT 15 - DESQview v2.20-2.25 - reserved
AX = DE17h
Return: pops up "Programming error" window
Note: AX = 1117h is NOT identical to this call under DESQview 2.20 thru 2.25
SeeAlso: AX=1117h
--------Q-15DE17-----------------------------
INT 15 - DESQview v2.26+ - "ASSERTMAP" - GET/SET MAPPING CONTEXT
AX = DE17h
BX = function
0000h get current mapping context without setting
nonzero set new mapping context to BX
Return: BX = mapping context in effect before call
Notes: mapping contexts determine conventional-memory addressability; setting
a mapping context ensures that the associated program and data areas
are in memory for access. Usable by drivers, TSRs and shared
programs.
caller need not be running under DESQview
this API call may be made from a hardware interrupt handler
SeeAlso: AX=1016h,AX=1117h,AX=DE21h,INT 2F/AX=1685h
--------Q-15DE18-----------------------------
INT 15 - DESQview v2.20+ - internal - ???
AX = DE18h
BP = function number
high byte must be 10h
low byte is function
00h set ???
BL = ??? (00h-10h, video mode???)
BH = value to store
03h set ???
BL = ??? (stored in driver)
0Ah get ???
ES:DI -> 18-byte buffer to hold ???
Note: calls video driver (NOP for Hercules driver,probably CGA and MCGA also)
--------Q-15DE19-----------------------------
INT 15 - DESQview v2.23+ - "GETCOMMON" - ALLOCATE "COMMON" MEMORY
AX = DE19h
BX = number of bytes to allocate
Return: AX = 0000h successful
ES:DI -> allocated block
nonzero insufficient memory
Note: this API call may be made from within a hardware interrupt handler
SeeAlso: AX=DE0Ch,AX=DE15h,AX=DE1Ah
--------Q-15DE1A-----------------------------
INT 15 - DESQview v2.23+ - "PUTCOMMON" - DEALLOCATE "COMMON" MEMORY
AX = DE1Ah
ES:DI -> previously allocated block
Return: AX = 0000h (successful)
Note: this function may be called from within a hardware interrupt handler
SeeAlso: AX=DE0Dh,AX=DE19h
--------Q-15DE1B-----------------------------
INT 15 - DESQview v2.23+ internal - DECREMENT CRITICAL NESTING COUNT
AX = DE1Bh
Return: nothing
SeeAlso: AX=101Ch,AX=DE13h,AX=DE1Ch
--------Q-15DE1C-----------------------------
INT 15 - DESQview v2.23+ - "ENTERC" - INCREMENT CRITICAL NESTING COUNT
AX = DE1Ch
Return: nothing
Notes: similar to AX=101Bh, but begins the critical region without ensuring
that DOS is free
the official documentation states that this call should be paired with
"ENDC" (AX=101Ch); no mention is made of AX=DE1Bh
this API call may be made from within a hardware interrupt handler
SeeAlso: AX=101Bh,AX=101Ch,AX=DE13h,AX=DE1Bh
--------Q-15DE1D-----------------------------
INT 15 - DESQview v2.23+ - "PUTKEY" - FAKE USER KEYSTROKES
AX = DE1Dh
DX = segment of handle for task to receive keystroke
BL = character
BH = scan code
Return: AX = 0000h if successful
nonzero if receiver's keyboard buffer was full
Notes: the key is treated as though the user had pressed it, ignoring any
script which may be bound to the key, and using the current field
table if the keyboard object is in field processing mode
multiple PUTKEYs are seen in the order in which they are executed
SeeAlso: AX=DE10h
--------Q-15DE1E-----------------------------
INT 15 - DESQview v2.23+ - "SCRNINFO" - GET TRUE VIDEO PARAMETERS
AX = DE1Eh
Return: CL = actual number of rows on screen
CH = actual number of columns on screen
BL = actual video mode (may differ from INT 10/AH=0Fh return) (v2.26+)
Note: this API call may be made from a hardware interrupt handler
SeeAlso: INT 10/AH=0Fh
--------Q-15DE1F-----------------------------
INT 15 - DESQview v2.23+ - "DOSUSER" - GET HANDLE OF TASK CURRENTLY USING DOS
AX = DE1Fh
Return: BX = segment of task handle or 0000h if no tasks are using DOS
Note: this API call may be made from within a hardware interrupt handler
SeeAlso: AX=DE13h,INT 21/AH=34h
--------Q-15DE20-----------------------------
INT 15 - DESQview v2.26+ - "DISPATCHINT" - INTERRUPT ANOTHER TASK
AX = DE20h
BX = segment of handle of task to interupt
DX:CX -> FAR interrupt routine
BP,SI,DI,DS,ES as required by interrupt routine
Return: nothing
Notes: unlike "PGMINT" (AX=1021h), DISPATCHINT may be applied to the task
making the DISPATCHINT call
multiple "DISPATCHINT" calls are processed in the order in which they
were executed
the FAR routine is entered with the current ES, DS, SI, DI, and BP
values, using the task's internal stack (see AX=101Ah); only SS:SP
needs to be preserved
this API call may be made from within a hardware interrupt handler
SeeAlso: AX=1021h,AX=DE2Ah
--------Q-15DE21-----------------------------
INT 15 - DESQview v2.26+ - "ASSERTVIR" - CONTROL 386 SCREEN VIRTUALIZATION
AX = DE21h
BX = new state
0000h turn off
nonzero turn on
Return: BX = old state of virtualization
Notes: this API call may be made from within a hardware interrupt handler
under DV 2.40 and 2.42, this call appears to have no effect and always
returns a nonzero value in BX which appears to be the offset within
the DV common memory segment of the caller's task object; it may
only have an effect within a hardware interrupt handler
SeeAlso: AX=1117h,AX=DE17h
--------Q-15DE22-----------------------------
INT 15 - DESQview v2.26+ - "PROCESSMEM" - GET TASK MEMORY STATUS
AX = DE22h
DX = segment of task handle
Return: DX = total amount of memory in paragraphs
BX = amount of system memory in paragraphs
CX = largest block of system memory available in paragraphs
AX = memory flags (see #0476)
Notes: if the task handle is a child task, the returned values will be for the
process containing the task, rather than the task itself
if the process's system memory is swapped out, BX,CX,DX remain
unchanged, because the memory usage cannot be determined
SeeAlso: AX=DE04h,AX=DE05h,AX=DE06h
Bitfields for DESQview process memory flags:
Bit(s) Description (Table 0476)
0 system memory resides in shared memory
1 process's memory is swapped out
2 process's system memory is swapped out
--------Q-15DE23-----------------------------
INT 15 U - DESQview v2.31+ - ???
AX = DE23h
BX = ??? IRQ number on first PIC?
CX = ??? IRQ number on second PIC?
Return: ???
Note: called by QEMM 6.00+
--------Q-15DE24-----------------------------
INT 15 - DESQview v2.40+ - "XNEWPROC" - START NEW APPLICATION
AX = DE24h
BX = length of .DVP data
CX = length of ??? string
DS:SI -> ??? string
ES:DI -> .DVP data (see #0353 at AX=102Ch)
Return: BX = segment of task handle??? or 0000h on error
Note: this call is similar to AX=102Ch except that it can interpret the
extended DVP data
SeeAlso: AX=102Ch
--------Q-15DE25-----------------------------
INT 15 - DESQview v2.40+ - "GETDVPATH" - GET DESQview DIRECTORY
AX = DE25h
ES:DI -> 67-byte buffer for ASCIZ directory name
Return: ES:DI buffer filled with directory from which DESQview was started
BUG: DV 2.42 does not place a terminating NUL at the end of the directory
name, so if the buffer is not cleared to zeros before the call,
there is no way to tell where the directory name ends. This bug
has been fixed in DV 2.52 (DV/X 1.02)
SeeAlso: AX=DE2Eh,INT 21/AH=47h
--------Q-15DE26-----------------------------
INT 15 - DESQview v2.40+ - "GETFOREGROUND" - GET KEYBOARD FOCUS
AX = DE26h
Return: BX = segment of handle for task with keyboard focus
Note: under DESQview/X, the X server always has the keyboard focus unless a
"direct" window is active
SeeAlso: AX=DE2Fh,INT 2F/AX=DE0Ah
--------Q-15DE27-----------------------------
INT 15 - DESQview v2.50+ - "ADDINSTANCEDATA" - ADD PER-TASK SAVE/RESTORE AREA
AX = DE27h
BX = type
0000h process
0001h task
ES:DI -> list of Instance Item Structures (see #0477)
Return: CF clear if successful
AX = ???
BX = ???
CF set on error
AX = error code???
0004h invalid BX value
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
SeeAlso: INT 2F/AX=DE08h,INT 2F/AX=DE09h
Format of DESQview Instance Item Structure [one element of list]:
Offset Size Description (Table 0477)
00h WORD length of data area DESQview should save and restore on context
switches (0000h = end of list)
02h DWORD pointer to area to be saved/restored
--------Q-15DE28-----------------------------
INT 15 U - DESQview v2.50+ - ???
AX = DE28h
BX = segment of ??? or 0000h for default
???
Return: ???
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
SeeAlso: AX=DE2Ah
--------Q-15DE29BX0000-----------------------
INT 15 U - DESQview/X - ???
AX = DE29h
BX = 0000h
???
Return: CF clear if successful
???
CF set on error
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
under DESQview 2.60, this function and all other subfunctions of
AX=DE29h always return CF set, as they are unique to DESQview/X
--------Q-15DE29BX0001-----------------------
INT 15 U - DESQview/X - ???
AX = DE29h
BX = 0001h
DX = segment of window handle
Return: CF clear if successful
AX = ???
DX = ???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
--------Q-15DE29BX0002-----------------------
INT 15 U - DESQview/X - ???
AX = DE29h
BX = 0002h
DX = segment of window handle
Return: CF clear if successful
AX = ???
DX = ???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
--------Q-15DE29BX0003-----------------------
INT 15 U - DESQview/X - ???
AX = DE29h
BX = 0003h
DX = segment of window handle
Return: CF clear if successful
???
CF set on error
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
--------Q-15DE29BX0004-----------------------
INT 15 U - DESQview/X - GET DISPLAY NAME
AX = DE29h
BX = 0004h
CX = size of buffer in bytes
DX = segment of window handle
ES:DI -> buffer for display name
Return: CF clear if successful
buffer filled with ASCIZ display name (truncated if necessary) or
null string if no display
CF set on error
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
the name ":0" refers to the local display
--------Q-15DE29BX0005-----------------------
INT 15 U - DESQview/X - ???
AX = DE29h
BX = 0005h
???
Return: CF clear if successful
???
CF set on error
Note: under DESQview 2.60, this function and all other subfunctions of
AX=DE29h always return CF set, as they are unique to DESQview/X
--------Q-15DE2A-----------------------------
INT 15 - DESQview v2.50+ - "DISPATCHINTAFTERDOS" - INTERRUPT ANOTHER TASK
AX = DE2Ah
BX = segment of handle for task to interrupt or 0000h for caller
DX:CX -> interrupt routine
BP,SI,DI,DS,ES as required by interrupt routine
Return: nothing
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
this call is the same as AX=DE20h except that it will delay
interrupting the specified task until after it has exited DOS
SeeAlso: AX=1021h,AX=DE20h
--------Q-15DE2B-----------------------------
INT 15 - DESQview v2.50+ - "OBJNEXT" - TRAVERSE OBJECT LIST
AX = DE2Bh
ES:DI -> starting object
0000h:0000h for first object in list???
Return: AX = status
0000h successful
ES:DI -> next object of same type (window/non-window)
0001h failed (ES:DI was not a valid handle)
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
there are two separate lists, one for window/task objects and one
for all other objects
SeeAlso: AX=1016h,AX=DE2Ah,AX=DE2Ch
--------Q-15DE2C-----------------------------
INT 15 - DESQview v2.50+ - "WININFO" - GET WINDOW INFORMATION
AX = DE2Ch
DX = window information format version (0100h for DESQview 2.5x)
BX = segment of window handle or 0000h for default
ES:DI -> buffer for window information (see #0478)
Return: AX = status
0000h successful
Note: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
SeeAlso: AX=1000h,AX=1016h,AX=DE01h,AX=DE2Bh
Format of DESQview window information:
Offset Size Description (Table 0478)
00h BYTE task flag: 00h window, 01h task
01h BYTE process number if owner task
00h if non-owner task
02h WORD segment of owner's handle, 0000h if orphaned
04h WORD mapping context (see #0342 at AX=1016h)
06h BYTE task status (see #0479)
07h BYTE unused
08h WORD status bits (see #0480)
0Ah BYTE 01h if foreground-only window
(Table 0479)
Values for DESQview task status:
00h "Waiting" waiting for input
01h "Idle" keyboard poll limit reached
03h same as 01h
04h "Pausing" INT 15/AX=1000h pause called
04h DV/X direct: user did something to allow task switch
05h "ModeChg" video mode about to be changed
06h "ModeNtf" notify that video mode changed
07h "MoniCh" requested change to other monitor
08h "StartPgm" control relinquished to start new process
09h "MgrCan" made window manager CANCEL command
0Ah "Slicing" time slice expired
0Bh "Exit DOS" notify on DOS calls
0Ch "Enter DOS" process is re-entering DOS
0Dh "Terminate" INT 21/AH=4Ch or task freed
0Eh "BrkNxt" Control-Break pressed
0Fh "MgrCol" keyboard focus taken away
10h "PgmInt" interrupted by API call from another task
11h "BldOpen" call to INT 15/AX=DE01h
Bitfields for DESQview task status bits:
Bit(s) Description (Table 0480)
6 task is freeing another task
5 process is being created
4 user suspended process
3 process suspended itself
2 process is resized direct window (suspended)
1 process swapped out
0 DESQview process
--------Q-15DE2D-----------------------------
INT 15 U - DESQview v2.50+ - GET/SET SOCKET HANDLER
AX = DE2Dh
CX = direction
FFFFh set socket handler
DX:BX -> FAR function for socket interface
must be of the format described under INT 63"DESQview"
at #3186
other get socket handler
Return: DX:BX -> socket handler (see #3186)
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
the "set" subfunction is normally called only by SOCKET.DVR
SeeAlso: AX=DE2Eh,INT 63"DESQview",#3186
--------Q-15DE2E-----------------------------
INT 15 U - DESQview v2.50+ - SOCKET API
AX = DE2Eh
DX:BX -> socket record (see #0482)
0000h:0000h to create a new socket record
Return: CX = size of socket record in bytes
DX:BX -> socket record which was used
Notes: DESQview 2.50-2.52 are distributed as part of DESQview/X v1.0x.
socket records are allocated from common memory
for Unix compatibility, each socket and connection on a socket is
allocated a DOS file handle (referencing an SFT for NUL) which is
used on various calls to specify which of possibly multiple
connections is to be operated upon
SeeAlso: AX=DE2Dh,INT 61/AX=0001h/SF=0001h"VINES",INT 63"DESQview"
(Table 0481)
Values for DESQview/X socket API function number:
0000h initialize socket???
0001h "gethostname"
0002h "ioctl" check for input
0003h "sleep" delay for specified period
0004h "htons" convert word to network (big-endian) byte order
0005h "select"
0006h "bsd_close"/"so_close" close socket
0007h NOP
0008h "connect" initiate connection on socket
0009h "recv"/"recvfrom" read from socket
000Ah "socket"
000Bh ???
000Ch "gethostbyname"
000Dh "send"/"sendto" write to socket
000Eh ??? (does something to all connections for process)
000Fh "getpid" get process identifier
0010h "gettimeofday"
0011h "bind" assign name to socket
0012h "listen" listen for connections on socket
0013h "accept" accept connection on socket
0014h connect to X server
0015h "gethostbyaddr" get host information for an address
0016h "getprotobyname"
0017h "getprotobynumber"
0018h "getservbyname"
0019h "getservbyport"
001Ah "getsockname" determine name bound to socket
001Bh "getpeername" get name of connected peer
001Ch "getsockopt"/"setsockopt"
001Dh "so_exit" close all sockets for calling process
001Eh "issock" determine whether file handle references socket
001Fh "so_attach" reattach previously detached socket
0020h "so_detach" temporarily detach socket
0021h "dvpath" get DESQview directory (see also AX=DE24h)
0022h "NewProc" start new application (see also AX=102Ch)
0023h "so_linkup"
0024h "CanonicalPath" canonicalize filename (see also INT 21/AH=60h)
0025h indirect INT 15h call
0026h Network Manager interface
0027h "so_unlink" close connection from "so_linkup"
0028h "raisepriority"
0029h "lowerpriority"
002Ah "so_private" ???
FFFFh "NetExit" (appears to be a NOP)
Format of DESQview/X socket record:
Offset Size Description (Table 0482)
00h WORD signature F0ADh
02h WORD function number (see #0481)
04h WORD returned error code (see #0502)
06h WORD maximum message size??? (usually 0400h)
08h WORD PSP segment to use or 0000h if socket not valid
0Ah WORD scratch space (JFT size)
0Ch DWORD scratch space (JFT address)
10h DWORD mailbox handle (initialized by function 0000h)
14h DWORD timer object handle (initialized by function 0000h)
---function 0000h---
18h WORD (ret) ???
---function 0001h---
18h WORD (ret) status???
1Ah 128 BYTEs (ret) ASCIZ hostname (empty string if not on network)
9Ah WORD maximum length of hostname to return
---function 0002h---
18h WORD (ret) status
1Ah WORD socket's file handle
1Ch WORD IOCTL function
05h "FIONREAD" determine available input
06h "FIONBIO" set blocking state of socket
1Eh WORD (return, subfn 05h) number of bytes available for reading
(call, subfn 06h) 0000h blocking, nonzero nonblocking
---function 0003h---
18h 2 BYTEs unused
1Ah WORD delay time in seconds
---function 0004h---
18h WORD (ret) result in network (big-endian) byte order
1Ah WORD value to convert to network byte order
---function 0005h---
18h WORD (ret) number of handles meeting the specified conditions???
1Ah WORD number of file handles in each bitset
1Ch DWORD bitset of socket handles to check for readability
20h DWORD bitset of socket handles to check for writability
24h DWORD bitset of socket handles to check for errors
28h WORD timeout in ??? or 0000h to block until some socket ready
2Ah DWORD ???
2Eh DWORD ???
---function 0006h---
18h WORD (ret) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
---function 0008h---
18h WORD (ret) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD 0001h if socket name specified, 0000h if not
1Eh WORD length of socket name
20h N BYTEs name of socket to which to connect
---function 0009h---
18h WORD (ret) number of bytes actually read, 0000h if connection
closed, or FFFFh on error
1Ah WORD socket's file handle
1Ch WORD number of bytes to read
1Eh WORD flags
20h WORD 0000h if no source address desired
0001h if source address is to be stored (datagram sockets)
22h WORD length of source address
24h 110 BYTEs source address
92h 1K BYTEs buffer for data to be read
---function 000Ah---
18h WORD (ret) socket's file handle or FFFFh on error
1Ah WORD address family (0001h,0002h)
1Ch WORD socket type
1Eh WORD protocol
---function 000Bh---
18h WORD (ret) 0001h if ??? or FFFFh on error
1Ah WORD socket's file handle
1Eh WORD (call) ???
---function 000Ch---
18h 128 BYTEs ASCIZ hostname (special case if empty string or "unix")
98h ??? (ret) packed 'hostent' structure
A2h ??? (ret) ???
---function 000Dh---
18h WORD (ret) number of bytes actually written or FFFFh on error
1Ah WORD socket's file handle
1Ch WORD number of bytes to write
1Eh WORD number of bytes to follow in subsequent writes???
20h WORD flags
22h WORD 0000h if no destination specified, 0001h if destination present
24h WORD 0001h if broadcast message???, 0000h if not
(ignored if no destination specified)
26h WORD length of destination address
28h 110 BYTEs destination address
96h 1K BYTEs buffer containing data to be written
---function 000Eh---
no additional fields
---function 000Fh---
18h DWORD (ret) DESQview task handle of calling process
---function 0010h---
18h DWORD (ret) current time
1Ch DWORD (ret) ???
---function 0011h---
18h WORD (ret) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD length of name
1Eh N BYTEs buffer for socket name
---function 0012h---
18h WORD (ret) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD maximum backlog of pending connections allowed on socket
---function 0013h---
18h WORD (ret) file handle for new connection or FFFFh on error
1Ah WORD listen()ing socket's file handle
1Ch WORD (call) length of buffer for connecting entity's address
(ret) actual length of address
1Eh N BYTEs buffer for connecting entity's address (110 bytes???)
---function 0014h---
18h WORD (ret) socket's file handle or FFFFh on error
1Ah 4 BYTEs (ret) ???
1Eh WORD (ret) ???
20h WORD (ret) ???
22h 256 BYTEs ASCIZ X display name
122h ???
---function 0015h---
18h WORD (call) type of address??? (test for 0001h seen)
1Ah WORD (call) length of buffer for host address
1Ch 110 BYTEs buffer containing ASCIZ host address
8Ah WORD (ret) offset of official host name
8Ch WORD (ret) offset of alias list???
8Eh WORD (ret) address type???
90h WORD (ret) length of an address in bytes???
92h WORD (ret) offset of address???
9Ah N BYTEs (ret) buffer for hostname, alias list, and host address
---function 0016h---
18h ??? buffer for ASCIZ protocol name
98h ???
---function 0017h---
18h WORD (call) protocol number
1Ah WORD (ret) ??? or 0001h
---function 0018h---
18h 128 BYTEs buffer containing ASCIZ ???
98h 128 BYTEs buffer containing ASCIZ ???
118h WORD (ret) ???
---function 0019h---
18h WORD port number
1Ah 128 BYTEs (call) ASCIZ host name
(ret) packed servent strctures???
9Ah WORD (ret) ???
---function 001Ah---
18h WORD (ret) 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD (call) length of buffer for socket name
(ret) actual length of socket name
1Eh N BYTEs buffer for socket name
---function 001Bh---
18h WORD (ret) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
1Ch WORD (call) size of buffer for name
(ret) actual size of name
1Eh N BYTEs buffer for peer's name
---function 001Ch---
18h WORD (ret) status: 0000h if successful, FFFFh on error
1Ah WORD direction: 0000h to get, 0001h to set
1Ch WORD socket's file handle
1Eh WORD option level
20h WORD option name
22h WORD (call) length of buffer for option value
(ret) actual length of option value
24h N BYTEs buffer for option value
---function 001Dh---
no additional fields
---function 001Eh---
18h WORD (ret) status: 0000h ??? or 0001h ???
1Ah WORD file handle which may or may not be a socket
---function 001Fh---
18h WORD (ret) file handle or FFFFh on error
1Ah DWORD (call) pointer to Socket Context Record (see #0503) of a
previously detached socket
---function 0020h---
18h WORD (ret) status: 0000h if successful or FFFFh on error
1Ah WORD socket's file handle
1Ch DWORD (ret) pointer to Socket Context Record (see #0503) for
the file handle
---function 0021h---
18h 64 BYTEs buffer for DESQview startup directory (see AX=DE25h)
---function 0022h---
18h DWORD (ret) task handle of new application
1Ch WORD size of .DVP data
1Eh 129 BYTEs ASCIZ ???
9Fh N BYTEs .DVP data (see #0353 at AX=102Ch)
---function 0023h---
18h WORD (ret) ??? or FFFFh on error
1Ah WORD socket's file handle???
---function 0024h---
18h WORD (ret) DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
0000h if successful
1Ah 129 BYTEs ASCIZ filename/pathname
11Bh 129 BYTEs ASCIZ canonicalized filename/pathname (see INT 21/AH=60h)
---function 0025h---
18h WORD value of AX
1Ah WORD value of BX
1Ch WORD (call) value of CX for call if AH value other than 12h
(call) number of stack parameters if AH value is 12h
(ret) returned CX for calls other than INT 15/AH=12h
1Eh WORD value of DX
20h WORD value of DI
22h WORD value of SI
24h WORD value of DS
26h WORD value of ES
28h WORD (ret) value of FLAGS after call
2Ah N DWORDs (call) stack parameters for INT 15/AH=12h call
(ret) stack results from INT 15/AH=12h call
---function 0026h---
18h WORD (call) Network Manager subfunction (see #0483)
(ret) status??? (0000h on error)
1Ah WORD (call) size of parameter data
(ret) size of returned data
1Ch N BYTEs (call) parameter data required by call (see #0484,#0485,#0501)
(ret) result data (see #0494,#0495,#0500)
---function 0027h---
18h WORD (ret) status: 0000h if successful, FFFFh on error
1Ah WORD socket's file handle
---functions 0028h,0029h---
18h WORD (call) file handle for which to set priority low/high
FFFFh to change calling task's priority
---function 002Ah---
no additional fields
(Table 0483)
Values for DESQview/X Network Manager subfunction:
0004h "so_exit"???
0005h "gethostbyname"
0006h "gethostname"
0009h "socket"
000Dh "gethostbyaddr"
000Fh "getprotobyname"
0010h get protocol name for protocol number
0011h "getservbyname"
0012h "getservbyport" (see #0487)
0013h "getsockname"??? (see #0488)
0016h "shutdown" (see #0489)
0017h kill Network Manager
0018h "getpeername"??? (see #0490)
0019h ??? (called by socket function 0000h) (see #0491)
001Ah ??? (see #0492)
001Bh "so_linkup" (see #0493)
001Dh "getnetstatus" get network services (see #0494)
001Fh "getpwuid"
0020h "getpwnam"
0021h "getpwvar"
0022h "crypt"
0023h "so_unlink"
0024h "getlogin" (see #0495)
0028h "sethostent"
0029h "gethostent"
002Ah "soaddhost"
002Bh "soupdatehost"
002Ch "sodeletehost"
002Dh "setservent"
002Eh "getservent"
002Fh "setpwent"
0030h "getpwent" (see #0496)
0031h "sethostpath" (see #0497)
0032h "endservent"
0033h "endhostent"
0034h "getnettype" get IP network number (see #0498)
0035h ??? (pops up Network Manager window)
0037h "getnettimeout" (see #0499)
0038h get machine name and IP address (see #0500)
0039h "getuid" (see #0501)
---DV/X v2.0+ ---
0041h "deletepwnam"
0045h "renamepw"
Format of Function 0026h/Subfunction 000Fh data:
Offset Size Description (Table 0484)
00h 8 BYTEs (ret) ???
Format of Function 0026h/Subfunction 0010h data:
Offset Size Description (Table 0485)
00h 2 BYTEs (ret) ???
02h WORD (ret) protocol number
04h WORD (call) protocol number for which to get name
06h WORD (ret) ???
08h var (ret) ASCIZ protocol name
N var (ret) ASCIZ protocol name
Format of Function 0026h/Subfunction 0011h data:
Offset Size Description (Table 0486)
00h 8 BYTEs ???
08h var (ret) ASCIZ protocol name
var (ret) ASCIZ ??? name
var (ret) ASCIZ ??? name
Format of Function 0026h/Subfunction 0012h data:
Offset Size Description (Table 0487)
00h 8 BYTEs (ret) ???
Format of Function 0026h/Subfunction 0013h data:
Offset Size Description (Table 0488)
00h 116 BYTEs (ret) ???
Format of Function 0026h/Subfunction 0016h ("shutdown") data:
Offset Size Description (Table 0489)
00h WORD (ret) shutdown status (0000h successful, FFFFh error)
02h 4 BYTEs (ret) ???
04h WORD (call) socket handle
06*h WORD (call) what (0 = receives, 1 = sends, 2 = both)
Format of Function 0026h/Subfunction 0018h data:
Offset Size Description (Table 0490)
00h 116 BYTEs (ret) ???
Format of Function 0026h/Subfunction 0019h data:
Offset Size Description (Table 0491)
00h 4 BYTEs (ret) ???
04h DWORD (ret) task handle of ???
Format of Function 0026h/Subfunction 001Ah data:
Offset Size Description (Table 0492)
00h 38 BYTEs (ret) ???
Format of Function 0026h/Subfunction 001Bh data:
Offset Size Description (Table 0493)
00h 10 BYTEs (ret) ???
Format of Function 0026h/Subfunction 001Dh return data [array]:
Offset Size Description (Table 0494)
00h WORD ??? or FFFFh if end of array
02h 7 BYTEs ???
09h 27 BYTEs ASCIZ name of service
Format of Function 0026h/Subfunction 0024h return data:
Offset Size Description (Table 0495)
00h var ASCIZ username
Format of Function 0026h/Subfunction 0030h data:
Offset Size Description (Table 0496)
00h WORD (call) UID or 0000h for current user
(ret) ???
02h WORD (ret) UID
04h 6 BYTEs (ret) ???
0Ah var (ret) ASCIZ username
var (ret) ASCIZ encrypted password
var (ret) ASCIZ initial ("home") directory
Format of Function 0026h/Subfunction 0031h ("sethostpath") data:
Offset Size Description (Table 0497)
00h 4 BYTEs ???
04h 144 BYTEs ASCIZ ???
Format of Function 0026h/Subfunction 0034h data:
Offset Size Description (Table 0498)
00h 1-3 BYTEs IP network number of caller's machine (low byte first)
Format of Function 0026h/Subfunction 0037h ("getnettimeout") return data:
Offset Size Description (Table 0499)
00h WORD (ret) timeout
02h 2 BYTEs (ret) ???
Format of Function 0026h/Subfunction 0038h return data:
Offset Size Description (Table 0500)
00h BYTE ???
01h 4 BYTEs IP address
05h var ASCIZ machine name
???
Format of Function 0026h/Subfunction 0039h ("getuid") return data:
Offset Size Description (Table 0501)
00h WORD user ID
02h 2 BYTEs ???
SeeAlso: #0497,#0500
(Table 0502)
Values for DESQview/X socket error code:
0000h successful
0009h "BADF" bad file handle
000Ch "ENOMEM" out of memory
000Eh "EFAULT" bad address
0016h "EINVAL" invalid argument
0018h "EMFILE" too many open files
0020h "EPIPE" ??? broken pipe
0023h "EWOULDBLOCK" operation cannot be completed at this time
0024h "EINPROGRESS" operation now in progress
0026h "ENOTSOCK" socket invalid
0028h "EMSGSIZE" message too long to send atomically
002Ch "ESOCKTNOSUPPORT" socket type not supported
002Fh "EAFNOSUPPORT" address family not supp. by protocol fam.
0031h "EDOM" argument too large
0038h "EISCONN" socket is already connected
0039h "ENOTCONN" socket is not connected
Format of DESQview/X Socket Context Record:
Offset Size Description (Table 0503)
00h DWORD pointer to next Socket Context Record, 0000h:0000h if last
04h WORD SFT index for socket, 00FFh if not connected, FFFFh if detached
06h WORD PSP segment of owner or 0000h
08h WORD mapping context of owning window (see #0342 at AX=1016h)
0Ah 2 BYTEs ???
0Ch WORD address family
0Eh WORD socket type
10h WORD protocol
12h WORD socket state
0001h created
0002h bound
0003h listening???
0005h connected
14h DWORD timer object handle
18h DWORD object handle (mailbox???)
1Ch DWORD object handle of parent of above object or 0000h:0000h
20h DWORD pointer to ??? or 0000h
24h 6 BYTEs ???
2Ah WORD file handle for socket or FFFFh
2Ch 2 BYTEs ???
2Eh WORD nonzero if socket nonblocking
---network connections only---
30h 2 BYTEs ???
32h WORD ???
34h 4 BYTEs (big-endian) IP address of remote
38h 6 BYTEs ???
--------Q-15DE2F-----------------------------
INT 15 - DESQview v2.50+ - "VIDEONOTIFY" - HAS DIRECT WINDOW BEEN ACTIVE?
AX = DE2Fh
Return: BX = status
0001h keyboard focus has been given to a direct window since the
last call
0000h if not
Notes: DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
Quarterdeck stated that this call would not be available under future
versions of DESQview Classic, but it is still present in v2.60
--------Q-15DE30-----------------------------
INT 15 - DESQview v2.50+ - "GETDVXVERSION" - GET DESQview/X VERSION
AX = DE30h
Return: BX = version (BH=major, BL=minor) or 0000h if not DESQview/X
Notes: DESQview 2.50-2.53 are distributed as part of DESQview/X v1.00-1.10.
you must first check the DESQview version to verify that it is 2.50 or
greater
SeeAlso: INT 21/AH=2Bh/CX=4445h
--------Q-15DE31-----------------------------
INT 15 - DESQview/X v1.10 - ???
AX = DE31h
CX = ???
0000h ???
nonzero ???
???
Return: ???
--------b-15DF-------------------------------
INT 15 - Juko UNIQUE UX BIOS - TURBO MODE CONTROL
AH = DFh
AL = function
00h turn on Turbo mode
01h turn off Turbo mode
02h set Turbo mode according to hardware switch
SeeAlso: INT 13/AX=FFFFh
--------b-15E00F-----------------------------
INT 15 - Compaq Systempro - MULTIPROCESSOR DISPATCH
AX = E00Fh
ES:BX -> start of 2nd processor's execution
Return: AL = status
0Fh successful
00h failure
SeeAlso: AX=E10Eh,AX=E200h
--------b-15E10E-----------------------------
INT 15 - Compaq Systempro - MULTIPROCESSOR END-OF-DISPATCH
AX = E10Eh
ES:BX -> start of 2nd processor's execution
Return: AL = status
0Fh successful (halted)
00h failure (not halted)
SeeAlso: AX=E00Fh,AX=E200h
--------b-15E200-----------------------------
INT 15 - Compaq Systempro - MULTIPROCESSOR AVAILABLE
AX = E200h
Return: AX bit 15 set if 2nd processor available
SeeAlso: AX=E00Fh,AX=E10Eh
--------b-15E4-------------------------------
INT 15 - Tandy??? - ???
AH = E4h
AL = subfunction
21h, 89h, 8Ah, 8Bh called by 386MAX v6.01
DL = ???
Return: DL = 00h if successful???
Note: the section of code in 386MAX which calls these functions also checks
whether the ROM BIOS has both Tandy and Phoenix Technologies
signatures if these calls fail; the Tandy 1000SL/TL BIOS does not
support this function, however, returning the usual CF set/AH=86h for
"unsupported function".
--------b-15E4-------------------------------
INT 15 - Compaq ROM BIOS 03/08/93 and newer - ???
AH = E4h
AL = subfunction
00h get ???
Return: CF clear
AH = 00h
CX = 0000h
BX = ??? (read from [XBDA:0094h])
01h,02h unsupported by this ROM version
Return: CF set, AH = 86h
80h,90h,A0h,B0h,C0h,D0h,E0h,F0h set ???
Return: CF clear
AH = 00h
CX = 0000h
BX = ???
81h,91h,A1h,B1h,C1h,D1h,E1h,F1h unsupported by 3/8/93&4/8/93 ROMs
Return: CF set, AH = 86h
Notes: functions 80h/90h/etc. are not supported by the 4/8/93 EISA System ROM
these functions are not supported by the 7/26/93 LTE Lite 386 ROM
--------b-15E800-----------------------------
INT 15 - Compaq Contura - GET ???
AX = E800h
Return: AX = 0000h
BH = 00h
BL = ??? (read from port 0C7Ch)
CH = ???
CL = ???
DX = 0000h
Note: also supported by 3/8/93 DESKPRO/i and 7/26/93 LTE Lite 386 ROM BIOS
--------b-15E800-----------------------------
INT 15 - Compaq Contura Aero, Contura 400 - GET SYSTEM MODEL CODE???
AX = E800h
BX = ??? (0000h)
Return: CF clear if successful
BH = 02h
BL = submodel??? (0Ch,0Dh,34h,38h,40h,44h,48h,64h,68h)
CF set on error
others???
Notes: used by Compaq's SOFTPAQ number 0937 EPPBIOS.SYS to determine whether
the Enhanced Parallel Port expected by that driver is available
used by Compaq's SOFTPAW number 0856 VOLCTRL.EXE to determine whether
volume control hardware expected by that driver is available
--------b-15E800-----------------------------
INT 15 - Compaq Prolinea - GET ???
AX = E800h
BX = ??? (1369h)
Return: BH = 01h
BL = ???
others???
Note: used by Compaq's SOFTPAQ number 0718 INT10_04.SYS to determine whether
the fix that driver applies is required (will not install if BX on
return is other than 010Eh or 010Fh)
SeeAlso: AX=E802h
--------b-15E801-----------------------------
INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
AX = E801h
Return: CF clear if successful
AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
BX = extended memory above 16M, in 64K blocks
CX = configured memory 1M to 16M, in K
DX = configured memory above 16M, in 64K blocks
CF set on error
Notes: supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well
as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM
BIOS
supported by AMI BIOSes dated 8/23/94 or later
this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
used as a fall-back by newer versions if AX=E820h is not supported
SeeAlso: AH=8Ah"Phoenix",AX=E802h,AX=E820h,AX=E881h"Phoenix"
--------b-15E802-----------------------------
INT 15 - Compaq Contura - GET ???
AX = E802h
Return: CF clear
AX = 0000h
BX = ???
CX = 0000h
Note: this function is also supported by the LTE Lite 25c, 25E, and 486; not
supported by LTE Lite 20 and 25.
SeeAlso: AX=E801h"Phoenix"
--------b-15E820-----------------------------
INT 15 - newer BIOSes - GET SYSTEM MEMORY MAP
AX = E820h
EAX = 0000E820h
EDX = 534D4150h ('SMAP')
EBX = continuation value or 00000000h to start at beginning of map
ECX = size of buffer for result, in bytes (should be >= 20 bytes)
ES:DI -> buffer for result (see #0505)
Return: CF clear if successful
EAX = 534D4150h ('SMAP')
ES:DI buffer filled
EBX = next offset from which to copy or 00000000h if all done
ECX = actual length returned in bytes
CF set on error
AH = error code (86h) (see #0422 at INT 15/AH=80h)
Notes: originally introduced with the Phoenix BIOS v4.0, this function is
now supported by most newer BIOSes, since various versions of Windows
call it to find out about the system memory
a maximum of 20 bytes will be transferred at one time, even if ECX is
higher; some BIOSes (e.g. Award Modular BIOS v4.50PG) ignore the
value of ECX on entry, and always copy 20 bytes
some BIOSes expect the high word of EAX to be clear on entry, i.e.
EAX=0000E820h
if this function is not supported, an application should fall back
to AX=E802h, AX=E801h, and then AH=88h
the BIOS is permitted to return a nonzero continuation value in EBX
and indicate that the end of the list has already been reached by
returning with CF set on the next iteration
this function will return base memory and ISA/PCI memory contiguous
with base memory as normal memory ranges; it will indicate
chipset-defined address holes which are not in use and motherboard
memory-mapped devices, and all occurrences of the system BIOS as
reserved; standard PC address ranges will not be reported
SeeAlso: AH=C7h,AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI"
Format of Phoenix BIOS system memory map address range descriptor:
Offset Size Description (Table 0504)
00h QWORD base address
08h QWORD length in bytes
10h DWORD type of address range (see #0505)
(Table 0505)
Values for System Memory Map address type:
01h memory, available to OS
02h reserved, not available (e.g. system ROM, memory-mapped device)
03h ACPI Reclaim Memory (usable by OS after reading ACPI tables)
04h ACPI NVS Memory (OS is required to save this memory between NVS
sessions)
other not defined yet -- treat as Reserved
SeeAlso: #0504
--------b-15E881-----------------------------
INT 15 - Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
AX = E881h
Return: CF clear if successful
EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
EBX = extended memory above 16M, in 64K blocks
ECX = configured memory 1M to 16M, in K
EDX = configured memory above 16M, in 64K blocks
CF set on error
Notes: supported by AMI BIOSes dated 8/23/94 or later
this interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is
used as a fall-back by newer versions if AX=E820h is not supported
SeeAlso: AX=E801h"Phoenix",AX=E820h"Phoenix"
--------m-15F200CX454D-----------------------
INT 15 - Tandon memory mapper - Tandon MAPPER HARDWARE INITIALIZATION CHECK ???
AX = F200h
CX = 454Dh
Return: CF clear if hardware already initialised
BX = upper RAM areas in use
bit 0: C000-C3FF
bit 1: C400-C7FF
...
bit 11: EC00-EFFF
CF set if hardware not initialised yet
--------B-1600-------------------------------
INT 16 - KEYBOARD - GET KEYSTROKE
AH = 00h
Return: AH = BIOS scan code
AL = ASCII character
Notes: on extended keyboards, this function discards any extended keystrokes,
returning only when a non-extended keystroke is available
the BIOS scan code is usually, but not always, the same as the hardware
scan code processed by INT 09. It is the same for ASCII keystrokes
and most unshifted special keys (F-keys, arrow keys, etc.), but
differs for shifted special keys
some (older) clone BIOSes do not discard extended keystrokes and manage
function AH=00h and AH=10h the same
the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
keystrokes (same as with functions 10h and 20h), but will always
translate prefix E0h to 00h. This allows old programs to use extended
keystrokes and should not cause compatibility problems
SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,AX=AF4Dh"K3PLUS",INT 18/AH=00h
--------B-1601-------------------------------
INT 16 - KEYBOARD - CHECK FOR KEYSTROKE
AH = 01h
Return: ZF set if no keystroke available
ZF clear if keystroke available
AH = BIOS scan code
AL = ASCII character
Note: if a keystroke is present, it is not removed from the keyboard buffer;
however, any extended keystrokes which are not compatible with 83/84-
key keyboards are removed by IBM and most fully-compatible BIOSes in
the process of checking whether a non-extended keystroke is available
some (older) clone BIOSes do not discard extended keystrokes and manage
function AH=00h and AH=10h the same
the K3PLUS v6.00+ INT 16 BIOS replacement doesn't discard extended
keystrokes (same as with functions 10h and 20h), but will always
translate prefix E0h to 00h. This allows old programs to use extended
keystrokes and should not cause compatibility problems
SeeAlso: AH=00h,AH=11h,AH=21h,INT 18/AH=01h
--------B-1602-------------------------------
INT 16 - KEYBOARD - GET SHIFT FLAGS
AH = 02h
Return: AL = shift flags (see #0506)
AH destroyed by many BIOSes
SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h,MEM 0040h:0017h
Bitfields for keyboard shift flags:
Bit(s) Description (Table 0506)
7 Insert active
6 CapsLock active
5 NumLock active
4 ScrollLock active
3 Alt key pressed (either Alt on 101/102-key keyboards)
2 Ctrl key pressed (either Ctrl on 101/102-key keyboards)
1 left shift key pressed
0 right shift key pressed
SeeAlso: #0511,#3414,MEM 0040h:0017h,#M010
--------B-1603-------------------------------
INT 16 - KEYBOARD - SET TYPEMATIC RATE AND DELAY
AH = 03h
AL = subfunction
00h set default delay and rate (PCjr and some PS/2)
01h increase delay before repeat (PCjr)
02h decrease repeat rate by factor of 2 (PCjr)
03h increase delay and decrease repeat rate (PCjr)
04h turn off typematic repeat (PCjr and some PS/2)
05h set repeat rate and delay (AT,PS)
BH = delay value (00h = 250ms to 03h = 1000ms)
BL = repeat rate (00h=30/sec to 0Ch=10/sec [def] to 1Fh=2/sec)
06h get current typematic rate and delay (newer PS/2s)
Return: BL = repeat rate (above)
BH = delay (above)
Return: AH destroyed by many BIOSes
Note: use INT 16/AH=09h to determine whether some of the subfunctions are
supported
SeeAlso: INT 16/AH=09h,AH=29h"HUNTER",AH=2Ah"HUNTER"
--------B-1604-------------------------------
INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
AH = 04h
AL = keyclick state
00h off
01h on
Return: AH destroyed by many BIOSes
SeeAlso: AH=03h,AH=04h"K3PLUS"
--------b-1604-------------------------------
INT 16 - Tandy 2000 - KEYBOARD - FLUSH KEYBOARD BUFFER
AH = 04h
Note: this interrupt is identical to INT 51 on the Tandy 2000
SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=05h"Tandy 2000"
SeeAlso: INT 51"Tandy 2000"
--------K-1604-------------------------------
INT 16 - K3PLUS v6.22+ - SET KEYCLICK
AH = 04h
AL = keyclick state
00h keyclick off, leave loudness setting unchanged
01h keyclick on, leave loudness setting unchanged
else
bit 0: keyclick enabled if set
bits 7-1: new keyclick loudness (non-zero)
Return: AH destroyed by many BIOSes
Note: Applications which try to set a new loudness, but are unsure of the
results of other INT 16/AH=04h implementations, should set the new
loudness first, and then call this function again with AL=01h or
AL=00h
SeeAlso: AH=03h,AH=04h"KEYBOARD",AX=AF4Dh
--------B-1605-------------------------------
INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
AH = 05h
CH = BIOS scan code
CL = ASCII character
Return: AL = status
00h if successful
01h if keyboard buffer full
AH destroyed by many BIOSes
Notes: under DESQview, a number of "keystrokes" invoke specific
DESQview-related actions when they are read from the keyboard
buffer (see #0507)
similarly, some "keystrokes" invoke special functions on the HP 100LX
and HP 200LX (see #0508)
SeeAlso: AH=00h,AH=25h"K3",AH=71h,AX=AF4Dh,AH=FFh,INT 15/AX=DE10h
SeeAlso: MEM 0040h:001Eh
(Table 0507)
Values for pseudo-keystrokes for DESQview:
38FBh or FB00h switch to next window (only if main menu already popped up)
38FCh or FC00h pop up DESQview main menu
38FEh or FE00h close the current window
38FFh or FF00h pop up DESQview learn menu
(Table 0508)
Values for pseudo-keystrokes for HP 100LX/200LX:
EE00h pop up topcard display and set other system manager applications
into sleep mode
--------B-1605-------------------------------
INT 16 - KEYBOARD - SELECT KEYBOARD LAYOUT (PCjr only)
AH = 05h
AL = function
01h set keyboard layout to French
02h set keyboard layout to German
03h set keyboard layout to Italian
04h set keyboard layout to Spanish
05h set keyboard layout to UK
80h check if function supported
Return: AL <> 80h if supported
Return: ???
AH destroyed by many BIOSes
Note: this function is called by the DOS 3.2 KEYBxx.COM
SeeAlso: AH=92h,AH=A2h,AX=AF4Dh
--------b-1605-------------------------------
INT 16 - Tandy 2000 - KEYBOARD - RESET KEYBOARD
AH = 05h
Desc: reset the keyboard and flush the keyboard buffer
Note: this interrupt is identical to INT 51 on the Tandy 2000
SeeAlso: INT 16/AH=00h,INT 16/AH=02h,INT 16/AH=03h,INT 51"Tandy 2000"
--------B-1609-------------------------------
INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
AH = 09h
Return: AL = supported keyboard functions (see #0509)
AH destroyed by many BIOSes
Note: this function is only available if bit 6 of the second feature byte
returned by INT 15/AH=C0h is set (see #0433)
SeeAlso: AH=03h,AH=0Ah,AH=10h,AH=11h,AH=12h,AH=20h,AH=21h,AH=22h,INT 15/AH=C0h
Bitfields for supported keyboard functions:
Bit(s) Description (Table 0509)
7 reserved
6 INT 16/AH=20h-22h supported (122-key keyboard support)
5 INT 16/AH=10h-12h supported (enhanced keyboard support)
4 INT 16/AH=0Ah supported
3 INT 16/AX=0306h supported
2 INT 16/AX=0305h supported
1 INT 16/AX=0304h supported
0 INT 16/AX=0300h supported
SeeAlso: #0435
--------K-160A-------------------------------
INT 16 - KEYBOARD - GET KEYBOARD ID
AH = 0Ah
Return: BX = keyboard ID (see #0510)
AH destroyed by many BIOSes
Notes: check return value from AH=09h to determine whether this function is
supported
this function is also supported by the K3PLUS v6.00+ INT 16 BIOS
replacement
SeeAlso: AH=09h,AX=AF4Dh,MEM 0040h:00C2h"AMI"
(Table 0510)
Values for keyboard ID:
0000h no keyboard attached
41ABh Japanese "G" keyboard (translate mode)
MF2 Keyboard (usually in translate mode)
54ABh Japanese "P" keyboard (translate mode)
83ABh Japanese "G" keyboard (pass-through mode)
MF2 Keyboard (pass-through mode)
84ABh Japanese "P" keyboard (pass-through mode)
90ABh old Japanese "G" keyboard
91ABh old Japanese "P" keyboard
92ABh old Japanese "A" keyboard
--------B-1610-------------------------------
INT 16 - KEYBOARD - GET ENHANCED KEYSTROKE (enhanced kbd support only)
AH = 10h
Return: AH = BIOS scan code
AL = ASCII character
Notes: if no keystroke is available, this function waits until one is placed
in the keyboard buffer
the BIOS scan code is usually, but not always, the same as the hardware
scan code processed by INT 09. It is the same for ASCII keystrokes
and most unshifted special keys (F-keys, arrow keys, etc.), but
differs for shifted special keys.
unlike AH=00h, this function does not discard extended keystrokes
INT 16/AH=09h can be used to determine whether this function is
supported, but only on later model PS/2s
SeeAlso: AH=00h,AH=09h,AH=11h,AH=20h,MEM 0040h:0019h,MEM 0040h:001Eh
--------B-1611-------------------------------
INT 16 - KEYBOARD - CHECK FOR ENHANCED KEYSTROKE (enh kbd support only)
AH = 11h
Return: ZF set if no keystroke available
ZF clear if keystroke available
AH = BIOS scan code
AL = ASCII character
Notes: if a keystroke is available, it is not removed from the keyboard buffer
unlike AH=01h, this function does not discard extended keystrokes
some versions of the IBM BIOS Technical Reference erroneously report
that CF is returned instead of ZF
INT 16/AH=09h can be used to determine whether this function is
supported, but only on later model PS/2s
SeeAlso: AH=01h,AH=09h,AH=10h,AH=21h
--------B-1612-------------------------------
INT 16 - KEYBOARD - GET EXTENDED SHIFT STATES (enh kbd support only)
AH = 12h
Return: AL = shift flags 1 (same as returned by AH=02h) (see #0511)
AH = shift flags 2 (see #0512)
Notes: AL bit 3 set only for left Alt key on many machines
AH bits 7 through 4 always clear on a Compaq SLT/286
INT 16/AH=09h can be used to determine whether this function is
supported, but only on later model PS/2s
many BIOSes (including at least some versions of Phoenix and AMI) will
destroy AH on return from functions higher than AH=12h, returning
12h less than was in AH on entry (due to a chain of DEC/JZ
instructions)
SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh,MEM 0040h:0017h
Bitfields for keyboard shift flags 1:
Bit(s) Description (Table 0511)
7 Insert active
6 CapsLock active
5 NumLock active
4 ScrollLock active
3 Alt key pressed (either Alt on 101/102-key keyboards)
2 Ctrl key pressed (either Ctrl on 101/102-key keyboards)
1 left shift key pressed
0 right shift key pressed
SeeAlso: #0506,#0512,MEM 0040h:0017h,#M010
Bitfields for keyboard shift flags 2:
Bit(s) Description (Table 0512)
7 SysReq key pressed (SysReq is often labeled SysRq)
6 CapsLock pressed
5 NumLock pressed
4 ScrollLock pressed
3 right Alt key pressed
2 right Ctrl key pressed
1 left Alt key pressed
0 left Ctrl key pressed
SeeAlso: #0511,MEM 0040h:0018h,#M011
--------J-1613-------------------------------
INT 16 - DOS/V - DOUBLE-BYTE CHARACTER SET SHIFT CONTROL
AH = 13h
AL = function
00h set shift status
DX = shift status (see #0513), must preserve internal status
bits
01h get shift status
Return: DX = current shift status (see #0513)
Note: these functions are supplied by the Japanese Front-End Processor
SeeAlso: AH=14h,INT 21/AX=6301h
Bitfields for DOS/V shift status:
Bit(s) Description (Table 0513)
0 full-size rather than half-size
2-1 character input mode
00 alphanumeric, 01 Katakana, 10 Hiragana, 11 unused
5-3 internal status
6 Romaji enabled
7 Katakana to Kanji conversion enabled
15-8 internal status
--------J-1614-------------------------------
INT 16 - DOS/V - SHIFT STATUS DISPLAY CONTROL
AH = 14h
AL = function
00h enable display
01h disable display
02h get display state
Return: AL = current state (00h enabled, 01h disabled)
Desc: control the screen-bottom shift status row(s) for the Japanese
Front-End Processor
SeeAlso: AH=13h,INT 10/AH=19h,INT 10/AH=1Dh
--------B-1620-------------------------------
INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
AH = 20h
Return: AH = BIOS scan code (see AH=10h)
AL = ASCII character
Note: use AH=09h to determine whether this function is supported
SeeAlso: AH=00h,AH=09h,AH=10h,AH=21h,AH=22h
--------b-1620------------------------------------
INT 16 - HUNTER 16 - SET TEMPORARY SHIFT
AH = 20h
AL = shift status (see #0514)
Notes: the Husky Hunter 16 is an 8088-based ruggedized laptop. Other family
members are the Husky Hunter, Husky Hunter 16/80, and Husky Hawk.
the user can override the specified settings by pressing the keys
Bitfields for HUNTER 16 shift status:
Bit(s) Description (Table 0514)
4 Scroll Lock on
5 Num Lock on
6 Caps Lock on
--------K-1620-------------------------------
INT 16 O - K3 v1.5x, K3PLUS v5.xx - GET EXTENDED BUFFER STATE
AH = 20h
Return: AX = K3 version
ES:BX -> extended keyboard buffer start
ES:DX -> extended keyboard buffer end
ES:SI -> next keystroke
ES:DI -> last keystroke in buffer
CX = number of keystrokes in buffer
Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
Frinke, originally based on the K3 extended German keyboard driver
by Martin Gerdes published in c't magazine in 1988
Note: this function was normally unsupported under K3PLUS v6.00-v6.22 and
is no longer supported by v6.30+; use AX=AF20h instead
SeeAlso: AH=25h"K3",AX=AF20h,INT 2F/AX=D44Fh/BX=0000h,INT 2F/AX=ED58h
--------B-1621-------------------------------
INT 16 - KEYBOARD - CHECK FOR 122-KEY KEYSTROKE (122-key kbd support only)
AH = 21h
Return: ZF set if no keystroke available
ZF clear if keystroke available
AH = BIOS scan code
AL = ASCII character
Notes: use AH=09h to determine whether this function is supported
some versions of the IBM BIOS Technical Reference erroneously report
that CF is returned instead of ZF
K3PLUS v6.00+ supports this function as an alias of AH=11h
SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
--------b-1621------------------------------------
INT 16 - HUNTER 16 - CONTROL SHIFT KEYS
AH = 21h
AL = shift keys to control (see #0506)
BL = shift state for disabled keys
Note: If a bit in AL is set the key is disabled and set to the state of the
corresponding bit in BL
SeeAlso: AH=20h"HUNTER",AH=22h"HUNTER"
--------B-1622-------------------------------
INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
AH = 22h
Return: AL = shift flags 1 (see #0511)
AH = shift flags 2 (see #0512)
Notes: use AH=09h to determine whether this function is supported
K3PLUS v6.00+ supports this function as an alias of AH=12h
SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
--------b-1622------------------------------------
INT 16 - HUNTER 16 - CONTROL CTRL-ALT-DEL
AH = 22h
AL = new Ctrl-Alt-Del state (00h enabled, nonzero disabled)
BX = 0708h
CX = 0910h
DX = 1112h
Return: AL = 00h if successful
SeeAlso: AH=21h"HUNTER",AH=23h"HUNTER",AH=2Ah
--------b-1623------------------------------------
INT 16 - HUNTER 16 - CONTROL EMERGENCY BREAKOUT
AH = 23h
AL = new state of breakout (00h enabled, nonzero disabled)
BX = 0708h
CX = 0910h
DX = 1112h
Return: AL = 00h if successful
Desc: Enables or disables the emergency breakout feature, where the
Hunter 16 at power on checks whether the X and P keys are pressed.
If so the machine will boot rather than continue the running program
SeeAlso: AH=22h"HUNTER"
--------b-1624------------------------------------
INT 16 - HUNTER 16 - REDEFINE KEY CODES
AH = 24h
AL = Matrix Code (see #0515)
BL = new Key code
Return: AL = status (00h successful, nonzero failed)
SeeAlso: AH=2Bh,AH=2Ch
(Table 0515)
Values for HUNTER 16 Matrix Code:
Code Key Code Key Code Key
00h Esc key 1Eh Space 3Bh L
01h 1 21h 0 3Ch ,
02h Q 22h - 3Eh Right shift
03h Tab 23h ' 42h 8
04h Num Lock 24h Keypad 4 43h 7
05h \ 25h Enter 44h U
08h LShift 26h Keypad 7 45h I
09h Ctrl 27h . 46h J
0Ah "Paw" key 28h Keypad 1 47h K
0Bh 2 29h Keypad 0 48h M
0Ch W 2Ch = 49h N
0Dh A 2Dh Backspace 4Ah /
0Eh S 2Eh Keypad 8 4Dh 6
0Fh Z 2Fh Keypad 9 4Eh 5
11h Alt 30h Keypad 5 4Fh T
16h 4 31h Keypad 6 50h Y
17h 3 32h Keypad 2 51h G
18h E 33h Keypad 3 52h H
19h R 34h Keypad . 53h B
1Ah D 37h 9 54h V
1Bh F 38h O 55h #
1Ch X 39h P 58h Pwr
1Dh C 3Ah ; 59h Shift Pwr
--------b-1625------------------------------------
INT 16 - HUNTER 16 - RESET KEYBOARD
AH = 25h
Return: AL = 00h
Desc: restores the standard keyboard layout after any remapping
SeeAlso: AH=24h,AH=2Bh,AH=2Ch
--------K-1625-------------------------------
INT 16 O - K3 v1.5x, K3PLUS v5.xx - COPY INTO EXTENDED BUFFER
AH = 25h
CX = number of keystrokes to copy
ES:SI -> buffer containing keystrokes
Return: CF clear if successful
CF set on error (i.e. buffer full)
CX = number of keystrokes NOT transferred
ES:SI -> first keystroke not transferred
Note: this function was normally unsupported under K3PLUS v6.00-v6.22 and
is no longer supported by v6.30+; use AX=AF25h instead
SeeAlso: AH=05h,AH=20h"K3",AX=AF25h,INT 2F/AX=D44Fh/BX=0001h
--------b-1626------------------------------------
INT 16 - HUNTER 16 - CONTROL KEYCLICK
AH = 26h
AL = new state of keyclicks (00h disabled, 01h enabled)
Return: AL = 00h
SeeAlso: AH=2Ah
--------b-1627------------------------------------
INT 16 - HUNTER 16 - CONTROL SCREEN DUMP AREA
AH = 27h
AL = what to dump
00h whole (virtual) window
01h LCD window only
Return: AL = 00h
Desc: control whether printscren dumps the whole 80x25 screen or only the
part displayed in the LCD window
Note: the Hunter 16 has a 240x64 LCD display which serves as a window into
a 640x200 virtual screen
--------b-1629------------------------------------
INT 16 - HUNTER 16 - GET KEY REPEAT
AH = 29h
Return: BL = Typematic rate (characters per second) (see #0516)
BH = delay (00h = 250ms, 01h = 500ms, 02h = 750ms, 03h = 1s)
SeeAlso: AH=03h,AH=2Ah
(Table 0516)
Values for HUNTER 16 Typematic rate:
00h 30.0 08h 15.0 10h 7.5 18h 3.7
01h 26.7 09h 13.3 11h 6.7 19h 3.3
02h 24.0 0Ah 12.0 12h 6.0 1Ah 3.0
03h 21.8 0Bh 10.9 13h 5.5 1Bh 2.7
04h 20.0 0Ch 10.0 14h 5.0 1Ch 2.5
05h 18.5 0Dh 9.2 15h 4.6 1Dh 2.3
06h 17.1 0Eh 8.6 16h 4.3 1Eh 2.1
07h 16.0 0Fh 8.0 17h 4.0 1Fh 2.0
SeeAlso: AH=2Ah
--------b-162A------------------------------------
INT 16 - HUNTER 16 - CONTROL KEY REPEAT
AH = 2Ah
AL = new state of keyboard autorepeat (00h disabled, 01h enabled)
SeeAlso: AH=03h,AH=26h,AH=29h,AH=2Bh
--------b-162B------------------------------------
INT 16 - HUNTER 16 - REDEFINE KEY SCAN CODES
AH = 2Bh
AL = which key table to redefine
00h unshifted
01h shifted
02h Numlock
BH = standard scan code of key (00h-80h)
BL = new scan code
Desc: redefine the generated scan code from BH to BL
SeeAlso: AH=24h,AH=2Ah,AH=2Ch
--------b-162C------------------------------------
INT 16 - HUNTER 16 - REDEFINE RAW KEY CODES
AH = 2Ch
AL = Matrix code of key (see AH=29h)
BL = new key code
Return: AL = status (00h success, nonzero failed)
Desc: redefine the key code generated by holding the PAW key down and
pressing the key in AL
SeeAlso: AH=24h,AH=2Bh
--------b-162D------------------------------------
INT 16 - HUNTER 16 - CONTROL BREAK KEYS
AH = 2Dh
AL = enabled break keys
bit 0 Ctrl-C
bit 1 Ctrl-Break
BX = 0708h
CX = 0910h
DX = 1112h
Return: AL = status (00h success, FFh failed)
SeeAlso: AH=21h"HUNTER"
--------U-163577-----------------------------
INT 16 U - TextWare TWTSR - API
AX = 3577h
CX = function
00CBh ???
Return: AX = 0000h
BX = 0000h
DX:CX -> ???
00CCh uninstall
Return: AX = status
0000h successful
FFFDh unable to unload because vectors taken
00CDh ???
Return: AX = 0000h
BX = 0000h
DX:CX -> ???
other
Return: AX = 5345h ('SE')
Program: TWTSR is a TSR which allows the TextWare hypertext browser to be
popped up via hotkey
SeeAlso: AX=D724h
--------U-164252-----------------------------
INT 16 - TEXTCAP 2.0 - INSTALLATION CHECK
AX = 4252h
Return: AX = 5242h if installed
Program: TEXTCAP 2.0 is a heavily modified (by Gisbert W. Selke) version of
the PC Magazine utility CAPTURE written by Tom Kihlken
SeeAlso: AX=4253h,AX=4254h
--------U-164253-----------------------------
INT 16 - TEXTCAP 2.0 - UNINSTALL
AX = 4253h
Return: AX = segment of resident code
Notes: the uninstall code does not check whether interrupt vectors have been
chained by other programs
the caller must free the main memory block (using the returned segment)
SeeAlso: AX=4252h,AX=4254h
--------U-164254-----------------------------
INT 16 - TEXTCAP 2.0 - DUMP TEXT SCREEN TO FILE
AX = 4254h
Return: AX = status
4254h if screen dump will be written as soon as disk becomes idle
5442h if screen dump written
SeeAlso: AX=4252h,AX=4253h
--------e-164500-----------------------------
INT 16 - Shamrock Software EMAIL - GET STATUS
AX = 4500h
DL = port number (01h = COM1)
ES:BX -> 13-byte buffer for ASCIZ name
Return: AX = 4D00h if EMAIL installed on specified port
ES:BX -> "" if no connection
-> "*" if connection but caller has not identified name
-> name otherwise
CX = version (CH = major, CL = minor)
DL = privilege level of user (00h = guest)
DH = chosen language (00h German, 01h English)
SeeAlso: AX=4501h,AX=4502h
--------e-164501-----------------------------
INT 16 - Shamrock Software EMAIL - GET ELAPSED ONLINE TIME AND MAXIMUM TIME
AX = 4501h
DL = port number (01h = COM1)
Return: AX = 4D00h if EMAIL installed on specified port
BX = maximum connect time in clock ticks
CX = maximum connect time for guests (without name) in clock ticks
DX = elapsed connect time of current user in clock ticks
SeeAlso: AX=4500h
--------e-164502-----------------------------
INT 16 - Shamrock Software EMAIL - GET CURRENT COMMUNICATIONS PARAMETERS
AX = 4502h
DL = port number (01h = COM1)
Return: AX = 4D00h if EMAIL installed on specified port
BL = current value of serial port's Line Control Register
BH = flags (see #0517)
CX = selected country code (33 = France, 49 = Germany, etc)
DX = baudrate divisor (115200/DX = baudrate)
SeeAlso: AX=4500h
Bitfields for Shamrock Software EMAIL flags:
Bit(s) Description (Table 0517)
0 ISO code
1 pause
2 linefeed
3 ANSI sequences
--------e-164503-----------------------------
INT 16 - Shamrock Software EMAIL - SPECIFY COMMAND-WORD FOR USER FUNCTION
AX = 4503h
DL = port number (01h = COM1)
DH = maximum execution time in clock ticks (00h = 5 seconds)
ES:BX -> ASCIZ string with new user command-word
Return: AX = 4D00h if EMAIL installed on specified port
Notes: a single user command (consisting of only uppercase letters and digits)
may be defined, and remains valid until it is overwritten or the
EMAIL program terminates; the user command must be activated by
calling AX=4504h at least once.
an existing command word may be redefined with this function
SeeAlso: AX=4504h,AX=4505h
--------e-164504-----------------------------
INT 16 - Shamrock Software EMAIL - CHECK FOR USER FUNCTION COMMAND-WORD
AX = 4504h
DL = port number (01h = COM1)
ES:BX -> 80-byte buffer for ASCIZ user input line
Return: AX = 4D00h if EMAIL installed on specified port
DL = flags
bit 0: user function supported (always set)
bit 1: user entered user-function command word
if DL bit 1 set,
ES:BX buffer contains line entered by user which begins with
the defined command word and has been converted to all
caps
Note: caller must process the returned commandline and invoke AX=4505h
within five seconds with the result of that processing
SeeAlso: AX=4503h,AX=4505h
--------e-164505-----------------------------
INT 16 - Shamrock Software EMAIL - SEND RESULT OF USER FUNCTION
AX = 4505h
DL = port number (01h = COM1)
DH = error flag
bit 3: set on error
ES:BX -> ASCIZ text to return to user, max 1024 bytes
Return: AH = 4Dh if EMAIL installed on specified port
AL = status
00h successful
02h unable to perform function (timeout, prev call not complete)
other error
Notes: if the error flag in DH is set, the string is not sent and an error
message is generated instead; if this function is not called within
five seconds of AX=4504h, EMAIL automatically generates an error
message
the string is copied into an internal buffer, allowing this function's
caller to continue immediately
SeeAlso: AX=4503h,AX=4504h,INT 17/AX=2400h
--------e-164506-----------------------------
INT 16 - Shamrock Software EMAIL - MONITOR XMODEM DOWNLOAD
AX = 4506h
DL = port number (01h = COM1)
ES:BX -> 13-byte buffer for ASCIZ filename
Return: AX = 4D00h if EMAIL installed on specified port
DH = Xmodem status
00h no XGET command given
01h XGET in progress
02h XGET completed successfully
ES:BX buffer filled with last filename given to XGET command
(without path)
Note: DH=02h will only be returned once per XGET; subsequent calls will
return DH=00h
SeeAlso: AX=4500h,INT 17/AX=2408h
--------K-164B-------------------------------
INT 16 - Frank Klemm Keyboard Driver v2.0 - API
AH = 4Bh
CX = code or action
0000h-FEFFh key code
FF00h-FFFFh action (see #0518)
BL = scan code (normal keys) or scan code + 60h (enhanced keys)
BH = shift state (see #0519)
Return: CX = previous code or action
(Table 0518)
Values for Frank Klemm Keyboard Driver action code:
FF00h no action
FF01h hardcopy
FF02h left shift
FF03h right shift
FF04h left Ctrl
FF05h right Ctrl
FF06h left Alt
FF07h right Alt / AltGr
FF08h CapsLock
FF09h NumLock
FF0Ah ScrlLock
FF0Bh Insert (returns code 5200h or 52E0h)
FF0Ch Pause
FF0Dh Ctrl-Break function
FF0Eh warm boot via far jump to F000h:FFF0h
FF0Fh terminate current program
FF10h key for entering keys via Alt-numpad (read-only)
FF11h clear keyboard buffer
FF12h reset (warmboot on XT)
FF13h mouse sensitivity (read-only)
FF14h keyjobs (read-only)
FF15h SysRq
FF16h turn on CPU cache (486+)
FF17h turn off CPU cache (486+)
SeeAlso: #0519
(Table 0519)
Values for Frank Klemm Keyboard Driver shift state:
00h no shift keys
01h either Shift
02h either Ctrl
03h left Alt
04h Ctrl + Alt
---standard keyboard---
05h right Alt / AltGr
---Russian keyboard---
05h Russian + no shift keys
06h Russian + either Shift
SeeAlso: #0518
--------K-164D4F-----------------------------
INT 16 - M16_KBD.COM v5.6 - INSTALLATION CHECK
AX = 4D4Fh
Return: AX = 6F6Dh if installed
ES = segment of resident code
Program: M16_KBD is a shareware Cyrillic keyboard driver by I.V. Morozov
SeeAlso: INT 10/AX=1130h/BX=4D4Fh
--------J-165000-----------------------------
INT 16 - KEYBOARD - AX PC - SET KEYBOARD COUNTRY CODE
AX = 5000h
BX = country code
0001h USA (English), 0051h Japan
Return: AL = status
00h successful
01h bad country code
02h other error
Notes: the K3PLUS v6.00+ INT 16 BIOS replacement will switch between the
supported country specific layout (e.g. BX=0031h Germany, BX=001Fh
Netherlands, BX=0020h Belgium, BX=0022h Spain) (as with <Ctrl>+
<Alt>+<F2>) and K3PLUS' transparent mode (as with <Ctrl>+<Alt>+<F1>).
In transparent mode (BX=0001h), K3PLUS chains to the underlying
driver (normally the BIOS driver with US-layout). K3PLUS beeps on
mode changes
SeeAlso: AX=5001h,AX=AF4Dh,INT 10/AX=5000h,INT 17/AX=5000h
--------J-165001-----------------------------
INT 16 - KEYBOARD - AX PC - GET KEYBOARD COUNTRY CODE
AX = 5001h
Return: AL = status
00h successful
BX = country code
02h error
Note: also supported by K3PLUS v6.00+
SeeAlso: AX=5000h,INT 10/AX=5001h,INT 17/AX=5001h
--------J-1651-------------------------------
INT 16 - KEYBOARD - AX PC - READ SHIFT KEY STATUS
AH = 51h
Return: AL = standard shift key states (see #0506,#0511)
AH = Kana lock (00h off, 01h on)
Note: also supported by K3PLUS v6.00+, but K3PLUS always returns AH=00h
SeeAlso: AH=02h,AH=12h,AH=22h
--------t-165453BX5242-----------------------
INT 16 - TSRBONES - INSTALLATION CHECK
AX = 5453h ('TS')
BX = 5242h ('RB')
CX = 4F4Eh ('ON')
DX = 4553h ('ES')
Return: AX = 4553h if installed
BX = 4F4Eh if installed
CX = 5242h if installed
DX = 5453h if installed
Program: TSRBONES is a skeletal TSR framework by Robert Curtis Davis
Note: these values are the default as the TSRBONES package is distributed,
but will normally be changed when implementing an actual TSR with
the TSRBONES skeleton
SeeAlso: INT 2D/AL=00h"AMIS"
--------A-165500-----------------------------
INT 16 C - Microsoft Word internal - MICROSOFT WORD COOPERATION WITH TSR
AX = 5500h
Return: AX = 4D53h ('MS') if keyboard TSR present
Notes: during startup, Microsoft Word tries to communicate with any TSRs
that are present through this call.
if the return is not 4D53h, Word installs its own INT 09 and INT 16
handlers; otherwise it assumes that the TSR will handle the keyboard
SeeAlso: AX=55FFh,INT 1A/AX=3601h
--------A-1655FE-----------------------------
INT 16 CU - Microsoft QBASIC internal - MICROSOFT COOPERATION WITH TSR
AX = 55FEh
DX = function
0000h initialize
ES:BX -> ??? function
ES:CX -> ??? structure
FFFFh shutdown/reset
Return: AX = result
4D4Bh only the INT 1B handler will be installed.
other: handlers for INT 08, INT 09, INT 16, INT 1B, and INT 1C
are installed
Notes: The pointer in ES:CX seems to point at a structure defining a callback
function when new keyboard keys are pressed. If a TSR returns
AX=4D4Bh, QBASIC will stop (with IRQ's and interrupts enabled).
these calls are also made by MS-DOS 6.0's DOSSHELL at startup, exit,
and before/after shelling out
since EDIT.COM and HELP.COM merely invoke QBASIC, those two programs
will also cause this interface to be invoked
K3PLUS v6.07+ supports this function, but will never invoke the
callback function
SeeAlso: AX=5500h,AX=AF4Dh,INT 1A/AX=3601h
--------U-1655FF-----------------------------
INT 16 C - Microsoft Word - TSR COOPERATION???
AX = 55FFh
BX >= 0004h (version of Microsoft Word [BL = major] ???)
CX = function
0000h set ??? flag
other clear ??? flag
Notes: hooks intercepting this call are present in SWAPSH and SWAPDT v1.77j,
distributed with PC Tools v7, as well as the Trusted Access
SCRNBLNK.COM; this may be part of the standard TesSeRact library
known to be called by the German edition of Microsoft Word 5.0
SeeAlso: AX=5500h,INT 2F/AX=5453h
--------c-165758BX4858-----------------------
INT 16 U - Netroom CACHECLK - INSTALLATION CHECK
AX = 5758h
BX = 4858h ('HX')
DX = 4443h ('DC')
CX <> 5758h
Return: BX = 6878h if installed
CX = 6463h if installed
AX = code segment of TSR
CX = internal version??? (v3.00 returns 0100h)
Program: CACHECLK is a "cloaked" disk cache included with Netroom
Notes: if CX=5758h on entry, CACHECLK returns with all registers unchanged
the cache statistics are located early in the segment pointed at by
AX on return
SeeAlso: INT 2F/AX=5758h
--------m-165758BX5754-----------------------
INT 16 U - Netroom ??? - ???
AX = 5758h
BX = 5754h
???
Return: ???
--------m-165758BX5755-----------------------
INT 16 U - Netroom ??? - ???
AX = 5758h
BX = 5755h
DS:SI -> ???
Return: ???
--------m-165758BX5756-----------------------
INT 16 U - Netroom ??? - INSTALLATION CHECK
AX = 5758h
BX = 5756h
Return: BX <> 5756h if installed
--------m-165758BX5858-----------------------
INT 16 U - Netroom PRENET - GET OLD INTERRUPT VECTORS
AX = 5758h
BX = 5858h
Return: CF clear
DX:BX -> saved copy of interrupt vector table
Note: the installation check consists of calling this function and comparing
BX against 5858h on return; if it has changed, PRENET is installed
SeeAlso: AX=5758h/BX=5859h
Index: installation check;Netroom PRENET
--------m-165758BX5859-----------------------
INT 16 U - Netroom POSTNET - GET OLD INTERRUPT VECTORS
AX = 5758h
BX = 5859h
Return: CF clear
DX:BX -> saved copy of interrupt vector table
Note: the installation check consists of calling this function and comparing
BX against 5859h on return; if it has changed, POSTNET is installed
SeeAlso: AX=5758h/BX=5858h
Index: installation check;Netroom POSTNET
----------166701-----------------------------
INT 16 - Doorway v2.30+ - INSTALLATION CHECK
AX = 6701h
Return: AX = 8080h if running under Doorway
Program: Doorway is a program by Marshall Dudley which allows most DOS programs
to run as a BBS door without modification
--------U-166969BX6968-----------------------
INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
AX = 6969h
BX = 6968h
Return: resident code unhooked, but not removed from memory
Index: uninstall;BACKTALK
--------U-166969BX6969-----------------------
INT 16 - PC Tools v5.1+ BACKTALK - INSTALLATION CHECK
AX = 6969h
BX = 6969h
DX = 0000h
Return: DX nonzero if installed
BX = CS of resident code
DX = PSP segment of resident code
DS:SI -> ASCIZ identification string "CPoint Talk"
--------i-166A6B-----------------------------
INT 16 U - FastJuice - DISABLE/UNLOAD???
AX = 6A6Bh
Return: ???
Program: FastJuice is a resident battery-power monitor by SeaSide Software
SeeAlso: AX=7463h
Index: uninstall;FastJuice
--------G-166C63-----------------------------
INT 16 U - TMED v1.6a - INSTALLATION CHECK
AX = 6C63h ('lc')
Return: AX = 4C43h ('LC') if installed
Program: TMED is a freeware resident memory editor by Liang Chen
--------U-166D74-----------------------------
INT 16 - MTRTSR - INSTALLATION CHECK
AX = 6D74h ('mt')
Return: AX = 4D54h ('MT') if installed
Program: MTRTSR is a part of the shareware MTR package by Mechon Mamre which
permits searching the large corpus of classical Hebrew texts in the
package
SeeAlso: INT 10/AX=6D74h"MTRFONTS"
--------!---Section--------------------------
Interrupt List, part 4 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------b-166F00-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_INQUIRE" - Extended BIOS INSTALLATION CHECK
AX = 6F00h
BX <> 4850h (usually set to 0000h for simplicity)
Return: BX = 4850h ("HP") if present
Notes: called by recent MS Mouse drivers looking for an HP-HIL mouse
supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
SeeAlso: AX=6F01h,AX=6F04h,AX=6F07h,AX=6F09h,AX=6F0Dh,AX=6F11h,AX=6F12h
SeeAlso: INT 14/AX=6F00h,INT 17/AX=6F00h,INT 33/AX=6F00h
SeeAlso: INT 6F/AH=00h"HP Vectra"
--------b-166F01-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_DEF_ATTR" - GET DEFAULT TYPEMATIC VALUES
AX = 6F01h
Return: AH = 00h (successful)
CX = 0004h (size of returned buffer)
ES:SI -> buffer for typematic info (see #0520)
Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
Format of HP Vectra EX-BIOS typematic info:
Offset Size Description (Table 0520)
00h BYTE delay before repeat for all non-Cursor Control Pad keys
(see #0521)
01h BYTE typematic rate for all non-Cursor Control Pad keys (see #0522)
02h BYTE delay before repeat for Cursor Control Pad keys (see #0523)
03h BYTE typematic rate for Cursor Control Pad keys (see #0522)
(Table 0521)
Values for HP Vectra EX-BIOS non-CCP delay time:
00h 17 ms
01h 150 ms
02h 283 ms
03h 417 ms
04h 550 ms
05h 683 ms
06h 817 ms
07h 950 ms
08h 1083 ms
09h 1217 ms
0Ah 1350 ms
0Bh 1483 ms
0Ch 1617 ms
0Dh 1750 ms
0Eh 1883 ms
0Fh 2017 ms
Note: the above values assume that the key repeat rate has been set to 60 Hz;
double the times if set to 30 Hz
SeeAlso: #0520,#0522,#0523
(Table 0522)
Values for HP Vectra EX-BIOS typematic rate:
00h 60 / sec
01h 30 / sec
02h 20
03h 15
04h 12
05h 10
06h 8.57
07h 7.5
08h 6.66
09h 6 / sec
0Ah 5.45
0Bh 5
0Ch 4.62
0Dh 4.28
0Eh 4 / sec
0Fh typematic disabled
Note: the above values assume that the key repeat rate has been set to 60 Hz;
halve the rates if set to 30 Hz
SeeAlso: #0521,#0523
(Table 0523)
Values for HP Vectra EX-BIOS CCP delay time:
00h 17 ms
01h 83 ms
02h 150 ms
03h 217 ms
04h 283 ms
05h 350 ms
06h 417 ms
07h 483 ms
08h 550 ms
09h 617 ms
0Ah 683 ms
0Bh 750 ms
0Ch 817 ms
0Dh 883 ms
0Eh 950 ms
0Fh 1017 ms
Note: the above values assume that the key repeat rate has been set to 60 Hz;
double the times if set to 30 Hz
SeeAlso: #0521,#0522
--------b-166F02-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_GET_ATTR" - GET CURRENT TYPEMATIC VALUES
AX = 6F02h
Return: AH = 00h (successful)
CX = 0004h (size of returned buffer)
ES:SI -> buffer for typematic info (see #0520)
Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
SeeAlso: AX=6F00h,AX=6F01h,AX=6F03h
--------b-166F03-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_SET_ATTR" - SET TYPEMATIC VALUES
AX = 6F03h
ES:SI -> buffer containing typematic info (see #0520)
Return: AH = 00h (successful)
Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
SeeAlso: AX=6F00h,AX=6F02h,AX=6F03h,AX=6F04h
SeeAlso: AX=6F00h,AX=6F01h,AX=6F02h
--------b-166F04-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_DEF_MAPPING" - GET DEFAULT KEY MAPPINGS
AX = 6F04h
ES:SI -> mapping buffer (see #0524)
Return: AH = 00h (successful)
CX = 001Eh (number of bytes in buffer)
ES:SI buffer filled
Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
the HIL input system translates the HIL keyboard events to simulate
an IBM-compatible keyboard; the translation can be altered
dynamically by applications
SeeAlso: AX=6F00h,AX=6F05h,AX=6F06h
Format of HP Vectra EX-BIOS keyboard mapping info:
Offset Size Description (Table 0524)
00h 3 WORDs entry for V_QWERTY driver (IP, CS, DS)
06h 3 WORDs entry for V_SOFTKEY driver (IP, CS, DS)
0Ch 3 WORDs entry for V_FUNCTION driver
12h 3 WORDs entry for V_NUMPAD driver
18h 3 WORDs entry for V_CCP driver
--------b-166F05-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_GET_MAPPING" - GET CURRENT KEY MAPPINGS
AX = 6F05h
ES:SI -> mapping buffer (see #0524)
Return: AH = 00h (successful)
CX = 001Eh (number of bytes in buffer)
ES:SI buffer filled
Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
SeeAlso: AX=6F04h,AX=6F06h
--------b-166F06-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_SET_MAPPING" - SET KEY MAPPINGS
AX = 6F06h
CX = number of bytes in buffer (001Eh)
ES:SI -> mapping buffer (see #0524)
Return: AH = 00h (successful)
Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
any application which modifies the key mappings should restore them
before terminating
drivers installed with this function are assured of 32 bytes of stack
space when they are invoked
SeeAlso: AX=6F04h,AX=6F05h,AX=6F07h
--------b-166F07-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_SET_XLATORS" - SET CCP AND SOFTKEY PADS
AX = 6F07h
BL = translation to set (see #0525)
Return: AH = 00h (successful)
Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
this function may no longer work properly if the application has
modified the key mappings with AX=6F06h
SeeAlso: AX=6F06h,AX=6F09h
(Table 0525)
Values for HP Vectra keyboard translation specifier:
00h map V_CCP to V_CCPCUR, forcing the cursor pad to return cursor keys
01h map V_CCP to V_CCPNUM, forcing the cursor pad to always return numbers
02h map V_CCP to V_OFF, disabling the cursor pad
03h map V_CCP to V_CCPGID, converting cursor pad keys to GID data
04h map V_CCP to V_RAW, passing cursor pad data untranslated to INT 09
05h map V_SOFTKEY to V_SKEY2KFEY, translating into standard function keys
06h map V_SOFTKEY to V_RAW, passing Softkey scancodes direct to INT 09
07h map V_SOFTKEY to V_OFF, disabling HP Softkeys
SeeAlso: #0526
(Table 0526)
Values for HP Vectra scancodes and BIOS keycodes for V_RAW translator:
INT 09 INT 16 keycode
Key scan code Default Shifted Ctrl Alt
* (NumPd) 37h 2Ah (Prt Sc) 00/72h 00/37H
Sysreq 54h -- -- -- --
CCP-Up 60h 00/D9h 00/BFh 00/A5h 00/8BH
CCP-Left 61h 00/DAh 00/C0h 00/A6h 00/8CH
CCP-Down 62h 00/DBh 00/C1h 00/A7h 00/8DH
CCP-Right 63h 00/DCh 00/C2h 00/A8h 00/8EH
CCP-Home 64h 00/DDh 00/C3h 00/A9h 00/8FH
CCP-PgUp 65h 00/DEh 00/C4h 00/AAh 00/90H
CCP-End 66h 00/DFh 00/C5h 00/ABh 00/91H
CCP-PgDn 67h 00/E0h 00/C6h 00/ACh 00/92H
CCP-Ins 68h 00/E1h 00/C7h 00/ADh 00/93H
CCP-Del 69h 00/E2h 00/C8h 00/AEh 00/94H
CCP-CNTR 6Ah 00/E3h 00/C9h 00/AFh 00/95H
f1 70h 00/E9h 00/CFh 00/B5h 00/9BH
f2 71h 00/EAh 00/D0h 00/B6h 00/9CH
f3 72h 00/EBh 00/D1h 00/B7h 00/9DH
f4 73h 00/ECh 00/D2h 00/B8h 00/9EH
f5 74h 00/EDh 00/D3h 00/B9h 00/9FH
f6 75h 00/EEh 00/D4h 00/BAh 00/A0H
f7 76h 00/EFh 00/D5h 00/BBh 00/A1H
f8 77h 00/F0h 00/D6h 00/BCh 00/A2H
Note: only HP-specific codes are listed in this table; see INT 09 for a full
list of standard scan codes
SeeAlso: #0005,#0525
--------b-166F08-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_KBD" - GET KEYBOARD INFORMATION
AX = 6F08h
Return: AH = status
00h successful
02h unsupported (non-HIL, i.e. standard, keyboard)
BH = HP-HIL address (HP Vectra AT only???)
BL = HP-HIL ID (HP Vectra AT only???)
BL = keyboard language (ES/QS/RS only???) (see #0527)
Notes: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
the driver's address in the HP_VECTOR_TABLE (see INT 6F/AH=00h) may
be computed as (BH-1)*6 + N, where N is the address of the first
HP-HIL device driver (see INT 6F/AH=0Ah"F_INQUIRE_FIRST")
SeeAlso: AX=6F05h,AX=6F09h,INT 6F/AH=0Ah"F_INQUIRE_FIRST"
(Table 0527)
Values for HP HIL keyboard language code:
00h reserved
01h Arabic-French
02h Kanji
03h Swiss-French
04h Portugese
05h Arabic
06h Hebrew
07h Canadian-English
08h Turkish
09h Greek
0Ah Thai
0Bh Italian
0Ch Hangul (Korean)
0Dh Dutch
0Eh Swedish
0Fh German
10h Chinese (PRC)
11h Chinese (Taiwan)
12h Swiss (French ii)
13h Spanish
14h Swiss (German ii)
15h Belgian (Flemish)
16h Finish
17h United Kingdom
18h French-Canadian
19h French-German
1Ah Norwegian
1Bh French
1Ch Danish
1Dh Katakana
1Eh Latin American Spanish
1Fh United States-American
20h-FEh reserved
FFh non-HP keyboard (IBM AT keyboard and IBM Enhanced keyboard)
--------b-166F09-----------------------------
INT 16 - HP Vectra EX-BIOS - "F16_KBD_RESET" - RESET KEYBOARD TO DEFAULTS
AX = 6F09h
Return: AH = 00h (successful)
Desc: reset all keyboard mappings to their default translators, and reset
typematic values to their defaults
Note: supported by the original HP Vectra AT and ES/QS/RS series HP Vectras
SeeAlso: AX=6F04h,AX=6F07h,AX=6F08h
--------b-166F0A-----------------------------
INT 16 - HP Vectra ES/QS/RS EX-BIOS - READ PROCESSOR SPEED
AX = 6F0Ah
Return: AH = 00h (successful)
BX = speed code
0Bh for low speed (see #0528)
12h for medium speed (see #0528)
0Ch for high speed (see #0528)
Note: supported by ES, QS, and RS series of HP Vectras
SeeAlso: AX=6F00h
(Table 0528)
Values for HP Vetra CPU speed:
Vectra Low Medium High
ES 8 MHz - 8 MHz
ES/12 8 MHz - 12 MHz
QS/16, RS/16 8 MHz - 16 MHz
QS/16S 8 MHz - 16 MHz
QS/20, RS/20 8 MHz - 20 MHz
RS/20C 5 MHz 10 MHz 20 MHz
RS/25C 5 MHz 12.5 MHz 25 MHz
--------b-166F0B-----------------------------
INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO LOW
AX = 6F0Bh
Return: AH = 00h (successful)
Notes: see AX=6F0Ah for speed definitions
supported by ES, QS, and RS series of HP Vectras
SeeAlso: AX=6F00h,AX=6F0Ah
--------b-166F0C-----------------------------
INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET PROCESSOR SPEED TO HIGH
AX = 6F0Ch
Return: AH = 00h (successful)
Notes: see AX=6F0Ah for speed definitions
supported by ES, QS, and RS series of HP Vectras
SeeAlso: AX=6F00h,AX=6F0Ah
--------b-166F0D-----------------------------
INT 16 - HP Vectra ES/QS/RS EX-BIOS - GET HIL Extended BIOS INTERRUPT NUMBER
AX = 6F0Dh
Return: AH = interrupt number (default 6Fh, 02h means 6Fh as well)
Notes: supported by ES, QS, and RS series of HP Vectras
called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
input system
SeeAlso: AX=6F00h,AX=6F0Eh,INT 6F/AH=00h"HP Vectra",INT 6F/AH=0Ah"HP"
--------b-166F0E-----------------------------
INT 16 - HP Vectra ES/QS/RS EX-BIOS - SET HIL Extended BIOS INTERRUPT NUMBER
AX = 6F0Eh
BL = new interrupt number (60h-6Fh,78h-7Fh)
Return: AH = status (00h = successful)
Desc: allows the HIL Extended BIOS software to use a non-default interrupt
number in case of an interrupt conflict with another application
Notes: supported by ES, QS, and RS series of HP Vectras
called by MS Windows HPSYSTEM.DRV and HPEBIOS.386 to support the HP-HIL
input system
SeeAlso: AX=6F00h,AX=6F0Dh,INT 6F/AH=00h"HP",INT 6F/AH=0Ah"HP"
--------b-166F0F-----------------------------
INT 16 - HP Vectras RS/20C and RS/25C - ENABLE MEMORY CACHING
AX = 6F0Fh
Return: AH = status
00h successful
FEh cache subsystem is bad
SeeAlso: AX=6F00h,AX=6F10h,AX=6F11h
--------b-166F10-----------------------------
INT 16 - HP Vectras RS/20C and RS/25C - DISABLE MEMORY CACHING
AX = 6F10h
Return: AH = 00h (successful)
SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F11h
--------b-166F11-----------------------------
INT 16 - HP Vectras RS/20C and RS/25C - GET MEMORY CACHING STATE
AX = 6F11h
Return: AH = 00h (successful)
AL bit 0 = cache state
0 cache disabled
1 cache enabled
SeeAlso: AX=6F00h,AX=6F0Fh,AX=6F10h
--------b-166F12-----------------------------
INT 16 - HP Vectras RS/20C and RS/25C - SET PROCESSOR SPEED TO MEDIUM
AX = 6F12h
Return: AH = 00h (successful)
Note: see AX=6F0Ah for speed definitions
SeeAlso: AX=6F00h,AX=6F0Ah
--------K-1670-------------------------------
INT 16 - FAKEY.COM - INSTALLATION CHECK
AH = 70h
Return: AX = 1954h if installed
Program: FAKEY is a keystroke faking utility by System Enhancement Associates
--------K-1671-------------------------------
INT 16 - FAKEY.COM - PUSH KEYSTROKES
AH = 71h
CX = number of keystrokes
DS:SI -> array of words containing keystrokes to be returned by AH=00h
Program: FAKEY is a keystroke faking utility by System Enhancement Associates
SeeAlso: AH=05h,AH=72h
--------K-1672-------------------------------
INT 16 - FAKEY.COM - CLEAR FAKED KEYSTROKES
AH = 72h
Program: FAKEY is a keystroke faking utility by System Enhancement Associates
SeeAlso: AH=71h
--------K-1673-------------------------------
INT 16 - FAKEY.COM - PLAY TONES
AH = 73h
CX = number of tones to play
DS:SI -> array of tones (see #0529)
Program: FAKEY is a keystroke faking utility by System Enhancement Associates
SeeAlso: INT 15/AX=1019h
Format of FAKEY.COM tone array entries:
Offset Size Description (Table 0529)
00h WORD divisor for timer channel 2
02h WORD duration in clock ticks
--------i-167463-----------------------------
INT 16 U - FastJuice - INSTALLATION CHECK
AX = 7463h ("tc")
Return: AX = 5443h ("TC") if installed
Program: FastJuice is a resident battery-power monitor by SeaSide Software
SeeAlso: AX=6A6Bh
--------R-1675-------------------------------
INT 16 - pcANYWHERE III - SET TICK COUNT FOR SCANNING
AH = 75h
AL = number of ticks between checks for new screen changes
--------R-1676-------------------------------
INT 16 - pcANYWHERE III - SET ERROR CHECKING TYPE
AH = 76h
AL = error checking type
00h none
01h fast
02h slow
--------R-1677-------------------------------
INT 16 - pcANYWHERE III - LOG OFF
AH = 77h
AL = mode
00h wait for another call
01h leave in Memory Resident Mode
02h leave in Automatic Mode
FFh leave in current operating mode
--------U-167761-----------------------------
INT 16 - WATCH.COM v2.x-v3.0 - INSTALLATION CHECK
AX = 7761h ('wa')
Return: AX = 5741h ('WA') if installed
Note: WATCH.COM is part of the "TSR" package by Kim Kokkonen
SeeAlso: INT 21/AX=7761h
--------U-167788BX7789-----------------------
INT 16 - PC Magazine PUSHDIR.COM - INSTALLATION CHECK
AX = 7788h
BX = 7789h
DS:SI -> signature "PUSHDIR VERSION 1.0"
Return: AX = 7789h if installed and signature correct
BX = 7788h
SI destroyed
--------R-1679-------------------------------
INT 16 - pcANYWHERE III - CHECK STATUS
AH = 79h
Return: AX = status
FFFFh if resident and active
FFFEh if resident but not active
FFFDh if in Memory Resident mode
FFFCh if in Automatic mode
other value if not resident
SeeAlso: AX=7B00h,INT 21/AX=2B44h
--------R-167A-------------------------------
INT 16 - pcANYWHERE III - CANCEL SESSION
AH = 7Ah
--------R-167B00-----------------------------
INT 16 - pcANYWHERE III - SUSPEND
AX = 7B00h
SeeAlso: AH=79h,AX=7B01h
--------R-167B01-----------------------------
INT 16 - pcANYWHERE III - RESUME
AX = 7B01h
SeeAlso: AH=79h,AX=7B00h
--------R-167C-------------------------------
INT 16 - pcANYWHERE III - GET PORT CONFIGURATION
AH = 7Ch
Return: AH = port number
AL = baud rate (see #0530)
SeeAlso: AX=7B00h,AH=7Eh
(Table 0530)
Values for pcANYWHERE III baud rate:
00h 50 baud
01h 75 baud
02h 110 baud
03h 134.5 baud
04h 150 baud
05h 300 baud
06h 600 baud
07h 1200 baud
08h 1800 baud
09h 2000 baud
0Ah 2400 baud
0Bh 4800 baud
0Ch 7200 baud
0Dh 9600 baud
0Eh 19200 baud
SeeAlso: #0235
--------R-167D-------------------------------
INT 16 - pcANYWHERE III - GET/SET TERMINAL PARAMETERS
AH = 7Dh
AL = subfunction
00h set terminal parameters
01h get terminal parameters
02h get configuration header and terminal parameters
DS:CX -> terminal parameter block
SeeAlso: AH=7Ch,AH=7Eh
--------R-167E-------------------------------
INT 16 - pcANYWHERE III - COMMUNICATIONS I/O THROUGH PORT
AH = 7Eh
AL = subfunction
01h port input status
Return AX = 0 if no characer ready,
AX = 1 if character ready
02h port input character
Return AL = received character
03h port output character in CX
11h hang up phone
SeeAlso: AH=7Ch
--------R-167F-------------------------------
INT 16 - pcANYWHERE III - SET KEYBOARD/SCREEN MODE
AH = 7Fh
AL = subfunction
00h enable remote keyboard only
01h enable host keyboard only
02h enable both keyboards
08h display top 24 lines
09h display bottom 24 lines
10h Hayes modem
11h other modem
12h direct connect
--------U-1680-------------------------------
INT 16 - MAKEY.COM - INSTALLATION CHECK
AH = 80h
Return: AX = 1954h if installed
Program: MAKEY is a utility by System Enhancement Associates
--------K-1687-------------------------------
INT 16 - DK.COM v1.03 - INSTALLATION CHECK
AH = 87h
Return: AX = 4A57h ('JW') if installed
Program: DK.COM is the resident part of a small keyboard macro utility
by Digital Mechanics.
--------U-168765BX4321-----------------------
INT 16 - AT.COM version 8/26/87 - API
AX = 8765h
BX = 4321h
CX = ??? or FFFFh
if CX = FFFFh
DX = number of event to remove or FFFFh
Return: ES:BX -> event record array (see #0531)
Program: AT.COM is a resident scheduler by Bill Frolik
Format of AT.COM event record:
Offset Size Description (Table 0531)
00h BYTE in-use flag (00h free, 01h in use, FFh end of array)
01h BYTE day of date on which to trigger
02h BYTE month of date on which to trigger
03h BYTE trigger time, minute
04h BYTE trigger time, hour
05h WORD offset of command to be executed
--------K-1692-------------------------------
INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
AH = 92h
Return: AH <= 80h if enhanced keyboard functions (AH=10h-12h) supported
Desc: this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
to determine the highest supported keyboard function
Note: many BIOSes (including at least some versions of Phoenix and AMI) will
destroy AH on return from functions higher than AH=12h, returning
12h less than was in AH on entry (due to a chain of DEC/JZ
instructions)
SeeAlso: AH=05h"PCjr",AH=A2h,INT 2F/AX=AD80h
--------U-1699-------------------------------
INT 16 - SCOUT v5.4 - GET ???
AH = 99h
Return: AX = ABCDh
BX:CX -> ??? (appears to be start of PSP for resident portion)
Program: Scout is a memory-resident file manager by New-Ware
SeeAlso: AH=9Eh
--------U-169E-------------------------------
INT 16 - SCOUT v5.4 - INSTALLATION CHECK
AH = 9Eh
Return: AX = ABCDh if installed
Program: Scout is a memory-resident file manager by New-Ware
SeeAlso: AH=99h
--------K-16A2-------------------------------
INT 16 - KEYB.COM KEYBOARD CAPABILITIES CHECK (not an actual function!)
AH = A2h
Return: AH <= 80h if 122-key keyboard functions (AH=20h-22h) supported
Desc: this function is called by the DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
to determine the highest supported keyboard function
Note: many BIOSes (including at least some versions of Phoenix and AMI) will
destroy AH on return from functions higher than AH=12h, returning
12h less than was in AH on entry (due to a chain of DEC/JZ
instructions)
SeeAlso: AH=05h"PCjr",AH=92h,INT 2F/AX=AD80h
--------V-16AA-------------------------------
INT 16 - PTxxx.COM - (xxx=CGA,EGA,VGA,HER...) CALL GATE FOR GRAPHICS
AH = AAh
Various registers set up by high level language.
Return: Graphics performed
Note: PT stands for Paint Tools which is a graphics library for Turbo Pascal,
Modula 2 and others from DataBiten in Sweden. The library is
installed as a memory resident driver.
--------U-16AABBBXEEFF-----------------------
INT 16 U - JORJ v4.3 - INSTALLATION CHECK
AX = AABBh
BX = EEFFh
Return: AX = EEFFh if installed
BX = AABBh if installed
CL = hotkey name (default 6Ah 'j' for Alt-J)
Program: JORJ is a shareware dictionary with phonetic lookup by Jorj Software
Co.
Index: hotkeys;JORJ
--------K-16AF20BX4B33-----------------------
INT 16 - K3PLUS v6.00+ (API v2.0+) - GET EXTENDED BUFFER STATE
AX = AF20h
BX = 4B33h ('K3')
Return: AX = K3 version (same as returned in BX by AX=AF4Dh)
ES:BX -> extended keyboard buffer start
ES:DX -> extended keyboard buffer end
ES:SI -> next keystroke
ES:DI -> last keystroke in buffer
CX = number of keystrokes in buffer
Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
Frinke, originally based on the K3 extended German keyboard driver
by Martin Gerdes published in c't magazine in 1988
Note: this function replaces the identical function AH=20h"K3"
SeeAlso: AH=20h"K3",AX=AF25h,AX=AF4Dh,AX=AF50h,INT 2F/AX=ED58h
--------K-16AF25BX4B33-----------------------
INT 16 - K3PLUS v6.00+ (API v2.0+) - COPY INTO EXTENDED BUFFER
AX = AF25h
BX = 4B33h ('K3')
CX = number of keystrokes to copy
ES:SI -> buffer containing keystrokes
Return: CF clear if successful
CF set on error (i.e. buffer full)
CX = number of keystrokes NOT transferred
ES:SI -> first keystroke not transferred
Note: this function replaces the identical function AH=25h"K3"
SeeAlso: AH=25h"K3",AX=AF20h,AX=AF4Dh,AX=AF50h,INT 2F/AX=D44Fh/BX=0001h
--------K-16AF4DBX4B33-----------------------
INT 16 - K3PLUS v6.00+ (API v2.0+) - GET VERSION INFORMATION
AX = AF4Dh
BX = 4B33h ('K3')
Return: AL = 50h if installed
BX = K3 version
DX = API version
ES:CX -> K3 structure (version-dependent) (see #0532)
Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
Frinke, originally based on the K3 extended German keyboard driver
by Martin Gerdes published in c't magazine in 1988
SeeAlso: AX=AF20h,AX=AF50h,AX=AF80h,AX=AF82h/BX=4B33h,INT 2F/AX=D44Fh/BX=0000h
SeeAlso: INT 2F/AX=ED58h
Index: installation check;K3PLUS
Format of internal K3 structure:
Offset Size Description (Table 0532)
00h 3 BYTEs signature "K3$"
03h BYTE length of structure, including this byte and signature
04h WORD compiler switch option flags A (see #0533)
06h WORD compiler switch option flags B (see #0534)
08h BYTE internal flags A (see #0535)
09h BYTE internal flags B (see #0536)
0Ah WORD DOS version recorded at startup
0Ch WORD "ActTypeSpeed"
0Eh WORD last Keyboard-ID sent
41ABh translated, 83ABh native (pass-through)
10h WORD offset of K3TAB Special
12h WORD offset of K3TAB German
14h WORD offset of K3TAB Alt
16h WORD offset of K3TAB AltGr
18h WORD offset of K3TAB Ctrl
1Ah WORD offset of K3TAB NPad
1Ch WORD offset of K3TAB CtrlNPad
1Eh WORD offset of K3TAB AltNPad
20h WORD offset of K3TAB ApoTbl or 0000h
22h WORD offset of K3TAB UmlautTbl or 0000h
24h WORD offset of K3TAB UmlautTblExp or 0000h
26h WORD length of video mode table
28h WORD offset of VidMdTbl or 0000h
2Ah BYTE '$' end marker
Bitfields for K3PLUS compiler switch option flags A:
Bit(s) Description (Table 0533)
15 GuINT16Fct2 (general use of INT 16 function 2)
14 Int15df (INT 15 has to be predefined)
13 GuAltNP (general use of Alt Numpad)
12 SupAT (ATs+ supported)
11 GuINT16Fct3 (general use of INT 16 function 3)
10 GuINT16Ret (general use of INT16 bad function return)
9-8 Layout (0-2, 3 reserved; 0=PC, 1=AT, 2=MF)
7 ForceMF (force MF decode without read-ID)
6 KXlate (translate keys for special keyboard)
5 UmlautX (umlaut translation capability included)
4 ApoX (translate apostrophe)
3 DoINT16 (INT 16 handler included)
2 UseCC (CopyCursor included)
1-0 UseEB
0=no extended keystroke buffer, 1=reserve mem, 2=use PSP, 3=reserved
Bitfields for K3 compiler switch option flags B:
Bit(s) Description (Table 0534)
15-11 reserved (0)
10 CtrlSeq (Ctrl macro capability included)
9-8 SupINT16fct55FE
6 DoInstallCheck (check for double installation)
5 SupINT16fct5PcJr (INT 16/AH=05h"PCjr" supported)
4 SendOut (sound and message output supported)
3 SupInt16fct5500 (INT 16/AX=5500h supported)
2 GuINT15Fct4F (calls to INT 15/AH=4Fh supported)
1-0 UseBufferStart (0=use standard area, 1=set standard area,
2=use internal indexes, 3=reserved)
Bitfields for K3 internal flags A:
Bit(s) Description (Table 0535)
7 DoingUmlautExp
6 CallINT15fct4F
5 Beep1 (requires SendOut set in option flags B)
4 ATflag (set for AT, 386, PS/2 Models 50-80)
3 XTflag (set for PC, PC/XT, Micromint PC, Pencock PC, PS/2 Model 30)
2 KeyClick
1 UmlautExp
0 UmlautTrans
Bitfields for K3 internal flags B:
Bit(s) Description (Table 0536)
7-5 reserved
4 TranslateE0 enabled
3 Boot enabled
2 PrintScreen enabled
1 Break enabled
0 ApoPendingBeep
--------K-16AF50BX4B33-----------------------
INT 16 - K3PLUS v6.00+ (API v2.0+) - CHECK IF FUNCTION SUPPORTED
AX = AF50h
BX = 4B33h ('K3')
CH = function
00h get function flags
CL = 00h
Return: CX = supported function flags (see #0537)
nonzero reserved for extensions
SeeAlso: AX=AF20h,AX=AF4Dh,AX=AF51h,AX=AF80h
Bitfields for K3PLUS supported function list:
Bit(s) Description (Table 0537)
0 function 4Dh supported
1 function 50h supported
2-3 reserved (0)
4 function 20h supported
5 function 25h supported
6 function 51h supported
7 reserved (0)
8 function 80h supported
9 function 81h supported
10 function 82h supported
11-15 reserved (0)
--------K-16AF51BX4B33-----------------------
INT 16 - K3PLUS v6.00+ (API v2.00+) - SET OPTIONS
AX = AF51h
BX = 4B33h ('K3')
CX = switches
Return: AL = status
00h done
CX = previous switch settings
01h switch not supported
FFh other error
SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h
--------K-16AF80BX4B33-----------------------
INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 09h VECTOR
AX = AF80h
BX = 4B33h ('K3')
Return: AL = status
00h not supported
81h if successful
ES:CX -> original INT 09 handler
SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF81h,AX=AF82h
--------K-16AF81BX4B33-----------------------
INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 16h HANDLER
AX = AF81h
BX = 4B33h ('K3')
Return: AL = status
00h not supported
82h if successful
ES:CX -> original INT 16 handler
SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF82h
--------K-16AF82BX4B33-----------------------
INT 16 - K3PLUS v6.00+ (API v2.00+) - GET ORIGINAL INT 10h HANDLER
AX = AF82h
BX = 4B33h ('K3')
Return: AL = status
00h not supported
83h if successful
ES:CX -> original INT 10 handler
Program: K3PLUS is an extended keyboard driver by Matthias Paul and Axel C.
Frinke, originally based on the K3 extended German keyboard driver
by Martin Gerdes published in c't magazine in 1988
SeeAlso: AX=AF4Dh,AX=AF50h,AX=AF80h,AX=AF81h,INT 2F/AX=ED58h
--------m-16B0B1-----------------------------
INT 16 - VGARAM v1.00 - INSTALLATION CHECK
AX = B0B1h
ES:DI -> 6 byte signature "VGARAM"
Return: AX = B1B0h if installed,
DS:BX -> VGARAM Status byte: 0 = OFF, 1 = ON
Program: VGARAM is a utility by Brett Warthen which makes VGA memory which is
not used in text modes available for DOS
--------K-16CA--BX736B-----------------------
INT 16 - CtrlAlt Associates STACKEY.COM v3.00 - API
AH = CAh
BX = 736Bh ("sk")
CX = 736Bh
AL = function
00h installation check
Return: DX = words available in keyboard buffer
01h place keystroke in buffer
DX = keystroke (DH = scan code, DL = ASCII character)
Return: DX = words available in keyboard buffer
FFFFh on error
02h flush STACKEY and BIOS keyboard buffers
Return: AX = CAFFh if installed
BX = segment of resident code
CX = STACKEY version (CH = major, CL = minor)
Program: STACKEY is a shareware keyboard-input faking TSR
Index: installation check;STACKEY
--------V-16CA00BX6570-----------------------
INT 16 - CtrlAlt Associates EGAPAL.COM v1.00 - INSTALLATION CHECK
AX = CA00h
BX = 6570h ("ep")
CX = 6570h
Return: AX = CAFFh if installed
BX = segment of resident code
CX = ??? (0090h)
Program: EGAPAL is a TSR supplied with STACKEY which makes EGA palette
settings permanent across mode switches
SeeAlso: AX=CA00h/BX=7670h
--------V-16CA00BX7670-----------------------
INT 16 - CtrlAlt Associates VGAPAL.COM v1.00 - INSTALLATION CHECK
AX = CA00h
BX = 7670h ("vp")
CX = 7670h
Return: AX = CAFFh if installed
BX = segment of resident code
CX = ??? (0090h)
Program: VGAPAL is a TSR supplied with STACKEY which makes VGA palette
settings permanent across mode switches
SeeAlso: AX=CA00h/BX=6570h
--------U-16CB00-----------------------------
INT 16 - PUPClip v1.12+ - INSTALLATION CHECK
AX = CB00h
Return: BX = 4342h if installed
AX = version (AH = major version, AL = BCD minor version)
Program: PUPClip is the freeware PopUP Clipboard for DOS and Windows DOS
sessions by SkullC0DEr
SeeAlso: AX=CB01h,AX=CB02h,AX=CB03h,AX=CB04h,AX=CB05h,AX=CB06h,AX=CB08h
SeeAlso: INT 2F/AX=1701h
--------U-16CB01-----------------------------
INT 16 - PUPClip v1.12+ - GET CLIPBOARD CURSOR POSITION
AX = CB01h
Return: BL = column (0-79)
BH = row (0-49)
SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h
--------U-16CB02-----------------------------
INT 16 - PUPClip v1.12+ - SET CLIPBOARD CURSOR POSITION
AX = CB02h
BL = column (0-79)
BH = row (0-49)
Return: CF clear if successful
CF set on error (invalid position)
SeeAlso: AX=CB00h,AX=CB01h,AX=CB04h
--------U-16CB03-----------------------------
INT 16 - PUPClip v1.12+ - GET CHARACTER FROM CURRENT CLIPBOARD CURSOR POSITION
AX = CB03h
Return: BL = ASCII character at current position
SeeAlso: AX=CB00h,AX=CB02h,AX=CB04h,INT 2F/AX=1705h
--------U-16CB04-----------------------------
INT 16 - PUPClip v1.12+ - WRITE CHARACTER TO CURRENT CLIPBOARD CURSOR POSITION
AX = CB04h
BL = ASCII character to store
SeeAlso: AX=CB00h,AX=CB02h,AX=CB03h,AX=CB05h,INT 2F/AX=1703h
--------U-16CB05-----------------------------
INT 16 - PUPClip v1.12+ - CLEAR CLIPBOARD CONTENTS
AX = CB05h
Return: nothing
SeeAlso: AX=CB00h,AX=CB04h,AX=CB06h,AX=CB07h,INT 2F/AX=1702h
--------U-16CB06-----------------------------
INT 16 - PUPClip v1.12+ - SCROLL UP CLIPBOARD CONTENTS
AX = CB06h
Return: nothing
SeeAlso: AX=CB00h,AX=CB05h,AX=CB07h
--------U-16CB07-----------------------------
INT 16 - PUPClip v1.12+ - SCROLL DOWN CLIPBOARD CONTENTS
AX = CB07h
Return: nothing
SeeAlso: AX=CB00h,AX=CB05h,AX=CB06h
--------U-16CB08-----------------------------
INT 16 - PUPClip v1.12+ - POP UP
AX = CB08h
Return: CF clear if successful
CF set on error (unsupported video mode)
SeeAlso: AX=CB00h
--------U-16D724CX00CB-----------------------
INT 16 U - APCAL v3.20 - GET ???
AX = D724h
CX = 00CBh
Return: AX = 0000h
BX = 0000h
DX:CX -> ??? or 0000h:0000h
Program: APCAL is an optionally-resident shareware appointment calendar by
Gamma Software
SeeAlso: AX=3577h,AX=D724h/CX=00CCh,AX=D724h/CX=00CDh
--------U-16D724CX00CC-----------------------
INT 16 U - APCAL v3.20 - GET ???
AX = D724h
CX = 00CCh
Return: AX = 0000h
BX = 0000h
DX:CX -> ??? (apparently an internal data area)
SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CDh
--------U-16D724CX00CD-----------------------
INT 16 U - APCAL v3.20 - GET ???
AX = D724h
CX = 00CDh
Return: AX = ??? (5345h seen)
SeeAlso: AX=D724h/CX=00CBh,AX=D724h/CX=00CCh
--------v-16DD--------------------------
INT 16 - VIRUS - "Frumble" - INSTALLATION CHECK
AH = DDh
Return: AL = DDh if resident
SeeAlso: INT 13/AX=FD50h,INT 21/AX=010Fh,INT 21/AX=0B56h
--------s-16DFDF-----------------------------
INT 16 U - Corel PowerSCSI - FDAUDIO.COM - INSTALLATION CHECK
AX = DFDFh
Return: ES:DI -> ASCII signature "FDAUDIO/CD" followed by ASCII date, i.e.
"06/18/93" if installed
--------b-16E000-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - GET VERSION NUMBER
AX = E000h
Return: CF clear if successful
AL = FAh
BX = version number (BCD) (0200h = v2.00)
CF set on error (not implemented)
Notes: this interface is available on AMI BIOSes built from AMI core version
8/8/93 (HiFlex BIOS) or 11/15/93 (WinBIOS) or later
the "Meningitis" virus uses this API when attacking a system equipped
with an AMI BIOS; it is supposedly able to write itself into the
Flash ROM and thus make itself part of the BIOS
SeeAlso: AX=E001h,AX=E004h,AX=E006h,AX=E008h,AX=E00Ah,AX=E00Bh,AX=E0FFh
--------b-16E001-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - GET CHIPSET SAVE/RESTORE SIZE
AX = E001h
Return: CF clear if successful
AL = FAh
BX = number of bytes required to save chipset configuration
CF set on error
SeeAlso: AX=E000h,AX=E002h,AX=E003h
--------b-16E002-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE CHIPSET STATUS & PREPARE CHPSET
AX = E002h
ES:DI -> buffer for storing chipset status
Return: CF clear if successful
AL = FAh
CF set on error
SeeAlso: AX=E000h,AX=E001h,AX=E003h
--------b-16E003-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE CHIPSET STATUS
AX = E003h
ES:DI -> buffer in which chipset status was previously stored
Return: CF clear if successful
AL = FAh
CF set on error
SeeAlso: AX=E000h,AX=E001h,AX=E002h
--------b-16E004-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - LOWER PROGRAMMING VOLTAGE Vpp
AX = E004h
Return: CF clear if successful
AL = FAh
CF set on error
Note: this function does not return until the voltage level stabilizes
SeeAlso: AX=E000h,AX=E005h,AX=E006h
--------b-16E005-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - RAISE PROGRAMMING VOLTAGE Vpp
AX = E005h
Return: CF clear if successful
AL = FAh
CF set on error
Note: this function does not return until the voltage level stabilizes
SeeAlso: AX=E000h,AX=E004h,AX=E007h
--------b-16E006-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE PROTECT
AX = E006h
Return: CF clear if successful
AL = FAh
CF set on error
Note: this function performs any delay required to allow the Flash ROM to
stabilize in the write-protected state
SeeAlso: AX=E000h,AX=E004h,AX=E007h
--------b-16E007-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH WRITE ENABLE
AX = E007h
Return: CF clear if successful
AL = FAh
CF set on error
Note: this function performs any delay required to allow the Flash ROM to
stabilize in the write-enabled state
SeeAlso: AX=E000h,AX=E005h,AX=E006h,AX=E008h
--------b-16E008-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH SELECT
AX = E008h
Return: CF clear if successful
AL = FAh
CF set on error
Desc: select the Flash ROM if the system contains both EPROM and Flash ROM
Note: this function performs any delay required to allow the Flash ROM to
stabilize in the selected state; if no EPROM is present, this
function always returns successfully
SeeAlso: AX=E000h,AX=E007h,AX=E009h
--------b-16E009-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - FLASH DE-SELECT
AX = E009h
Return: CF clear if successful
AL = FAh
CF set on error
Desc: select the EPROM if the system contains both EPROM and Flash ROM
Note: this function performs any delay required to allow the Flash ROM to
stabilize in the de-selected state; if no EPROM is present, this
function always returns successfully
SeeAlso: AX=E000h,AX=E006h,AX=E008h
--------b-16E00A-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - VERIFY ALLOCATED MEMORY
AX = E00Ah
BX = number of paragraphs
ES = starting segment of memory
Return: CF clear if successful
AL = FAh
CF set on error
Desc: determine whether the specified memory may be used for flash
programming
Note: always returns error if BX is zero on entry
SeeAlso: AX=E000h,AX=E00Bh
--------b-16E00B-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - SAVE INTERNAL CACHE STATUS
AX = E00Bh
ES:DI -> buffer for internal cache status (minimum 4Kbytes)
Return: CF clear if successful
AL = FAh
CF set on error
Note: always returns error if the hardware does not contain internal
cache or this call is made in protected mode
SeeAlso: AX=E000h,AX=E00Ah,AX=E00Ch
--------b-16E00C-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - RESTORE INTERNAL CACHE STATUS
AX = E00Ch
ES:DI -> buffer containing internal cache status (minimum 4Kbytes)
Return: CF clear if successful
AL = FAh
CF set on error
Note: always returns error if the hardware does not contain internal
cache or this call is made in protected mode
SeeAlso: AX=E000h,AX=E00Bh
--------t-16E0E0-----------------------------
INT 16 - TurboPower TSRs - ALTERNATE INSTALLATION CHECK
AX = E0E0h
Return: AX = 1F1Fh if installed
DWORD 0040h:00F0h -> last data block in TSR list (see #0539)
Note: the returned TSR list provides support for communication among TSRs
built with TurboPower's Turbo Professional and Object Professional
libraries for Turbo Pascal
SeeAlso: AX=F0F0h
--------b-16E0FF-----------------------------
INT 16 - AMI BIOS - BIOS-FLASH Interface - GENERATE CPU RESET
AX = E0FFh
Return: never
SeeAlso: AX=E000h,INT 14/AH=17h"FOSSIL"
--------U-16ED--BHED-------------------------
INT 16 - BORLAND TURBO LIGHTNING - API
AH = EDh
BH = EDh
BL = function
00h installation check
Return: AX = 5205h
CH = major version
CL = minor version
01h identical to function 00h???
02h get resident data segment
Return: AX = data segment of resident portion
03h get resident ???
Return: AX = offset of some buffer in resident code seg
04h redefine auxiliary dictionary
DS:SI -> counted filename string
Return: AL = result code
05h select active environment
AL = environment (00h to 0Ch)
Return: AX = status
0000h if OK
0001h if out of range
06h toggle AutoProof???
AL = state (00h off, 01h on)
07h ???
08h ???
AL = char???
CX = ???
DX = ???
Return: AX = 0, 1 or 2
09h ???
0Ah ???
CX = ???
DX = ???
Return: AX = ???
0Bh check dictionary integrity???
DS:SI -> counted dictionary filename string
Return: AX = 0, 40h, 80h
0Ch spellcheck string (disk dictionary, possibly RAM dict as well)
DS:SI -> counted string to check
Return: AH = 0
AL = result code
00h string found in dictionary
20h string begins more than one word
40h string not found
0Dh set ???
(sets an internal flag)
0Eh spellcheck string (RAM dictionary only)
DS:SI -> counted string to check
Return: AH = 00h
AL = result code
00h string found in dictionary
01h string not found
02h ???
0Fh ???
10h ???
Notes: AX in general returns an error code from most functions.
Index: installation check;Turbo Lightning
--------U-16EF-------------------------------
INT 16 - CALCULATOR - INSTALLATION CHECK
AH = EFh
Return: AX = 0088h if installed
Program: CALCULATOR is a shareware popup calculator by Andrzej Brzezinski and
Marek Kosznik
--------b-16F0-------------------------------
INT 16 - Compaq 386 and newer - SET CPU SPEED
AH = F0h
AL = speed code (see #0538)
if AL=09h,
CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
Note: also supported by some versions of AMI BIOS dated June 1992 or later;
speed codes 0 or 1 are used for Low Speed, 2 for High Speed
SeeAlso: AH=F1h,AH=F3h
(Table 0538)
Values for speed code:
00h equivalent to 6 MHz 80286 (COMMON)
01h equivalent to 8 MHz 80286 (FAST)
02h full 16 MHz (HIGH)
03h toggles between 8 MHz-equivalent and speed set by system board switch
(AUTO or HIGH)
08h full 16 MHz except 8 MHz-equivalent during floppy disk access
09h specify speed directly
--------t-16F0F0-----------------------------
INT 16 - TurboPower TSRs - INSTALLATION CHECK
AX = F0F0h
Return: AX = 0F0Fh if installed
ES:DI -> last data block in TSR list (see #0539)
Note: the returned TSR list provides support for communication among TSRs
built with TurboPower's Turbo Professional and Object Professional
libraries for Turbo Pascal
SeeAlso: AX=E0E0h
Format of TurboPower TSR data block:
Offset Size Description (Table 0539)
00h DWORD pointer to program tag (counted ASCII string)
04h WORD interface version number (0400h)
06h DWORD pointer to command entry point
0Ah DWORD pointer to previous data block (0000h:0000h if none)
0Eh DWORD pointer to next data block (0000h:0000h if none)
---swappable TSRs only---
12h DWORD pointer to swapping data
16h DWORD pointer to user data
more???
--------b-16F1-------------------------------
INT 16 - Compaq 386 and newer - READ CURRENT CPU SPEED
AH = F1h
Return: AL = speed code (see #0538)
if AL = 09h, CX = speed code
Note: also supported by some versions of AMI BIOS dated June 1992 or later
SeeAlso: AH=F0h,AH=F3h
--------b-16F2-------------------------------
INT 16 - Compaq 386 and newer - DETERMINE ATTACHED KEYBOARD TYPE
AH = F2h
Return: AL = type
00h if 11-bit AT keyboard is in use
01h if 9-bit PC keyboard is in use
AH = 00h (04/08/93 system ROM)
SeeAlso: MEM 0040h:00C2h
--------b-16F3-------------------------------
INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
AH = F3h
AL = new limit
00h limit is 6 Mhz
01h limit is 8 Mhz/6 Mhz
SeeAlso: AH=F0h,AH=F1h
--------U-16F398-----------------------------
INT 16 U - NORTON GUIDES - INSTALLATION CHECK
AX = F398h
Return: AX = 6A73h ("js")
BH = BIOS scan code of current hot key
BL = ASCII code of current hot key
Note: NG.EXE was written by John Socha
--------b-16F400-----------------------------
INT 16 - Compaq Systempro and higher - CACHE CONTROLLER STATUS
AX = F400h
Return: AH = E2h (*)
AL = status
00h not present
01h enabled
02h disabled
CX = cache memory size
bit 15: cache size information is NOT valid
bits 14-0: cache memory size in kilobytes
DH = cache write technology
bit 7: cache write information is NOT valid
bits 6-1: reserved (0)
bit 0: 0 = Write-through caching
1 = Write-back caching
DL = cache type
bit 7: cache type information is NOT valid
bits 6-1: reserved (0)
bit 0: 0 = Direct mapped
1 = Two-way set-associative
Notes: also supported by some versions of AMI BIOS dated June 1992 or later
many (most) BIOSes return a modified AH when called for an unsupported
or non-keyboard function (typically, the highest supported keyboard
function [normally 12h] is subtracted from the original AH)
SeeAlso: AX=F401h,AX=F402h
--------b-16F401-----------------------------
INT 16 - Compaq Systempro and higher - ENABLE CACHE CONTROLLER
AX = F401h
Return: AX = E201h
Notes: also supported by some versions of AMI BIOS dated June 1992 or later
many (most) BIOSes return a modified AH when called for an unsupported
or non-keyboard function (typically, the highest supported keyboard
function [normally 12h] is subtracted from the original AH)
SeeAlso: AX=F400h,AX=F402h
--------b-16F402-----------------------------
INT 16 - Compaq Systempro and higher - DISABLE CACHE CONTROLLER
AX = F402h
Return: AX = E202h
Notes: also supported by some versions of AMI BIOS dated June 1992 or later
many (most) BIOSes return a modified AH when called for an unsupported
or non-keyboard function (typically, the highest supported keyboard
function [normally 12h] is subtracted from the original AH)
SeeAlso: AX=F400h,AX=F401h
--------v-16FA00DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - INSTALLATION CHECK
AX = FA00h
DX = 5945h
Return: CF clear
DI = 4559h
BX = BIOS hotkey scancode (default 2F00h) (VSAFE only)
FFFFh if disabled
Note: MS-DOS 6.0 bundles VSAFE and VWATCH as part of its virus protection
SeeAlso: AX=FA05h,INT 13/AH=FAh,INT 21/AH=FAh"VDEFEND",INT 2F/AX=6282h
--------v-16FA01DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - UNINSTALL
AX = FA01h
DX = 5945h
Return: CF clear if successful
DI = 4559h
SeeAlso: AX=FA00h
--------v-16FA02DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET/SET OPTIONS
AX = FA02h
DX = 5945h
BL = new parameter flags (see #0540)
Return: CF clear
DI = 4559h
CL = old value of parameter flags
Bitfields for VSAFE/VWATCH parameter flags:
Bit(s) Description (Table 0540)
7 Protect executable files
6 Protect FD boot sector
5 Protect HD boot sector
4 Boot sector viruses
3 Check executable files
2 General write protect
1 Resident
0 HD Low level format
--------v-16FA03DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
AX = FA03h
DX = 5945h
Return: CF clear
DI = 4559h
AX = 0002h
--------v-16FA04DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE - GET HOTKEY DISABLE FLAG
AX = FA04h
DX = 5945h
Return: CF clear
DI = 4559h
BL = hotkey disable flag (nonzero if hotkey disabled)
Note: this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
SeeAlso: AX=FA00h,AX=FA05h
--------v-16FA05DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE - SET HOTKEY DISABLE FLAG
AX = FA05h
DX = 5945h
BL = new value of hotkey disable flag (nonzero to disable hotkey)
Return: CF clear
DI = 4559h
Note: this function is a NOP under VWATCH, merely returning CF clear/DI=4559h
SeeAlso: AX=FA00h,AX=FA04h
--------v-16FA06DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET NETWORK DRIVES TEST FLAG
AX = FA06h
DX = 5945h
Return: CF clear
DI = 4559h
BL = test status
00h don't monitor network drives (default for VWATCH v2.1)
FFh monitor network drives (default for VSAFE v2.0)
CL = ??? (only VSAFE 2.0)
SeeAlso: AX=FA07h
--------v-16FA07DX5945-----------------------
INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET NETWORK DRIVES TEST FLAG
AX = FA07h
DX = 5945h
BL = new state
00h don't monitor
01h monitor network drives
Return: CF clear
DI = 4559h
Note: VWATCH v2.1 (from PC Tools 9.0) returns CF set instead
SeeAlso: AX=FA00h,AX=FA06h
--------v-16FA08DX5945-----------------------
INT 16 U - PC Tools v9+ VWATCH v2.1 - ???
AX = FA08h
DX = 5945h
Return: CF clear
DI = 4559h
AX = ??? (0002h)
BX = version (BH=major, BL=two-digit minor)
Note: this function is not supported by the PC Tools 9.0 VSAFE v2.0
SeeAlso: AX=FA00h,AX=FA06h
--------U-16FE55-----------------------------
INT 16 U - PC Tools v8+ programs - GET ???
AX = FE55h
CX = segment of resident program or 0000h for last loaded
DX = 0000h
Return: DX = resident code segment (unchanged if CX=0000h on entry)
AX = ??? or 0000h
Note: this call is supported by CPSCHED, CPTASK, DATAMON, DPROTECT, DRIVEMAP,
and DSKLIGHT beginning in PC Tools v8.0; programs other than CPTASK
seem to hook it merely to return the same AX as the CPTASK loaded
prior to them returned
--------U-16FEA4-----------------------------
INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - RESET ???
AX = FEA4h
Return: nothing
Note: this function is identical to AX=FFA4h, and is implemented by the same
code in DESKTOP
SeeAlso: AX=FFA4h
--------U-16FEC6-----------------------------
INT 16 U - PC Tools v7+ CPSCHED - ENABLE/DISABLE CPSCHED API
AX = FEC6h
BL = new state (00h enabled, nonzero disabled)
Return: nothing
Desc: specify whether CPSCHED API calls other than this one and AX=FE55h will
be honored
--------U-16FED3-----------------------------
INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
AX = FED3h
DS:SI -> 92-byte data record for ???
Return: ???
Note: this function is identical to AX=FFD3h, and is implemented by the same
code in DESKTOP
SeeAlso: AX=FFD3h
--------U-16FEDC-----------------------------
INT 16 U - PC Tools v7+ CPSCHED - UNHOOK INTERRUPTS
AX = FEDCh
Return: AX,DX destroyed
Index: uninstall;CPSCHED
--------U-16FEEFCX0000-----------------------
INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - INSTALLATION CHECK
AX = FEEFh
CX = 0000h
Return: CX = ABCDh if PC Tools scheduler (CPSCHED or DESKTOP) installed
BX = segment of resident portion
DX = (CPSCHED v8.0) resident CS
Note: this function is identical to AX=FFD3h, and is implemented by the same
code in DESKTOP
SeeAlso: AX=FFEFh
--------U-16FEF1-----------------------------
INT 16 U - PC Tools v7 only CPSCHED/DESKTOP - ALTERNATE INSTALLATION CHECK
AX = FEF1h
BX = ???
Return: CX = 5555h if PC Tools scheduler (CPSCHED or DESKTOP) installed
DX = 5555h
Note: this function is identical to AX=FFD3h, and is implemented by the same
code in DESKTOP
SeeAlso: AX=FFF1h
--------K-16FF-------------------------------
INT 16 - KEYBOARD - KBUF extensions - ADD KEY TO TAIL OF KEYBOARD BUFFER
AH = FFh
DX = scan code
Return: AL = status
00h success
01h failure
Program: KBUF is a keyboard buffer expander by Mark Adler
SeeAlso: AH=05h
--------V-16FF-------------------------------
INT 16 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY ZOOM INTERRUPT
AH = FFh
Return: AL = interrupt number to which BIOS keyboard handler has been relocated
AL+1 = Zoom interrupt number
BX = hotkey
Notes: the default interrupts are 60h for keyboard and 61h for Zoom interrupt;
the default hot key is F10
not all vendors include the Tseng TSR which supports these functions
SeeAlso: INT 61/AX=0000h"OPTIMA",INT 61/AX=0005h"OPTIMA"
Index: hotkeys;OPTIMA 1024 VGA
----------16FF--BH00-------------------------
INT 16 - FREEZE.COM - INSTALLATION CHECK
AH = FFh
BH = 00h
Return: BH = FFh if installed
Program: FREEZE is a PC Magazine utility
--------d-16FF70BX0000-----------------------
INT 16 U - PC Tools v8+ DRIVEMAP - INSTALLATION CHECK
AX = FF70h
BX = 0000h
CX = 4C69h ('Li')
DX = 6E6Bh ('nk')
Return: AX = 0000h
CX = 4350h ('CP')
DH = major version
DL = minor version
Program: DRIVEMAP is a redirector which allows drives on computers connected
over the parallel or serial ports to appear as local drives
SeeAlso: AX=FF70h/BX=0001h,AX=FF70h/BX=0002h
--------d-16FF70BX0001-----------------------
INT 16 U - PC Tools v8+ DRIVEMAP - ???
AX = FF70h
BX = 0001h
DL = ???
Return: AX = ???
DH = ???
SeeAlso: AX=FF70h/BX=0000h,AX=FF70h/BX=0002h
--------d-16FF70BX0002-----------------------
INT 16 U - PC Tools v8+ DRIVEMAP - ???
AX = FF70h
BX = 0002h
CX = ???
DX = ???
Return: AX = ??? or FFFEh/FFFFh on error
DL = ???
BUG: DRIVEMAP will branch to random locations for BX values other than
those listed above for v8.0-9.0 because a) the incorrect register is
range-tested, resulting in BX=0003h-5CD6h being accepted as valid
function numbers, and b) the conditional which branches on invalid
function numbers jumps to the following instruction, becoming a NOP
SeeAlso: INT 2F/AX=9203h"DRIVEMAP"
Index: installation check;DRIVEMAP
--------T-16FF80BX0000-----------------------
INT 16 U - PC Tools v8+ CPTASK - INSTALLATION CHECK
AX = FF80h
BX = 0000h
CX = 0000h
DX = 0000h
Return: CX = 5555h if installed
Program: CPTASK is a task switcher by Central Point Software
--------T-16FF80BX0001-----------------------
INT 16 U - PC Tools v8+ CPTASK - GET ???
AX = FF80h
BX = 0001h
???
Return: DX:SI -> task list??? (ten entries of 70h bytes in v9.0)
BX = ??? (PSP segment of resident code???)
--------T-16FF80BX0002-----------------------
INT 16 U - PC Tools v8+ CPTASK - GET ???
AX = FF80h
BX = 0002h
Return: DX:SI -> ???
--------T-16FF80BX0003-----------------------
INT 16 U - PC Tools v8+ CPTASK - GET ??? FLAGS
AX = FF80h
BX = 0003h
Return: AX = flags (see #0541)
SeeAlso: AX=FF80h/BX=0004h,AX=FF80h/BX=0006h
Bitfields for CPTASK flags:
Bit(s) Description (Table 0541)
10 ???
13 ???
14 ???
15 ???
--------T-16FF80BX0004-----------------------
INT 16 U - PC Tools v8+ CPTASK - SET ???
AX = FF80h
BX = 0004h
CX = new value of ???
Return: ???
Note: this function also sets bit 14 of the flags word returned by
AX=FF80h/BX=0003h
--------T-16FF80BX0005-----------------------
INT 16 U - PC Tools v8+ CPTASK - GET NUMBER OF ACTIVE TASKS???
AX = FF80h
BX = 0005h
Return: AX = number of active tasks???
--------T-16FF80BX0006-----------------------
INT 16 U - PC Tools v8+ CPTASK - GET AND CLEAR ??? FLAG
AX = FF80h
BX = 0006h
Return: AX = old state (0000h clear, 0001h set)
Note: the tested flag is bit 13 of the flags returned by AX=FF80h/BX=0003h
--------T-16FF80BX0007-----------------------
INT 16 U - PC Tools v8+ CPTASK - ???
AX = FF80h
BX = 0007h
ES:DI -> ???
???
Return: ???
--------T-16FF80BX0008-----------------------
INT 16 U - PC Tools v8+ CPTASK - ???
AX = FF80h
BX = 0008h
???
Return: ???
--------T-16FF80BX0009-----------------------
INT 16 U - PC Tools v8+ CPTASK - GET ???
AX = FF80h
BX = 0009h
Return: CL = ???
CH = ??? (01h or 02h)
--------T-16FF80BX000A-----------------------
INT 16 U - PC Tools v9+ CPTASK - SET ???
AX = FF80h
BX = 000Ah
DS:SI -> 128-byte buffer containing ???
--------T-16FF80BX000B-----------------------
INT 16 U - PC Tools v9+ CPTASK - SET ???
AX = FF80h
BX = 000Bh
DX = index of ??? task (1-10)
--------T-16FF80BX000C-----------------------
INT 16 U - PC Tools v9+ CPTASK - SET IDLE??? DELAY
AX = FF80h
BX = 000Ch
CX = new delay time in minutes
--------T-16FF80BX4350-----------------------
INT 16 U - PC Tools v8+ CPTASK - UNINSTALL
AX = FF80h
BX = 4350h ('CP')
CX = 5354h ('ST')
Return: never returns; terminates all tasks and exits to program originally
calling CPTASK
--------U-16FF90-----------------------------
INT 16 U - PC Tools v8+ DESKTOP - ???
AX = FF90h
???
Return: ???
Note: available only when popped up
--------U-16FF91-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF91h
???
Return: AX = 0000h
Note: calls AX=FFFDh after ???
SeeAlso: AX=FF92h,AX=FFFDh
--------U-16FF92-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF92h
???
Return: AX = 0000h
Note: like AX=FF91h, but temporarily sets ??? to 3
SeeAlso: AX=FF91h,AX=FFFDh
--------U-16FF93-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - SET ??? FLAG
AX = FF93h
--------U-16FF94-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - SET ???
AX = FF94h
CX = ??? (default 0017h)
--------U-16FF95-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - SET ???
AX = FF95h
BX = ???
--------U-16FF96-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF96h
CL = ???
Return: AX = ???
--------U-16FF97-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF97h
DS:DX -> buffer for ??? (see #0542)
Return: ???
Format of PC Tools DESKTOP buffer:
Offset Size Description (Table 0542)
00h 48 BYTEs ???
30h 128 BYTEs ???
--------U-16FF98-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - OPEN \DESK.OVL FILE AND SEEK TO OVERLAY
AX = FF98h
DX = byte offset in file of overlay header (see #0543)
Return: BX = file handle for DESK.OVL file
Desc: open the DESK.OVL file, seek to the specified offset, read in the
overlay header, and seek to the offset specified by the header
Format of PC Tools DESKTOP overlay header:
Offset Size Description (Table 0543)
00h 12 BYTEs NUL-padded ASCII overlay filename
0Ch DWORD offset within DESK.OVL file of actual overlay
--------U-16FF99-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF99h
???
Return: ???
--------U-16FF9A-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - GET NAME OF COLOR SCHEME
AX = FF9Ah
Return: ES:BX -> name of current color scheme
Note: available even if not popped up
--------U-16FF9B-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - UNUSED
AX = FF9Bh
Return: ???
Note: sounds triple-length beep
--------T-16FF9C-----------------------------
INT 16 U - PC Tools v8+ CPTASK - SET/CLEAR ??? POINTER
AX = FF9Ch
BL = function
00h set ??? pointer
DS:SI -> ???
01h clear pointer to 0000h:0000h
----------16FF9D-----------------------------
INT 16 U - PC Tools v8+ CPTASK, VSAFE - ???
AX = FF9Dh
ES:BX -> ??? word
Return: ???
Note: if ES is non-zero, the word pointed at by ES:BX determines whether the
??? flag is cleared (word = 0000h) or set (word is nonzero). The
flag is always cleared if ES=0000h.
--------U-16FF9E-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FF9Eh
DL = ???
bit 7: ???
bits 6-0: function number??? (00h,01h,other)
???
Return: ???
--------U-16FFA1-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FFA1h
???
Return: ???
Note: same as AX=FFA2h, except ??? set to FFh
SeeAlso: AX=FFA2h
--------U-16FFA2-----------------------------
INT 16 U - PC Tools v7+ DESKTOP - ???
AX = FFA2h
???
Return: ???
Note: calls AX=FFC7h (remove window) and AX=FFFDh
SeeAlso: AX=FFA1h,AX=FFC7h,AX=FFFDh
--------y-16FFA3BX0000-----------------------
INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
AX = FFA3h
BX = 0000h
CX = 0000h
Return: AX = segment of resident code
BX = 5555h
CX = 5555h
Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools
SeeAlso: INT 21/AH=3Fh"NB.SYS",INT 21/AX=4101h,INT 2F/AX=6284h
--------y-16FFA3BX0001-----------------------
INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
AX = FFA3h
BX = 0001h
CX = 0001h
Return: AX:BX -> ???
CX = BX
--------y-16FFA3BX0002-----------------------
INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
AX = FFA3h
BX = 0002h
CX = 0002h
Return: AX = ??? (0 or 1)
CX = BX = AX
--------y-16FFA3BX0003-----------------------
INT 16 U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
AX = FFA3h
BX = 0003h
CX = 0003h
Return: AX = ??? (0 or 1)
CX = BX = AX
--------y-16FFA3BX0004-----------------------
INT 16 U - PC Tools v7+ DATAMON - SET ??? FLAG
AX = FFA3h
BX = 0004h
CX = 0004h
SeeAlso: AX=FFA3h/BX=0005h
--------y-16FFA3BX0005-----------------------
INT 16 U - PC Tools v7+ DATAMON - CLEAR ??? FLAG
AX = FFA3h
BX = 0005h
CX = 0005h
SeeAlso: AX=FFA3h/BX=0004h
--------y-16FFA3BX0006-----------------------
INT 16 U - PC Tools v7+ DATAMON - SET PSP SEGMENT ???
AX = FFA3h
BX = 0006h
CX = 0006h
DX = current PSP segment as known to DOS??? or 0000h
--------d-16FFA3BXFFA3-----------------------
INT 16 U - PC Tools v9 DSKLIGHT - INSTALLATION CHECK
AX = FFA3h
BX = FFA3h
CX = FFA3h
Return: BX = CX = 5555h if installed
AX = resident code segment
Program: DSKLIGHT is a TSR included with PC Tools v9+ which displays a disk-
access indicator on the screen; in v7 and v8, this function was
provided by DATAMON
Note: DSKLIGHT chains to the previous handler if BX or CX is not FFA3h
--------U-16FFA4-----------------------------
INT 16 U - PC Tools v7-8 DESKTOP - ???
AX = FFA4h
Return: ???
Notes: available even when not popped up
sets unknown flag if ??? conditions met
SeeAlso: AX=FEA4h
--------c-16FFA5CX1111-----------------------
INT 16 - PC-Cache v6+ - INSTALLATION CHECK
AX = FFA5h
CX = 1111h
Return: CH = 00h if installed
ES:DI -> internal data (see #0544)
CL = cache state
01h enabled
02h disabled
SeeAlso: INT 13/AH=27h,INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
Format of PC-Cache internal data:
Offset Size Description (Table 0544)
-1Ch 20 BYTEs cached drive list, one byte per drive A: to T:
each byte is either blank (20h) or drive letter (41h-54h)
-8 BYTE ???
-7 WORD number of physical transfers (scaled down to 0000h-7FFFh)
-5 WORD number of saved transfers (scaled down to 0000h-7FFFh)
-3 3 BYTEs ???
--------c-16FFA5CXAAAA-----------------------
INT 16 - PC-Cache v6+ - ENABLE DELAYED WRITES
AX = FFA5h
CX = AAAAh
Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
SeeAlso: AX=FFA5h/CX=CCCCh
--------c-16FFA5CXCCCC-----------------------
INT 16 - PC-Cache v6+ - FLUSH CACHE AND DISABLE DELAYED WRITES
AX = FFA5h
CX = CCCCh
Return: AX = ??? (apparently either 0000h or sectors_in_cache - 5)
Note: delayed writes are automatically disabled on EXECing
(see INT 21/AH=4Bh) a program named either WIN.CO? or DV.E??;
however, delayed writes are not automatically reenabled upon the
program's termination in v6.
SeeAlso: AX=FFA5h/CX=AAAAh,AX=FFA5h/CX=FFFFh
--------c-16FFA5CXDDDD-----------------------
INT 16 - PC-Cache v6+ - FLUSH AND DISABLE CACHE
AX = FFA5h
CX = DDDDh
SeeAlso: AX=FFA5h/CX=EEEEh,AX=FFA5h/CX=FFFFh
--------c-16FFA5CXEEEE-----------------------
INT 16 - PC-Cache v6+ - ENABLE CACHE
AX = FFA5h
CX = EEEEh
SeeAlso: AX=FFA5h/CX=DDDDh
--------c-16FFA5CXFFFF-----------------------
INT 16 - PC-Cache v6+ - FLUSH CACHE
AX = FFA5h
CX = FFFFh
SeeAlso: AX=FFA5h/CX=CCCCh,AX=FFA5h/CX=DDDDh,INT 13/AH=A1h
--------U-16FFA6-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
AX = FFA6h
Return: DS:SI -> ???
Note: available only when popped up
--------U-16FFA7-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ??? PATH
AX = FFA7h
Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
--------U-16FFA8-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
AX = FFA8h
DS:SI -> three consecutive ASCIZ strings for ??? (max 256 bytes total)
???
Return: ???
Notes: available only when popped up
strings copied into internal buffer, among other actions
--------U-16FFA9-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET VERSION STRING
AX = FFA9h
Return: DS:SI -> version string
--------U-16FFAA-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
AX = FFAAh
???
Return: ???
Note: available only when popped up
--------U-16FFAB-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET EDITOR SETTINGS???
AX = FFABh
Return: DS:SI -> editor setting strings???
--------U-16FFAC-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
AX = FFACh
DL = ???
Note: available only when popped up
--------U-16FFAD-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
AX = FFADh
DL = ???
--------U-16FFAE-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - GET ???
AX = FFAEh
Return: AL = ???
--------U-16FFAF-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
AX = FFAFh
DL = ???
--------U-16FFB0-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - SET ???
AX = FFB0h
BL = ???
--------U-16FFB1-----------------------------
INT 16 U - PC Tools v6.0-8.0 DESKTOP - ???
AX = FFB1h
???
Return: ???
--------U-16FFB2-----------------------------
INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
AX = FFB2h
Return: DS:SI -> ???
--------U-16FFB3-----------------------------
INT 16 U - PC Tools v5.5-8.0 DESKTOP - ???
AX = FFB3h
???
Return: ???
Note: available only when popped up
--------U-16FFB4-----------------------------
INT 16 U - PC Tools v5.5-8.0 DESKTOP - SET ??? FLAG
AX = FFB4h
Note: available only when popped up
SeeAlso: AX=FFBBh
--------U-16FFB5-----------------------------
INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET WINDOW PARAMETERS
AX = FFB5h
BX = window specifier (000Fh to 0019h) (see #0545)
DX = 0000h get, nonzero = set
ES:DI -> window parameter buffer (see #0546)
SeeAlso: AX=FFCBh
(Table 0545)
Values for PC Tools DESKTOP window specifier:
000Fh comm/FAX
0014h hotkey selection
0015h ASCII table
0016h system colors menu
Format of PC Tools DESKTOP window parameters:
Offset Size Description (Table 0546)
00h BYTE rows in window, not counting frame
01h BYTE columns in window, not counting frame
02h BYTE row number of top of window
03h BYTE 2*column number of left of window
04h BYTE character attribute for ???
05h BYTE character attribute for background/border
06h BYTE character attribute for ???
07h DWORD pointer to ??? on screen
0Bh 4 BYTEs ???
0Fh BYTE nonzero if window may be resized
Note: if running in monochrome mode, character attributes at offsets 04h to
06h are stored unchanged, but attributes other than 07h, 0Fh, or 70h
are changed to 07h on reading
--------U-16FFB6-----------------------------
INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET ???
AX = FFB6h
Return: AH = ???
AL = ???
--------U-16FFB7-----------------------------
INT 16 U - PC Tools v5.5-8.0 DESKTOP - GET/SET ???
AX = FFB7h
BX = direction
0000h copy to buffer
else copy from buffer
DS:SI -> 70-byte buffer with ???
Return: data copied
Note: available only when popped up under v6.0+
--------U-16FFB8-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET/SET???
AX = FFB8h
BH = subfunction
00h get
Return: BL = old value of ???
CL = old value of ??? (v6.0+)
CH = old value of ??? (v6.0+)
nonzero set
BL = new value for ???
CL = new value for ??? (v6.0+)
CH = new value for ??? (v6.0+)
DH = ???
Return: AL = old value replaced by CL (v6.0+)
AH = old value replaced by CH (v6.0+)
--------U-16FFB9-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFB9h
???
Return: AX = ???
CX = ???
DS:SI -> ???
ES:DI -> ???
--------U-16FFBA-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFBAh
???
Return: AX = ???
Note: available only when popped up
--------U-16FFBB-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLEAR ??? FLAG
AX = FFBBh
Note: available only when popped up
SeeAlso: AX=FFB4h
--------U-16FFBC-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - RESTORE ORIGINAL SCREEN???
AX = FFBCh
--------U-16FFBD-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ??? DATABASE INDEXING MESSAGES
AX = FFBDh
???
Return: ???
--------U-16FFBE-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFBEh
???
Return: ???
Note: available only when popped up
--------U-16FFBF-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFBFh
BX = DOS file handle to write on
???
Return: ???
Note: available only when popped up
--------U-16FFC0-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFC0h
???
Return: AX = 0000h if successful
AX = FFFFh on error
Note: available only when popped up
--------U-16FFC1-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFC1h
BL = ???
ES:DI -> data structure (see #0547)
???
Return: AX = ???
Note: available only when popped up
SeeAlso: AX=FFC2h,AX=FFC3h
Format of PC Tools DESKTOP data structure:
Offset Size Description (Table 0547)
00h WORD ???
02h WORD ???
04h WORD ???
06h WORD ???
08h WORD ???
0Ah BYTE ???
0Bh BYTE ??? (zero/nonzero)
---v7.1---
0Ch WORD ???
0Eh BYTE ???
0Fh WORD ???
11h WORD ???
???
--------U-16FFC2-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFC2h
BL = ???
ES:DI -> data structure (see #0547)
???
Return: AH = ???
CX = ???
DH = ???
DL = ???
Note: available only when popped up
SeeAlso: AX=FFC1h,AX=FFC3h
--------U-16FFC3-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFC3h
BL = ???
ES:DI -> data structure (see #0547)
???
Return: AH = ???
CX = ???
DH = ???
DL = ???
Note: available only when popped up
SeeAlso: AX=FFC1h,AX=FFC2h
--------U-16FFC4-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
AX = FFC4h
Return: AL = ???
BX = segment of scratch space???
CX = segment of stored screen data (section covered by window???)
DX = segment of window parameters for ???
ES:BP -> ???
Note: available only when popped up in versions prior to 6.0
--------U-16FFC5-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK WHETHER DESKTOP LOADED RESIDENT
AX = FFC5h
Return: BL = Desktop state
00h if nonresident
nonzero if loaded resident
Note: available only when popped up; should call AX=FFEFh first to ensure
that DESKTOP is active
SeeAlso: AX=FFEFh,AX=FFF3h
--------U-16FFC6-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
AX = FFC6h
BL = new value for ???
--------U-16FFC7-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - REMOVE WINDOW
AX = FFC7h
???
Return: ???
--------U-16FFC8-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
AX = FFC8h
Return: DS:SI -> ???
Note: valid only while popped up
--------U-16FFC9-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY DATA TO CLIPBOARD
AX = FFC9h
DS:SI -> characters to store in clipboard
CX = size in bytes
Return: CF set on error
Notes: available only when popped up
while copying, bytes of 00h and 0Ah are skipped
--------U-16FFCA-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
AX = FFCAh
DX = ???
Return: AX destroyed
Note: available only when popped up
--------U-16FFCB-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - SELECT WINDOW PARAMETERS???
AX = FFCBh
DX = window specifier???
Return: AX destroyed
Note: available only when popped up
SeeAlso: AX=FFB5h
--------U-16FFCC-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY ASCIZ STRING CENTERED IN WINDOW
AX = FFCCh
DS:SI -> ASCIZ string
Return: AX = ???
CX = ???
ES:DI -> address past last character displayed (v5.1/5.5)
-> ??? on menu bar (v6.0)
--------U-16FFCD-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFCDh
DS:DX -> ???
Return: ???
Note: available only when popped up
--------U-16FFCE-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ??? DELAYS
AX = FFCEh
CX = ???
Return: nothing???
--------U-16FFCF-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - CLOSE PRINTER/PRINT FILE
AX = FFCFh
Note: available only when popped up
--------U-16FFD0-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO PRINT???
AX = FFD0h
???
Return: ???
Note: available only when popped up
--------U-16FFD1-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY PRINT OPTIONS MENU
AX = FFD1h
Return: BX = number of copies
DX = destination
00h cancel
01h LPT1
02h LPT2
03h LPT3
04h COM1
05h COM2
06h disk file
Note: available only when popped up
--------U-16FFD2-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFD2h
BX = ???
Return: BL = ???
Note: available only when popped up
--------U-16FFD3-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFD3h
DS:SI -> 92-byte data record for ???
Return: ???
SeeAlso: AX=FED3h
--------U-16FFD4BH3C-------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - CREATE/OPEN/DELETE FILE
AX = FFD4h
BH = 3Ch create file (with no attributes)
3Dh open file
41h delete file
BL = access mode
00h read only
01h write only
02h read/write
DS:SI -> ASCIZ filename
Return: BX = file handle
0000h on error
Note: operation is attempted in (in order) the directory from which the
desktop was started/run???, the directory specified with the
filename, X:\PCTOOLS\, and X:\
--------U-16FFD5-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFD5h
???
Return: ???
Note: available only when popped up
--------U-16FFD6-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFD6h
BX = ???
CX = ???
DX = offset in ???
???
Return: ???
Note: available only when popped up
--------U-16FFD7-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFD7h
???
Return: BL = ???
Note: available only when popped up
--------U-16FFD8-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - SAFE CREATE FILE
AX = FFD8h
DS:BX -> ASCIZ filename
Return: BX = file handle
0000h on error
Note: pops up confirmation menu if file already exists
only available when popped up???
--------U-16FFD9-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
AX = FFD9h
Return: AX = ???
Note: available only when popped up
--------U-16FFDA-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET NAME OF LAST FILE OPENED
AX = FFDAh
DS:SI -> ??? (v5.1/5.5 only)
Return: DS:SI -> filename
--------U-16FFDB-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
AX = FFDBh
BL = ???
Note: available only when popped up
--------U-16FFDC-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - UNHOOK
AX = FFDCh
Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
original values
Index: uninstall;PC Tools DESKTOP
--------U-16FFDDBX0000-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - INSTALLATION CHECK
AX = FFDDh
BX = 0000h
Return: CX = 5555h
DX = 5555h if PCShell installed in resident mode
--------U-16FFDDBX0001-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
AX = FFDDh
BX = 0001h
Return: CF clear if request successful (PCShell will pop up)
CF set on error
SeeAlso: AX=FFDDh/BX=0003h
--------U-16FFDDBX0002-----------------------
INT 16 U - PC Tools v5.1-5.5 PCShell API - GET ???
AX = FFDDh
BX = 0002h
Return: AL =
00h ???
01h ???
Note: PCShell v6.0+ displays the error message "Incorrect PCRUN version",
awaits a keystroke, and aborts the current process
--------U-16FFDDBX0003-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - REQUEST POP-UP
AX = FFDDh
BX = 0003h
SeeAlso: AX=FFDDh/BX=0001h
--------U-16FFDDBX0004-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - GET ???
AX = FFDDh
BX = 0004h
Return: CF clear if successful
DS:SI -> ???
--------U-16FFDDBX0005-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - ???
AX = FFDDh
BX = 0005h
???
Return: ???
Note: resets various variables if certain conditions are met
--------U-16FFDDBX0006-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - ???
AX = FFDDh
BX = 0006h
???
Return: ???
Note: resets various variables if certain conditions are met
--------U-16FFDDBX0007-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - SET ??? FLAG
AX = FFDDh
BX = 0007h
Return: CF clear if successful
SeeAlso: AX=FFDDh/BX=0008h
--------U-16FFDDBX0008-----------------------
INT 16 U - PC Tools v5.1+ PCShell API - CLEAR ??? FLAG
AX = FFDDh
BX = 0008h
Return: CF undefined
SeeAlso: AX=FFDDh/BX=0007h
--------U-16FFDDBX0009-----------------------
INT 16 U - PC Tools v6.0+ PCShell API - GET PCRUN PARAMETERS
AX = FFDDh
BX = 0009h
Return: CF clear if successful
DS:SI -> list of pointers (see #0548)
Format of PC Tools PCShell returned pointer list:
Offset Size Description (Table 0548)
00h WORD offset of WORD containing ???
02h WORD offset of name of program to execute
04h WORD offset of 80-byte buffer for ???
06h WORD offset of buffer for ??? (length in WORD preceding buffer)
08h WORD offset of buffer for ??? (length in WORD preceding buffer)
--------U-16FFDDBX000A-----------------------
INT 16 U - PC Tools v6.0+ PCRUN API - INSTALLATION CHECK
AX = FFDDh
BX = 000Ah
Return: CX = 5555h if running
DX = 5555h
Note: also sets a flag
--------U-16FFDDBX000B-----------------------
INT 16 U - PC Tools v6.0+ PCRUN API - ???
AX = FFDDh
BX = 000Bh
???
Return: CX = 5555h if PCRUN active
DX = 5555h
Note: also clears flag set by AX=FFDDh/BX=000Ah
--------U-16FFDE-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY POPUP MENU
AX = FFDEh
DS:DX -> menu description (must be on a paragraph boundary)
Return: AX = ???
AL seems to be the number of the selected button
Note: available only when popped up
SeeAlso: AX=FFEEh
--------U-16FFDF-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFDFh
???
Return: ???
--------U-16FFE0-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFE0h
CX = ???
DX = ???
Note: available only when popped up
--------U-16FFE1-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - BEEP
AX = FFE1h
--------U-16FFE2-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFE2h
DX = ???
Return: ???
Note: available only when popped up
--------U-16FFE3-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - PRINT CHARACTER
AX = FFE3h
BL = character to print to currently open printer or print file
Return: CF set on error
Note: available only when popped up
SeeAlso: INT 17/AH=00h
--------U-16FFE4-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFE4h
DX = segment of ???
Return: ???
Note: available only when popped up
--------U-16FFE5-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - POP UP FILE SELECTION MENU
AX = FFE5h
DS:SI -> ASCIZ wildcard filespec followed by ASCIZ menu title
DX = segment of window parameters???
Return: AX = DOS file handle for file
DS:DX -> filename???
FFFFh if function cancelled by user
Note: available only when popped up
SeeAlso: AX=FFDAh
--------U-16FFE6-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - CHECK FOR AND GET KEYSTROKE
AX = FFE6h
Return: AX = 0000h if no key available
else BIOS keycode
Notes: available only when popped up
invokes INT 28 idle interrupt before checking for key
--------U-16FFE7-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFE7h
BX = segment of ???
Return: ???
Note: available only when popped up
--------U-16FFE8-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY NUMBER
AX = FFE8h
CX = number
DH = attribute
DS:SI -> destination for ASCII number
Return: DS:SI buffer filled in with alternating characters and attributes
--------U-16FFE9-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET FILE LIST???
AX = FFE9h
Return: BX = segment of file/directory list (14 bytes per file, NUL-padded)
Note: available only when popped up
--------U-16FFEA-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY COUNTED STRING
AX = FFEAh
DS:SI -> counted string (count byte followed by string)
Return: ???
Note: available only when popped up
--------U-16FFEB-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFEBh
???
Return: ???
--------U-16FFEC-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET KEY
AX = FFECh
DS:SI -> FAR routine to ???
BX = ???
???
Return: AX = keystroke
FFFFh if F10 pressed to go to menu
Notes: available only when popped up
invokes INT 28 while waiting for keystroke
F10 is hotkey to Desktop menu
Index: hotkeys;PC Tools DESKTOP
--------U-16FFED-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET ???
AX = FFEDh
Return: AX = ???
Note: available only when popped up
--------U-16FFEE-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE PULLDOWN MENUS
AX = FFEEh
DS:SI -> pulldown menu system description (see #0549)
Return: AX destroyed
Notes: available only when popped up
if the accessory does not need any menu items of its own, it should
call AX=FFFAh instead
SeeAlso: AX=FFF7h,AX=FFFAh
Format of PC Tools DESKTOP pulldown menu system description:
Offset Size Description (Table 0549)
00h WORD offset of menu bar contents (counted string)
02h WORD number of items on menu bar
04h 10 BYTEs scan codes for hotkeying to each of up to ten menu items
0Eh 10 BYTEs which character to highlight in each menu item (01h=first)
18h WORD offset of first menu definition (see #0550)
1Ah WORD offset of second menu definition
...
Format of PC Tools DESKTOP menu definition:
Offset Size Description (Table 0550)
00h WORD offset of menu contents (see #0551)
02h WORD number of entries in menu
04h for each entry:
Offset Size Description
00h BYTE scancode of Alt-key to invoke entry
01h BYTE character to highlight (01h=first, etc)
02h WORD offset of FAR routine to handle selection
Format of PC Tools DESKTOP menu contents:
Offset Size Description (Table 0551)
00h BYTE number of lines in menu
01h BYTE width of menu
02h N BYTEs counted strings, one for each line in menu
--------U-16FFEFCX0000-----------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - INSTALLATION CHECK
AX = FFEFh
CX = 0000h
Return: CX = ABCDh if PC Tools DESKTOP.EXE installed
BX = segment of resident portion
AX = ??? (v5.1/5.5 only)
SeeAlso: AX=FEEFh,AX=FFC5h,AX=FFF3h
--------U-16FFF0-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - SET ???
AX = FFF0h
DX = ???
Return: AX destroyed
Note: available only when popped up
--------U-16FFF1BX0000-----------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ALTERNATE INSTALLATION CHECK
AX = FFF1h
BX = 0000h leave ??? flag as is
nonzero set ??? flag
Return: CX = 5555h if installed
DX = 5555h
--------U-16FFF2-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DISPLAY HELP LINE
AX = FFF2h
DS:SI -> ASCIZ function key label string (each label preceded by '[')
or help text
Return: AX destroyed
Notes: available only when popped up
if the specified string does not start with '[', it is displayed
centered on the bottom line, else the function key labels are shown
--------U-16FFF3-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - PREPARE TO UNLOAD RESIDENT DESKTOP
AX = FFF3h
Note: releases any EMS being used; restores video mode, page, and cursor
shape; and restores interrupt vectors
SeeAlso: AX=FFC5h,AX=FFEFh
Index: uninstall;PC Tools DESKTOP
--------U-16FFF4-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - ???
AX = FFF4h
???
Return: ???
Note: available only when popped up
SeeAlso: AX=FFF6h
--------U-16FFF5-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET SCREEN ATTRIBUTE ARRAY
AX = FFF5h
Return: ES:BX -> screen attributes data structure (see #0552)
AL = ??? (v6.0+)
Format of PC Tools DESKTOP attribute data structure:
Offset Size Description (Table 0552)
-1 BYTE attribute for desktop background
00h BYTE attribute for normal characters on desktop menu
01h BYTE attribute for highlighted characters on desktop menu
02h 5 BYTEs ???
07h BYTE attribute for dialog boxes
08h 15 BYTEs ???
17h BYTE attribute for message boxes
--------U-16FFF6-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - INVOKE NOTEPAD EDITOR
AX = FFF6h
DS = segment of editor buffer structure (see #0553)
BX = ???
DX = segment of window parameters structure (see #0546)
Return: ???
Note: available only when popped up
SeeAlso: AX=FFF4h
Format of PC Tools DESKTOP editor buffer structure:
Offset Size Description (Table 0553)
00h WORD offset of current cursor position in buffer segment
02h 2 BYTEs ???
04h WORD offset of beginning of file data in buffer segment
06h 10 BYTEs ???
10h N BYTEs ASCIZ name of file being edited
--------U-16FFF7-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS MENU BAR ENTRY???
AX = FFF7h
DS:SI -> ???
???
Return: ???
Notes: available only when popped up
performs input processing on the menu bar set up with AX=FFEEh
SeeAlso: AX=FFEEh,AX=FFFBh
--------U-16FFF8-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DRAW EMPTY WINDOW
AX = FFF8h
DS:0000h -> window parameters structure (see #0546)
DS:BX -> DWORD to store address of ??? on screen
Return: ???
--------U-16FFF9-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE SCREEN REFRESH ROUTINE
AX = FFF9h
ES:BX -> FAR routine to redisplay the utility's window
Note: available only when popped up
--------U-16FFFA-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - DEFINE STANDARD PULLDOWN MENUS
AX = FFFAh
Notes: available only when popped up
adds the "Window" option to the "Desktop" option which is the only one
available when no accessories are active. Unlike AX=FFEEh, no
additional menu items are added between "Desktop" and "Window"
SeeAlso: AX=FFEEh,AX=FFFBh
--------U-16FFFB-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - PROCESS STANDARD MENU BAR
AX = FFFBh
Return: ???
Notes: available only when popped up
performs input processing on the standard menu bar set up with AX=FFFAh
SeeAlso: AX=FFF7h
--------U-16FFFC-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - GET HOTKEYS AND KEYBOARD VECTOR
AX = FFFCh
Return: ES:BX -> hotkey table (see #0554)
DS:DX = original INT 09 vector
Format of PC Tools DESKTOP hotkey table:
Offset Size Description (Table 0554)
00h 2 BYTEs scancode/shift state for desktop hotkey
02h 2 BYTEs scancode/shift state for clipboard paste key
04h 2 BYTEs scancode/shift state for clipboard copy key
06h 2 BYTEs scancode/shift state for screen autodial key
--------U-16FFFD-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - COPY ???
AX = FFFDh
Return: AX destroyed
Note: copies 4000 bytes from ??? to ??? under certain circumstances
SeeAlso: AX=FF91h,AX=FF92h
--------M-16FFFE-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - SHOW MOUSE CURSOR
AX = FFFEh
SeeAlso: AX=FFFFh,INT 33/AX=0001h
--------M-16FFFF-----------------------------
INT 16 U - PC Tools v5.1-8.0 DESKTOP - HIDE MOUSE CURSOR
AX = FFFFh
SeeAlso: AX=FFFEh,INT 33/AX=0002h
--------P-17----DX0ABC-----------------------
INT 17 - PRINTER - LPTx v5.x INSTALLATION CHECK
DX = 0ABCh
Return: AX = AAAAh
DX = BAAAh
ES = code segment of resident portion
--------P-17----DX0B90-----------------------
INT 17 - PRINTER - LPTx v6.x INSTALLATION CHECK
DX = 0B90h
Return: DX = ABBBh
ES = code segment of resident portion
--------P-17----DX0B91-----------------------
INT 17 - PRINTER - LPTx v7.x INSTALLATION CHECK
DX = 0B91h
Return: DX = ABCBh
ES = code segment of resident portion
--------P-17----DX0F5F-----------------------
INT 17 - PRINTER - LPTx v4.x INSTALLATION CHECK
DX = 0F5Fh
Return: AX = AAAAh
DX = F555h
ES = code segment of resident portion
--------B-1700-------------------------------
INT 17 - PRINTER - WRITE CHARACTER
AH = 00h
AL = character to write
DX = printer number (00h-02h)
Return: AH = printer status (see #0555)
SeeAlso: AH=02h,AH=84h"AX",AX=6F02h,AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
SeeAlso: INT 4B/AH=00h,PORT 0278h"PRINTER",MEM 0040h:0008h,MEM 0040h:0078h
Bitfields for printer status:
Bit(s) Description (Table 0555)
7 not busy
6 acknowledge
5 out of paper
4 selected
3 I/O error
2-1 unused
0 timeout
Note: for Tandy 2000, bit 7 indicates printer-busy when set rather than clear
--------B-1701-------------------------------
INT 17 - PRINTER - INITIALIZE PORT
AH = 01h
DX = printer number (00h-02h)
Return: AH = printer status (see #0555)
Note: some printers report that they are ready immediately after
initialization when they actually are not; a more reliable result may
be obtained by calling AH=02h after a brief delay
SeeAlso: AH=02h,AH=FFh"PC-MOS",INT 1A/AH=10h"NEC",INT 4B/AH=01h
--------B-1702-------------------------------
INT 17 - PRINTER - GET STATUS
AH = 02h
DX = printer number (00h-02h)
Return: AH = printer status (see #0555)
Note: PRINTFIX from MS-DOS 5.0 hooks this function and always returns AH=90h
SeeAlso: AH=01h,AH=F2h,INT 1A/AH=12h"NEC",INT 4B/AH=02h
--------P-1702--DX0000-----------------------
INT 17 - INSET - INSTALLATION CHECK
AH = 02h
DX = 0000h
CX = 07C3h (1987d)
Return: CX = 07C2h (1986d) if installed
Program: INSET is a text/graphics integration program
--------b-170200BX5050-----------------------
INT 17 - Enhanced Parallel Port (EPP) BIOS - INSTALLATION CHECK
AX = 0200h
BX = 5050h ('PP')
CH = 45h ('E')
DX = printer port number (00h-02h)
Return: AH = status
00h if installed and port is an enhanced parallel port
CX:AL = installed BIOS type
5050h:45h ('PPE') if EPP v3.0+ BIOS installed
4550h:50h ('EPP') if EPP v1.0 BIOS installed
---EPP 1.0, 3.0---
DX:BX -> far entry point to Advanced BIOS (see #0556)
---EPP Revision 7---
DX = EPP I/O base address
ES:BX -> far entry point to EPP BIOS (see #0556,#0557)
03h if installed but specified port not supported
CF set
Program: The Enhanced Parallel Port BIOS provides support for parallel
port peripherals using the enhanced modes of the IEEE 1284.
SeeAlso: AH=E0h,MEM 0040h:0008h,MEM 0040h:00DCh
(Table 0556)
Call EPP BIOS entry point with:
DL = port number (v1.0,v3.0)
DX = (Revision 7) EPP port I/O base address
AH = function
00h Query Configuration
Return: AH = 00h if successful
AL = IRQ number used by port or FFh if no IRQ
BH = EPP BIOS revision (major in high nybble,
minor in low nybble)
BL = I/O capabilities (see #0559)
ES:DI -> ASCIZ driver information/version text
---v1.0,v3.0---
CX = I/O port base address for parallel port
---Revision 7---
CL = EPP chipset code (see #0560)
CH = hardware manufacturer's product code
01h Set Mode
AL = mode bits (see #0561)
Return: AX,BX destroyed
02h Get Mode
Return: AL = mode bits (see also #0561)
bit 7: EPP port interrupts enabled
AH = 00h
CF clear
BX destroyed
03h Interrupt Control
AL = subfunction
00h enable parallel port interrupts
01h disable parallel port interrupts
Return: AH = status (00h,05h,06h) (see also #0558)
04h EPP Reset
Return: AH = 00h if successful
AL destroyed
05h perform Address-Write/Device-Select I/O cycle
AL = device address
Return: AH = status
AL destroyed
06h perform Address-Read I/O cycle
Return: AL = returned address/device data
AH = status
07h write byte
AL = data byte to write
Return: AH = status
08h output block of data
DS:SI -> block of data to be sent to parallel port
CX = number of bytes to output
Return: AH = status (see #0558)
CX = number of unsent bytes
09h read byte of data
Return: AH = status (see #0558)
AL = byte read from parallel port
0Ah read block of data
ES:DI -> buffer for received data
CX = number of bytes to read from paralle port
Return: AH = status (see #0558)
ES:DI buffer filled if successful
CX = number of bytes not transferred
0Bh Address/Byte-Read
AL = device address
Return: AH = status (see #0558)
AL = byte read if successful
0Ch Address/Byte-Write
AL = device address
DH = data byte (v1.0,v3.0)
CL = data byte (Revision 7)
Return: AH = status (see #0558)
0Dh Address/Block-Read
AL = device address
ES:DI -> buffer for received data
CX = number of bytes to read
Return: AH = status (see #0558)
CX = number of bytes NOT transferred
0Eh Address/Block-Write
AL = device address
ES:DI -> data to be sent (v1.0,v3.0)
DS:SI -> data to be send (Revision 7)
CX = number of bytes to write
Return: AH = status (see #0558)
CX = number of bytes NOT transferred
0Fh Lock Port
AL = multiplexor port number
bits 7-4: daisy chain port number (1-8)
bits 3-0: mux device port number (1-8, 0 if no mux)
Return: AH = status (00h,03h,05h) (see #0558)
10h Unlock Port
AL = multiplexor port number
bits 7-4: daisy chain port number (1-8)
bits 3-0: mux device port number (1-8, 0 if no mux)
Return: AH = status (00h,03h,05h) (see #0558)
11h Device Interrupt
BL = multiplexor port number
00h if no multiplexor, else mux device port (01h-08h)
AL = subfunction
00h disable device interrupts
01h enable device interrupt
ES:DI -> interrupt event handler
Return: AH = status (00h,03h,05h,06h) (see #0558)
Note: AMI BIOS v1.00.12.AX1T ignores the multiplexor port
number; it also always sets INT 0F to the address
specified in ES:DI
12h Real-Time Mode
AL = subfunction
00h check whether any real-time devices present
01h add (advertise) real-time device
02h remove real-time device
Return: AH = status (00h,05h,06h,07h) (see #0558)
AL = real-time devices present? (00h no, 01h yes)
Note: unlike all other functions, this one does not use DL/DX
Return: AH = status (see #0558)
CF clear if successful
CF set on error
BX destroyed
SeeAlso: #0557
(Table 0557)
Call EPP BIOS (Revision 7) entry point multiplexor functions with:
DX = EPP port base I/O address
AH = function
40h Query Mux
Return: AH = status (see #0558)
AL = currently-selected port
CH = status flags
bit 0: channel locked
bit 1: interrupt pending
BH destroyed
Note: the PhoenixBIOS v4.0 documentation lists BL as the
currently-selected port and AL as the status flags
41h Query Device Port
AL = EPP multiplex device port (1-8)
Return: AH = status (see #0558)
CH = status flags (see #0562)
BX = EPP product/device ID (0000h if undefined)
Note: the PhoenixBIOS v4.0 documentation lists AL as the
status flags and CX as the device ID
42h Set Product ID
AL = EPP multiplex device port (1-8)
CX = EPP product ID
Return: AH = status (see #0558)
BX destroyed
50h Query Daisy Chain
AL = EPP multiplexor device port (1-8)
Return: AH = status (see #0558)
CH = status flags
bit 0: channel locked
bit 1: interrupt pending
BL = currently-selected device
BH = EPP daisy chain revision (high nybble = major)
CL = daisy-chain depth (00h if no daisy chain)
ES:DI -> ASCIZ driver vendor identification string
Note: the PhoenixBIOS v4.0 documentation lists AH=51h as
"Query Daisy Chain" and BL as the multiplexor port;
it also lists AL as status flags on return
51h Rescan Daisy Chain (dynamically reassign port numbers)
AL = EPP multiplexor device port (1-8)
Return: AH = status (see #0558)
BX destroyed
Note: the PhoenixBIOS v4.0 documentation lists AH=50h as
"Rescan Daisy Chain" and BL as the multiplexor port
Notes: these functions are only valid if a port multiplexor or daisy chain
is present
PhoenixBIOS 4.0 documents function 50h as "Rescan" and 51h as
"Query Daisy Chain"
SeeAlso: #0556,INT 2D/AL=DCh
(Table 0558)
Values for EPP BIOS function status:
00h successful
02h unsupported command/feature
03h unsupported parallel port
05h unsupported in current mode
06h invalid subfunction
07h already ???
20h multiplexor not present (AMI)
40h multiplexor not present
41h multiplexor currently locked
80h I/O timeout
FFh invalid/unsupported function
SeeAlso: #0556,#0557
Bitfields for EPP (v3.0, Revision 7) I/O capabilities:
Bit(s) Description (Table 0559)
0 multiplexor present
1 PS/2 bi-directional capable
2 daisy chain present
3 ECP capable
4 EPP software emulation supported
5 EPP capable
6 fast Centronics supported
7 standard EPP I/O map
SeeAlso: #0556
(Table 0560)
Values for EPP (Revision 7) chipset code:
00h Intel SL
01h FarPoint Communications
02h SMC
03h Chips&Technologies
04h Western Digital
05h National Semiconductor
SeeAlso: #0556
Bitfields for EPP BIOS mode bits:
Bit(s) Description (Table 0561)
0 set compatibility mode
1 set bi-directional mode
2 set EPP mode
---Revision 7,v3.0---
3 set ECP mode
4 set EPP software emulation
5 set fast Centronics mode
6-7 reserved (0)
SeeAlso: #0556,#M053
Bitfields for EPP BIOS multiplex status flags:
Bit(s) Description (Table 0562)
0 port is selected
1 port is locked
2 interrupts are enabled
3 interrupt pending
SeeAlso: #0557
--------P-1703-------------------------------
INT 17 U - Emulaser ELTSR - INSTALL INTERRUPT HANDLERS
AH = 03h
Return: BX = ???
CX = ???
Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
Vertisoft Systems, Inc.
SeeAlso: AH=04h"Emulaser",AH=0Eh,INT 1A/AH=E5h
----------1703-------------------------------
INT 17 - IBM SurePath BIOS - Officially "Private" Function
AH = 03h
SeeAlso: AH=04h"IBM",AH=05h"IBM"
--------c-1703-------------------------------
INT 17 - PC-MOS/386 v5.01 - PRINT SPOOLER - PRINT STRING
AH = 03h
DX = printer port number
CX = number of characters to print
DS:SI -> string
Return: AH = printer status (see #0555)
CX = number of characters actually printed
Desc: send an entire string of chars to the print spooler with a single call
Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
operating system by The Software Link, Inc.
SeeAlso: AH=00h,AH=01h,AH=02h,AH=FFh"PC-MOS"
--------c-1703--BX5A00-----------------------
INT 17 - DMP Print Spooler v2.03 - INSTALLATION CHECK
AH = 03h
BX = 5A00h
Return: AX = 5ACBh
DI = 0000h
ES = DMP code segment (also data segment)
Program: DMP is a Printer driver/spooler, by DMP (USA), available on the
PCTODAY disk, volume 10, March 1991
--------N-170300-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "socket"
AX = 0300h
CX = type of socket from socket( domain, type, protocol )
DX = local identifier of socket (0 - 31)
Return: AX = 0000h success
CX = segment of 4500 byte transfer buffer
DX = offset of 4500 byte transfer buffer
= FFFFH failure
CX = error code
ENFILE 23
Program: DOSISODE is the ISO developers environment which has been ported to
DOS and will run with the Waterloo TCP turned into a resident TSR.
Currently it allows a maximum of 6 open sockets.
Note: this function will initialize the interface the first time it is
called
SeeAlso: AX=0400h"DOSISODE",AX=0600h"DOSISODE",AX=0800h"DOSISODE"
SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
--------P-1704-------------------------------
INT 17 U - Emulaser ELTSR - BEGIN CAPTURING OUTPUT
AH = 04h
Note: has no effect unless ELTSR is deactivated (see AX=0503h)
SeeAlso: AH=03h"Emulaser",AX=0503h,INT 1A/AH=E5h
----------1704-------------------------------
INT 17 - IBM SurePath BIOS - Officially "Private" Function
AH = 04h
SeeAlso: AH=03h"IBM",AH=05h"IBM"
--------N-170400-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "bind"
AX = 0400h
Note: this function just returns
SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0C00h"DOSISODE"
----------1705-------------------------------
INT 17 - IBM SurePath BIOS - Officially "Private" Function
AH = 05h
SeeAlso: AH=03h"IBM",AH=04h"IBM"
--------P-170500-----------------------------
INT 17 U - Emulaser ELTSR - ???
AX = 0500h
???
Return: AX = unload status (0001h safe to unload, 0002h not safe)
BX = ???
CX = PSP segment of ELTSR
DX = activity flag (0000h disabled, 0001h capturing, 0002h ???printing)
SI = ???
DI = ???
SeeAlso: AH=04h,INT 1A/AH=E5h
--------N-170500-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "connect"
AX = 0500h
SeeAlso: AX=0400h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
--------P-170501-----------------------------
INT 17 U - Emulaser ELTSR - UNHOOK INTERRUPTS
AX = 0501h
Return: (see AX=0500h)
Note: restores interrupt vectors without checking whether they have been
hooked by later programs; should only be called if ELTSR reports
that it is safe to unload
SeeAlso: AH=04h,AX=0500h,AX=0503h,INT 1A/AH=E5h
Index: uninstall;Emulaser ELTSR
--------P-170502-----------------------------
INT 17 U - Emulaser ELTSR - SET ???
AX = 0502h
BL = Emulaser port (31h = LPT1, 32h = LPT2, 33h = LPT3)
CL = ???
DL = ???
Return: (see AX=0500h)
SeeAlso: AH=04h,AX=0500h,INT 1A/AH=E5h
--------P-170503-----------------------------
INT 17 U - Emulaser ELTSR - DEACTIVATE???
AX = 0503h
Return: (see AX=0500h)
SeeAlso: AH=04h,AX=0500h,AX=0501h,INT 1A/AH=E5h
--------P-1706-------------------------------
INT 17 U - Emulaser ELTSR - ???
AH = 06h
???
Return: ???
SeeAlso: AX=0500h,AX=0503h,AH=07h"ELTSR",INT 1A/AH=E5h
--------N-170600-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "listen"
AX = 0600h
Note: this function just returns
SeeAlso: AX=0300h"DOSISODE",AX=0700h"DOSISODE",AX=0C00h"DOSISODE"
SeeAlso: AX=0E00h"DOSISODE"
--------P-1707-------------------------------
INT 17 U - Emulaser ELTSR - OPEN CAPTURE FILE
AH = 07h
ES:DX -> ASCIZ filename to be opened
Return: ???
Note: new output will be appended to the specified file
SeeAlso: AH=08h,INT 1A/AH=E5h
--------N-170700-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "accept"
AX = 0700h
Note: this function just returns
SeeAlso: AX=0600h"DOSISODE",AX=0800h"DOSISODE",AX=0C00h"DOSISODE"
--------P-1708-------------------------------
INT 17 U - Emulaser ELTSR - CLOSE CAPTURE FILE
AH = 08h
???
Return: ???
Desc: close the file previously opened by function 07h
SeeAlso: AH=07h,INT 1A/AH=E5h
--------N-170800-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "recvfrom"
AX = 0800h
SeeAlso: AX=0500h"DOSISODE",AX=0900h"DOSISODE",AX=0A00h"DOSISODE"
--------P-1709-------------------------------
INT 17 U - Emulaser ELTSR - PRINT CAPTURE FILE???
AH = 09h
BX = ???
CX = ???
DX = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
Return: AX = status
00h successful
FFh failed
Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
Vertisoft Systems, Inc.
Note: this function calls through to INT 1A/AX=E401h, and thus requires
that either ELSPL or Disk Spool II be installed
SeeAlso: AH=0Ah,INT 1A/AX=E401h,INT 1A/AH=E5h
--------N-170900-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "sendto"
AX = 0900h
SeeAlso: AX=0700h"DOSISODE",AX=0800h"DOSISODE",AX=0A00h"DOSISODE"
--------P-170A-------------------------------
INT 17 U - Emulaser ELTSR - SET ??? FILENAME
AH = 0Ah
ES:BX -> ??? buffer
CX = length of ??? buffer
Return: ???
Note: copies the specified name into the buffer passed to ELSPL as the
filename by AH=09h
SeeAlso: AH=09h,INT 1A/AH=E5h
--------N-170A00-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "select"
AX = 0A00h
SeeAlso: AX=0800h"DOSISODE",AX=0B00h"DOSISODE",AX=0E00h"DOSISODE"
--------P-170B-------------------------------
INT 17 U - Emulaser ELTSR - GET ???
AH = 0Bh
Return: AX:BX -> ???
SeeAlso: AH=0Ah,INT 1A/AH=E5h
----------170B-------------------------------
INT 17 - IBM SurePath BIOS - Officially "Private" Function
AH = 0Bh
SeeAlso: AH=03h"IBM",AH=0Ch"IBM"
--------N-170B00-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "ioctl"
AX = 0B00h
DX = local identifier of socket (0 - 31)
Note: this function sets the socket into non_block mode
SeeAlso: AX=0A00h"DOSISODE",AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
--------P-170C-------------------------------
INT 17 U - Emulaser ELTSR - SET ??? FLAG
AH = 0Ch
???
Return: ???
SeeAlso: AH=0Bh,INT 1A/AH=E5h
----------170C-------------------------------
INT 17 - IBM SurePath BIOS - Officially "Private" Function
AH = 0Ch
SeeAlso: AH=0Bh"IBM",AH=0Dh"IBM"
--------N-170C00-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "close"
AX = 0C00h
SeeAlso: AX=0300h"DOSISODE",AX=0500h"DOSISODE",AX=0D00h"DOSISODE"
--------P-170D-------------------------------
INT 17 U - Emulaser ELTSR - GET TRUE ScrlLk STATE
AH = 0Dh
Return: AX = state (0000h off, 0010h on)
Desc: determine the actual state of ScrlLk even when Emulaser is controlling
the ScrlLk light as its activity indicator
SeeAlso: AH=0Ch,INT 16/AH=02h,INT 1A/AH=E5h
----------170D-------------------------------
INT 17 - IBM SurePath BIOS - Officially "Private" Function
AH = 0Dh
SeeAlso: AH=0Ch"IBM",AH=0Eh"IBM"
--------N-170D00-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - "shutdown" - SHUTDOWN INTERFACE
AX = 0D00h
Note: this function is used to shutdown the interface
SeeAlso: AX=0C00h"DOSISODE",AX=0E00h"DOSISODE"
--------P-170E-------------------------------
INT 17 U - Emulaser ELTSR - BACKGROUND PROCESSING
AH = 0Eh
Program: ELTSR is the resident portion of the Emulaser PostScript emulator by
Vertisoft Systems, Inc.
Note: this function is called by ELTSR on every INT 08 to allow data to be
processed in the background, but may also be called by applications
to give Emulaser additional CPU time
SeeAlso: AH=0Dh,INT 1A/AH=E5h
----------170E-------------------------------
INT 17 - IBM SurePath BIOS - Officially "Private" Function
AH = 0Eh
SeeAlso: AH=03h"IBM",AH=0Dh"IBM",AH=80h"IBM"
--------N-170E00-----------------------------
INT 17 - DOSISODE to WATTCP TSR Interface - INSTALLATION CHECK
AX = 0E00h
Return: CX = 1234h if installed
Program: DOSISODE is the ISO developers environment which has been ported to
DOS and will run with the Waterloo TCP turned into a resident TSR.
Currently it allows a maximum of 6 open sockets.
Note: this function is used to check if the interface is loaded
SeeAlso: AX=0300h"DOSISODE",AX=0A00h"DOSISODE"
--------P-172000-----------------------------
INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - INSTALLATION CHECK
AX = 2000h
BL = printer number???
Return: AX = status (see #0563)
BX = driver version number (BH=major,BL=minor)
CH = ??? (00h)
CL = ???
DX = ??? (0100h)
Note: also enables the remaining printer driver functions (2001h-2007h)
SeeAlso: AX=2001h,AX=2002h,AX=2003h,AX=2004h,AX=2005h,AX=2006h,AX=2007h
(Table 0563)
Values for PC Paint function status:
0000h successful
0001h invalid printer???
0002h ???
0003h invalid subfunction
0005h driver disabled, must call function 00h first
0009h unknown printer error
000Bh printer not selected
000Ch printer out of paper
000Eh error while writing to serial printer
000Fh ???
0010h invalid function number
0011h value out of range
--------P-172001-----------------------------
INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - SET ??? FLAG
AX = 2001h
BL = printer number???
Return: AX = status (see #0563)
--------P-172002-----------------------------
INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET INFORMATION
AX = 2002h
BL = printer number???
CL = desired information
00h printer type
Return: ES:DI -> ASCIZ printer name
01h paper size
DX = size index
Return: ES:DI -> ASCIZ paper size description
02h ???
Return: BX = ???
03h printer information???
DX = ???
ES:BX -> buffer for ??? (min 134 bytes)
Return: AX = status (see #0563)
SeeAlso: AX=2000h,AX=2004h
--------P-172003-----------------------------
INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ???
AX = 2003h
ES:BX -> ???
Return: AX = status (see #0563)
SeeAlso: AX=2000h,AX=2004h
--------P-172004-----------------------------
INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - GET ???
AX = 2004h
BL = printer number???
Return: AX = status (see #0563)
ES:DI -> ???
SeeAlso: AX=2000h,AX=2003h
--------P-172005-----------------------------
INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE PRINTER TO NEXT PAGE
AX = 2005h
BL = printer number???
Return: AX = status (see #0563)
Note: this function also clears the flag set by AX=2001h
SeeAlso: AX=2000h,AX=2001h,AX=2006h
--------P-172006-----------------------------
INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - ADVANCE TO NEXT PAGE & SHUT DOWN
AX = 2006h
BL = printer number???
Return: AX = status (see #0563)
Note: this function also clears the flag set by AX=2001h and disables
functions other than AX=2000h
SeeAlso: AX=2000h,AX=2001h,AX=2005h
--------P-172007-----------------------------
INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER - UNIMPLEMENTED
AX = 2007h
Return: AX unchanged
SeeAlso: AX=2000h
--------N-172400-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - ENABLE/DISABLE API FUNCTIONS
AX = 2400h
DL = new state
00h disabled
01h enabled
Return: DL = 24h if installed
DH = minor version number
CX = network address of this machine
AL = status (see #0564)
SeeAlso: AX=2403h,INT 16/AX=4500h
(Table 0564)
Values for NET.24 function status:
00h successful
01h timeout
02h header error
03h data error
04h busy
05h invalid parameters
--------N-172401-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, NO HANDSHAKE
AX = 2401h
BL = timeout in clock ticks
Return: AL = status (see #0564)
DX:BX -> receive buffer
SeeAlso: AX=2402h,AX=2404h,AX=2408h
--------N-172402-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT BLOCK, NO HANDSHAKE
AX = 2402h
transmit buffer filled (see AX=2403h)
Return: AL = status (see #0564)
SeeAlso: AX=2401h,AX=2403h,AX=2404h,AX=2409h
--------N-172403-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - GET STATUS AND TRANSMISSION BUFFER
AX = 2403h
Return: AL = status (see #0564)
CX = number of characters in receive ring buffer
DX:BX -> transmit buffer
SeeAlso: AX=2400h,AX=2402h
--------N-172404-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - SEND ACK BLOCK
AX = 2404h
BX = target address
Return: AL = status (see #0564)
SeeAlso: AX=2402h,AX=2405h
--------N-172405-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - SEND NAK BLOCK
AX = 2405h
BX = target address
Return: AL = status (see #0564)
SeeAlso: AX=2402h,AX=2404h
--------N-172406-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED RECEIVE
AX = 2406h
Return: AL = status (see #0564)
SeeAlso: AX=2407h,AX=240Ah
--------N-172407-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE CHARACTER FROM REMOTE
AX = 2407h
Return: AL = status (see also #0564)
06h end of data
DL = received character
SeeAlso: AX=2406h
--------N-172408-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - RECEIVE BLOCK, WITH HANDSHAKE
AX = 2408h
Return: AL = status (see also #0564)
06h end of data
CX = number of bytes in receive buffer
DX:SI -> receive buffer
SeeAlso: AX=2401h,AX=2405h,AX=2409h
--------N-172409-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT COMMAND, WITH HANDSHAKE
AX = 2409h
BX = target address
CX = number of data bytes
DL = command code to send
DS:SI -> data bytes for command
Return: AL = status (see also #0564)
03h no response
06h remote currently unable to perform command
SeeAlso: AX=2405h,AX=2408h
--------N-17240A-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - PREPARE CHARACTER-ORIENTED TRANSMIT
AX = 240Ah
Return: AL = status (see #0564)
SeeAlso: AX=2406h,AX=240Bh,AX=240Ch
--------N-17240B-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - TRANSMIT SINGLE CHARACTER TO REMOTE
AX = 240Bh
DL = character to send
Return: AL = status (see also AX=2400h)
03h transmission error
06h write error
SeeAlso: AX=2407h,AX=240Ah,AX=240Ch
--------N-17240C-----------------------------
INT 17 - Shamrock Software NET.24 v3.11+ - END CHARACTER-ORIENTED TRANSMIT
AX = 240Ch
Return: AL = status (see also AX=2400h)
03h transmission error
06h remote breaks connection
SeeAlso: AX=240Ah,AX=240Bh
--------J-175000-----------------------------
INT 17 - AX (Japanese AT) PRINTER - SET PRINTER COUNTRY CODE
AX = 5000h
BX = country code
0001h USA (English), 0051h Japan
Return: AL = status
00h successful
01h bad country code
02h other error
SeeAlso: AX=5001h,AH=51h,INT 10/AX=5000h,INT 16/AX=5000h
--------J-175001-----------------------------
INT 17 - AX (Japanese AT) PRINTER - GET PRINTER COUNTRY CODE
AX = 5001h
Return: AL = status
00h successful
BX = country code
02h error
SeeAlso: AX=5000h,AH=51h,INT 10/AX=5001h,INT 16/AX=5001h
--------J-1751-------------------------------
INT 17 - AX (Japanese AT) PRINTER - JIS to Shift-JIS CONVERSION
AH = 51h
DX = 2-byte JIS code
Return: DX = shift-JIS value or 0000h on error
Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
characters to Shift-JIS characters, and the other performs the
opposite conversion
SeeAlso: AX=5000h,AH=52h
--------J-1752-------------------------------
INT 17 - AX (Japanese AT) PRINTER - Shift-JIS to JIS CONVERSION
AH = 52h
DX = 2-byte shift-JIS code
Return: DX = JIS code or 0000h on error
Note: one of AH=51h and AH=52h converts from JIS (Japanese Industry Standard)
characters to Shift-JIS characters, and the other performs the
opposite conversion
SeeAlso: AH=51h
--------V-1760-------------------------------
INT 17 - FLASHUP.COM - INSTALLATION CHECK
AH = 60h
Return: AL = 60h
DX = CS of resident code
Notes: FLASHUP.COM is part of Flash-Up Windows by The Software Bottling Co.
FLASHUP also hooks INT 10 and receives commands via INT 10/AH=09h,0Ah
consisting of an 80h followed by the actual command
SeeAlso: INT 10/AH=09h,INT 10/AH=0Ah
--------V-1761-------------------------------
INT 17 - SPEEDSCR.COM - INSTALLATION CHECK
AH = 61h
Return: AL = 61h
DX = CS of resident code
Note: SPEEDSCR.COM is by The Software Bottling Co.
--------P-1762-------------------------------
INT 17 U - T2PS v1.0 - UNINSTALL
AH = 62h
Return: nothing
SeeAlso: AH=63h,AH=64h,INT 05/AX=554Eh
--------P-1763-------------------------------
INT 17 U - T2PS v1.0 - SET PARAMETERS
AH = 63h
ES:SI -> settings (see #0565)
Program: T2PS is a shareware ASCII-to-PostScript converter by A.N.D.
Technologies
SeeAlso: AH=62h,AH=64h,INT 05/AX=4E57h
Format of T2PS settings:
Offset Size Description (Table 0565)
00h WORD LPT port number (0=LPT1, etc.)
02h WORD page heigh in points
04h WORD page width in points
06h WORD top margin in points
08h WORD bottom margin in points
0Ah WORD left margin in points
0Ch WORD right margin in points
0Eh WORD font size in points
10h WORD tab size
12h WORD timeout in clock ticks
--------P-1764-------------------------------
INT 17 U - T2PS v1.0 - GET PARAMETERS
AH = 64h
ES:SI -> buffer for settings (see #0565)
Return: ES:SI buffer filled
SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
--------b-176F00BX0000-----------------------
INT 17 - HP Vectra - EXTENDED BIOS - "F17_INQUIRE" - INSTALLATION CHECK
AX = 6F00h
BX = 0000h
Return: BX = 4850h ("HP") if HP Extended BIOS printer extensions available
SeeAlso: AX=6F02h,INT 14/AX=6F00h,INT 10/AX=6F00h,INT 14/AX=6F00h
SeeAlso: INT 33/AX=6F00h,INT 6F/AH=00h"HP Vectra"
--------b-176F02-----------------------------
INT 17 - HP Vectra - EXTENDED BIOS - "F17_PUT_BUFFER" - PRINT BUFFER
AX = 6F02h
CX = size of buffer in bytes
DX = port number (0-3)
ES:DI -> buffer containing characters to be printed
Return: AH = printer status (see #0555)
CX = number of bytes successfully printed
---on error (AH bit 0 set)---
ES:DI -> next byte to be sent
---if successful---
ES:DI unchanged
SeeAlso: AH=00h,AX=6F00h,INT 14/AX=6F02h
----------1780-------------------------------
INT 17 - IBM SurePath BIOS - Officially "Private" Function
AH = 80h
SeeAlso: AH=03h"IBM",AH=0Bh"IBM"
--------N-1781-------------------------------
INT 17 - Alloy NTNX, MW386 - CANCEL JOBS FOR CURRENT USER
AH = 81h
AL = 00h (NTNX compatibility mode)
CL = number of jobs to cancel
Return: AL = status (see #0566)
Note: this function cancels the last CL printouts for the current task
SeeAlso: AH=82h
(Table 0566)
Values for Alloy status:
00h success
01h-7Fh warning
80h general failure
81h host overloaded (NTNX only)
82h module busy (NTNX only)
83h host busy (NTNX only)
84h re-entry flag set
85h invalid request
86h invalid printer
87h invalid process ID
89h access denied
8Ah option not available for given port type
8Bh option not available for given task type
91h printer busy
C2h file not found
C3h path not found
C4h file access failure
--------N-1782-------------------------------
INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
AH = 82h
AL = 00h (NTNX compatibility mode)
Return: AL = status (see #0566)
SeeAlso: AH=81h
--------N-1783-------------------------------
INT 17 - Alloy NTNX, MW386 - SET NUMBER OF COPIES
AH = 83h
AL = mode
00h NTNX compatibility
CL = number of copies (max 99, default 1)
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CX = number of copies
Return: AL = status (see #0566)
Note: in NTNX compatibility mode, this function only affects LPT1
--------N-1784-------------------------------
INT 17 - Alloy NTNX, MW386 - GENERATE PRINT BREAK
AH = 84h
AL = mode
00h NTNX compatibility
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
Note: closes spool file and tells spooler to queue the print job (LPT1 only
under MW386 in NTNX compatibility mode)
--------J-1784-------------------------------
INT 17 - AX (Japanese AT) PRINTER - OUTPUT CHARACTER WITHOUT CONVERSION
AH = 84h
AL = character
DX = printer number
Return: AH = printer status (see #0555)
SeeAlso: AH=00h,AH=85h
--------J-1785-------------------------------
INT 17 - AX (Japanese AT) PRINTER - ENABLE/DISABLE CHARACTER CONVERSION
AH = 85h
AL = new state (00h enabled, 01h disabled)
SeeAlso: AH=84h"AX"
--------N-1787-------------------------------
INT 17 - Alloy NTNX - SET INDOS POINTER
AH = 87h
AL = 00h
CX:BX -> buffer for user-written printer drivers
Return: BX,CX destroyed
Note: must be executed before the printer is enabled
SeeAlso: AH=8Ah
--------N-1788-------------------------------
INT 17 - Alloy NTNX, MW386 - REMOVE PRINTER FROM SPOOLER
AH = 88h
AL = mode
00h NTNX compatibility
DX = NTNX printer number (see #0567)
01h MW386
DX = MW386 printer number
Return: AH = status (see #0566)
Note: removes specified printer from the spooler's list of printers
SeeAlso: AH=89h,AH=8Bh
(Table 0567)
Values for Alloy NTNX printer number:
00h host LPT1
01h host LPT2
02h host LPT3
03h host LPT4
04h host COM1
05h host COM2
06h user's logical COM2
07h user's terminal AUX port
08h user's logical COM1 (MW386 only)
--------N-1789-------------------------------
INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
AH = 89h
AL = mode
00h NTNX compatibility
DX = NTNX printer number (see #0567)
01h MW386
DX = MW386 printer number
Return: AL = status (see #0566)
Note: the specified printer is added to the spooler's list of available
printers
SeeAlso: AH=88h,AH=8Bh
--------N-178A-------------------------------
INT 17 - Alloy NTNX - ACTIVATE USER-WRITTEN PRINTER DRIVER
AH = 8Ah
???
SeeAlso: AH=92h
--------N-178B-------------------------------
INT 17 - Alloy MW386 - GET PHYSICAL DEVICE NUMBER FROM NAME
AH = 8Bh
DS:DX -> ASCIZ printer name
Return: AL = status (see also AH=81h)
00h successful
DX = physical device number
SeeAlso: AH=89h,AH=8Ch,INT 14/AH=20h"Alloy"
--------N-178C-------------------------------
INT 17 - Alloy MW386 - GET DEVICE NAME FROM PHYSICAL DEVICE NUMBER
AH = 8Ch
DX = physical device number
ES:DI -> 17-byte buffer for ASCIZ device name
Return: AL = status (see also AH=81h)
00h successful
ES:DI buffer filled
SeeAlso: AH=88h,AH=8Bh
--------N-178D-------------------------------
INT 17 - Alloy NTNX,MW386 - RESET SPOOLER
AH = 8Dh
AL = 00h
Return: AL = status (see #0566)
Notes: clears all buffers and resets spooler to boot-up values
MW386 supports this function for compatibility only; it is a NOP
--------N-178E-------------------------------
INT 17 - Alloy NTNX - GET INT 28 ENTRY POINT
AH = 8Eh
AL = 00h
Return: CX:BX -> INT 28 entry point
SeeAlso: AH=8Fh
--------N-178F-------------------------------
INT 17 - Alloy NTNX - GET DOS INTERCEPT ENTRY POINT
AH = 8Fh
AL = 00h
Return: CX:BX -> DOS intercept routine
SeeAlso: AH=8Eh
--------N-1790-------------------------------
INT 17 - Alloy NTNX, MW386 - SPOOL FILE BY NAME
AH = 90h
AL = mode
00h NTNX compatibility
DL = printer code (FFh=current) (NTNX, MW386 v1.x only)
DH = number of copies (FFh=current) (NTNX, MW386 v1.x only)
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CX:SI -> ASCIZ pathname
Return: AL = status (see #0566)
Note: in mode 00h, the file is always sent to logical LPT1
SeeAlso: AH=A0h
--------N-1791-------------------------------
INT 17 - Alloy NTNX, MW386 - GET USER NUMBER AND CURRENT PRINTER
AH = 91h
AL = mode
00h NTNX compatibility
Return: CX = user number (00h = host)
DX = currently selected printer number (00h-08h)
01h MW386
Return: CX = user number
DX = physical dev number of currently selected printer
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
Return: CX = user number
DX = physical device number
Return: AL = status (see #0566)
SeeAlso: AH=8Ch
--------N-1792-------------------------------
INT 17 - Alloy NTNX - CHECK PRINTER DRIVER
AH = 92h
AL = 00h
CL = 00h
Return: CL = driver state
01h initialized
80h not initialized
AX = status (see #0566)
SeeAlso: AH=8Ah
--------N-1794-------------------------------
INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
AH = 94h
AL = mode
00h NTNX compatibility
DX = NTNX printer number (see #0567)
01h MW386
DX = MW386 printer number
02h MW386 v2+
BX = logical printer number
DX = MW386 printer number
Return: AL = status (see #0566)
Note: modes 00h and 01h affect only logical LPT1
SeeAlso: AH=8Bh,AH=95h
--------N-1795-------------------------------
INT 17 - Alloy NTNX, MW386 - GET CURRENT PRINTER
AH = 95h
AL = mode
00h NTNX compatibility
Return: DX = NTNX printer number (see #0567)
(FFFFh if current printer not compatible with NTNX)
01h MW386
Return: DX = MW386 printer number
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
Return: DX = MW386 printer number (FFFFh = none)
Return: AL = status (see #0566)
Note: modes 00h and 01h return the printer number of logical LPT1 only
SeeAlso: AH=94h
--------N-1796-------------------------------
INT 17 - Alloy NTNX - SET SERIAL PORT PARAMETERS
AH = 96h
AL = 00h
Note: documentation states that this is a NOP, doing only XOR AX,AX before
returning
SeeAlso: INT 14/AH=24h
--------N-1797-------------------------------
INT 17 - Alloy NTNX, MW386 - SET DATA DRIVEN PRINT BREAK
AH = 97h
AL = mode
00h NTNX compatibility
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CH,CL,DH = three character break sequence
DL = subfunction
00h set break string
else reset break
Return: AL = status (see #0566)
Notes: mode 00h affects only logical LPT1
when the break string is encountered, the spool file will be closed and
queued for printing automatically
the break string is not permanently saved, and will be reset each time
MW386 or the user is rebooted
SeeAlso: AH=9Bh
--------N-1798-------------------------------
INT 17 - Alloy NTNX,MW386 - RESTART PRINTER
AH = 98h
AL = 00h
DL = printer number (FFh=current)
Return: AL = status
00h successful
01h incorrect printer
02h task not found
Note: MW386 supports this function for compatibility only; it is a NOP
--------N-1799-------------------------------
INT 17 - Alloy NTNX, MW386 - GET/SET PRINTER MODE
AH = 99h
AL = mode
00h NTNX compatibility
DL = NTNX printer number (see #0567)
(FFh = task's current logical LPT1)
DH = mode (see #0568)
01h MW386
DX = MW386 printer number
CL = mode (as for DH above)
Return: AL = status (see #0566)
DH = mode (bits 1 and 2 set as above)
DL = printer owner's user number if not spooled
Bitfields for Alloy printer mode:
0 get mode if 1, set mode if 0 (Table 0568)
1 private ("attached")
2 direct instead of spooled
3-7 reserved (0)
--------N-179A-------------------------------
INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
AH = 9Ah
AL = mode
00h NTNX compatibility
DX = NTNX printer number (see #0567)
(FFFFh = current logical LPT1)
01h MW386
DX = MW386 printer number
CL = tab length (00h = no expansion, 01h-63h = spaces per tab)
Return: AL = status (see #0566)
Note: beginning with MW386 v2.0, tab expansion is set on a per-printer basis
rather than a per-user basis; NTNX and MW386 v1.x ignore DX
SeeAlso: AH=A4h
--------N-179B-------------------------------
INT 17 - Alloy NTNX,MW386 - SET PRINT BREAK TIMEOUT
AH = 9Bh
AL = mode
00h NTNX compatibility
CX = timeout value in clock ticks (1/18 sec) (00h = never)
01h MW386
CX = timeout value in seconds (00h = never)
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CX = timeout value in seconds (00h = never)
Return: AL = status (see #0566)
Notes: modes 00h and 01h affect only the current logical LPT1
if no data is sent to a printer for the specified amount of time, the
spool file will be closed and queued for printing automatically
SeeAlso: AH=97h
--------N-17A0-------------------------------
INT 17 - Alloy MW386 - SPOOL COPY OF FILE
AH = A0h
AL = mode
00h NTNX compatibility
DX = ??? (NTNX, MW386 v1.x only)
02h MW386 v2+
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
CX:SI -> ASCIZ pathname
Return: AL = status (see #0566)
Notes: makes a copy of the specified file in the spooler's directory, allowing
the original file to be modified or deleted while the copy is printed
in mode 00h, the file is printed on logical LPT1
SeeAlso: AH=90h
--------N-17A4-------------------------------
INT 17 - Alloy MW386 - ENABLE/DISABLE FORM FEED
AH = A4h
AL = new state
00h form feed after end of print job disabled
01h form feed enabled
Return: AL = status (see #0566)
Note: only affects the current logical LPT1
SeeAlso: AH=9Ah,AH=A6h,INT 7F/AH=05h"NTNX (Host)"
--------N-17A6-------------------------------
INT 17 - Alloy MW386 - ENABLE/DISABLE BANNER PAGE
AH = A6h
AL = new state
00h banner page before print job disabled
01h banner page enabled
Return: AL = status (see #0566)
Note: only affects the current logical LPT1
SeeAlso: AH=A4h
--------N-17A7-------------------------------
INT 17 - Alloy MW386 v2+ - GET/SET SPOOL FLAGS
AH = A7h
AL = spool flags (see #0569)
BX = logical device number
00h-03h = LPT1-LPT4
04h-07h = COM1-COM4
Return: AL = status (see #0566)
Note: the documentation does not state which register contains the result of
a GET
SeeAlso: AH=A4h,AH=A6h
Bitfields for Alloy spool flags:
Bit(s) Description (Table 0569)
0 banner page enabled (see AH=A6h)
1 form feed enabled (see AH=A4h)
2-6 reserved (0)
7 set flags if 1, get flags if 0
--------N-17A8-------------------------------
INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
AH = A8h
CX:SI -> ASCIZ filename without extension (max 8 chars)
Return: AL = status (see #0566)
Note: allows application to specify banner page filename for spool files
collected from the application's printer output
SeeAlso: AH=A9h
--------N-17A9-------------------------------
INT 17 - Alloy MW386 - CHANGE TEMPORARY SPOOL DRIVE
AH = A9h
AL = new spool drive (2=C:,3=D:,etc)
Return: AL = status (see #0566)
Note: does not remove previous spooling directory since jobs may be pending
SeeAlso: AH=A8h
--------N-17AA-------------------------------
INT 17 - Alloy MW386 v2+ - GET REAL-TIME PRINTER STATUS
AH = AAh
AL = mode
00h NTNX
DX = NTNX printer number (see #0567)
01h MW386
DX = MW386 printer number
Return: AH = instantaneous printer status
00h printer ready
01h not ready
12h off line
13h out of paper
14h general device failure
15h device timeout
16h bad device number
--------N-17AF-------------------------------
INT 17 - Alloy MW386 - CHECK SPOOLER
AH = AFh
Return: AX = 55AAh if spooler available
--------c-17C0-------------------------------
INT 17 - PC Magazine PCSpool - GET CONTROL BLOCK ADDRESS
AH = C0h
DX = printer port (0-3)
Return: ES:BX -> control block (see #0570)
SeeAlso: AH=C1h
Format of PCSpool control block:
Offset Size Description (Table 0570)
00h WORD printer number
02h WORD address of printer status port
04h WORD number of first record in queue
06h WORD number of last record in queue
08h DWORD characters already printed
0Ch DWORD number of characters remaining
10h DWORD pointer to dequeue buffer
14h DWORD previous count of characters printed
18h DWORD number of clock ticks taken to print them
1Ch WORD offset of next character to output
1Eh WORD offset of next character to print
20h WORD pointer to spooling queue record
22h BYTE current spooling status
23h BYTE current printer status:
00h OK
01h not ready
02h paused with message
03h paused
04h initializing
FEh non-existent port
FFh not spooled
24h BYTE current control record type
25h WORD observed printer speed
27h WORD characters to print per service
29h BYTE 01h if disk write needed
2Ah BYTE 01h if queued data should be flushed
2Bh BYTE 01h to update cps status
--------c-17C1--------------------------------
INT 17 - PC Magazine PCSpool - BUILD PAUSE CONTROL RECORD
AH = C1h
DX = printer port (0-3)
DS:SI -> ASCIZ string to save for display
Note: flushes pending writes
SeeAlso: AH=C0h,AH=C2h
--------c-17C2-------------------------------
INT 17 - PC Magazine PCSpool - FLUSH PENDING WRITES
AH = C2h
DX = printer port (0-3)
SeeAlso: AH=C3h
--------c-17C3-------------------------------
INT 17 - PC Magazine PCSpool - CANCEL PRINTER QUEUE (FLUSH ALL QUEUED OUTPUT)
AH = C3h
DX = printer port (0-3)
SeeAlso: AH=C2h,AH=C7h
--------c-17C4-------------------------------
INT 17 - PC Magazine PCSpool - QUERY SPOOLER ACTIVE
AH = C4h
Return: DI = B0BFh
SI = segment
--------c-17C5-------------------------------
INT 17 - PC Magazine PCSpool - JOB SKIP PRINTER QUEUE
AH = C5h
DX = printer port (0-3)
Note: cancels up to the pause record
--------c-17C6-------------------------------
INT 17 - PC Magazine PCSpool - CHECK PRINTER QUEUE STATUS
AH = C6h
DX = printer port (0-3)
Return: AX = queue status
0000h printer not active or at pause
0001h printer busy
--------c-17C7-------------------------------
INT 17 - PC Magazine PCSpool - CLOSE QUEUE
AH = C7h
DX = printer port (0-3)
SeeAlso: AH=C3h
--------P-17CD00-----------------------------
INT 17 - INSET - EXECUTE COMMAND STRING
AX = CD00h
DS:DX -> ASCIZ command string (max 80 bytes)
Return: CX = 07C2h (1986d)
Note: user interface menus pop up after last command, unless that command
exits INSET
--------P-17CD01-----------------------------
INT 17 - INSET - GET IMAGE SIZE
AX = CD01h
DS:DX -> ASCIZ name of image file
Return: AX = height in 1/720th inch
BX = width in 1/720th inch
CX = 07C2h (1986d)
--------P-17CD02-----------------------------
INT 17 - INSET - INITIALIZE
AX = CD02h
Return: CX = 07C2h (1986d)
Note: all open files are closed and the printer is reset
SeeAlso: AX=CD04h
--------P-17CD03-----------------------------
INT 17 - INSET - EXECUTE INSET MENU WITHIN OVERRIDE MODE
AX = CD03h
Return: CX = 07C2h (1986d)
--------P-17CD04-----------------------------
INT 17 - INSET - INITIALIZE LINKED MODE
AX = CD04h
ES:SI -> FAR routine for linked mode (see #0571)
Return: CX = 07C2h
SeeAlso: AX=CD02h,AX=CD08h
(Table 0571)
Values INSET linked-mode routine is called with:
AL = function
00h send character to printer
BL = character to send
01h send string to printer
CX = number of bytes to send
DS:DX -> buffer containing data
02h move print head to horizontal starting position of image
Return: AX = status
0000h success
0001h failure
--------P-17CD05-----------------------------
INT 17 - INSET - START MERGING IMAGE INTO TEXT
AX = CD05h
DS:DX -> ASCIZ name of PIX file
CX = left margin of text in 1/720th inch
Return: AH = printer type
00h page-oriented (multiple images may be placed side-by-side)
01h line-oriented (use AX=CD06h for vertical paper movement)
CX = 07C2h (1986d)
SeeAlso: AX=CD07h
--------P-17CD06-----------------------------
INT 17 - INSET - GRAPHICS LINE FEED
AX = CD06h
Return: AH = completion status
00h image complete
01h image incomplete
CX = 07C2h (1986d)
SeeAlso: AX=CD09h
--------P-17CD07-----------------------------
INT 17 - INSET - FLUSH GRAPHICS FROM MERGE BUFFER
AX = CD07h
Return: CX = 07C2h
SeeAlso: AX=CD05h
--------P-17CD08-----------------------------
INT 17 - INSET - CANCEL LINK MODE
AX = CD08h
Return: CX = 07C2h
SeeAlso: AX=CD04h
--------P-17CD09-----------------------------
INT 17 - INSET - ALTER TEXT LINE SPACING
AX = CD09h
CX = line spacing in 1/720th inch
Return: CX = 07C2h
Note: not yet implemented, line spacing is currently fixed at 1/6 inch
SeeAlso: AX=CD06h
--------P-17CD0A-----------------------------
INT 17 - INSET - GET SETUP
AX = CD0Ah
DS:DX -> buffer for IN.SET data
Return: CX = 07C2h
--------P-17CD0B-----------------------------
INT 17 - INSET - START GETTING SCALED IMAGE
AX = CD0Bh
DS:SI -> ASCIZ pathname of .PIX file
BX = number of bitplanes
CX = number of rows in output bitmap
DX = number of columns in output bitmap
Return: AX = status
0000h OK
FFFFh error
Note: image is returned in strips by repeated calls to AX=CD0Ch
--------P-17CD0C-----------------------------
INT 17 - INSET - GET NEXT IMAGE STRIP
AX = CD0Ch
Return: AX = status
0000h OK but not complete
0001h OK and image complete
FFFFh error
DS:SI -> buffer (max 4K) for bit map strip
CX = start row
DX = number of rows
BX = offset in bytes between bit planes
Note: buffer may be overwritten by subsequent calls
SeeAlso: AX=CD0Bh
--------P-17E0-------------------------------
INT 17 - EPP BIOS - INSTALLATION CHECK
AH = E0h
Return: ??? (AH <> E0h if installed ???)
SeeAlso: AX=0200h"EPP",AH=E1h,AH=E2h
--------P-17E1-------------------------------
INT 17 - EPP BIOS - DISABLE EPP
AH = E1h
???
Return: ???
SeeAlso: AX=0200h"EPP",AH=E0h,AH=E2h
--------P-17E2-------------------------------
INT 17 - EPP BIOS - ENABLE EPP
AH = E2h
???
Return: ???
SeeAlso: AX=0200h"EPP",AH=E0h,AH=E1h
--------P-17F0-------------------------------
INT 17 - NorthNet Jetstream API - INSTALLATION CHECK
AH = F0h
DX = printer port (0-3)
Return: AX = 0001h Jetstream present
else non-Jetstream port
Note: NorthNet Jetstream is a high-performance DMA-driven parallel card able
to drive printers at up to 80000 characters per second
--------P-17F1-------------------------------
INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER
AH = F1h
CX = data buffer length
DX = printer port (0-3)
DS:SI -> data buffer
Return: AX = status
0000h printer not ready (see also AH=02h)
other printing started
SeeAlso: AH=00h,AH=F2h,AH=F3h,AH=F5h
--------P-17F2-------------------------------
INT 17 - NorthNet Jetstream API - GET PRINT PROGRESS STATUS
AH = F2h
DX = printer port (0-3)
Return: AX = status
0000h prior print request finished
other number of characters left to print
SeeAlso: AH=02h,AH=F1h,AH=F3h
--------P-17F3-------------------------------
INT 17 - NorthNet Jetstream API - ABORT PRINT OPERATION
AH = F3h
DX = printer port (0-3)
Return: AX = number of unprinted characters due to abort
SeeAlso: AH=F1h,AH=F4h
--------P-17F4-------------------------------
INT 17 - NorthNet Jetstream API - SET COMPLETION (POST) ADDRESS
AH = F4h
DX = printer port (0-3)
DS:DS -> FAR post address (called with interrupts on)
SeeAlso: AH=F1h,AH=F3h
--------P-17F5-------------------------------
INT 17 - NorthNet Jetstream API - PRINT DATA BUFFER FROM EXTENDED MEMORY
AH = F5h
CX = data buffer length
DX = printer port (0-3)
DS:SI -> data buffer (32-bit physical address)
Return: AX = status
0000h printer not ready (see also AH=02h)
other printing started
SeeAlso: AH=F1h
--------c-17FF--BX0000-----------------------
INT 17 U - PC-MOS/386 v5.01 - PRINT SPOOLER - CLOSE SPOOL FILE
AH = FFh
BX = 0000h
CX = 0000h
DX = printer port number
Return: AH = printer status (see #0555 at AH=00h)
Program: PC-MOS/386 v5.01 is a multitasking, multiuser MS-DOS 5.0-compatible
operating system by The Software Link, Inc.
Desc: close the spool file immediately instead of waiting for the close time
to elapse
SeeAlso: AH=01h,AH=03h"PC-MOS"
--------B-18---------------------------------
INT 18 - DISKLESS BOOT HOOK (START CASSETTE BASIC)
Desc: called when there is no bootable disk available to the system
Notes: only PCs produced by IBM contain BASIC in ROM, so the action is
unpredictable on compatibles; this interrupt often reboots the
system, and often has no effect at all
network cards with their own BIOS can hook this interrupt to allow
a diskless boot off the network (even when a hard disk is present
if none of the partitions is marked as the boot partition)
SeeAlso: INT 2F/AX=4A06h,INT 86"NetBIOS"
--------J-1800-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - GET KEYSTROKE
AH = 00h
Return: AX = keystroke
SeeAlso: AH=01h,AH=02h,INT 16/AH=00h
--------J-1801-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - CHECK FOR KEYSTROKE
AH = 01h
Return: BH = status
00h no keystrokes available
01h keystroke available
AX = keystroke
SeeAlso: AH=00h,AH=02h,INT 16/AH=01h
--------J-1802-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - GET SHIFT STATUS
AH = 02h
Return: AL = shift flags
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,INT 16/AH=02h
--------J-1803-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - INITIALIZE
AH = 03h
???
Return: ???
SeeAlso: AH=00h,AH=04h
--------J-1804-------------------------------
INT 18 - NEC PC-9800 series - KEYBOARD - KEY PRESSED
AH = 04h
???
Return: ???
Note: details are not available at this time
SeeAlso: AH=00h,AH=02h,INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h
--------J-18---------------------------------
INT 18 - NEC PC-9800 series - VIDEO
AH = function
0Ah set video mode
0Bh get video mode
0Ch start text screen display
0Dh end text screen display
0Eh set single display area
0Fh set multiple display area
10h set cursor shape
11h display cursor
12h terminate cursor
13h set cursor position
14h read font patter
16h initialize text video RAM
1Ah define user character
others
???
Return: ???
Notes: details are not available at this time
text video RAM is located at segments A000h (characters) and A200h
(attributes), graphics video RAM at segment C000h
Bitfields for NEC PC-9800 series video attributes:
Bit(s) Description (Table 0572)
0 disable drawing character
1 blinking
2 reverse video
3 underline
4 vertical line
7-5 color
(0=black, 1=blue, 2=red, 3=purple, 4=green, 5=cyan, 6=yellow, 7=white)
--------J-180E-------------------------------
INT 18 - NEC PC-9800 series - SET SINGLE DISPLAY AREA
AH = 0Eh
DX = offset of first byte to display???
Return: ???
SeeAlso: AH=1Bh,MEM 0050h:0001h
--------J-181B-------------------------------
INT 18 - NEC PC-9800 series - SET DISPLAY MODE
AH = 1Bh
AL = ??? (00h for text mode)
Return: ???
--------r-185350BX4849-----------------------
INT 18 - SPHINX C-- - WB.COM - API
AX = 5350h ('SP')
BX = 4849h ('HI')
CX = 4E58h ('NX')
DH = function
01h set ???
DL = ???
02h get ???
Return: DL = ???
03h get ???
Return: ES:DI -> ??? data buffer
06h ???
Return: AX = 7370h ('sp') if installed
BX = 6869h ('hi') if installed
CX = 6E78h ('nx') if installed
Program: SPHINX C-- is a shareware compiler by Peter Cellik for a language
which is a cross between C and assembler; WB.COM is the driver which
launches the WorkBench
--------s-186900-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET STATUS
AX = 6900h
Return: AX = amount of DRAM on card or 0000h if GUS not available
Program: YEA_GUS is a driver for the Graphics Ultra Sound which hooks INT 18h
and then shells out the the program requiring its services
SeeAlso: AX=6901h,AX=690Ah,AX=690Bh
--------s-186901-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESET
AX = 6901h
BX = number of active voices (14-32)
Return: nothing
SeeAlso: AX=6900h
--------s-186902-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOLUME FOR SPECIFIC VOICE
AX = 6902h
BX = voice number (00h-1Fh)
CX = linear volume (0000h-01FFh)
Return: nothing
SeeAlso: AX=6900h,AX=6903h,AX=6904h,AX=6909h,AX=690Ah
--------s-186903-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET FREQUENCY FOR VOICE
AX = 6903h
BX = voice number (00h-1Fh)
CX = frequency in Hz (0-44100)
Return: nothing
SeeAlso: AX=6902h,AX=6904h
--------s-186904-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET LEFT/RIGHT BALANCE
AX = 6904h
BX = voice number (00h-1Fh)
CX = balance (0 = left, 7 = even, 15 = right)
Return: nothing
SeeAlso: AX=6902h,AX=6903h
--------s-186905-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - PLAY MUSIC
AX = 6905h
BL = voice number
BH = sample type (0 = 8-bit, 1 = 16-bit)
CL = looping type (0 = none, 1 = forward, 2 = back and forth)
CH:DI = 20-bit starting address for voice data
DL:SI = 20-bit address for loop start
DH:BP = 20-bit address for loop end
SeeAlso: AX=6903h,AX=6906h,AX=690Bh
--------s-186906-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - LOAD SOUND DATA
AX = 6906h
BL = data format (1 = twos-complement, 0 = not)
BH = sample type (0 = 8-bit, 1 = 16-bit)
CX = number of bytes to send
ES:SI -> buffer containing data
DL:DI = 20-bit address of GUS DRAM at which to load sound data
SeeAlso: AX=6900h,AX=6905h,AX=690Ch
--------s-186907-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - STOP VOICE
AX = 6907h
BX = voice number (00h-1Fh)
Return: nothing
SeeAlso: AX=6908h,AX=690Dh
--------s-186908-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SET VOICE END
AX = 6908h
BX = voice number (00h-1Fh)
CL:DX = 20-bit ending address
Return: nothing
SeeAlso: AX=690Bh
--------s-186909-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RAMP VOLUME
AX = 6909h
BL = voice number (00h-1Fh)
BH = looping type (0 = none, 1 = forward, 2 = back and forth)
CX = starting volume
DX = ending volume
DI:SI = time
Return: nothing
SeeAlso: AX=6902h,AX=690Ah
--------s-18690A-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET VOLUME
AX = 690Ah
BX = voice number (00h-1Fh)
Return: AX = current non-linear volume for voice
SeeAlso: AX=6902h,AX=6909h
--------s-18690B-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - GET POSITION
AX = 690Bh
BX = voice number
Return: BX:AX = 20-bit address at which voice is playing
SeeAlso: AX=6900h,AX=6905h,AX=6908h
--------s-18690C-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - SAVE SOUND DATA
AX = 690Ch
BL = data format (1 = twos-complement, 0 = not)
BH = sample type (0 = 8-bit, 1 = 16-bit)
CX = number of bytes to get
ES:SI -> buffer for retrieved data
DL:DI = 20-bit address in GUS DRAM from which to read voice data
Return: nothing
SeeAlso: AX=6906h
--------s-18690D-----------------------------
INT 18 - Gravis Ultra Sound YEA_GUS.EXE - RESTART VOICE
AX = 690Dh
BX = voice
CX = sample type (0 = 8-bit, 1 = 16-bit)
DX = looping type (0 = none, 1 = forward, 2 = back and forth)
Return: CX = balance value
SeeAlso: AX=6907h,AX=6908h
--------s-188000-----------------------------
INT 18 - Gravis Ultra Sound EURO_MOD.EXE - INITIALIZE
AX = 8000h
Program: EURO_MOD is a .MOD file player for the Gravis Ultra Sound which hooks
INT 18h and then shells out to the program requiring its services
SeeAlso: AX=8001h,AX=8004h
--------s-188001-----------------------------
INT 18 - Gravis Ultra Sound EURO_MOD.EXE - LOAD .MOD FILE
AX = 8001h
BX:CX -> ASCIZ filename
SeeAlso: AX=8000h,AX=8002h
--------s-188002-----------------------------
INT 18 - Gravis Ultra Sound EURO_MOD.EXE - PLAY .MOD FILE
AX = 8002h
SeeAlso: AX=8002h,AX=8003h
--------s-188003-----------------------------
INT 18 - Gravis Ultra Sound EURO_MOD.EXE - STOP PLAYING
AX = 8003h
--------s-188004-----------------------------
INT 18 - Gravis Ultra Sound EURO_MOD.EXE - SHUTDOWN
AX = 8004h
SeeAlso: AX=8000h,AX=8003h
--------B-19---------------------------------
INT 19 - SYSTEM - BOOTSTRAP LOADER
Desc: This interrupt reboots the system without clearing memory or restoring
interrupt vectors. Because interrupt vectors are preserved, this
interrupt usually causes a system hang if any TSRs have hooked
vectors from 00h through 1Ch, particularly INT 08.
Notes: Usually, the BIOS will try to read sector 1, head 0, track 0 from drive
A: to 0000h:7C00h. If this fails, and a hard disk is installed, the
BIOS will read sector 1, head 0, track 0 of the first hard disk.
This sector should contain a master bootstrap loader and a partition
table (see #0574). After loading the master boot sector at
0000h:7C00h, the master bootstrap loader is given control
(see #0577). It will scan the partition table for an active
partition, and will then load the operating system's bootstrap
loader (contained in the first sector of the active partition) and
give it control.
true IBM PCs and most clones issue an INT 18 if neither floppy nor hard
disk have a valid boot sector
to accomplish a warm boot equivalent to Ctrl-Alt-Del, store 1234h in
0040h:0072h and jump to FFFFh:0000h. For a cold boot equivalent to
a reset, store 0000h at 0040h:0072h before jumping.
VDISK.SYS hooks this interrupt to allow applications to find out how
much extended memory has been used by VDISKs (see #0573). DOS 3.3+
PRINT hooks INT 19 but does not set up a correct VDISK header block
at the beginning of its INT 19 handler segment, thus causing some
programs to overwrite extended memory which is already in use.
the default handler is at F000h:E6F2h for 100% compatible BIOSes
MS-DOS 3.2+ hangs on booting (even from floppy) if the hard disk
contains extended partitions which point at each other in a loop,
since it will never find the end of the linked list of extended
partitions
under Windows Real and Enhanced modes, calling INT 19 will hang the
system in the same was as under bare DOS; under Windows Standard
mode, INT 19 will successfully perform a cold reboot as it appears
to have been redirected to a MOV AL,0FEh/OUT 64h,AL sequence
BUG: when loading the remainder of the DOS system files fails, various
versions of IBMBIO.COM/IO.SYS incorrectly restore INT 1E before
calling INT 19, assuming that the boot sector had stored the
contents of INT 1E at DS:SI instead of on the stack as it actually
does
SeeAlso: INT 14/AH=17h,INT 18"BOOT HOOK",INT 49"Tandy 2000",INT 5B"PC Cluster"
SeeAlso: MEM 0040h:0067h,MEM F000h:FFF0h,CMOS 0Fh
Format of VDISK header block (at beginning of INT 19 handler's segment):
Offset Size Description (Table 0573)
00h 18 BYTEs n/a (for VDISK.SYS, the device driver header)
12h 11 BYTEs signature string "VDISK Vn.m" for VDISK.SYS version n.m
1Dh 15 BYTEs n/a
2Ch 3 BYTEs linear address of first byte of available extended memory
Format of hard disk master boot sector:
Offset Size Description (Table 0574)
00h 446 BYTEs Master bootstrap loader code
1BEh 16 BYTEs partition record for partition 1 (see #0575)
1CEh 16 BYTEs partition record for partition 2
1DEh 16 BYTEs partition record for partition 3
1EEh 16 BYTEs partition record for partition 4
1FEh WORD signature, AA55h indicates valid boot block
Format of partition record:
Offset Size Description (Table 0575)
00h BYTE boot indicator (80h = active partition)
01h BYTE partition start head
02h BYTE partition start sector (bits 0-5)
03h BYTE partition start track (bits 8,9 in bits 6,7 of sector)
04h BYTE operating system indicator (see #0576)
05h BYTE partition end head
06h BYTE partition end sector (bits 0-5)
07h BYTE partition end track (bits 8,9 in bits 6,7 of sector)
08h DWORD sectors preceding partition
0Ch DWORD length of partition in sectors
SeeAlso: #0574
(Table 0576)
Values for operating system indicator:
00h empty
01h DOS 12-bit FAT
02h XENIX root file system
03h XENIX /usr file system (obsolete)
04h DOS 16-bit FAT (up to 32M)
05h DOS 3.3+ extended partition
06h DOS 3.31+ Large File System (16-bit FAT, over 32M)
07h QNX
07h OS/2 HPFS
07h Windows NT NTFS
07h Advanced Unix
08h OS/2 (v1.0-1.3 only)
08h AIX bootable partition, SplitDrive
08h Commodore DOS
08h DELL partition spanning multiple drives
09h AIX data partition
09h Coherent filesystem
0Ah OS/2 Boot Manager
0Ah OPUS
0Ah Coherent swap partition
0Bh Windows95 with 32-bit FAT
0Ch Windows95 with 32-bit FAT (using LBA-mode INT 13 extensions)
0Eh logical-block-addressable VFAT (same as 06h but using LBA-mode INT 13)
0Fh logical-block-addressable VFAT (same as 05h but using LBA-mode INT 13)
10h OPUS
11h OS/2 Boot Manager hidden 12-bit FAT partition
12h Compaq Diagnostics partition
14h (resulted from using Novell DOS 7.0 FDISK to delete Linux Native part)
14h OS/2 Boot Manager hidden sub-32M 16-bit FAT partition
16h OS/2 Boot Manager hidden over-32M 16-bit FAT partition
17h OS/2 Boot Manager hidden HPFS partition
18h AST special Windows swap file ("Zero-Volt Suspend" partition)
19h Willowtech Photon coS
20h Willowsoft Overture File System (OFS1)
21h officially listed as reserved
23h officially listed as reserved
24h NEC MS-DOS 3.x
26h officially listed as reserved
31h officially listed as reserved
33h officially listed as reserved
34h officially listed as reserved
36h officially listed as reserved
38h Theos
3Ch PowerQuest PartitionMagic recovery partition
40h VENIX 80286
41h Personal RISC Boot
42h SFS (Secure File System) by Peter Gutmann
50h OnTrack Disk Manager, read-only partition
51h OnTrack Disk Manager, read/write partition
51h NOVEL
52h CP/M
52h Microport System V/386
53h OnTrack Disk Manager, write-only partition???
54h OnTrack Disk Manager (DDO)
56h GoldenBow VFeature
61h SpeedStor
63h Unix SysV/386, 386/ix
63h Mach, MtXinu BSD 4.3 on Mach
63h GNU HURD
64h Novell NetWare 286
65h Novell NetWare (3.11)
67h Novell
68h Novell
69h Novell
70h DiskSecure Multi-Boot
71h officially listed as reserved
73h officially listed as reserved
74h officially listed as reserved
75h PC/IX
76h officially listed as reserved
80h Minix v1.1 - 1.4a
81h Minix v1.4b+
81h Linux
81h Mitac Advanced Disk Manager
82h Linux Swap partition
82h Prime
83h Linux native file system (ext2fs/xiafs)
84h OS/2-renumbered type 04h partition (related to hiding DOS C: drive)
86h FAT16 volume/stripe set (Windows NT)
87h HPFS Fault-Tolerant mirrored partition
87h NTFS volume/stripe set
93h Amoeba file system
94h Amoeba bad block table
A0h Phoenix NoteBIOS Power Management "Save-to-Disk" partition
A1h officially listed as reserved
A3h officially listed as reserved
A4h officially listed as reserved
A5h FreeBSD, BSD/386
A6h officially listed as reserved
B1h officially listed as reserved
B3h officially listed as reserved
B4h officially listed as reserved
B6h officially listed as reserved
B7h BSDI file system (secondarily swap)
B8h BSDI swap partition (secondarily file system)
C1h DR DOS 6.0 LOGIN.EXE-secured 12-bit FAT partition
C4h DR DOS 6.0 LOGIN.EXE-secured 16-bit FAT partition
C6h DR DOS 6.0 LOGIN.EXE-secured Huge partition
C6h corrupted FAT16 volume/stripe set (Windows NT)
C7h Syrinx Boot
C7h corrupted NTFS volume/stripe set
D8h CP/M-86
DBh CP/M, Concurrent CP/M, Concurrent DOS
DBh CTOS (Convergent Technologies OS)
E1h SpeedStor 12-bit FAT extended partition
E3h DOS read-only
E3h Storage Dimensions
E4h SpeedStor 16-bit FAT extended partition
E5h officially listed as reserved
E6h officially listed as reserved
F1h Storage Dimensions
F2h DOS 3.3+ secondary partition
F3h officially listed as reserved
F4h SpeedStor
F4h Storage Dimensions
F6h officially listed as reserved
FEh LANstep
FEh IBM PS/2 IML
FFh Xenix bad block table
Note: for partition type 07h, one should inspect the partition boot record
for the actual file system type
SeeAlso: #0575
(Table 0577)
Values Bootstrap loader is called with (IBM BIOS):
CS:IP = 0000h:7C00h
DH = access
bits 7-6,4-0: don't care
bit 5: =0 device supported by INT 13
DL = boot drive
00h first floppy
80h first hard disk
--------B-1A00-------------------------------
INT 1A - TIME - GET SYSTEM TIME
AH = 00h
Return: CX:DX = number of clock ticks since midnight
AL = midnight flag, nonzero if midnight passed since time last read
Notes: there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
(except on Tandy 2000, where the clock runs at 20 ticks per second)
IBM and many clone BIOSes set the flag for AL rather than incrementing
it, leading to loss of a day if two consecutive midnights pass
without a request for the time (e.g. if the system is on but idle)
since the midnight flag is cleared, if an application calls this
function after midnight before DOS does, DOS will not receive the
midnight flag and will fail to advance the date
SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch,INT 55"Tandy 2000",INT 4E/AH=02h"TI"
SeeAlso: INT 62/AX=0099h,MEM 0040h:006Ch,MEM 0040h:0070h
--------B-1A01-------------------------------
INT 1A - TIME - SET SYSTEM TIME
AH = 01h
CX:DX = number of clock ticks since midnight
Return: nothing
Notes: there are approximately 18.2 clock ticks per second, 1800B0h per 24 hrs
(except on Tandy 2000, where the clock runs at 20 ticks per second)
this call resets the midnight-passed flag
SeeAlso: AH=00h,AH=03h,INT 21/AH=2Dh
--------B-1A02-------------------------------
INT 1A - TIME - GET REAL-TIME CLOCK TIME (AT,XT286,PS)
AH = 02h
Return: CF clear if successful
CH = hour (BCD)
CL = minutes (BCD)
DH = seconds (BCD)
DL = daylight savings flag (00h standard time, 01h daylight time)
CF set on error (i.e. clock not running or in middle of update)
Note: this function is also supported by the Sperry PC, which predates the
IBM AT; the data is returned in binary rather than BCD on the Sperry,
and DL is always 00h
SeeAlso: AH=00h,AH=03h,AH=04h,INT 21/AH=2Ch
--------b-1A02-------------------------------
INT 1A - Tandy 2000 - TIME - GET DATE AND TIME
AH = 02h
Return: BX = number of days since January 1, 1980
CH = hours
CL = minutes
DH = seconds
DL = hundredths
SeeAlso: AH=03h"Tandy 2000",INT 55"Tandy 2000"
--------B-1A03-------------------------------
INT 1A - TIME - SET REAL-TIME CLOCK TIME (AT,XT286,PS)
AH = 03h
CH = hour (BCD)
CL = minutes (BCD)
DH = seconds (BCD)
DL = daylight savings flag (00h standard time, 01h daylight time)
Return: nothing
Note: this function is also supported by the Sperry PC, which predates the
IBM AT; the data is specified in binary rather than BCD on the
Sperry, and the value of DL is ignored
SeeAlso: AH=01h,AH=03h,AH=05h,INT 21/AH=2Dh,INT 4B/AH=01h
--------b-1A03-------------------------------
INT 1A - Tandy 2000 - TIME - SET DATE AND TIME
AH = 03h
BX = number of days since January 1, 1980
CH = hours
CL = minutes
DH = seconds
DL = hundredths
Return: nothing
SeeAlso: AH=02h"Tandy 2000",INT 55"Tandy 2000"
--------B-1A04-------------------------------
INT 1A - TIME - GET REAL-TIME CLOCK DATE (AT,XT286,PS)
AH = 04h
Return: CF clear if successful
CH = century (BCD)
CL = year (BCD)
DH = month (BCD)
DL = day (BCD)
CF set on error
SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Ah,INT 4B/AH=02h"TI"
--------b-1A04-------------------------------
INT 1A - Sperry PC - GET REAL-TIME CLOCK DATE
AH = 04h
Return: CF clear if successful
CL = year-1980
DH = month (binary) (01h-0Ch)
DL = day (binary) (01h-1Fh)
CF set on error
SeeAlso: AH=02h,AH=04h,AH=05h"Sperry",INT 21/AH=2Ah,INT 4B/AH=02h"TI"
--------B-1A05-------------------------------
INT 1A - TIME - SET REAL-TIME CLOCK DATE (AT,XT286,PS)
AH = 05h
CH = century (BCD)
CL = year (BCD)
DH = month (BCD)
DL = day (BCD)
Return: nothing
SeeAlso: AH=04h,INT 21/AH=2Bh"DATE",INT 4B/AH=00h"TI"
--------b-1A05-------------------------------
INT 1A - Sperry PC - SET REAL-TIME CLOCK DATE
AH = 05h
CL = year-1980
CH = 00h (???)
DH = month (binary) (01h-0Ch)
DL = day (binary) (01h-1Fh)
Return: nothing
SeeAlso: AH=02h,AH=04h"Sperry",AH=05h,INT 21/AH=2Bh"DATE"
--------B-1A06-------------------------------
INT 1A - TIME - SET ALARM (AT,XT286,PS)
AH = 06h
CH = hour (BCD)
CL = minutes (BCD)
DH = seconds (BCD)
Return: CF set on error (alarm already set or clock stopped for update)
CF clear if successful
Notes: the alarm occurs every 24 hours until turned off, invoking INT 4A each
time
the BIOS does not check for invalid values for the time, so the CMOS
clock chip's "don't care" setting (any values between C0h and FFh)
may be used for any or all three parts. For example, to create an
alarm once a minute, every minute, call with CH=FFh, CL=FFh, and
DH=00h.
SeeAlso: AH=07h,AH=0Ch,INT 4A"SYSTEM"
--------B-1A07-------------------------------
INT 1A - TIME - CANCEL ALARM (AT,XT286,PS)
AH = 07h
Return: alarm disabled
Note: does not disable the real-time clock's IRQ
SeeAlso: AH=06h,AH=0Dh,INT 70
--------B-1A08-------------------------------
INT 1A - TIME - SET RTC ACTIVATED POWER ON MODE (CONVERTIBLE)
AH = 08h
CH = hours in BCD
CL = minutes in BCD
DH = seconds in BCD
SeeAlso: AH=09h
--------B-1A09-------------------------------
INT 1A - TIME - READ RTC ALARM TIME AND STATUS (CONV,PS30)
AH = 09h
Return: CH = hours in BCD
CL = minutes in BCD
DH = seconds in BCD
DL = alarm status
00h alarm not enabled
01h alarm enabled but will not power up system
02h alarm will power up system
SeeAlso: AH=08h
--------B-1A0A-------------------------------
INT 1A - TIME - READ SYSTEM-TIMER DAY COUNTER (XT2,PS)
AH = 0Ah
Return: CF set on error
CF clear if successful
CX = count of days since Jan 1,1980
SeeAlso: AH=04h,AH=0Bh
--------B-1A0B-------------------------------
INT 1A - TIME - SET SYSTEM-TIMER DAY COUNTER (XT2,PS)
AH = 0Bh
CX = count of days since Jan 1,1980
Return: CF set on error
CF clear if successful
SeeAlso: AH=05h,AH=0Ah
--------B-1A0C-------------------------------
INT 1A - TIME - SET RTC DATE/TIME ACTIVATED POWER-ON MODE (IBM)
AH = 0Ch
CH = hours (BCD)
CL = minutes (BCD)
DH = seconds (BCD)
DL = day of month (BCD)
Return: CF clear if successful
CF set on error (alarm already set or clock nonfunctional)
Desc: set an automatic power-on for a given time in the future
Note: IBM classifies this function as optional
SeeAlso: AH=06h,AH=0Dh,AH=0Eh,INT 4A
--------B-1A0D-------------------------------
INT 1A - TIME - RESET RTC DATE/TIME ACTIVATED POWER-ON MODE (IBM)
AH = 0Dh
Return: CF clear if successful
CF set on error
Desc: cancel a previously-set power-on alarm
Note: IBM classifies this function as optional
SeeAlso: AH=07h,AH=0Ch,AH=0Eh
--------B-1A0E-------------------------------
INT 1A - TIME - GET RTC DATE/TIME ALARM AND STATUS (IBM)
AH = 0Eh
Return: CF clear if successful
BH = alarm status
00h disabled
01h enabled but will not power-up system
02h enabled, system will power-up on activation
CH = alarm time, hours (BCD)
CL = alarm time, minutes (BCD)
DH = seconds (BCD)
DL = day of month (BCD)
CF set on error
SeeAlso: AH=0Ch,AH=0Dh,AH=0Fh
--------B-1A0F-------------------------------
INT 1A - TIME - INITIALIZE REAL-TIME CLOCK
AH = 0Fh
AL = reserved (0)
Return: CF clear if successful
CF set on error
SeeAlso: AH=0Ch,AH=0Dh,AH=0Eh
--------J-1A10-------------------------------
INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
AH = 10h
???
Return: ???
SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
--------J-1A1000-----------------------------
INT 1A - NEC PC-9800 series - INSTALLATION CHECK
AX = 1000h
Return: AX <> 1000h if NEC
--------J-1A11-------------------------------
INT 1A - NEC PC-9800 series - PRINTER - OUTPUT CHARACTER
AH = 11h
???
Return: ???
SeeAlso: AH=10h,AH=12h,INT 17/AH=00h
--------J-1A12-------------------------------
INT 1A - NEC PC-9800 series - PRINTER - SENSE STATUS
AH = 12h
???
Return: ???
SeeAlso: AH=10h,AH=11h,INT 17/AH=02h
--------A-1A3601-----------------------------
INT 1A - WORD PERFECT v5.0 Third Party Interface - INSTALLATION CHECK
AX = 3601h
Return: DS:SI = routine to monitor keyboard input, immediately preceded by the
ASCIZ string "WPCORP\0"
Notes: WordPerfect 5.0 will call this interrupt at start up to determine if a
third party product wants to interface with it. The third party
product must intercept this interrupt and return the address of a
keyboard monitor routine.
Before checking for keyboard input, and after every key entered by the
user, Word Perfect will call the routine whose address was provided
in DS:SI with the following parameters:
Entry: AX = key code or 0
BX = WordPerfect state flag
Exit: AX = 0 or key code
BX = 0 or segment address of buffer with key codes
See the "WordPerfect 5.0 Developer's Toolkit" for further information.
SeeAlso: INT 16/AX=5500h
--------N-1A6108-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDWITHREPLY" - SEND MSG AND GET REPLY
AX = 6108h
STACK: WORD conversation ID (0000h-0009h)
DWORD pointer to message buffer
WORD length of message
DWORD pointer to reply buffer
WORD length of reply buffer
WORD 0000h (use default "Cparams" structure)
Return: AX = status (see #0578)
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=6205h
(Table 0578)
Values for SNAP.EXE status:
0000h successful
F830h "SNAP_ABORTED"
FC04h "SNAP_SERVERDIED"
FC05h "SNAP_RESEND"
FC06h "SNAP_SELECTFAILED"
FC07h "SNAP_WRONGVERSION"
FC08h "SNAP_INVALIDACK"
FC09h "SNAP_TIMEOUT"
FC0Ah "SNAP_SERVERREJECT"
FC0Bh "SNAP_NOREPLYDUE"
FC0Ch "SNAP_NOAUTHENTICATE"/"SNAP_GUARDIAN_ERROR"
FC0Dh "SNAP_NOINIT"
FC0Eh "SNAP_SOCKETERROR"
FC0Fh "SNAP_BUFFERLIMIT"
FC10h "SNAP_INVALIDCID"
FC11h "SNAP_INVALIDOP"
FC12h "SNAP_XMITFAIL"
FC13h "SNAP_NOMORERETRIES"
FC14h "SNAP_BADPARMS"
FC15h "SNAP_NOMEMORY"
FC16h "SNAP_NOMORECONVS"
FFFFh failed (invalid function/parameter)
--------N-1A6205-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SENDNOREPLY" - SEND MSG, DON'T AWAIT REPLY
AX = 6205h
STACK: WORD conversation ID (0000h-0009h)
DWORD pointer to message
WORD length of message
WORD 0000h (use default "Cparms" structure)
Return: AX = status (see #0578)
STACK unchanged
SeeAlso: AX=6108h
--------N-1A6308-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_BEGINCONV" - BEGIN CONVERSATION
AX = 6308h
STACK: WORD offset of ASCIZ "guardian"
WORD offset of ASCIZ hostname
WORD offset of ASCIZ server name
WORD offset of ASCIZ userid
WORD offset of ASCIZ password
WORD offset of password length
WORD offset of password type
WORD offset of "Cparms" structure (see #0579)
Return: ???
STACK unchanged
Note: all stacked offsets are within the SNAP data segment (use AX=6A01h
to allocate a buffer)
SeeAlso: AX=6405h,AX=7202h
Format of SNAP.EXE Cparms structure:
Offset Size Description (Table 0579)
00h WORD retry delay in seconds
02h WORD timeout delay in seconds
04h WORD maximum buffer size
06h WORD encryption level
--------N-1A6405-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_ENDCONV" - END CONVERSATION
AX = 6405h
STACK: WORD conversation ID (0000h-0009h)
DWORD pointer to message buffer
WORD length of message
WORD 0000h (use default "Cparms" structure)
Return: AX = status (see #0578)
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=6308h
--------N-1A6900-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_DATASEG" - GET RESIDENT DATA SEGMENT
AX = 6900h
Return: AX = value used for DS by resident code
SeeAlso: AX=6A01h,AX=6F01h
--------N-1A6A01-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_ALLOC" - ALLOCATE BUFFER IN SNAP DATA SEGMENT
AX = 6A01h
STACK: WORD number of bytes to allocate
Return: AX = offset of allocated buffer or 0000h if out of memory
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=6B01h
--------N-1A6B01-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_FREE" - DEALLOCATE BUFFER IN SNAP DATA SEGMENT
AX = 6B01h
STACK: WORD offset within SNAP data segment of previously allocated
buffer
Return: STACK unchanged
Note: this call is a NOP if the specified offset is 0000h
SeeAlso: AX=6A01h
--------N-1A6C04-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYTO" - COPY DATA TO RESIDENT SNAP PACKAGE
AX = 6C04h
STACK: WORD offset within SNAP data segment of dest (nonzero)
WORD segment of source buffer
WORD offset of source buffer
WORD number of bytes to copy
Return: AX = offset of byte after last one copied to destination
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=6D04h
--------N-1A6D04-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_COPYFROM" - COPY DATA FROM RESIDENT SNAP PACKAGE
AX = 6D04h
STACK: WORD offset within SNAP data segment of source buffer
WORD segment of destination buffer
WORD offset of destination buffer
WORD number of bytes to copy
Return: AX = offset of byte after last one copied from source
buffer filled
STACK unchanged
SeeAlso: AX=6C04h
--------N-1A6E01-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SETDEBUG" - SET ???
AX = 6E01h
STACK: WORD new value for ???
Return: AX = old value of ???
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
--------N-1A6F01-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_CHKINSTALL" - INSTALLATION CHECK
AX = 6F01h
STACK: WORD 0000h
Return: AX = status
0000h SNAP is resident
other SNAP not present
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol, and is
required by PCVENUS (a network shell). The combination of SNAP and
PCVENUS allows the use of the Andrew File System as one or more
networked drives.
SeeAlso: AX=6900h,AX=7400h
--------N-1A7002-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SETANCHOR"
AX = 7002h
STACK: WORD anchor number (0000h-0009h)
WORD new value for the anchor
Return: AX = status
0000h successful
FFFFh failed (top word on stack not in range 00h-09h)
STACK unchanged
SeeAlso: AX=7101h
--------N-1A7101-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_GETANCHOR"
AX = 7101h
STACK: WORD anchor number (0000h-0009h)
Return: AX = anchor's value
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
SeeAlso: AX=7002h
--------N-1A7202-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_SETCONVPARMS" - SET CONVERSATION PARAMETERS
AX = 7202h
STACK: WORD conversation ID (0000h-0009h)
WORD offset within resident data segment of "Cparms"
structure (see #0579)
Return: AX = status???
STACK unchanged
SeeAlso: AX=6308h
--------N-1A7302-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_CLIENTVERSION" - ???
AX = 7302h
STACK: WORD conversation ID (0000h-0009h)
WORD offset within resident data segment of ???
Return: AX = ???
???
STACK unchanged
SeeAlso: AX=7400h
--------N-1A7400-----------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_VERSION" - GET VERSION
AX = 7400h
Return: AX = version (AH=major, AL=minor)
Note: this call is only valid if SNAP is installed
SeeAlso: AX=7302h,INT 1A/AX=6F01h
--------N-1A75-------------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_NOP" - ???
AH = 75h
AL = ???
Return: AX = ??? (0000h)
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
--------N-1A76-------------------------------
INT 1A - SNAP.EXE 3.2+ - "SNAP_802_5" - ???
AH = 76h
AL = ???
Return: AX = ???
--------N-1A77-------------------------------
INT 1A - SNAP.EXE 3.4 - ???
AH = 77h
AL = ??? (at least 01h)
STACK: WORD ???
???
Return: ???
STACK unchanged
--------N-1A7802-----------------------------
INT 1A - SNAP.EXE 3.4 - ???
AX = 7802h
STACK: WORD ???
WORD ???
Return: ???
STACK unchanged
Program: SNAP.EXE is a TSR written by IBM and Carnegie Mellon University
which implements the Simple Network Application Protocol
--------s-1A7F-------------------------------
INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
AH = 7Fh
???
Return: ???
Note: this function is not supported by the Tandy 1000SL/TL BIOS
SeeAlso: AH=80h,AH=83h,AH=85h
--------s-1A80-------------------------------
INT 1A - PCjr, Tandy 2500???, Tandy 1000SL/TL - SET UP SOUND MULTIPLEXOR
AH = 80h
AL = 00h source is 8253 channel 2
01h source is cassette input
02h source is I/O channel "Audio IN"
03h source is sound generator chip
Note: although documented in the 1000TL Technical Reference, the 1000TL
BIOS has just an IRET for this call
SeeAlso: AH=7Fh,AH=83h
--------X-1A80-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - GET NUMBER OF ADAPTERS
AH = 80h
Return: CF clear if successful
CX = 5353h ('SS') if Socket Services installed
AL = number of adapters present (0-16)
AH destroyed
CF set on error
AH = error code (see #0580)
SeeAlso: AH=83h"PCMCIA"
(Table 0580)
Values for PCMCIA error codes:
01h "BAD_ADAPTER" nonexistent adapter
02h "BAD_ATTRIBUTE" invalid attribute specified
03h "BAD_BASE" invalid system memory base address
04h "BAD_EDC" invalid EDC generator specified
05h "BAD_INDICATOR" invalid indicator specified
06h "BAD_IRQ" invalid IRQ channel specified
07h "BAD_OFFSET" invalid PCMCIA card offset specified
08h "BAD_PAGE" invalid page specified
09h "BAD_READ" unable to complete request
0Ah "BAD_SIZE" invalid window size specified
0Bh "BAD_SOCKET" nonexistent socket specified
0Ch "BAD_TECHNOLOGY" unsupported Card Technology for writes
0Dh "BAD_TYPE" unavailable window type specified
0Eh "BAD_VCC" invalid Vcc power level index specified
0Fh "BAD_VPP" invalid Vpp1 or Vpp2 power level index specified
10h "BAD_WAIT" invalid number of wait states specified
11h "BAD_WINDOW" nonexistent window specified
12h "BAD_WRITE" unable to complete request
13h "NO_ADAPTERS" no adapters installed, but Socket Services is present
14h "NO_CARD" no card in socket
15h function not supported
16h invalid mode
17h invalid speed
18h busy
--------X-1A81-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - REGISTER STATUS CHANGE CALLBACK
AH = 81h
DS:DX -> callback routine (see #0581) or 0000h:0000h to disable
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (see #0580)
Note: the callback will be invoked on any socket changes whose notification
has not been disabled with the status change enable mask; it may be
invoked either while processing a hardware interrupt from the adapter
or while processing the following Socket Services request
SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
(Table 0581)
Values PCMCIA callback routine is invoked with:
AL = adapter number
BH = status change interrupt enable mask (see #0582)
BL = socket number
DH = current socket status (see #0583)
DL = current card status (see #0584)
Return: all registers preserved
Notes: the callback may be invoked during a hardware interrupt, and may not
call on Socket Services
the callback will be invoked once for each socket with a status change
Bitfields for PCMCIA status change interrupt enable mask:
Bit(s) Description (Table 0582)
7 card detect change
6 ready change
5 battery warning change
4 battery dead change
3 insertion request
2 ejection request
1-0 reserved (0)
Bitfields for PCMCIA current socket status:
Bit(s) Description (Table 0583)
7 card changed
6 reserved (0)
5 card insertion complete
4 card ejection complete
3 card insertion request pending
2 card ejection request pending
1 card locked
0 reserved (0)
Bitfields for PCMCIA current card status:
Bit(s) Description (Table 0584)
7 card detect
6 ready
5 battery voltage detect 2 (battery warning)
4 battery voltage detect 1 (battery dead)
3-1 reserved (0)
0 write protected
--------s-1A8100-----------------------------
INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
AX = 8100h
Return: AL > 80h if supported
AX = 00C4h if supported (1000SL/TL)
CF set if sound chip is busy
CF clear if sound chip is free
Note: the value of CF is not definitive; call this function until CF is
clear on return, then call AH=84h"Tandy"
--------s-1A82-------------------------------
INT 1A - Tandy 2500???, Tandy 1000SL/TL - DIGITAL SOUND - RECORD SOUND
AH = 82h
ES:BX -> buffer for sound samples
CX = length of buffer
DX = transfer rate (1-4095, 1 is fastest)
Return: AH = 00h
CF set if sound busy
CF clear if sound chip free
Note: the value in DX should be 1/10 the corresponding value for
INT 1A/AH=83h on the 1000TL, 1/11.5 on the 1000SL. Call
INT 1A/AX=8100h and INT 1A/AH=84h before invoking this function.
The BIOS issues an INT 15/AX=91FBh when the input is complete
DMA across a 64K boundary is masked by the BIOS
--------X-1A82-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - REGISTER CARD TECHNOLOGY CALLBACK
AH = 82h
DS:DX -> callback routine (see #0585) or 0000h:0000h
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (see #0580)
Note: the callback is invoked on a Write Multiple request with an unsupported
card technology type
SeeAlso: AH=81h"PCMCIA",AH=94h
(Table 0585)
Values PCMCIA callback routine is invoked with:
ES:AX -> Low-Level Socket Services Routines (see #0587)
BH = socket attributes (see #0586)
CX = number of bytes or words to write
DS:SI -> data buffer to be written
DX:DI -> 26-bit linear card address
BP = card technology type
Return: CF clear if successful
CF set on error
AH = error code (07h,0Ch,12h,14h) (see #0580)
Bitfields for PCMCIA socket attributes:
Bit(s) Description (Table 0586)
7-4 reserved (0)
3 packed buffer
2 even bytes only (only valid if 1 set)
1 data width (clear = byte, set = word)
0 memory type (clear = common, set = attribute)
Format of PCMCIA Low-Level Socket Services Routines:
Offset Size Description (Table 0587)
00h WORD offset of Write Many routine (see #0588)
02h WORD offset of Write One routine (see #0589)
04h WORD offset of Read One routine (see #0590)
06h WORD offset of Increment Offset routine (see #0591)
08h WORD offset of Set Offset routine (see #0592)
0Ah WORD offset of Get Status routine (see #0593)
(Table 0588)
Call Write Many routine with:
BH = socket attributes (see #0586)
CX = number of bytes or words to write
DS:SI -> data to be written
Return: CF clear if successful
CF set on error
(Table 0589)
Call Write One routine with:
AL/AX = data to be written
BH = socket attributes (see #0586)
Return: CF clear if successful
CF set on error
(Table 0590)
Call Read One routine with:
BH = socket attributes (see #0586)
Return: CF clear if successful
AL/AX = data read
CF set on error
(Table 0591)
Call Increment Offset routine with:
BH = socket attributes (see #0586)
Return: CF clear if successful
CF set on error
(Table 0592)
Call Set Offset routine with:
DX:DI = new offset address
Return: CF clear if successful
CF set on error
(Table 0593)
Call Get Status routine with:
nothing
Return: AL = current card status (see #0584)
--------s-1A83-------------------------------
INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
AH = 83h
AL = volume (0=silence, 7=highest)
CX = number of bytes to play
DX = time between sound samples (multiples of 273 nanoseconds)
only bits 11-0 used
ES:BX -> sound data (array of 8-bit unsigned PCM samples)
Return: AH = 00h
CF set if sound is busy
CF clear if sound chip is free
Notes: this call returns immediately while the sound plays in the
background; the sound chip is clocked at 3.57 MHz, with the low 12
bits of DX specifying the clock divisor
The BIOS appears to call INT 15/AX=91FBh when the sound device
underflows to allow another INT 1A/AH=83h for seamless playing of
long sounds.
SeeAlso: AH=84h"Tandy",INT 15/AH=91h
--------X-1A83-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET SERVICES VERSION NUMBER
AH = 83h
AL = adapter number
Return: CF clear if successful
AX = Socket Services version (BCD)
BX = implementation version (BCD)
CX = 5353h ("SS")
DS:SI -> ASCIZ implementor description
CF set on error
AH = error code (01h) (see #0580)
Note: the current version (from the Revision A.00 documentation) of Socket
Services is 1.00 (AX=0100h)
SeeAlso: AH=80h"PCMCIA"
--------s-1A84-------------------------------
INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
AH = 84h
Return: ???
Note: the BIOS will call INT 15/AX=91FBh when the sound has stopped playing
SeeAlso: AH=83h"Tandy",AH=85h"Tandy"
--------X-1A84-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ADAPTER
AH = 84h
AL = adapter number
Return: CF clear if successful
AH destroyed
BH = number of windows
BL = number of sockets (1-16)
CX = number of EDCs
DH = capabilities (see #0594)
DL = status change interrupt used (only if DH bit 3 set)(see #0595)
CF set on error
AH = error code (01h) (see #0580)
SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
Bitfields for PCMCIA capabilities:
Bit(s) Description (Table 0594)
7-6 reserved (0)
5 status change interrupt is hardware shareable
4 status change interrupt is software shareable
3 status change interrupt
2 data bus width is per-socket rather than per-window
1 power management is per-adapter rather than per-socket
0 indicators are per-adapter rather than per-socket
(Table 0595)
Values for PCMCIA status change interrupt usage:
00h-0Fh IRQ level
10h NMI
11h I/O check
12h bus error
13h vendor specific
14h-FFh reserved
--------s-1A85-------------------------------
INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
AH = 85h
???
Return: ???
Note: this function is not supported by the Tandy 1000SL/TL BIOS
SeeAlso: AH=7Fh,AH=83h"Tandy"
--------X-1A85-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - GET ADAPTER
AH = 85h
AL = adapter number
Return: CF clear if successful
AH destroyed
DH = adapter attributes (see #0596)
CF set on error
AH = error code (01h) (see #0580)
SeeAlso: AH=84h"PCMCIA",AH=86h
Bitfields for PCMCIA adapter attributes:
Bit(s) Description (Table 0596)
7-5 reserved (0)
4 hardware share status change
3 software share status change
2 enable status change interrupts
1 adapter preserves state information during reduced power consumption
0 attempting to reduce power consumption
--------X-1A86-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - SET ADAPTER
AH = 86h
AL = adapter number
DH = new adapter attributes (see #0596)
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h) (see #0580)
SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
--------X-1A87-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - INQUIRE WINDOW
AH = 87h
AL = adapter number
BH = window number
Return: CF clear if successful
AH destroyed
BL = capabilities (see #0597)
CX = bitmap of assignable sockets
DH = EISA A15-A12 address lines (in bits 7-4, bits 3-0 = 0)
DL = supported access speeds (see #0598)
DS:SI -> Memory Window Characteristics table (see #0599)
DS:DI -> I/O Window Characteristics table (see #0600)
CF set on error
AH = error code (01h,11h) (see #0580)
SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
Bitfields for PCMCIA window capabilities:
Bit(s) Description (Table 0597)
7-5 reserved (0)
4 separate enable for EISA comon space
3 EISA I/O mappable
2 I/O space
1 attribute memory
0 common memory
Bitfields for PCMCIA supported access speeds:
Bit(s) Description (Table 0598)
7 reserved (0)
6 600 ns
5 300 ns
4 250 ns
3 200 ns
2 150 ns
1 100 ns
0 WAIT line monitoring
Format of PCMCIA Memory Window Characteristics table:
Offset Size Description (Table 0599)
00h WORD window capabilities (see #0601)
02h WORD minimum base address in 4K pages
04h WORD maximum base address in 4K pages
06h WORD minimum window size in 4K pages
08h WORD maximum window size in 4K pages
0Ah WORD window size granularity (4K units)
0Ch WORD required base address alignment (4K units)
0Eh WORD required card offset alignment (4K units)
Format of PCMCIA I/O Window Characteristics table:
Offset Size Description (Table 0600)
00h WORD window capabilities (see #0601)
02h WORD minimum base address in bytes
04h WORD maximum base address in bytes
06h WORD minimum window size in bytes
08h WORD maximum window size in bytes
0Ah WORD window size granularity (bytes)
Bitfields for PCMCIA window capabilities:
Bit(s) Description (Table 0601)
0 programmable base address
1 programmable window size
2 window disable/enable supported
3 8-data bus
4 16-data bus
5 base address alignment on size boundary required
6 power-of-two size granularity
---memory windows---
7 card offset must be aligned on size boundary
8 paging hardware available
9 paging hardware shared
10 page disable/enable supported
11-15 reserved (0)
---I/O windows---
7-15 reserved (0)
--------X-1A88-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - GET WINDOW
AH = 88h
AL = adapter number
BH = window number
Return: CF clear if successful
AH destroyed
BL = socket number (0-16) (0 = not assigned)
CX = window size (bytes for I/O window, 4K units for memory window)
DH = window attributes (see #0602)
DL = access speed (only one bit set) (see #0598)
SI = window base address (bytes if I/O, 4K units if memory)
DI = card offset address (memory only, 4K units)
CF set on error
AH = error code (01h,11h) (see #0580)
SeeAlso: AH=87h,AH=89h,AH=8Ah
Bitfields for PCMCIA window attributes:
Bit(s) Description (Table 0602)
0 memory-mapped rather than I/O-mapped
1 attribute memory rather than common (memory-mapped)
EISA mapped (I/O)
2 enabled
3 16-data path
4 subdivided into pages (memory-mapped only)
5 non-specific access slot enable (EISA-mapped only)
6-7 reserved (0)
--------X-1A89-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - SET WINDOW
AH = 89h
AL = adapter number
BH = window number
BL = socket number
CX = window size (bytes if I/O window, 4K units if memory window)
DH = window attributes (see #0602)
DL = access speed (only one bit set) (see #0598)
SI = window base address (bytes if I/O, 4K units if memory window)
DI = card offset addrress (memory only, 4K units)
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,03h,07h,08h,0Ah,0Bh,0Dh,10h,11h) (see #0580)
SeeAlso: AH=87h,AH=88h,AH=8Bh
--------X-1A8A-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - GET PAGE
AH = 8Ah
AL = adapter number
BH = window number
BL = page number
Return: CF clear if successful
AH destroyed
DX = page attributes (see #0603)
DI = memory card offset (4K units)
CF set on error
AH = error code (01h,08h,11h) (see #0580)
Notes: this function is only valid for memory-mapped windows
the socket being operated on is implied by the previous AH=89h call
SeeAlso: AH=88h,AH=8Bh
Bitfields for PCMCIA page attributes:
Bit(s) Description (Table 0603)
0 page enabled
15-1 reserved (0)
--------X-1A8B-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - SET PAGE
AH = 8Bh
AL = adapter number
BH = window number
BL = page number
DX = page attributes (see #0603)
DI = memory card offset (4K units)
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,02h,07h,08h,11h) (see #0580)
Notes: this function is only valid for memory-mapped windows
the socket being operated on is implied by the previous AH=89h call
SeeAlso: AH=89h,AH=8Ah
--------X-1A8C-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - INQUIRE SOCKET
AH = 8Ch
AL = adapter number
BL = socket number (01h to maximum supported by adapter)
Return: CF clear if successful
AH destroyed
DH = capabilities (see #0604)
DL = hardware indicators (see #0605)
DS:SI -> Socket Characteristics table (see #0606)
DS:DI -> Power Management table (see #0608)
CF set on error
AH = error code (01h,0Bh) (see #0580)
SeeAlso: AH=87h,AH=8Dh,AH=8Eh
Bitfields for PCMCIA socket capabilities:
Bit(s) Description (Table 0604)
0 card change
1 card lock
2 insert card (motor control)
3 eject card (motor control)
4-7 reserved (0)
Bitfields for PCMCIA socket hardware indicators:
Bit(s) Description (Table 0605)
0 busy status
1 write-protected
2 battery status
3 card lock status
4 XIP status (eXecute-In-Place)
5-7 reserved (0)
Format of PCMCIA Socket Characteristics table:
Offset Size Description (Table 0606)
00h WORD supported card types (see #0607)
02h WORD steerable IRQ levels (bit 0 = IRQ0 to bit 15 = IRQ15)
04h WORD additional steerable IRQ levels
bit 0: NMI
bit 1: I/O check
bit 2: bus error
bit 3: vendor-unique
bits 4-7 reserved (0)
Bitfields for supported card types:
Bit(s) Description (Table 0607)
0 memory card
1 I/O card
2-7 reserved (0)
Format of PCMCIA Power Management table:
Offset Size Description (Table 0608)
00h WORD number of entries in table (0 if power management not avail)
02h 2N BYTEs power levels
byte 0: voltage in 0.1V units
byte 1: power supply
bit 7: Vcc
bit 6: Vpp1
bit 5: Vpp2
--------X-1A8D-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - GET SOCKET
AH = 8Dh
AL = adapter number
BL = socket number (01h to maximum supported by adapter)
Return: CF clear if successful
AH destroyed
BH = status change interrupt enable mask (see #0582)
CH = Vcc level (lower nybble) (see #0608)
CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
DH = current socket status (see #0583)
DL = indicators (see #0605)
SI = card type (see #0609)
DI = IRQ level steering (I/O only) (see #0610)
CF set on error
AH = error code (01h,0Bh) (see #0580)
SeeAlso: AH=8Ch,AH=8Eh
Bitfields for PCMCIA card type:
Bit(s) Description (Table 0609)
0 memory
1 I/O
2-15 reserved (0)
Bitfields for PCMCIA I/O level steering:
Bit(s) Description (Table 0610)
15 interrupt steering enabled
14-5 reserved (0)
4-0 IRQ level (0-15=IRQ,16=NMI,17=I/O check,18=bus error,19=vendor)
--------X-1A8E-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - SET SOCKET
AH = 8Eh
AL = adapter number
BL = socket number (01h to maximum supported by adapter)
BH = status change interrupt enable mask (see #0582)
CL = Vpp1 level (upper nybble) and Vpp2 level (lower nybble)
DH = current socket status (see #0583)
DL = indicators (see #0605)
SI = card type (see #0609)
DI = IRQ level steering (I/O only) (see #0610)
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,02h,05h,06h,0Bh,0Eh,0Fh) (see #0580)
SeeAlso: AH=8Ch,AH=8Dh
--------X-1A8F-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - GET CARD
AH = 8Fh
AL = adapter number
BL = socket number (01h to maximum supported by adapter)
Return: CF clear if successful
AH destroyed
DL = current card status (see #0584)
CF set on error
AH = error code (01h,0Bh) (see #0580)
SeeAlso: AH=8Dh,AH=90h
--------X-1A90-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - RESET CARD
AH = 90h
AL = adapter number
BL = socket number (01h to maximum supported by adapter)
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,0Bh,14h) (see #0580)
Note: toggles RESET pin of the specified card, but does not wait after
toggling the pin; it is the caller's responsibility to avoid
accessing the card before it is ready again
--------X-1A91-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - READ ONE
AH = 91h
AL = adapter number
BL = socket number (01h to maximum supported by adapter)
BH = attributes (see #0611)
DX:SI = card address
Return: CF clear if successful
AH destroyed
CL/CX = value read
CF set on error
AH = error code (01h,07h,09h,0Bh,14h) (see #0580)
CX may be destroyed
Note: this function is only valid for I/O-mapped sockets
SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"DOS 3.2+"
Bitfields for PCMCIA attributes:
Bit(s) Description (Table 0611)
2 even bytes only
1 word rather than byte
0 attribute memory instead of common memory
--------X-1A92-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - WRITE ONE
AH = 92h
AL = adapter number
BL = socket number (01h to maximum supported by adapter)
BH = attributes (see #0611)
CL/CX = value to write
DX:SI = card address
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,07h,0Bh,12h,14h) (see #0580)
Note: this function is only valid for I/O-mapped sockets; it also does not
implement Card Technology handling--use AH=94h when writing to
non-RAM technologies
SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS 3.2+"
--------X-1A93-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - READ MULTIPLE
AH = 93h
AL = adapter number
BL = socket number (01h to maximum supported by adapter)
BH = attributes (see #0611)
CX = number of bytes or words to read
DX:SI = card address
DS:DI -> data buffer to be filled
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,07h,09h,0Bh,14h) (see #0580)
Note: this function is only available on I/O-mapped sockets
SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"DOS 3.2+"
--------X-1A94-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - WRITE MULTIPLE
AH = 94h
AL = adapter number
BL = socket number (01h to maximum supported by adapter)
BH = attributes (see #0611)
CX = number of bytes or words to read
DX:DI = card address
DS:SI -> buffer containing data
BP = Card Technology type (0000h = RAM)
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,07h,0Bh,0Ch,12h,14h) (see #0580)
Notes: this function is only available on I/O-mapped sockets
Socket Services calls the Card Technology callback (see #0585) for
any card technology it does not directly support
SeeAlso: AH=82h"PCMCIA",AH=92h,AH=93h,INT 21/AX=440Dh"DOS 3.2+"
--------X-1A95-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - INQUIRE ERROR DETECTION CODE
AH = 95h
AL = adapter number
BH = EDC generator number
Return: CF clear if successful
AH destroyed
CX = bitmap of assignable sockets
DH = EDC capabilities (see #0612)
DL = supported EDC types (see #0613)
CF set on error
AH = error code (01h,04h) (see #0580)
SeeAlso: AH=96h,AH=9Ch
Bitfields for EDC capabilities:
Bit(s) Description (Table 0612)
0 unidirectional only generation
1 bidirectional only generation
2 register-based (I/O-mapped) support
3 memory-mapped support
4 pausable
5-7 reserved (0)
Bitfields for supported EDC types:
Bit(s) Description (Table 0613)
0 8-checksum
1 16-CRC-SDLC
2-7 reserved (0)
--------X-1A96-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - GET ERROR DETECTION CODE
AH = 96h
AL = adapter number
BH = EDC generator number
Return: CF clear if successful
AH destroyed
BL = socket number
DH = EDC attributes (see #0614)
DL = EDC type (see #0613) (only one bit set)
CF set on error
AH = error code (01h,04h) (see #0580)
SeeAlso: AH=95h,AH=97h,AH=9Ch
Bitfields for EDC attributes:
Bit(s) Description (Table 0614)
0 unidirectional only
1 (if 0 set) clear=read, set=write
2-7 reserved (0)
--------X-1A97-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - SET ERROR DETECTION CODE
AH = 97h
AL = adapter number
BH = EDC generator
BL = socket number
DH = EDC attributes (see #0614)
DL = EDC type (see #0613) (only one bit may be set)
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,02h,04h,0Bh) (see #0580)
SeeAlso: AH=96h,AH=9Ch
--------X-1A98-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - START ERROR DETECTION CODE
AH = 98h
AL = adapter number
BH = EDC generator
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,04h) (see #0580)
SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
--------X-1A99-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - PAUSE ERROR DETECTION CODE
AH = 99h
AL = adapter number
BH = EDC generator
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,04h) (see #0580)
SeeAlso: AH=9Ah
--------X-1A9A-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - RESUME ERROR DETECTION CODE
AH = 9Ah
AL = adapter number
BH = EDC generator
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (01h,04h) (see #0580)
SeeAlso: AH=99h,AH=98h
--------X-1A9B-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - STOP ERROR DETECTION CODE
AH = 9Bh
AL = adapter number
BH = EDC generator
Return: CF clear if successful
AH destroyed
CF set on error
AH = error code (see #0580)
SeeAlso: AH=98h,AH=99h,AH=9Ch
--------X-1A9C-------------------------------
INT 1A - PCMCIA Socket Services v1.00 - READ ERROR DETECTION CODE
AH = 9Ch
AL = adapter number
BH = EDC generator
Return: CF clear if successful
AH destroyed
DL/DX = computed checksum or CRC
CF set on error
AH = error code (01h,04h) (see #0580)
SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
--------X-1A9D-------------------------------
INT 1A - PCMCIA Socket Services v2.1??? - GET VENDOR INFO
AH = 9Dh
AL = adapter number
BH = EDC generator
ES:EDI -> vendor information structure (see #0615)
Return: CF clear if successful
AH destroyed
DX = vendor release number in BCD
ES:EDI unchanged
CF set on error
AH = error code (01h,15h) (see #0580)
Notes: this API is supported by recent versions of the AMI BIOS
the low-level API described here is hidden by the higher-level
ExCA API once Card Services has been installed
SeeAlso: AH=9Dh"ExCA"
Format of Vendor Information structure:
Offset Size Description (Table 0615)
00h WORD buffer length (set to size of buffer below)
04h WORD (ret) data length
08h x BYTEs implementor name (ASCIIZ string)
--------X-1A9D-------------------------------
INT 1A - Intel PCMCIA ExCA Card Services - API
AH = 9Dh
AL = subfunction (see #0616)
???
Return: ???
SeeAlso: AH=9Dh"ExCA",#0811
(Table 0616)
Values for PCMCIA ExCA Card Services subfunction number:
00h Client Services: Get Number of Sockets
01h Advanced Client Utilities: Initialize
02h Client Services: Register Client
03h Client Services: Deregister Client
04h Advanced Client Utilities: Enumerate Clients
05h Client Services: Register SCB
06h Client Services: Deregister SCB
07h Advanced Client Utilities: Register MTD
08h Advanced Client Utilities: Deregister MTD
09h Advanced Client Utilities: Enumerate MTD
0Ah Client Services: Get Status
0Bh Client Services: Reset Card
0Ch Client Utilities: Get First Tuple
0Dh Client Utilities: Get Next Tuple
0Eh Client Utilities: Determine First Region
0Fh Client Utilities: Determine Next Region
10h Client Utilities: Get First Region
11h Client Utilities: Get Next Region
12h Client Utilities: Get First Partition
13h Client Utilities: Get Next Partition
14h Bulk Memory Services: Open Region
15h Bulk Memory Services: Read Memory
16h Bulk Memory Services: Write Memory
17h Bulk Memory Services: Copy Memory
18h Bulk Memory Services: Erase Memory
19h Resource Management: Request I/O
1Ah Resource Management: Release I/O
1Bh Resource Management: Request Memory
1Ch Client Services: Modify Window
1Dh Resource Management: Release Memory
1Eh Client Services: Map Mem Page
1Fh Advanced Client Utilities: Return SS Entry
20h Advanced Client Utilities: Map Log to Phy
21h Advanced Client Utilities: Map Log Phy to Log
22h Resource Management: Request IRQ
23h Resource Management: Release IRQ
24h Bulk Memory Services: Close Region
--------X-1A9E-------------------------------
INT 1A - PCMCIA Socket Services v2.1 - ACKNOWLEDGE INTERRUPT
AH = 9Eh
AL = adapter number
Return: CF clear if successful
AH destroyed
CX = bitmap representing sockets which have changed status
CF set on error
AH = error code (01h) (see #0580)
Note: this API is supported by recent versions of the AMI BIOS
--------X-1A9F-------------------------------
INT 1A - PCMCIA Socket Services v2.1 - GET/SET PRIOR INT 1A HANDLER
AH = 9Fh
AL = adapter number
BL = mode
00h get prior INT 1Ah handler
01h set prior INT 1Ah handler
CX:DX -> new prior handler
Return: CF clear if successful
AH destroyed
CX:DX -> old prior handler
CF set on error
AH = error code (01h,15h,18h) (see #0580)
Desc: allows hooking of INT 16h "behind" the Socket Services hook
Note: this API is supported by recent versions of the AMI BIOS
SeeAlso: AH=9Eh,AH=A0h"PCMCIA",AH=AEh"PCMCIA"
--------c-1AA0-------------------------------
INT 1A U - Disk Spool II v2.07+ - INSTALLATION CHECK
AH = A0h
Return: AH = B0h if installed
AL = pending INT 1A/AH=D0h subfunction if nonzero???
ES = code segment
ES:BX -> name of current spool file
ES:SI -> current despool file
CL = despooler state (00h disabled, 41h enabled)
CH = spooler state (00h disabled, 41h enabled)
DL = despooler activity
00h currently active printing a file
41h standing by
DH = 00h ???
= 41h ???
DI = 0000h ???
0001h ???
Program: Disk Spool II is a shareware disk-based print spooler by Budget
Software Company
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=ABh,AH=C0h,AH=D0h,AH=E1h
--------X-1AA0-------------------------------
INT 1A - PCMCIA Socket Services v2.1 - GET/SET SOCKET SERVICES ADDRESS
AH = A0h
AL = adapter number
BH = mode
00h real mode
01h 16:16 protected mode
02h 16:32 protected mode
03h 00:32 (Flat) protected mode
BL = subfunction
00h return number of additional data areas (see #0617)
01h return description of additional data areas (see #0618)
02h accept mode-specific pointers to data areas (see #0619)
ES:EDI -> buffer supplied by caller
Return: CF clear if successful
AH destroyed
CX = number of additional data areas
ES:EDI unchanged
CF set on error
AH = error code (01h,02h,15h,16h,18h) (see #0580)
SeeAlso: AH=9Fh,AH=AEh
Format of PCMCIA Subfunction 00h Buffer Table Entry structure:
Offset Size Description (Table 0617)
00h DWORD 32-bit linear base address of the code segment
04h DWORD segment limit of the code segment
08h DWORD entry point offset
0Ch DWORD 32-bit linear base address of the data segment
(ignored in 00:32 flat mode)
10h DWORD segment limit of the data segment
14h DWORD data area offset. Only used in 32-bit protected mode.
SeeAlso: #0618,#0619
Format of PCMCIA Additional Data Area Description structure [array]:
Offset Size Description (Table 0618)
00h DWORD 32-bit linear base address of the additional data segment
(ignored in 00:32 flat mode)
04h DWORD segment limit of the code segment
08h DWORD data area offset (only used in 32-bit protected mode)
SeeAlso: #0617,#0619
Format of PCMCIA Subfunction 02h Buffer Table Entry structure:
Offset Size Description (Table 0619)
00h DWORD 32-bit offset(ignored in 16:16 protected mode)
04h DWORD selector (only used in 00:32 flat mode)
08h DWORD reserved
SeeAlso: #0617,#0618
--------X-1AA1-------------------------------
INT 1A - PCMCIA Socket Services v2.1 - GET ACCESS OFFSETS
AH = A1h
AL = adapter number
BH = Mode
00h = Real Mode
01h = 16:16 Protected Mode
02h = 16:32 Protected Mode
03h = 00:32 Protected Mode
CX = Number of access offsets
ES:EDI -> buffer supplied by caller, CX words long (see #0620)
Return: CF clear if successful
AH destroyed
DX = number of access offsets supported
ES:EDI unchanged
CF set on error
AH = error code (01h,15h,16h) (see #0580)
Desc: Returns an array of low-level adapter-specific optimized
PC Card access routines for adapters that use registers
or I/O ports to access PC Card memory. Adapters that access
PC Card memory through windows mapped to host system memory
do not support this function.
Note: offsets returned are 16-bit offsets into the
Socket Services code segment. They must be called
appropriately for the processor mode selected.
(Real, 16:16 and 16:32 modes use FAR CALL,
Flat 00:32 mode uses a 32-bit NEAR CALL).
SeeAlso: AH=AEh
Format of Offset Table structure:
Offset Size Description (Table 0620)
00h WORD Set Address
02h WORD Set Auto Increment
04h WORD Read Byte
06h WORD Read Word
08h WORD Read Byte with Auto Increment
0Ah WORD Read Word with Auto Increment
0Ch WORD Read Words
0Eh WORD Read Words with Auto Increment
10h WORD Write Byte
12h WORD Write Word
14h WORD Write Byte with Auto Increment
16h WORD Write Word with Auto Increment
18h WORD Write Words
1Ah WORD Write Words with Auto Increment
1Ch WORD Compare Byte
1Eh WORD Compare Byte with Auto Increment
20h WORD Compare Words
22h WORD Compare Words with Auto Increment
--------X-1AA2-------------------------------
INT 1A - CardBus Socket Services - ACCESS CONFIGURATION SPACE
AH = A2h
??? details not available
Return: ???
--------X-1AA4-------------------------------
INT 1A - CardBus Socket Services - GET BRIDGE WINDOW / WINDOW CAPABILITIES
AH = A4h
??? details not available
Return: ???
SeeAlso: AH=A5h"CardBus"
--------X-1AA5-------------------------------
INT 1A - CardBus Socket Services - SET BRIDGE WINDOW
AH = A5h
??? details not available
Return: ???
SeeAlso: AH=A4h"CardBus"
--------c-1AAB-------------------------------
INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
AH = ABh
Return: AH = BAh if installed
AL = pending INT 1A/AH=ADh subfunction if nonzero???
ES = code segment
ES:BX -> name of current spool file
ES:SI -> current despool file
CL = despooler state (00h disabled, 41h enabled)
CH = spooler state (00h disabled, 41h enabled)
DL = despooler activity
00h currently active printing a file
41h standing by
DH = 00h ???
= 41h ???
DI = 0000h ???
0001h ???
Program: Disk Spool II is a shareware disk-based print spooler by Budget
Software Company
SeeAlso: AH=A0h,AH=ACh,AH=ADh,AH=E1h
--------c-1AAC-------------------------------
INT 1A U - Disk Spool II v1.83 - INSTALLATION CHECK
AH = ACh
Return: (see AH=ABh)
Note: this function is identical to AH=ABh
SeeAlso: AH=A0h,AH=ABh,AH=ADh
--------c-1AAD-------------------------------
INT 1A U - Disk Spool II v1.83 - FUNCTION CALLS
AH = ADh
AL = function code (see #0621)
Return: AH = 00h if successful
SeeAlso: AH=ABh
(Table 0621)
Values for Disk Spool function code:
02h enable spooler only
03h enable the despooler
04h disable the despooler
08h inhibit popup menu
09h enable popup menu
0Ah ???
0Bh disable the spooler
0Ch start despooler after last successfully printed document???
0Dh start despooler at the exact point where it last left off???
0Eh pop up the menu
0Fh ???
11h ???
14h ???
15h ???
16h ???
17h ???
18h ???
19h ???
20h clear file pointed to by the despooler???
21h ???
22h ???
23h ???
30h ???
--------X-1AAE-------------------------------
INT 1A - PCMCIA Socket Services v2.1 - VENDOR SPECIFIC
AH = AEh
AL = adapter number
all other registers are vendor-specific
Return: vendor specific
SeeAlso: AH=A1h,AH=AFh
--------X-1AAE-------------------------------
INT 1A - PCMCIA Socket Services v2.1 - API
AH = AEh
SI = function
0002h ???
0100h ???
0101h ???
8000h ???
8001h ???
details not yet available
Return: CF clear if successful
CF set on error
AH = error code (02h,0Bh,11h,15h,17h) (see #0580)
SeeAlso: AH=9Eh
--------X-1AAF-------------------------------
INT 1A - PCMCIA v2 Card Services - API
AH = AFh
AL = function
00h close memory
01h copy memory
02h deregister client
03h get client information (see #0626)
04h get configuration information (see #0628)
05h get first partition
06h get first region
07h get first tuple (see #0635)
08h get next partition
09h get next region
0Ah get next tuple
0Bh get Card Services information (see #0624)
0Ch get status
0Dh get tuple data (see #0636)
0Eh get first client (see #0625)
0Fh get/register Erase Queue
10h register client (see #0637)
11h reset function
12h map logical socket
13h map logical window
14h map memory page
15h map physical socket
16h map physical window
17h modify window
18h open memory
19h read memory
1Ah register MTD
1Bh release I/O
1Ch release IRQ (see #0639)
1Dh release window
1Eh release configuration (see #0640)
1Fh request I/O (see #0641)
20h request IRQ (see #0642)
21h reqeust window (see #0644)
22h request socket mask
23h return SS entry
24h write memory
25h deregister Erase Queue
26h check Erase Queue
27h modify configuration
28h register timer
29h set region
2Ah get next client
2Bh validate CIS
2Ch request exclusive access (see #0647)
2Dh release exclusive access (see #0647)
2Eh get event mask
2Fh release socket mask
30h request configuration (see #0648)
31h set event mask
32h add Socket Service
33h replace Socket Service
34h vendor-specific
35h adjust resource information
36h access configuration register
37h get first window
38h get next window
39h get memory page
3Ah request DMA
3Bh release DMA
further details not yet available
Return: ??? = result code (see #0622)
SeeAlso: AH=AEh
(Table 0622)
Values for PCMCIA Card Services result codes:
00h successful
01h invalid adapter number
02h bad value for attribute field
03h bad value for base system memory address
04h invalid EDC generator specified
05h (reserved for historical reasons)
06h invalid IRQ level specified
07h invalid PC Card memory array offset
08h invalid page number specified
09h unable to complete read request
0Ah invalid size specified
0Bh invalid socket number
0Ch (reserved for historical reasons)
0Dh invalid window or interface type
0Eh invalid Vcc power level specified
0Fh invalid Vpp1 or Vpp2 power level specified
10h (reserved for historical reasons)
11h invalid window number
12h unable to complete write request
13h (reserved for historical reasons)
14h no PC Card in socket
15h service not supported by implementation
16h unsupported processor mode
17h specified speed not available
18h busy -- retry later
19h undefined error (general failure)
1Ah storage medium write protected
1Bh argument length in (E)CX is invalid
1Ch bad value(s) in argument packet
1Dh configuration has already been locked
1Eh requested resource already in use
1Fh no more items of requested type available
20h out of resources
21h invalid client handle
22h unsupported client version
(Table 0623)
Values for Card Services Callback Event codes:
01h battery dead
02h battery low
03h card locked
04h card has become ready
05h card removed
06h card unlocked
07h motorized ejection complete
08h ejection requested
09h insertion complete
0Ah insertion requested
0Bh power management: resume
0Ch power management: suspend
0Dh exclusive access granted
0Eh exclusive access requested
0Fh perform physical reset
10h physical reset requested
11h card has been reset
12h MTD request (read/write/etc)
14h request for client info
15h timer has expired
16h Socket Service was modified
17h write-protected
18h attention requested
40h card insertion
80h reset complete
81h erase complete
82h registration complete
Format of Card Services Information:
Offset Size Description (Table 0624)
00h WORD length of information record in bytes
02h WORD signature
04h WORD number of sockets
06h WORD revision level
08h WORD Card Services level
0Ah WORD offset of vendor string
0Ch WORD length of vendor string
0Eh WORD number of functions
10h 255 BYTEs vendor string
SeeAlso: #0626
Format of Card Services Client structure:
Offset Size Description (Table 0625)
00h WORD PCMCIA socket number
02h WORD client attributes
Format of Cards Services Client Information:
Offset Size Description (Table 0626)
00h WORD maximum length of data in bytes (180)
02h WORD (ret) length of returned data
04h WORD attributes (see #0627)
06h WORD revision level (BCD)
08h WORD Card Services level (BCD)
0Ah WORD revision date (DOS packed date format) (see #1352)
0Ch WORD offset to name
0Eh WORD length of name
10h WORD offset to vendor string
12h WORD length of vendor string
14h 80 BYTEs buffer for name
64h 80 BYTEs buffer for vendor string
SeeAlso: #0624,#0628
Bitfields for Card Services client attributes:
Bit(s) Description (Table 0627)
0 memory client
1 MTD client
2 I/O client
3 all clients can share this card
4 only one client can use this card at a time
SeeAlso: #0626
Format of Card Services configuration information:
Offset Size Description (Table 0628)
00h WORD socket (usually 0000h)
02h WORD attributes (see #0629)
04h BYTE Vcc value
05h BYTE Vpp1 value
06h BYTE Vpp2 value
07h BYTE interface type (see #0630)
08h DWORD base address of configuration registers
0Ch BYTE card's Status register setting (if present)
0Dh BYTE card's Pin register setting (if present)
0Eh BYTE card's Socket/Copy register setting (if present)
0Fh BYTE card's Option register setting (if present)
10h BYTE bitmap of present card configuration registers
11h BYTE first device type
12h BYTE function code
13h BYTE SysInit mask
14h WORD manufacturer code
16h WORD manufacturer information
18h BYTE valie card register values
19h BYTE IRQ number assigned to PC Card
1Ah WORD IRQ attributes (see #0632)
1Ch WORD base port address (for I/O range 1)
1Eh BYTE number of contiguous ports (for I/O range 1)
1Fh BYTE bitmap of port attributes (for I/O range 1) (see #0633)
20h WORD base port address (for I/O range 2)
22h BYTE number of contiguous ports (for I/O range 2)
23h BYTE bitmap of port attributes (for I/O range 2) (see #0633)
24h BYTE number of I/O address lines decoded (16-bit PC Card only)
25h BYTE extended status register setting (if present)
26h BYTE bitmap of DMA attributes (see #0634)
(note: value at call is used to set!)
27h BYTE assigned DMA channel
28h BYTE number of I/O windows in use on logical socket
29h BYTE number of memory windows in use on logical socket
SeeAlso: #0627,#0648
Bitfields for Card Services Configuration attributes:
Bit(s) Description (Table 0629)
0 exclusive
1 IRQ active
2 CardBus card
3-5 reserved (0)
6 DMA channel is active
7 reserved (0)
8 valid client
9 overwrite voltage value
10-15 reserved (0)
SeeAlso: #0628
Bitfields for Card Services Configuration interface type:
Bit(s) Description (Table 0630)
0 memory interface
1 I/O and memory interface
2 CardBus interface
3-7 reserved (0)
SeeAlso: #0628
Bitfields for Card Services Configuration registers:
Bit(s) Description (Table 0631)
0 option value is value
1 status value
2 pin-replacement value
3 copy value
4 extended status value
5-7 reserved (0)
SeeAlso: #0628
Bitfields for Card Services Configuration IRQ attributes:
Bit(s) Description (Table 0632)
1-0 sharing
00 no sharing
01 time-multiplex sharing
10 dynamic sharing
11 reserved
2 force pulse mode
3 first used together
4-7 reserved
8 pulse IRQ has been assigned
9-15 reserved
SeeAlso: #0628,#0633,#0634,#0639,#0642
Bitfields for Card Services Configuration Port attributes:
Bit(s) Description (Table 0633)
0 shared I/O ports
1 "CS_FirstCommonUsedCard"
2 force alias access
3 =1 sixteen-bit I/O
=0 eight-bit I/O
7-4 reserved (0)
SeeAlso: #0628,#0632,#0634,#0641
Bitfields for Card Services Configuration DMA attributes:
Bit(s) Description (Table 0634)
1-0 sharing mode
00 no sharing
01 time-multiplex sharing
10 dynamic sharing
11 reserved
3-2 DMA request signal
00 reserved
01 DMARQ uses pin SPKR#
10 DMARQ uses pin IOIS16#
11 DMARQ uses pin INPACK#
4 DMA size
0 eight bits
1 sixteen bits
7-5 reserved (0)
SeeAlso: #0628,#0632,#0633
Format of Card Services Tuple information:
Offset Size Description (Table 0635)
00h WORD logical socket number
02h WORD attributes
bit 0: return Link tuples
04h BYTE code value of desired tuple
05h BYTE reserved (0)
06h WORD (ret) TupleFlags
08h DWORD (ret) -> Card Services Link State Information
0Ch DWORD (ret) -> Card Services CIS State Information
10h BYTE (ret) code for tuple
11h BYTE (ret) link value for tuple
SeeAlso: #0636
Format of Card Services GetTupleData record:
Offset Size Description (Table 0636)
00h WORD logical socket
02h WORD attributes
04h BYTE code value of desired tuple
05h BYTE offset into tuple from link byte
06h WORD flags
08h DWORD -> Link
0Ch DWORD -> CIS
10h WORD (call) maximum amount of data to return (0004h)
12h WORD (ret) amount of data returned
14h DWORD (ret) tuple data
SeeAlso: #0635
Format of Card Services Client Registration record:
Offset Size Description (Table 0637)
00h WORD attributes
02h WORD event mask
04h WORD client data (passed to client event handler in DI)
--- 16-bit code ---
06h WORD client data selector (passed to event handler in DS)
08h WORD client data offset (passed to event handler in SI)
0Ah WORD reserved
--- 32-bit code ---
06h WORD reserved
08h DWORD client data offset (passed to event handler in ESI)
------
0Ch WORD expected Card Services version (0210h for v2.10)
Bitfields for Card Services client event codes:
Bit(s) Description (Table 0638)
0 change in write-protect status
1 change in card lock
2 ejection request
3 insertion request
4 battery is dead
5 battery low
6 change in Ready
7 change in Card Detect
8 power management change
9 reset
10 Socket Services updated
11 extended status change
SeeAlso: #0637
Format of Card Services ReleaseIRQ record:
Offset Size Description (Table 0639)
00h WORD logical socket number
02h WORD attributes (see #0632)
04h BYTE assigned IRQ number to be released
Format of Card Services Release Configuration record:
Offset Size Description (Table 0640)
00h WORD logical socket number
Format of Card Services Request I/O record:
Offset Size Description (Table 0641)
00h WORD logical socket number
02h WORD base port 1
04h BYTE size of port range 1
05h BYTE attributes for port range 1 (see #0633)
06h WORD base port 2
08h BYTE size of port range 2
09h BYTE attributes for port range 2 (see #0633)
0Ah BYTE number of address lines (typically 16)
SeeAlso: #0642,#0640
Format of Card Services Request IRQ record:
Offset Size Description (Table 0642)
00h WORD logical socket number
02h WORD attributes (see #0632)
04h BYTE (ret) assigned IRQ number, if successful
05h BYTE IRQ info (see #0643)
06h WORD bitmap of available IRQs (bit 0 = IRQ0, etc.)
(only if bit 4 of IRQ info set)
SeeAlso: #0641,#0640
Bitfields for Card Services Request IRQ info flags:
Bit(s) Description (Table 0643)
7 IRQ is shared
6 pulse (edge-triggered) interrupt
5 level interrupt
4 use IRQ bitmap
--- bit 4 set ---
3 vendor-specific interrupt
2 bus error
1 I/O check interrupt
0 NMI
--- bit 4 clear ---
3-0 IRQ number
SeeAlso: #0642
Format of Card Services Request Window record:
Offset Size Description (Table 0644)
00h WORD logical socket number
02h WORD attributes (see #0645)
04h DWORD system base adress
08h DWORD size of memory window
0Ch BYTE additional info
if attributes bit ??? is set, this is the address-lines field
otherwise, this is the access-speed field (see #0646)
Bitfields for Card Services Request Window attributes:
Bit(s) Description (Table 0645)
0 I/O window instead of memory window
1 attribute memory instead of normal memory (16-bit PC Cards only)
2 window enabled
3 16-bit data path instead of 8-bit path (16-bit PC Cards only, v2.10+)
(ignored if bit 9 set)
4 size is given in 16K pages (invalid for CardBus PC Cards)
5 shared (invalid for CardBus)
6 first shared (invalid for CardBus)
7 "CS_BindingSpecific" (memory window only)
8 card offsets are window-size granular (16-bit PC Card memory window)
9 32-bit data path (CardBus only)
10 reserved (0)
12-11 prefetch/cache
00 neither prefetchable nor cacheable
01 prefetchable but not cacheable
10 prefetchable and cachable
11 reserved
15-13 decoded base address register number (CardBus only)
SeeAlso: #0644,#0646
Bitfields for Card Services Request Window access-speed:
Bit(s) Description (Table 0646)
6-3 mantissa
0000 use device speed code
0001 1.0
0010 1.2
0011 1.2 ???
0100 1.5
0101 2.0
0110 2.5
0111 3.0
1000 3.5
1001 4.0
1010 4.5
1011 5.0
1100 5.5
1101 6.0
1110 7.0
1111 8.0
--- if mantissa==0 ---
2-0 device speed code
000 reserved
001 250 ns
010 200 ns
011 150 ns
100 100 ns
101-111 reserved
--- if mantissa<>0 ---
2-0 speed exponent
000 1 ns
001 10 ns
010 100 ns
011 1 us
100 10 us
101 100 us
110 1 ms
111 10 ms
SeeAlso: #0644,#0645
Format of Card Services Request/Release Exclusive Access record:
Offset Size Description (Table 0647)
00h WORD logical socket number
02h WORD attributes (currently all reserved, must be 0000h)
Format of Card Services Request Configuration record:
Offset Size Description (Table 0648)
00h WORD socket (usually 0000h)
02h WORD attributes (see #0629)
04h BYTE Vcc value
05h BYTE Vpp1 value
06h BYTE Vpp2 value
07h BYTE interface type (see #0630)
08h DWORD base address of configuration registers
0Ch BYTE card's Status register setting (if present)
0Dh BYTE card's Pin register setting (if present)
0Eh BYTE card's Socket/Copy register setting (if present)
0Fh BYTE card's Option register setting (if present)
10h BYTE bitmap of present card configuration registers
11h BYTE extended status register setting (if present)
SeeAlso: #0628
--------!---Section--------------------------
Interrupt List, part 5 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------X-1AB000-----------------------------
INT 1A U - HP 100LX/200LX - PCMCIA - ???
AX = B000h
ES:BX -> parameter block ???
Return: CF clear if ???
CF set if ???
Note: called by HP 100LX/200LX PCMCIA client CIC100.EXE
--------d-1AB001CX4D52-----------------------
INT 1A - Microsoft Real-Time Compression Interface (MRCI) - ROM-BASED SERVER
AX = B001h
CX = 4D52h ("MR")
DX = 4349h ("CI")
Return: CX = 4943h ("IC") if installed
DX = 524Dh ("RM") if installed
ES:DI -> MRCINFO structure (see #0649)
Note: this call is functionally identical to INT 2F/AX=4A12h, which should
be called first, as this call is used for the first, ROM-based
MRCI server, while the other call is used for RAM-based servers
which may be partially or entirely replacing a prior server
SeeAlso: INT 2F/AX=4A12h
Format of MRCINFO structure:
Offset Size Description (Table 0649)
00h 4 BYTEs vendor signature
"MSFT" Microsoft
04h WORD server version (high=major)
06h WORD MRCI specification version
08h DWORD address of server entry point (see #0651)
0Ch WORD bit flags: server capabilities (see #0650)
0Eh WORD bit flags: hardware assisted capabilities (see #0650)
10h WORD maximum block size supported by server (at least 8192 bytes)
Bitfields for MRCI capabilities:
Bit(s) Description (Table 0650)
0 standard compress
1 standard decompress
2 update compress
3 MaxCompress (not present in initial public release)
4 reserved
5 incremental decompress
6 MRCI 2.0 standard compress
7 MRCI 2.0 standard decompress
8-14 reserved
15 this structure is in ROM and can't be modified
(server capabilities only)
(Table 0651)
Call MRCI entry point with:
DS:SI -> MRCREQUEST structure (see #0652)
CX = type of client (0000h application, 0001h file system)
AX = operation
0001h perform standard compression
0002h perform standard decompression
0004h perform update compression
0008h perform MaxCompress
0020h perform incremental decompression
0040h perform MRCI 2.0 standard compression
0080h perform MRCI 2.0 standard decompression
AX = FFFFh clear flags
BX = bitmask of flags to clear (set bits in BX are flags to clear)
Return: AX = status
0000h successful
0001h invalid function
0002h server busy, try again
0003h destination buffer too small
0004h incompressible data
0005h bad compressed data format
BP destroyed (MS-DOS 6.2)
Note: MRCI driver may chain to a previous driver
Format of MRCREQUEST structure:
Offset Size Description (Table 0652)
00h DWORD pointer to source buffer
04h WORD size of source buffer (0000h = 64K)
06h WORD (UpdateCompress only)
(call) offset in source buffer of beginning of changed data
(ret) offset in destination buffer of beginning of changed
compressed data
08h DWORD pointer to destination buffer
must contain original compressed data for UpdateCompress
0Ch WORD size of destination buffer (0000h = 64K)
any compression: size of buffer for compressed data
standard decompression: number of bytes to be decompressed
incremental decompression: number of byte to decompress now
(ret) actual size of resulting data
0Eh WORD client compressed data storage allocation size
10h DWORD incremental decompression state data
set to 00000000h before first incremental decompression call
Notes: the source and destination buffers may not overlap
the source and destination buffer sizes should normally be the same
application should not update the contents of the MRCREQUEST structure
between incremental decompression calls
--------X-1AB101-----------------------------
INT 1A - PCI BIOS v2.0c+ - INSTALLATION CHECK
AX = B101h
EDI = 00000000h
Return: AH = 00h if installed
CF clear
EDX = 20494350h (' ICP')
EDI = physical address of protected-mode entry point (see #0655)
AL = PCI hardware characteristics (see #0654)
BH = PCI interface level major version (BCD)
BL = PCI interface level minor version (BCD)
CL = number of last PCI bus in system
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
some BIOSes do not change EDI, so applications looking for the
protected-mode entry point should set EDI to 00000000h before
calling this function
SeeAlso: AX=B181h
(Table 0653)
Values for PCI BIOS v2.0c+ status codes:
00h successful
81h unsupported function
83h bad vendor ID
86h device not found
87h bad PCI register number
Bitfields for PCI hardware characteristics:
Bit(s) Description (Table 0654)
0 configuration space access mechanism 1 supported
1 configuration space access mechanism 2 supported
2-3 reserved
4 Special Cycle generation mechanism 1 supported
5 Special Cycle generation mechanism 2 supported
6-7 reserved
(Table 0655)
Call protected-mode entry point with:
registers as for real/V86-mode INT call
CS = ring 0 descriptor with access to full address space
Return: as for real/V86-mode call
--------X-1AB102-----------------------------
INT 1A - PCI BIOS v2.0c+ - FIND PCI DEVICE
AX = B102h
CX = device ID (see #0659,#0665,#0666,#0793,#0795)
DX = vendor ID (see #0656)
SI = device index (0-n)
Return: CF clear if successful
CF set on error
AH = status (00h,83h,86h) (see #0653)
00h successful
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 func)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
device ID FFFFh may be reserved as a wildcard in future implementations
the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
all devices sharing a single vendor ID and device ID may be enumerated
by incrementing SI from 0 until error 86h is returned
SeeAlso: AX=B182h
(Table 0656)
Values for PCI vendor ID:
003Dh Martin-Marietta Corporation
0E11h Compaq (see #0657)
1000h Symbios Logic Inc (formerly NCR) (see #0658)
1002h ATI (see #0659)
1003h ULSI Systems
1004h VLSI Technologies (see #0660)
1005h Avance Logics (ADL) (see #0661)
1006h Reply Group
1007h Netframe Systems Inc.
1008h Epson
100Ah Phoenix Technologies
100Bh National Semiconductor (see #0662)
100Ch Tseng Labs (see #0663) (also ID 10BEh)
100Dh AST Research
100Eh Weitek (see #0664)
1010h Video Logic Ltd
1011h DEC (see #0665)
1012h Micronics Computers
1013h Cirrus Logic (see #0666,#0028)
1014h IBM (see #0667)
1015h LSI Logic Corp. of Canada
1016h ICL Personal Systems
1017h SPEA Software AG
1018h Unisys
1019h EliteGroup Computer Sys
101Ah NCR/AT&T GIS
101Bh Vitesse Semiconductor
101Ch Western Digital (see #0668)
101Eh AMI (see #0669)
101Fh Picturetel
1020h Hitachi Computer Electronics
1021h Oki Electric Industry
1022h Advanced Micro Devices (see #0670)
1023h Trident Microsystems (see #0671)
1024h Zenith Data Systems
1025h Acer
1028h Dell Computer Corporation
1029h Siemens Nixdorf
102Ah LSI Logic, Headland Division (see #0672)
102Bh Matrox (see #0673)
102Ch Chips & Technologies (see #0674)
102Dh Wyse Technologies
102Eh Olivetti Advanced Technology
102Fh Toshiba America (see #0675)
1030h TMC Research
1031h Miro / Micro Computer Products AG (see #0676)
1032h Compaq
1033h NEC Corporation (see #0677)
1034h Burndy Corporation
1035h Computers and Communications Research Lab
1036h Future Domain (see #0678)
1037h Hitachi Micro Systems
1038h AMP Incorporated
1039h Silicon Integrated System (SIS) (see #0679)
103Ah Seiko Epson Corporation
103Bh Tatung Corp. of America
103Ch Hewlett-Packard (see #0680)
103Eh Solliday
103Fh Logic Modeling
1040h Kubota Pacific
1041h Computrend
1042h PC Technology (see #0681,#0826) (see also PORT 03F0h"PCTech")
1043h Asustek
1044h Distributed Processing Technology (DPT) (see #0682)
1045h OPTi (see #0683)
1046h IPC Corporation, Ltd.
1047h Genoa Systems Corp.
1048h Elsa GmbH
1049h Fountain Technology
104Ah SGS Thomson Microelectric (see #0684)
104Bh BusLogic (see #0685)
104Ch Texas Instruments (see #0686)
104Dh Sony Corporation
104Eh Oak Technology (see #0687)
104Fh Co-Time Computer Ltd.
1050h Winbond (see #0688)
1051h Anigma Corp.
1052h Young Micro Systems
1054h Hitachi, Ltd. (see #0689)
1055h EFAR Microsystems (see #0690)
1056h ICL
1057h Motorola (see #0691)
1058h Electronics and Telecommunications Research
1059h Teknor Microsystems
105Ah Promise Technology (see #0692)
105Bh Foxconn International
105Ch Wipro Infotech Ltd.
105Dh Number 9 Computer Company (see #0693)
105Eh VTech Engineering Canada, Ltd.
105Fh Infotronic America, Inc.
1060h United Microelectronics (UMC) (see #0694)
1061h 8x8 (X Tech) (see #0695)
1062h Maspar Computer Copr.
1063h Ocean Office Automation
1064h Alcatel Cit
1065h Texas Microsystems
1066h PicoPower Technology (see #0696)
1067h Mitsubishi Electronics
1068h Diversified Technology
1069h Mylex Corporation (see #0697)
106Ah Aten Research
106Bh Apple Computer
106Ch Hyundai Electronics America
106Dh Sequent
106Eh DFI Inc.
106Fh City Gate Development, Ltd.
1070h Daewoo Telecom Ltd.
1071h Mitac
1072h GIT Co., Ltd.
1073h Yamaha Corporation (see #0698)
1074h NexGen Microsystems (see #0699)
1075h Advanced Integration Research
1076h Chaintech Computer Co. Ltd.
1077h Q Logic (see #0700)
1078h Cyrix Corporation
1079h I-Bus
107Ah Networth
107Bh Gateway 2000
107Ch Goldstar Co. Ltd.
107Dh Leadtek Research (see #0701)
107Eh Interphase Corporation (see #0702)
107Fh Data Technology Corporation (DTC) (see #0703)
1080h Contaq Microsystems (see #0704)
1081h Supermac Technology
1082h EFA Corporation of America
1083h Forex Computer Corporation (see #0705)
1084h Parador
1085h Tulip Computers Int'l BV
1086h J. Bond Computer Systems
1087h Cache Computer
1088h Microcomputer Systems (M) Son
1089h Data General Corporation
108Ah Bit3 Computer (see #0706)
108Ch Elonex PLC (Oakleigh Systems, Inc)
108Dh Olicom (see #0707)
108Eh Sun Microsystems
108Fh Systemsoft Corporation
1090h Encore Computer Corporation
1091h Intergraph Corporation (see #0708)
1092h Diamond Computer Systems
1093h National Instruments (see #0709)
1094h First International Computers (FIC)
1095h CMD Technology, Inc. (see #0710)
1096h Alacron
1097h Appian Technology (see #0711)
1098h Vision / Quantum Designs Ltd (see #0712)
1099h Samsung Electronics Co. Ltd.
109Ah Packard Bell
109Bh Gemlight Computer Ltd.
109Ch Megachips Corporation
109Dh Zida Technologies
109Eh Brooktree Corporation (see #0713)
109Fh Trigem Computer Inc.
10A0h Meidensha Corporation
10A1h Juko Electronics Inc. Ltd.
10A2h Quantum Corporation
10A3h Everex Systems Inc.
10A4h Globe Manufacturing Sales
10A5h Racal Interlan
10A6h Informtech Industrial Ltd.
10A7h Benchmarq Microelectronics
10A8h Sierra Semiconductor (see #0714)
10A9h Silicon Graphics
10AAh ACC Microelectronics (see #0715)
10ABh Digicom
10ACh Honeywell IASD
10ADh Symphony Labs (see #0716)
10AEh Cornerstone Technology
10AFh Microcomputer Systems
10B0h CardExpert Technology
10B1h Cabletron Systems, Inc.
10B2h Raytheon Company
10B3h Databook Inc
10B4h STB Systems
10B5h PLX Technology (see #0717)
10B6h Madge Networks (see #0718)
10B7h 3com Corporation (see #0719)
10B8h Standard Microsystems Corporation (SMC) (see #0720)
10B9h Acer Labs Inc. (see #0721)
10BAh Mitsubishi Electronics Corp.
10BBh Dapha Electronics Corporation
10BCh Advanced Logic Research Inc. (ALR)
10BDh Surecom Technology (see #0722)
10BEh Tseng Labs International Corp. (see #0663)
10BFh Most Inc.
10C0h Boca Research Inc.
10C1h ICM Corp. Ltd.
10C2h Auspex Systems Inc.
10C3h Samsung Semiconductors
10C4h Award Software International Inc.
10C5h Xerox Corporation
10C6h Rambus Inc.
10C7h Media Vision
10C8h Neomagic Corporation (see #0723)
10C9h DataExpert Corporation
10CAh Fujitsu
10CBh Omron Corporation
10CCh Mentor Arc Inc.
10CDh Advanced System Products (see #0724)
10CEh Radius Inc.
10CFh Citicorp TTI (see #0725)
10D0h Fujitsu Limited
10D1h Future+ Systems
10D2h Molex Incorporated
10D3h Jabil Circuit Inc.
10D4h Hualon Microelectronics
10D5h Autologic Inc.
10D6h Cetia
10D7h BCM Advanced Research
10D8h Advanced Peripherals Labs
10D9h Macronix International Co. Ltd
10DAh Thomas-Conrad Corporation
10DBh Rohm Research
10DCh CERN/ECP/EDU (see #0726)
10DDh Evans & Sutherland (see #0727)
10DEh NVidia Corporation
10DFh Emulex Corporation (see #0728)
10E0h Integrated Micro Solutions (IMS) (see #0729)
10E1h TekRAM Technology Corporation Ltd. (see #0730)
10E2h Aptix Corporation
10E3h Newbridge Microsystems (see #0731)
10E4h Tandem Computers
10E5h Micro Industries
10E6h Gainbery Computer Products Inc.
10E7h Vadem
10E8h Applied Micro Circuits Corp. (see #0732)
10E9h Alps Electronic Corp. Ltd.
10EAh Integraphics Systems (see #0733)
10EBh Artist Graphics (see #0734)
10ECh Realtek Semiconductor (see #0735)
10EDh ASCII Corporation (see #0736)
10EEh Xilinx Corporation
10EFh Racore Computer Products
10F0h Peritek Corporation
10F1h Tyan Computer
10F2h Achme Computer Inc.
10F3h Alaris Inc.
10F4h S-MOS Systems
10F5h NKK Corporation (see #0737)
10F6h Creative Electronic Systems SA
10F7h Matsushita Electric Industrial Corp. Ltd.
10F8h Altos India Ltd.
10F9h PC Direct
10FAh Truevision (see #0738)
10FBh Thesys Microelectronics
10FCh I/O Data Device Inc.
10FDh Soyo Technology Corp. Ltd.
10FEh Fast Electronic GmbH
10FFh N-Cube
1100h Jazz Multimedia
1101h Initio Corporation (see #0739)
1102h Creative Labs
1103h Triones Technologies Inc.
1104h Rasterops
1105h Sigma Designs, Inc.
1106h VIA Technologies (see #0740)
1107h Stratus Computer
1108h Proteon Inc. (see #0741)
1109h Cogent Data Technologies (see #0742)
110Ah Siemens AG / Siemens Nixdorf AG (see #0743)
110Bh Xenon Microsystems
110Ch Mini-Max Technology Inc.
110Dh ZNyX Corporation
110Eh CPU Technology
110Fh Ross Technology
1110h Powerhouse Systems
1111h Santa Cruz Operation (SCO)
1112h Rockwell / RNS division of Meret Communications Inc. (see #0744)
1113h Accton Technology Corporation
1114h Atmel Corporation
1115h DuPont Pixel Systems
1116h Data Translation
1117h Datacube Inc. (see #0745)
1118h Berg Electronics
1119h Vortex Computersysteme GmbH (see #0746)
111Ah Efficient Networks, Inc. (see #0747)
111Bh Teledyne Electronic Systems
111Ch Tricord Systems, Inc.
111Dh Integrated Device Technology
111Eh Eldec Corporation
111Fh Precision Digital Images
1120h EMC Corporation
1121h Zilog
1122h Multi-tech Systems, Inc.
1124h Leutron Vision AG
1125h Eurocore
1126h Vigra
1127h FORE Systems (see #0748)
1128h ???
1129h Firmworks
112Ah Hermes Electronics Co.
112Bh Linotype - Hell AG
112Dh Ravicad
112Eh Infomedia MicroElectronics Inc (see #0749)
112Fh Imaging Technology (see #0750)
1130h Computervision
1131h Philips Semiconductors
1132h Mitel Corp
1133h Eicon Technology Corporation
1134h Mercury Computer Systems Inc (see #0751)
1135h Fuji Xerox Co Ltd (see #0752)
1136h Momentum Data Systems
1137h Cisco Systems Inc
1138h Ziatech Corporation (see #0753)
1139h Dynamic Pictures Inc (see #0754)
113Ah FWB Inc
113Ch Cyclone Microsystems (PLX) (see #0755)
113Dh Leading Edge Products Inc
113Eh Sanyo Electric Co
113Fh Equinox Systems
1140h Intervoice Inc
1141h Crest Microsystem Inc (see #0756)
1142h Alliance Semiconductor Corp (see #0757)
1143h Netpower, Inc.
1144h Cincinnati Milacron (see #0758)
1145h Workbit Corp
1146h Force Computers
1147h Interface Corp.
1148h Schneider & Koch Co. (see #0759)
1149h Win System Corporation
114Ah VMIC (see #0760)
114Bh Canopus Co.
114Ch Annabooks
114Dh IC Corporation
114Eh Nikon Systems Inc
114Fh Digi International / Stargate (see #0761)
1150h Thinking Machines Corp.
1151h JAE Electronics Inc.
1152h Megatek
1153h Land Win Electronic Corp.
1154h Melco Inc.
1155h Pine Technology Ltd.
1156h Periscope Engineering
1157h Avsys Corporation
1158h Voarx R&D Inc. (see #0762)
1159h MuTech (see #0763)
115Ah Harleguin Ltd.
115Bh Parallax Graphics
115Ch ???
115Dh Xircom
115Eh Peer Protocols Inc.
115Fh ???
1160h Megasoft Inc.
1161h PFU Ltd. (see #0764)
1162h OA Laboratory Co Ltd.
1163h Creative Labs (see #0765)
1164h Advanced Peripherals Tech
1165h Imagraph Corporation (see #0766)
1166h Pequr Technology Inc.
1167h Mutoh Industries, Inc.
1168h Thine Electronics Inc
1169h ???
116Ah Polaris Communications
116Bh Connectware Inc
116Ch ???
116Dh ???
116Eh ???
116Fh Workstation Technology
1170h Inventec Corporation
1171h Loughborough Sound Images
1172h Altera Corporation
1173h Adobe Systems
1174h Bridgeport Machines
1175h Mitron Computer Inc.
1176h SBE
1177h Silicon Engineering
1178h Alfa Inc (see #0767)
1179h Toshiba America Info Systems
117Ah A-Trend Technology
117Bh ???
117Ch Atto Technology
117Dh ???
117Eh T/R Systems
117Fh ???
1180h Ricoh Co Ltd
1181h Telmatics International
1182h ???
1183h Fujikura Ltd
1184h Forks Inc
1185h Dataworld
1186h D-Link System Inc
1187h Advanced Technology Laboratories
1188h Shima Seiki Manufacturing Ltd.
1189h Matsushita Electronics (see #0768)
118Ah Hilevel Technology
118Bh ???
118Ch Corollary Inc (see #0769)
118Dh BitFlow Inc (see #0770)
118Eh Hermstedt GmbH
118Fh ???
1190h ???
1191h Artop Electric (see #0771)
1192h Densan Co. Ltd
1193h Zeitnet Inc. (see #0772)
1194h Toucan Technology
1195h Ratoc System Inc
1196h Hytec Electronics Ltd
1197h Gage Applied Sciences Inc.
1198h Lambda Systems Inc
1199h Digital Communications Associates Inc,
119Ah Mind Share Inc.
119Bh Omega Micro Inc.
119Ch Information Technology Inst.
119Dh Bug Sapporo Japan
119Eh Fujitsu
119Fh Bull Hn Information Systems
11A0h Convex Computer Corporation
11A1h Hamamatsu Photonics K.K.
11A2h Sierra Research and Technology
11A4h Barco
11A5h MicroUnity Systems Engineering, Inc.
11A6h Pure Data
11A7h Power Computing Corp.
11A9h InnoSys Inc. (see #0773)
11AAh Actel
11ABh Galileo Technology Ltd. (see #0774)
11ACh Canon Information Systems
11ADh Lite-On Communications Inc
11AEh Scitex Corporation Ltd
11AFh Pro-Log Corporation
11B0h V3 Semiconductor Inc. (see #0775)
11B1h Apricot Computers
11B2h Eastman Kodak
11B3h Barr Systems Inc.
11B4h Leitch Technology International
11B5h Radstone Technology Plc
11B6h United Video Corp
11B7h Motorola
11B8h Xpoint Technologies Inc
11B9h Pathlight Technology Inc. (see #0776)
11BAh Videotron Corp
11BBh Pyramid Technology
11BCh Network Peripherals Inc
11BDh Pinnacle Systems Inc.
11BEh International Microcircuits Inc
11C3h NEC Corporation
11C4h Document Technologies Ind.
11C5h Shiva Corporatin
11C7h D.C.M. Data Systems
11C8h Dolphin Interconnect Solutions (see #0777)
11C9h MAGMA
11CAh LSI Systems Inc
11CBh Specialix Research Ltd. (see #0778)
11CCh Michels & Kleberhoff Computer GmbH
11CDh HAL Computer Systems Inc.
11DEh Zoran Corporation
11DFh New Wave PDG
11E0h ???
11E1h GEC Plessey Semi Inc.
11E2h Samsung Information Systems Americ
11E3h Quicklogic Corporation
11E4h Second Wave Inc.
11E5h IIX Consulting
11E6h Mitsui-Zosen System Research
11E7h ???
11E8h Digital Processing Systems Inc.
11E9h ???
11EAh Elsag Bailey
11EBh Formation Inc.
11ECh Coreco Inc.
11EDh Mediamatics
11EEh Dome Imaging Systems Inc.
11EFh Nicolet Technologies B.V.
11F0h Compu-Shack GmbH
11F1h Symbios Logic Inc.
11F2h Picture Tel Japan K.K.
11F3h Keithley Metrabyte
11F4h Kinetic Systems Corporation
11F5h Computing Devices International
11F6h Powermatic Data Systems Ltd.
11F6h Compex USA, Inc. (see #0779)
11F7h Scientific Atlanta
11F8h PMC-Sierra Inc. (see #0780)
11FEh RP ??? (see #0781)
120Eh Cyclades (see #0782)
1220h Ariel Corporation (see #0783)
122Dh Aztech Systems Ltd
1239h The 3DO Company
124Dh Stallion Technologies
1254h Linear Systems Ltd.
125Ch Aurora Technologies, Inc.
1275h Network Appliance
127Ah Rockwell Semiconductor Systems
1296h Kofax Image Products
12C5h Picture Elements, Inc. (see #0784)
1C1Ch Symphony (see #0785)
1DE1h TekRAM (see #0786)
3D3Dh 3DLabs (see #0787)
4005h Avance Logic, Inc. (see #0788)
4B10h Buslogic Inc. (see #0789)
5333h S3 (see also #0790)
5700h Netpower
6374h c't Magazin fuer Computertechnik (see #0791)
8008h Quancom Electronic GmbH (see #0792)
8086h Intel (see also #0793)
8800h Trigem Computer (see #0794)
8E0Eh Computone Corporation
9004h Adaptec (see #0795)
907Fh Atronics (see #0796)
EDD8h Ark Logic Inc (see #0797)
SeeAlso: #0798
(Table 0657)
Values for Compaq PCI device code:
0001h EISA Bridge
0002h ISA Bridge
1000h Triflex/PCI CPU Bridge
2000h Triflex/PCI CPU Bridge
3032h QVision
3033h QVision 1280/p
3034h QVision 1280
4000h Triflex/PCI CPU Bridge
F130h ThunderLAN
SeeAlso: #0656
(Table 0658)
Values for Symbios Logic (formerly NCR) PCI device code:
0001h PCI revision ID:
00-0Fh 53C810 (fast SCSI)
10-1Fh 53C810A (fast SCSI)
20-2Fh 53C810ALV (fast SCSI)
0002h 53C820 (fast wide SCSI)
0003h PCI revision ID:
00-0Fh 53C825 (fast wide SCSI)
10-1Fh 53C825A (Ultra wide SCSI)
0004h 53C815 (fast SCSI)
0005h 53C810AP (fast SCSI)
0006h PCI revision ID:
00-0Fh 53C860 (Ultra SCSI)
10-1Fh 53C860LV (Ultra SCSI)
000Fh 53C875 (Ultra wide SCSI)
SeeAlso: #0656
(Table 0659)
Values for ATI PCI device code:
4158h 68800AX (Mach32)
4354h 215CT222
4358h 210888CX
4758h 210888GX (Mach64)
SeeAlso: #0656
(Table 0660)
Values for VLSI Technologies PCI device code:
0005h 82C592 CPU Bridge
0006h 82C593 ISA Bridge
0007h 82C594 Wildcat System Ctrlr
0008h VL82C597 Wildcat ISA Bridge
0009h 82C597
000Ch 82C541
000Dh 82C543
0101h 82C532
0102h 82C534
0104h 82C535
0105h 82C147
0200h 82C975 RISC GUI Accelerator
0280h 82C925 RISC GUI Accelerator
SeeAlso: #0656
(Table 0661)
Values for Avance Logic, Inc. (Avance Logics) PCI device code:
2301h ALG2301 GUI accelerator
2302h ALG2302 GUI accelerator
SeeAlso: #0656,INT 10/AX=4F70h
(Table 0662)
Values for National Semiconductor PCI device code:
0001h DP83810 Ethernet
D001h NS87410 EIDE controller
SeeAlso: #0656
(Table 0663)
Values for Tseng Labs PCI device code:
3202h ET4000/W32p-2
3205h ET4000/W32p-B
3206h ET4000/W32p-C
3207h ET4000/W32p-D
3208h ET6000
SeeAlso: #0656
(Table 0664)
Values for Weitek PCI device code:
9000h Power9000???
9001h Power9001
9100h Power9100
SeeAlso: #0656
(Table 0665)
Values for DEC PCI device code:
0001h DC21050 DEC BRD PCI-PCI bridge
0002h DC21040 Tulip
0009h DC21140 Tulip Fast
000Fh DEFPA FDDI
0014h DC21041 Tulip Plus
0016h DGLPB ATM
0019h DC21143 PCI/Cardbus Ethernet
0024h 21151 PCI-PCI Bridge
SeeAlso: #0656
(Table 0666)
Values for Cirrus Logic PCI device code:
00A0h Cirrus 5430
00A4h Cirrus 5434-4
00A8h Cirrus 5434-8
00A8h Cirrus 5434-8
00ACh Cirrus 5436
00B8h Cirrus GD5446
1100h Cirrus 6729
1200h Cirrus 7542
1202h Cirrus 7543
1204h Cirrus 7541
SeeAlso: #0656
(Table 0667)
Values for IBM PCI device code:
0002h MCA Bridge
0005h Alta Lite CPU Bridge
0007h Alta MP CPU Bridge
000Ah ISA Bridge
0017h CPU Bridge
0018h Auto LANStreamer
001Bh GXT-150P Graphics Adapter
001Dh 82G2675
0020h MCA Bridge
0022h PCI-PCI Bridge
0036h Miami/PCI 32-bit LocalBus Bridge
0047h ???
0048h ???
004Ah ???
004Bh ???
004Ch ???
004Dh ???
004Eh ???
004Fh ???
0050h ???
0051h ???
0052h ???
0053h ???
0055h ???
0059h ???
005Ah ???
005Bh ???
SeeAlso: #0656
(Table 0668)
Values for Western Digital PCI device code:
0193h WD33C193A 8-bit SCSI
0196h SCSI Bridge
0197h WD33C197A 16-bit SCSI
0296h WD33C296A 16-bit SCSI
3193h WD7193 Fast SCSI-II
3197h WD7197 Fast-Wide SCSI-II
3296h WD7197
4296h WD33C296 Wide Fast-20 Bridge
C24Ah 90C?
SeeAlso: #0656
(Table 0669)
Values for AMI PCI device code:
9010h MegaRAID
9030h ??? IDE Controller
9031h ??? IDE Controller
9032h ??? IDE/SCSI Controller
9033h ??? SCSI Controller
9040h ??? Multimedia card
SeeAlso: #0656
(Table 0670)
Values for Advanced Micro Devices (AMD) PCI device code:
2000h Am79C970 (Lance)
Am79C970A (PCnet-PCI II, PCI revision ID is 1xh)
Am79C971 (PCnet-FAST, PCI revision ID is 2xh)
2020h Am53c974 SCSI (see #0823)
2040h Am79C974 Ethernet/SCSI
SeeAlso: #0656
(Table 0671)
Values for Trident PCI device code:
9320h ??? 32-bit GUI accelerator
9350h ??? 32-bit GUI accelerator
9360h ??? Flat-Panel controller
9420h Trident 9420
9440h Trident 9440
9460h Trident 9460
9660h Trident 9660
9682h ??? Multimedia accelerator
SeeAlso: #0656
(Table 0672)
Values for LSI Logic PCI device code:
0000h Hydra (Pentium chipset)
0010h Aspen (486 chipset)
SeeAlso: #0656
(Table 0673)
Values for Matrox PCI device code:
0518h MGA-II (Ultima)
0519h Millenium (2064W)
0D10h MGA-I (Impression)
SeeAlso: #0656
(Table 0674)
Values for Chips & Technologies PCI device code:
00B8h C&T 64310 GUI Accelerator
00D0h C&T 65545 Flat Panel/CRT VGA
00D8h F65545
00DCh F65548
SeeAlso: #0656
(Table 0675)
Values for Toshiba America PCI device code:
0009h r4x00 Bridge
SeeAlso: #0656
(Table 0676)
Values for Miro / Micro Computer Products AG PCI device code:
5601h 36050
5607h video in/out w/ MPEG
SeeAlso: #0656
(Table 0677)
Values for NEC Corporation PCI device code:
0001h PCI-to-486 Bridge
0002h PCI-to-VL98 Bridge
0003h ATM LAN controller
0004h r4000PCI Bridge
0005h PCI-to-486 Bridge
0006h GUI Accelerator
0007h PCI-to-UXbus Bridge
0008h GUI Accelerator
0009h PC-98 Graphics Controller
SeeAlso: #0656
(Table 0678)
Values for Future Domain PCI device code:
0000h TMC-36C70 / TMC-18C30 (fast SCSI)
SeeAlso: #0656
(Table 0679)
Values for Silicon Integrated System (SIS) PCI device code:
0001h SiS6201
0002h SiS6202
0006h SI 85C501/2
0008h SI 85C503/5513
0205h SiS6205
0406h SiS501
0496h SiS496
0596h Pentium chipset
0601h SiS601
3602h IDE controller
5401h 486 chipset
5511h SiS5511 Pentium chipset
5513h SiS5513 EIDE controller
5581h Pentium chipset
5582h ISA Bridge
5596h Pentium chipset
6204h video decoder/MPEG
6205h PCI VGA controller
SeeAlso: #0656
(Table 0680)
Values for Hewlett-Packard PCI device code:
1030h J2585A DeskDirect 10/100 PCI NIC
1040h J2973A DeskDirect 10BaseT PCI NIC
1041h J2585B DeskDirect 10/100 PCI NIC
1042h J2970A DeskDirect 10BaseT/2 PCI NIC
2910h E2910A PCI-bus exerciser
2925h E2925A PCI-bus exerciser
SeeAlso: #0656
(Table 0681)
Values for PC Technology PCI device code:
1000h RZ1000
1001h RZ1001
SeeAlso: #0656
(Table 0682)
Values for Distributed Processing Technology (DPT) PCI device code:
A400h 2124A/9X EATA SmartCache/RAID SCSI
SeeAlso: #0656
(Table 0683)
Values for OPTi PCI device code:
A0F8h 82C750 (Vendetta) USB controller
C557h 82C557
C558h 82C558
C567h 82C750 (Vendetta, device 0)
C568h 82C750 (Vendetta, device 1)
C621h 82C621 IDE controller
C822h 82C822
C824h 82C824 FireFox PC-Card controller
C825h 82C825 FireBridge II
SeeAlso: #0656
(Table 0684)
Values for SGS Thomson Microelectronics PCI device code:
0008h SGS 2000
0009h SGS 1764
SeeAlso: #0656
(Table 0685)
Values for BusLogic PCI device code:
0140h MultiMaster NC
1040h MultiMaster
8130h FlashPoint
SeeAlso: #0656
(Table 0686)
Values for Texas Instruments PCI device code:
0500h 100 Mbit LAN controller
0508h tms380c2x
1000h TI PCI Eagle i/f
A001h TDC1570 64-bit ATM sar
A100h TDC1561 32-bit ATM sar
AC10h PCI1050 PCCard controller
AC11h PCI1053 PCCard controller
AC12h PCI1130 PCCard controller
SeeAlso: #0656
(Table 0687)
Values for Oak Technology PCI device code:
0107h OTI-0107 (Spitfire)
SeeAlso: #0656
(Table 0688)
Values for Winbond PCI device code:
0000h ??? Ethernet controller
0001h 83769
0105h 82C105
SeeAlso: #0656
(Table 0689)
Values for Hitachi Ltd. PCI device code:
0001h PCI Bridge
0002h PCI-bus controller
SeeAlso: #0656
(Table 0690)
Values for EFAR Microsystems PCI device code:
0810h 486 Bridge
0922h Pentium/P54C Bridge
0926h ISA Bridge
SeeAlso: #0656
(Table 0691)
Values for Motorola PCI device code:
0001h MPC105 PowerPC chipset
SeeAlso: #0656
(Table 0692)
Values for Promise Technology PCI device code:
5300h Promise 5300
SeeAlso: #0656
(Table 0693)
Values for Number 9 Computer Company PCI device code:
2309h Imagine 128
2339h Imagine 128-2
SeeAlso: #0656
(Table 0694)
Values for United Microelectronics (UMC) PCI device code:
0001h UM82C881 (486 chipset)
0002h UM82C776 (ISA Bridge)
0101h UM8673F
0881h UM8881 (486 chipset)
0886h UM8886F (ISA Bridge)
0891h UM8891A
1001h UM886A (dual IDE controller)
673Ah UM8886BF
8710h UM8710 VGA controller
886Ah UM8886A
8881h UM8881F
8886h UM8886F
8891h UM8891 (Pentium chipset)
9017h UM9017F
E881h UM8881 (486 chipset)
E886h UM8886N
E891h UM8891N
SeeAlso: #0656
(Table 0695)
Values for 8x8 (X Tech) PCI device code:
0001h AGX-016
0002h IIT3204/3501 MPEG decoder
SeeAlso: #0656
(Table 0696)
Values for PicoPower PCI device code:
0000h PT80C826 VL Bridge
0001h Vesuvius V1-LS System Controller
0002h Vesuvius V3-LS ISA Bridge
8002h Vesuvius V3-LS ISA Bridge
SeeAlso: #0656
(Table 0697)
Values for Mylex Corporation PCI device code:
0001h DAC960P Wide SCSI + RAID
SeeAlso: #0656
(Table 0698)
Values for Yamaha Corporation PCI device code:
0001h ?? 3D graphics controller
0002h YGV615 RPA3 3D graphics controller
SeeAlso: #0656
(Table 0699)
Values for NexGen Microsystems PCI device code:
4E78h NexGen 82C501
SeeAlso: #0656
(Table 0700)
Values for Q Logic PCI device code:
1020h ISP1020 Fast-Wide SCSI
1022h ISP1022 Fast-Wide SCSI
SeeAlso: #0656
(Table 0701)
Values for Leadtek Research PCI device code:
0000h LeadTek 805
SeeAlso: #0656
(Table 0702)
Values for Interphase PCI device code:
0001h ATM interface
0002h 100 vg amylan controller
SeeAlso: #0656
(Table 0703)
Values for Data Technology Corporation (DTC) PCI device code:
0802h SL82C105 EIDE Controller
SeeAlso: #0656
(Table 0704)
Values for Contaq Microsystems PCI device code:
0600h Contaq 82C599
SeeAlso: #0656
(Table 0705)
Values for Forex Computer Corporation PCI device code:
0001h FR710 EIDE Controller
0613h ??? Host Bridge
SeeAlso: #0656
(Table 0706)
Values for Bit3 Computer PCI device code:
0001h Model 617 PCI-VME Bus Adapter
SeeAlso: #0656
(Table 0707)
Values for Olicom PCI device code:
0001h ??? Ethernet Controller
SeeAlso: #0656
(Table 0708)
Values for Intergraph Corporation PCI device code:
0020h 3D graphics processor
0021h 3D graphics processor w/texture
0040h 3D graphics frame buffer
0041h 3D graphics frame buffer
0060h proprietary bus bridge
0720h Motion JPEG codec
SeeAlso: #0656
(Table 0709)
Values for National Instruments PCI device code:
C801h PCI-GPIB
SeeAlso: #0656
(Table 0710)
Values for CMD Technology, Inc. PCI device code:
0640h CMD 640
0642h IDE controller with RAID-1
0646h CMD 646 EIDE
0650h PBC0650A Fast SCSI-II
SeeAlso: #0656
(Table 0711)
Values for Appian Technology:
0038h ??? EIDE Controller
SeeAlso: #0656
(Table 0712)
Values for Vision / Quantum Designs Ltd. PCI device code:
0001h QD8500
0002h QD8580
SeeAlso: #0656
(Table 0713)
Values for Brooktree Corporation PCI device code:
0350h BT848 TV/PCI with DMA Push
2115h BtV 2115 Mediastream Controller
2125h BtV 2125 Mediastream Controller
8230h ???
SeeAlso: #0656
(Table 0714)
Values for Sierra Semiconductor PCI device code:
0000h STB 64-bit GUI accelerator
SeeAlso: #0656
(Table 0715)
Values for ACC Microelectronics PCI device code:
0000h ACC 2056
SeeAlso: #0656
(Table 0716)
Values for Symphony Labs PCI device code:
0001h 83769
0103h sl82c103 PCI-IDE Controller
0105h 82C105 bus-master PCI-IDE controller
SeeAlso: #0656
(Table 0717)
Values for PLX Technology PCI device code:
9036h PCI9036 interface chip
9060h PCI9060xx interface chip
SeeAlso: #0656
(Table 0718)
Values for Madge Networks PCI device code:
0001h Smart 16/4 Ringnode
1000h Collage 25 ATM adapter
1001h Collage 155 ATM adapter
SeeAlso: #0656
(Table 0719)
Values for 3com Corporation PCI device code:
5900h 3C590
5950h 3C595TX
5951h 3C595T4
5952h 3C595MII
8811h token ring
9000h 3C900-TPO Fast Etherlink
9001h 3C900-COMBO Fast Etherlink
9050h 3C905-TX Fast Etherlink 10/100
SeeAlso: #0656
(Table 0720)
Values for Standard Microsystems Corporation (SMC) PCI device code:
1000h 37C665 floppy disk controller
1001h 37C922 floppy disk controller
SeeAlso: #0656
(Table 0721)
Values for Acer Labs Inc. PCI device code:
1435h M1435 VL Bridge
1445h ALI M1445 VL bridge + EIDE
1449h ALI M1449 ISA bridge
1451h ALI M1451 Pentium chipset
1461h ALI M1461 P54C chipset
1489h ALI M1489
1511h ALI M1511
1513h ALI M1513
3141h M3141 GUI accelerator VRAM
3143h M3143 GUI accelerator VRAM/DAC
3145h M3145 GUI accelerator VRAM
3147h M3147 GUI accelerator VRAM/DAC
3149h M3149 GUI accelerator VRAM
3151h M3151 GUI accelerator VRAM
5212h M4803
5215h ALI MS4803 EIDE controller
5217h m5217 I/O
5219h m5219 I/O
5235h m5225 I/O
SeeAlso: #0656
(Table 0722)
Values for Surecom Technology PCI device code:
5240h IDE Controller
5241h PCMCIA Bridge
5242h general-purpose controller
5243h Bus controller
5244h Floppy-disk controller
SeeAlso: #0656
(Table 0723)
Values for Neomagic Corporation:
0000h graphics controller
SeeAlso: #0656
(Table 0724)
Values for Advanced System Products PCI device code:
1100h ABP940 revision A??? SCSI
1200h ABP940 revision B??? Fast SCSI-2
1300h Fast-Wide SCSI controller
SeeAlso: #0656
(Table 0725)
Values for Citicorp TTI PCI device code:
2001h mb86605 Wide SCSI-2
SeeAlso: #0656
(Table 0726)
Values for CENR/ECP/EDU PCI device code:
0001h SPSB PMC
0002h SPSB PCI
10DCh ATT 2C15-3 FPGA
SeeAlso: #0656
(Table 0727)
Values for Evans & Sutherland PCI device code:
0001h 3D graphics processor
SeeAlso: #0656
(Table 0728)
Values for Emulex Corporation PCI device code:
1AE5h Fibre Channel Host Adapter
SeeAlso: #0656
(Table 0729)
Values for Integrated Micro Solutions PCI device code:
5026h IMS5026/27/28 VL Bridge
5028h ISA Bridge
8849h IMS 8849
8853h ATM network card
9128h IMS9129 GUI accelerator
SeeAlso: #0656
(Table 0730)
Values for TekRAM Technology Corporation Ltd. PCI device code:
690Ch TekRAM 690c
SeeAlso: #0656
(Table 0731)
Values for Newbridge Microsystems PCI device code:
0000h CA91C042 VMEbus Bridge
SeeAlso: #0656
(Table 0732)
Values for Applied Micro Circuits Corp. PCI device code:
4750h S5933 PCI controller
8043h MyriNet
SeeAlso: #0656
(Table 0733)
Values for Integraphics Systems PCI device code:
1680h 1680
SeeAlso: #0656
(Table 0734)
Values for Artist Graphics PCI device code:
0101h 3GA 64-bit graphics processor
SeeAlso: #0656
(Table 0735)
Values for Realtek Semiconductor PCI device code:
8029h Realtek 8029
SeeAlso: #0656
(Table 0736)
Values for ASCII Corporation PCI device code:
7310h V7310 VGA Video Overlay
SeeAlso: #0656
(Table 0737)
Values for NKK Corporation PCI device code:
A001h NDR4000 NR4600 Bridge
SeeAlso: #0656
(Table 0738)
Values for Truevision PCI device code:
0000h ??? GUI Accelerator
0001h ??? GUI Accelerator
0002h ??? GUI Accelerator
0003h ??? GUI Accelerator
0004h ??? GUI Accelerator
0005h ??? GUI Accelerator
0006h ??? GUI Accelerator
0007h ??? GUI Accelerator
0008h ??? GUI Accelerator
0009h ??? GUI Accelerator
0010h ??? GUI Accelerator
0011h ??? GUI Accelerator
0012h ??? GUI Accelerator
0013h ??? GUI Accelerator
0014h ??? GUI Accelerator
0015h ??? GUI Accelerator
SeeAlso: #0656
(Table 0739)
Values for Initio Corporation PCI device code:
9100h 320P
9400h Fast-Wide SCSI
9700h Fast-Wide SCSI
SeeAlso: #0656
(Table 0740)
Values for VIA Technologies PCI device code:
0505h VIA 82C505
0561h VIA 82C561
0571h AMD-645 Peripheral Bus Controller, function 1 (see #0844)
0576h VIA 82C576
0586h AMD-645 Peripheral Bus Controller, function 0 (see #0845)
0595h AMD-640 System Controller (see #0846)
1000h 82C570MV P54 Controller
1106h 82C570MV ISA Bridge + IDE
1571h VIA 82C416
3038h AMD-645 Peripheral Bus Controller, function 2 (see #0847)
3040h AMD-645 Peripheral Bus Controller, function 3 (see #0848)
SeeAlso: #0656
(Table 0741)
Values for Proteon Inc. PCI device code:
0100h p1690plus-AA Token Ring
0101h p1690plus-AB 2-port Token Ring
SeeAlso: #0656
(Table 0742)
Values for Cogent Data Technologies PCI device code:
1400h EM110TX PCI Fast Ethernet
SeeAlso: #0656
(Table 0743)
Values for Siemens Nixdorf PCI device code:
6120h SZB6120 Multimedia Adapter
SeeAlso: #0656
(Table 0744)
Values for Rockwell PCI device code:
2200h FDDI adapter
2300h Fast Ethernet adapter
2340h four-port Fast Ethernet
2400h ATM adapter
SeeAlso: #0656
(Table 0745)
Values for Datacube Inc. PCI device code:
9500h MAX-LC SuperVGA
9501h MAX-LC image processing
SeeAlso: #0656
(Table 0746)
Values for Vortex Computersysteme GmbH PCI device code:
0000h GDT60x0 SCSI RAID
0001h GDT6000B SCSI RAID
0002h GDT6x10 SCSI RAID
0003h GDT6x20 two-channel SCSI RAID
0004h GDT6530 three-channel SCSI RAID
0005h GDT6550 five-channel SCSI RAID
0006h GDT6x17
0007h GDT6x27
0008h GDT6537
0009h GDT6557
000Ah GDT6x15
000Bh GDT6x25
000Ch GDT6535
000Dh GDT6555
SeeAlso: #0656
(Table 0747)
Values for Efficient Networks, Inc. PCI device code:
0000h 155P-MF1 ATM FPGA
0002h ATM ASIC
SeeAlso: #0656
(Table 0748)
Values for FORE Systems PCI device code:
0210h PCA200PC
0300h PCA200E
SeeAlso: #0656
(Table 0749)
Values for Infomedia MicroElectronics PCI device code:
0000h EIDE/HD and IDE/CD-ROM controller
000Bh EIDE/HD and IDE/CD-ROM controller
SeeAlso: #0656
(Table 0750)
Values for Imaging Technology PCI device code:
0000h ICPCI
0001h video frame grabber/processor
SeeAlso: #0656
(Table 0751)
Values for Mercury Computer Systems PCI device code:
0001h Raceway Bridge
SeeAlso: #0656
(Table 0752)
Values for Fuji Xerox Co Ltd. PCI device code:
0001h Printer Controller
SeeAlso: #0656
(Table 0753)
Values for Ziatech Corporation PCI device code:
8905h 8905 STD-32 Bridge
SeeAlso: #0656
(Table 0754)
Values for Dynamic Pictures Inc. PCI device code:
0001h VGA-compatible 3D graphics
SeeAlso: #0656
(Table 0755)
Values for Cyclone Microsystems (PLX Technology???) PCI device code:
0001h PLX 9060
0911h PCI 911 i960Jx Intelligent I/O
0912h PCI 912 i960Cx Intelligent I/O
0913h PCI 913 i960Hx Intelligent I/O
SeeAlso: #0656
(Table 0756)
Values for Crest Microsystem PCI device code:
0001h EIDE/ATAPI super adapter
SeeAlso: #0656
(Table 0757)
Values for Alliance Semiconductor Corp. PCI device code:
3210h Pro Motion 3210
6410h GUI Accelerator
6412h GUI Accelerator
6420h GUI Accelerator
6422h Pro Video
6424h GUI Accelerator
6426h GUI Accelerator
SeeAlso: #0656
(Table 0758)
Values for Cincinnati Milacron PCI device code:
0001h Noservo Controller
SeeAlso: #0656
(Table 0759)
Values for Schneider & Koch Co. PCI device code:
4000h FDDI adapter
SeeAlso: #0656
(Table 0760)
Values for VMIC PCI device code:
7587h VME
SeeAlso: #0656
(Table 0761)
Values for Digi International / Stargate PCI device code:
0003h RightSwitch
SeeAlso: #0656
(Table 0762)
Values for Voarx R&D Inc. PCI device code:
3011h Tokenet/vg 1001/10m anylan
9050h Lanfleet/Truevalue
SeeAlso: #0656
(Table 0763)
Values for MuTech PCI device code:
0001h MV1000
SeeAlso: #0656
(Table 0764)
Values for PFU Ltd. PCI device code:
0001h Host Bridge
SeeAlso: #0656
(Table 0765)
Values for Creative Labs (vendor ID 1163h) PCI device code:
0001h 3D Blaster
SeeAlso: #0656
(Table 0766)
Values for Imagraph Corporation PCI device code:
0001h Motion JPEG record/play w/ audio
SeeAlso: #0656
(Table 0767)
Values for Alfa Inc. PCI device code:
AFA1h Fast Ethernet
SeeAlso: #0656
(Table 0768)
Values for Matsushita Electronics PCI device code:
1592h ???
SeeAlso: #0656
(Table 0769)
Values for Corollary Inc. PCI device code:
0014h PCIB C-bus II to PCI bridge chip
SeeAlso: #0656
(Table 0770)
Values for BitFlow Inc. PCI device code:
0001h Raptor-PCI frame grabber
SeeAlso: #0656
(Table 0771)
Values for Artop Electric PCI device code:
0001h IDE controller
0002h IDE controller
0003h SCSI-2 cache controller
0004h ATP8400 ASIC cache accelerator
8001h SCSI-2 cache controller
8002h SCSI-2 controller
SeeAlso: #0656
(Table 0772)
Values for Zeitnet Inc. PCI device code:
0001h Zeitnet 1221
0002h Zeitnet 1225
SeeAlso: #0656
(Table 0773)
Values for InnoSys Inc. PCI device code:
4240h AMCC S5933Q Intelligent Serial Card
SeeAlso: #0656
(Table 0774)
Values for Galileo Technology PCI device code:
0146h GT-64010 System Controller for R46xx CPU
4801h GT-48001 8-port switched Ethernet ctrlr
SeeAlso: #0656
(Table 0775)
Values for V3 Semiconductor Inc. PCI device code:
0292h V292PBC Am29030/40 Bridge
0960h V96xPBC i960 Bridge
C960h V96DPC i960 dual PCI Bridge
SeeAlso: #0656
(Table 0776)
Values for Pathlight Technology PCI device code:
C0EDh SSA Controller
SeeAlso: #0656
(Table 0777)
Values for Dolphin Interconnect Solutions PCI device code:
0658h PSB PCI-SCI Bridge
SeeAlso: #0656
(Table 0778)
Values for Specialix Research Ltd. PCI device code:
2000h PCI-9050 Target Interface
4000h Specialix XIO (SUPI-1 Target Interface)
8000h Specialix RIO (T255 Bridge)
SeeAlso: #0656
(Table 0779)
Values for Compex USA, Inc. PCI device code:
1401h ReadyLINK RL2000 10MBit NIC
SeeAlso: #0656
(Table 0780)
Values for PMC-Sierra Inc. PCI device code:
7375h PM7375 LASAR-155 ATM SAR
SeeAlso: #0656
(Table 0781)
Values for RP PCI device code:
0001h RP8OCTA
0002h RP8INTF
0003h RP16INTF
0004h RP32INTF
SeeAlso: #0656
(Table 0782)
Values for Cyclades PCI device code:
0100h Cyclom Y Lo multiport serial card
0101h Cyclom Y Hi
0200h Cyclom Z Lo multiport serial card
0201h Cyclom Z Hi
SeeAlso: #0656
(Table 0783)
Values for Ariel Corporation PCI device code:
1220h AMCC 5933 TMS320C80 DSP/Imaging Board
SeeAlso: #0656
(Table 0784)
Values for Picture Elements PCI device code:
0081h PCIVST PCI Thresholding Engine
SeeAlso: #0656
(Table 0785)
Values for Symphony PCI device code:
0001h Symphony 82C101 IDE controller
SeeAlso: #0656
(Table 0786)
Values for TekRAM PCI device code:
DC29h DC290 / DC290M EIDE controller
SeeAlso: #0656
(Table 0787)
Values for 3DLabs PCI device code:
0004h 3C0SX GUI Accelerator
SeeAlso: #0656
(Table 0788)
Values for Avance Logic, Inc. PCI device code:
2301h AVL2301 GUI Accelerator
2303h AVG2302 GUI Accelerator
SeeAlso: #0656
(Table 0789)
Values for BusLogic Inc. PCI device code:
3080h ??? SCSI-ti
4010h ??? Fast-Wide SCSI-2
SeeAlso: #0656
(Table 0790)
Values for S3 PCI device code:
5631h 86C325 ViRGE 3D GUI Accelerator
8800h Vision 866
8801h Vision 964
8810h S3 Trio32
8811h S3 Trio32, Trio64, or Trio64V+
8812h S3 Trio64UV+
8813h S3 Trio64? v3
888xh S3 868
88Bxh S3 928
88C0h S3 864-1
88C1h S3 864-2
88C2h S3 864-3
88C3h S3 864-4
88D0h S3 964-1
88D1h S3 964-2
88D2h S3 964-3
88D3h S3 964-4
88F0h S3 968
88F1h S3 968-2
88F2h S3 968-3
88F3h S3 968-3
8901h S3 775 Trio64V2
SeeAlso: #0656,#0793
(Table 0791)
Values for c't Magazin f<>r Computer PCI device code:
6773h GPPCI PCI interface
SeeAlso: #0656
(Table 0792)
Values for Quancom Electronic PCI device code:
0010h PCI-WDOG1 Watchdog
0011h PWDOG2 Watchdog2/PCI
SeeAlso: #0656
(Table 0793)
Values for Intel PCI device code:
0482h 82375EB/SB PCI-EISA Bridge (see #0850)
0483h 82424 Cache Controller (see #0859)
0484h 82378/82379 Bus Interface (Mercury/Saturn/Neptune chipsets) (see #0860)
0486h 82425EX/82430
04A3h 82434 LX (Mercury) / NX (Neptune) (see #0851)
0960h i960 RP Microprocessor/Bridge
1221h 82092AA PCMCIA Bridge
1222h 82092AA IDE Controller
1223h Intel SAA7116
1226h 82596
1227h 82865
1228h EtherExpress Pro/100 Smart
1229h 82557 Fast Ethernet (see #0925)
122Dh 82437FX (Triton)
122Eh 82371FB ISA Bridge (Triton)
1230h 82338 IDE controller / 82371FB IDE function (Triton)
1234h 82371MX
1235h 82437MX
1237h 82441FX (see #0927)
1239h 82371FB IDE Interface (Triton)
123Ch 82380AB Mobile PCI-to-ISA Bridge (see #0886)
124Bh 82380FB Mobile PCI-to-PCI Bridge (see #3709)
1250h 82439HX (430HX chipset) (see #0888)
1960h 80960RP i960RP Microprocessor
7000h 82371SB ISA Bridge (see #0911)
7010h 82371SB IDE controller (see #0912)
7020h 82371SB (see #0913)
7030h 82437VX (430VX chipset) (see #0892)
7100h 82439TX (430TX chipset) (see #0889)
7110h 82371AB PIIX4 ISA Bridge
84C4h 82450KX/GX PCI Bridge (Orion) (see #0938)
84C5h 82450KX/GX Memory Ctrlr (Orion)
SeeAlso: #0656,#0790
(Table 0794)
Values for Trigem Computer PCI device code:
2008h video assistant
SeeAlso: #0656
(Table 0795)
Values for Adaptec PCI device code:
1078h AIC-7810C RAID Coprocessor
5078h x940 Fast-Wide SCSI-II Ctrlr
5578h AHA-2830P SCSI Controller
7078h AHA-294x/AIC-7870P Fast-Wide SCSI-II
7178h AHA-2940 Fast-Wide SCSI-II
7278h x940 two-channel Fast-Wide SCSI
7378h AHA-3985 4-channel RAID SCSI
7478h AHA-2944 SCSI
7810h AIC-7810 memory control IC
7850h AIC-7850 SCSI IC
7855h AHA-2930 SCSI
7870h AIC-7870 SCSI IC
7871h AHA-2940
7872h AHA-3940
7873h AHA-3980
7874h AHA-2944 Differential SCSI
7880h AIC-7880 Fast-20 SCSI
8078h Adaptec 7880
8178h Adaptec 2940UW
8278h AHA-3940U/UW
8378h Adaptec 7883
8478h Adaptec 7884
SeeAlso: #0656
(Table 0796)
Values for Atronics PCI device code:
2015h Atronics 2015
SeeAlso: #0656
(Table 0797)
Values for Ark Logic Inc. PCI device code:
A091h ARK 1000PV ??? Stingray
A099h ARK 2000PV ??? Stingray
A0A1h ark2000mt 64-bit GUI Accel w/DCI
SeeAlso: #0656
--------X-1AB103-----------------------------
INT 1A - PCI BIOS v2.0c+ - FIND PCI CLASS CODE
AX = B103h
ECX = class code (see also #F059,#0798)
bits 31-24 unused
bits 23-16 class
bits 15-8 subclass
bits 7-0 programming interface
SI = device index (0-n)
Return: CF clear if successful
CF set on error
AH = status (00h,86h) (see #0653)
00h successful
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 func)
86h device not found
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
all devices sharing the same Class Code may be enumerated by
incrementing SI from 0 until error 86h is returned
SeeAlso: AX=B183h
--------X-1AB106-----------------------------
INT 1A - PCI BIOS v2.0c+ - PCI BUS-SPECIFIC OPERATIONS
AX = B106h
BL = bus number
EDX = Special Cycle data
Return: CF clear if successful
CF set on error
AH = status (00h,81h) (see #0653)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Note: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
SeeAlso: AX=B186h,INT 2F/AX=1684h/BX=304Ch
--------X-1AB108-----------------------------
INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION BYTE
AX = B108h
BL = device/function number (bits 7-3 device, bits 2-0 function)
BH = bus number
DI = register number (0000h-00FFh) (see #0798)
Return: CF clear if successful
CL = byte read
CF set on error
AH = status (00h,87h) (see #0653)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on entry were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B109h,AX=B10Ah,AX=B188h,INT 2F/AX=1684h/BX=304Ch
--------X-1AB109-----------------------------
INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION WORD
AX = B109h
BL = device/function number (bits 7-3 device, bits 2-0 function)
BH = bus number
DI = register number (0000h-00FFh) (see #0798)
Return: CF clear if successful
CX = word read
CF set on error
AH = status (00h,87h) (see #0653)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on entry were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B108h,AX=B10Ah,AX=B189h,INT 2F/AX=1684h/BX=304Ch
--------X-1AB10A-----------------------------
INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD
AX = B10Ah
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (0000h-00FFh) (see #0798)
Return: CF clear if successful
ECX = dword read
CF set on error
AH = status (00h,87h) (see #0653)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on entry were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B108h,AX=B109h,AX=B10Ah/SF=8086h,AX=B18Ah,INT 2F/AX=1684h/BX=304Ch
Format of PCI Configuration Data:
Offset Size Description (Table 0798)
00h WORD vendor ID (read-only) (see #0656 at AX=B102h)
FFFFh returned if requested device non-existent
02h WORD device ID (read-only)
04h WORD command register (see #0799)
06h WORD status register (see #0800)
08h BYTE revision ID
09h 3 BYTEs class code
bits 7-0: programming interface
bits 15-8: sub-class
bits 23-16: class code (see also #F059)
0Ch BYTE cache line size
0Dh BYTE latency timer
0Eh BYTE header type
bits 6-0: header format
00h other
01h PCI-to-PCI bridge
02h PCI-to-CardBus bridge
bit 7: multi-function device
0Fh BYTE Built-In Self-Test result (see #0801)
---header type 00h---
10h DWORD base address 0 (see #0802)
(OpenHCI) base address of host controller registers (see #0827)
14h DWORD base address 1
18h DWORD base address 2
1Ch DWORD base address 3
20h DWORD base address 4
24h DWORD base address 5
28h DWORD CardBus CIS pointer (read-only) (see #0809)
2Ch WORD subsystem vendor ID or 0000h
2Eh WORD subsystem ID or 0000h
30h DWORD expansion ROM base address (see #0803)
34h BYTE offset of capabilities list within configuration space (R/O)
(only valid if status register bit 4 set) (see #0804)
35h 3 BYTEs reserved
38h DWORD reserved
3Ch BYTE interrupt line
00h = none, 01h = IRQ1 to 0Fh = IRQ15
3Dh BYTE interrupt pin (read-only)
(00h = none, else indicates INTA# to INTD#)
3Eh BYTE minimum time bus master needs PCI bus ownership, in 250ns units
(read-only)
3Fh BYTE maximum latency, in 250ns units (bus masters only) (read-only)
40h 48 DWORDs varies by device (see #0821,#0822,#0851,#0879)
---header type 01h---
10h DWORD base address 0 (see #0802)
14h DWORD base address 1
18h BYTE primary bus number (for bus closer to host processor)
19h BYTE secondary bus number (for bus further from host processor)
1Ah BYTE subordinate bus number
1Bh BYTE secondary latency timer
1Ch BYTE I/O base (see #0819)
1Dh BYTE I/O limit (see #0819)
1Eh WORD secondary status
20h WORD memory base (see #0820)
22h WORD memory limit
24h WORD prefetchable memory base
26h WORD prefetchable memory limit
28h DWORD prefetchable base, upper 32 bits
2Ch DWORD prefetchable limit, upper 32 bits
30h WORD I/O base, upper 16 bits
32h WORD I/O limit, upper 16 bits
34h DWORD reserved
38h DWORD expansion ROM base address
3Ch BYTE interrupt line
3Dh BYTE interrupt pin (read-only)
3Eh WORD bridge control
40h 48 DWORDs varies by device (see #0821,#0822,#0851,#0879)
---header type 02h---
10h DWORD CardBus Socket/ExCa base address (see #0810)
bits 31-12: start address of socket interface register block
in 4K blocks
bits 11-0: reserved (0)
14h BYTE offset of capabilities list within configuration space (R/O)
(only valid if status register bit 4 set) (see #0804)
15h BYTE reserved
16h WORD secondary status
18h BYTE PCI bus number
19h BYTE CardBus bus number
1Ah BYTE subordinate bus number
1Bh BYTE CardBus latency timer
1Ch DWORD memory base address 0
20h DWORD memory limit 0
24h DWORD memory base address 1
28h DWORD memory limit 1
2Ch WORD I/O base address 0
2Eh WORD I/O base address 0 high word (optional)
30h WORD I/O limit 0
32h WORD I/O limit 0 high word (optional)
34h WORD I/O base address 1
36h WORD I/O base address 1 high word (optional)
38h WORD I/O limit 1
3Ah WORD I/O limit 1 high word (optional)
3Ch BYTE interrupt line
3Dh BYTE interrupt pin (read-only) (no interrupt used if 00h)
3Eh WORD bridge control
40h WORD subsystem vendor ID
42h WORD subsystem device ID
44h DWORD 16-bit PC Card legacy mode base address (for accessing ExCa
registers)
48h 14 DWORDs reserved
80h 32 DWORDs varies by device (see #0821,#0822,#0851,#0879)
Bitfields for PCI Configuration Command Register:
Bit(s) Description (Table 0799)
0 I/O access enabled
1 memory access enabled
2 bus master enable
3 special cycle recognition enabled
4 memory write and invalidate enabled
5 VGA palette snoop enabled
6 parity error response enabled
7 wait cycles enabled
8 system error (SERR# line) enabled
9 fast back-to-back transactions enabled
15-10 reserved
SeeAlso: #0798,#0800
Format of PCI Configuration Status Register:
Bit(s) Description (Table 0800)
3-0 reserved (0)
4 new capabilities list is present (first entry pointed at by byte at
34h or 14h)
5 capable of running at 66 MHz
6 UDF supported
7 capable of fast back-to-back transactions
8 data parity error reported
10-9 device select timing
00 fast
01 medium
10 slow
11 reserved
11 signaled target abort
12 received target abort
13 received master abort
14 signaled system error (device is asserting SERR# line)
15 detected parity error (set even if parity error reporting is disabled)
Note: bits 12, 13 and 15 are cleared by writing a 1 into the corresponding
bit
SeeAlso: #0798,#0799
Bitfields for PCI Configuration Built-In Self-Test register:
Bit(s) Description (Table 0801)
3-0 completion code (0000 = successful)
5-4 reserved
6 start BIST (set to one to start, cleared automatically on completion)
7 BIST-capable
Notes: this register is hardwired to 00h if no BIST capability
software should timeout the BIST after two seconds
SeeAlso: #0798
Bitfields for PCI Configuration Base Address:
Bit(s) Description (Table 0802)
0 address type (0 = memory space, 1 = I/O space)
---memory address---
2-1 address type
00 anywhere in first 4GB
01 below 1MB
10 anywhere in 64-bit address space
11 reserved
3 prefetchable
31-4 bits 31-4 of base memory address if addressable in first 1MB or 4GB
63-4 bits 63-4 of base memory address if addressable in 64-bit memory
(bits 63-32 are stored in the following base address DWORD)
---I/O address---
1 reserved
31-2 bits 31-2 of base I/O port
SeeAlso: #0798,#0827
Bitfields for PCI Configuration Expansion ROM Address:
Bit(s) Description (Table 0803)
0 address decode enable (ROM address is valid)
10-1 reserved
31-11 bits 31-11 of ROM's starting physical address
SeeAlso: #0798
Format of PCI Capabilities List:
Offset Size Description (Table 0804)
00h BYTE capability identifier
01h PCI Power Managment
01h BYTE offset of next item (within configuration space) or 00h
N BYTEs varies by capability type
---PCI Power Management---
02h WORD power managment capabilities (see #0805) (read-only)
04h WORD power managment capabilities status register (see #0806)
06h BYTE PMCSR bridge support extensions (see #0807)
07h BYTE (optional) read-only data register (see #0808)
Note: this information is from the v0.93 draft of the specification and is
subject to change
SeeAlso: #0798,#0800
Bitfields for PCI Power Management Capabilities:
Bit(s) Description (Table 0805)
15 reserved (0)
14-12 PME# support
bit 12: PME# can be asserted from power state D0
bit 13: PME# can be asserted from power state D1
bit 14: PME# can be asserted from power state D2
11 reserved (0)
10 D2 power state supported
9 D1 power state supported
8 full-speed clock is required in state D0 for proper operation
(if clear, device may be run at reduced clock except when actually
being accessed)
7-6 dynamic clock control support
00 not bridge, no dynamic clock control, or secondary bus' clock is
is tied to primary bus' clock
01 bridge is capable of dynamic clock control
10 reserved
11 secondary bus has independent clock, but dynamic clock not supported
5 device-specific initialization is required
4-3 reserved (0)
2-0 specification version
001 = v1.0; four bytes of power management registers
Note: this information is from the v0.93 draft of the specification and is
subject to change
SeeAlso: #0804,#0806,#0807
Bitfields for PCI Power Management Capabilities Status Register:
Bit(s) Description (Table 0806)
15 PME status: if set, PME# is (or would be) asserted
writing a 1 to this bit clears it
14-13 (read-only) scale factor to apply to contents of Data register
00 unknown (or unimplemented data)
01 x0.1
10 x0.01
11 x0.001
12-9 (read-write) data select (see #0808)
8 (read-write) enable PME# assertion
7-5 reserved (0)
4 (read-write) enable dynamic data reporting
when set, PME# is asserted whenever the value in the Data register
changes significantly
3-2 reserved (0)
1-0 (read-write) current power state
00 = D0
...
11 = D3
Note: this information is from the v0.93 draft of the specification and is
subject to change
SeeAlso: #0804,#0805,#0807
Bitfields for PCI Power Management PMCSR bridge support extension:
Bit(s) Description (Table 0807)
7 (read-only) Bus Power Control Enable
6 (read-only) Bus Power State B3 supported
5 (read-only) Bus Power State B2 supported
4 dynamic clock control enable
3-0 reserved (0)
Note: this information is from the v0.93 draft of the specification and is
subject to change
SeeAlso: #0804,#0805,#0806
(Table 0808)
Values for PCI Power Management Data Select:
00h D0-state power consumed in watts (+20%/-10%)
01h D1-state power consumed in watts (+20%/-10%)
02h D2-state power consumed in watts (+20%/-10%)
03h D3-state power consumed in watts (+20%/-10%)
04h D0-state power dissipated into chassis in watts
05h D1-state power dissipated into chassis in watts
06h D2-state power dissipated into chassis in watts
07h D3-state power dissipated into chassis in watts
08h-0Fh reserved
SeeAlso: #0806
Bitfields for PCI Configuration CardBus CIS Pointer:
Bit(s) Description (Table 0809)
2-0 address space
000 in device's device-specific configuration space
001 in memory pointed to by base address register 0
...
110 in memory pointed to by base address register 5
111 in device's expansion ROM
27-3 offset within address space defined by bits 2-0
31-28 ROM image number
SeeAlso: #0798
Format of CardBus Socket/ExCA socket interface register space:
Offset Size Description (Table 0810)
00h DWORD Socket Event Register (see #0812)
04h DWORD Socket Mask Register (see #0813)
08h DWORD Socket Present State Register (see #0814)
0Ch DWORD Socket Force Event Register (see #0815)
10h DWORD Socket Control Register (see #0816)
14h 3 DWORDs reserved
20h DWORD Socket Power Management Register
90h BYTE (TI PCI1130) Retry Status Register
91h BYTE (TI PCI1130) Card Control Register (see #0817)
92h BYTE (TI PCI1130) Device Control Register (see #0818)
93h BYTE (TI PCI1130) Buffer Control Register
800h 64+ BYTEs ExCa Socket Interface Registers (see #0811)
Format of ExCa memory-mapped registers:
Offset Size Description (Table 0811)
00h BYTE identification and revision register
01h BYTE interface status register
02h BYTE power control register
03h BYTE interrupt and general control
04h BYTE card status change
05h BYTE card status change interrupt configuration
06h BYTE address window enable
07h BYTE I/O window control register
08h WORD I/O window 0 start address
0Ah WORD I/O window 0 end address
0Ch WORD I/O window 1 start address
0Eh WORD I/O window 1 end address
10h WORD memory window 0 start address
12h WORD memory window 0 end address
14h WORD memory window 0 offset address
16h 2 BYTEs user-defined
18h WORD memory window 1 start address
1Ah WORD memory window 1 end address
1Ch WORD memory window 1 offset address
1Eh BYTE user-defined
1Fh BYTE reserved
20h WORD memory window 2 start address
22h WORD memory window 2 end address
24h WORD memory window 2 offset address
26h 2 BYTEs user-defined
28h WORD memory window 3 start address
2Ah WORD memory window 3 end address
2Ch WORD memory window 3 offset address
2Eh 2 BYTEs user-defined
30h WORD memory window 4 start address
32h WORD memory window 4 end address
34h WORD memory window 4 offset address
36h 10 BYTEs user-defined
---optional---
40h BYTE memory window 0 start address high byte
41h BYTE memory window 1 start address high byte
42h BYTE memory window 2 start address high byte
43h BYTE memory window 3 start address high byte
44h BYTE memory window 4 start address high byte
45h-7FFh user-defined
SeeAlso: #0810
Bitfields for CardBus Socket Event Register:
Bit(s) Description (Table 0812)
0 CSTSCHG pin asserted (status change)
1 CCD1# (card detect 1) changed state
2 CCD2# (card detect 2) changed state
3 interface power cycle completed
31-4 reserved (0)
Note: the bits in this register are set by the bridge, and cleared by writing
a one into the bits one wishes to clear
SeeAlso: #0810,#0813,#0815
Bitfields for CardBus Socket Event Mask Register:
Bit(s) Description (Table 0813)
0 write-protect (enable status-change interrupt on WriteProtect switch)
1 ready mask (allow status-change interrupt on Ready line change)
3-2 battery condition (allow status-change int on battery-condition change)
4 general wakeup enabled
5 binary audio mode enabled on CAUDIO pin
6 Pulse Width Modulation enabled on CAUDIO pin
(CAUDIO state undefined if both bits 5 and 6 set)
13-7 reserved (0)
14 Wakeup mask (enable wakeup events via status-change pin)
15 enable card interrupts via CINT# pin and wakeup events
31-16 reserved
SeeAlso: #0810,#0812,#0814
Bitfields for CardBus Socket Present State Register:
Bit(s) Description (Table 0814)
0 CSTSCHG pin asserted (status change)
1 CCD1# (card detect 1) changed state
2 CCD2# (card detect 2) changed state
3 interface power cycle completed
4 16-bit PC card inserted
5 CardBus card inserted
6 card's interrupt pin asserted
7 card inserted but type can not be determined
8 data may have been lost due to abrupt card removal
9 attempted to apply Vcc voltage not supported by the card
10 card can accept Vcc = 5.0 volts
11 card can accept Vcc = 3.3 volts
12 card can accept Vcc = X.X volts
13 card can accept Vcc = Y.Y volts
27-14 reserved (0)
28 socket can accept Vcc = 5.0 volts
29 socket can accept Vcc = 3.3 volts
30 socket can accept Vcc = X.X volts
31 socket can accept Vcc = Y.Y volts
Note: bits 0-3 may be cleared by writing a 1 into the respective bits
SeeAlso: #0810,#0812,#0813,#0816
Bitfields for CardBus Socket Force Event Register:
Bit(s) Description (Table 0815)
0 write-protect
1 ready
2 battery voltage detect 2
3 battery voltage detect 1
4 general wakeup
14-5 reserved (0)
15 enable card interrupts via CINT# pin
31-16 reserved
Note: this register can simulate events by forcing the values of some of the
bits in the Event Mask Register; any bit of this register which is
set to 1 forces the corresponding bit in the Mask Register to 1,
while bits set to 0 leave the corresponding bit unchanged
SeeAlso: #0810,#0812,#0816
Bitfields for CardBus Socket Control Register:
Bit(s) Description (Table 0816)
2-0 Vpp control
000 power off
001 12.0 Volts
010 5.0 Volts
011 3.3 Volts
100 reserved (X.X Volts)
101 reserved (Y.Y Volts)
110 reserved
111 reserved
3 reserved (0)
6-4 Vcc control (as for Vpp, but 12.0V not supported)
31-7 reserved (0)
SeeAlso: #0810,#0813,#0815
Bitfields for TI PCI1130 Card Control Register:
Bit(s) Description (Table 0817)
0 interrupt pending
1 speaker output enabled
2 reserved
3 enable status-change interrupt routing (to INTA# for socket A, INTB#
for socket B)
4 function interrupt routed to corresponding PCI interrupt pin
5 PCI interrupts enabled
6 ZOOM video mode enabled
7 Ring Indicator enabled on IRQ15/RI_OUT pin
SeeAlso: #0810,#0818
Bitfields for TI PCI1130 Device Control Register:
Bit(s) Description (Table 0818)
0 reserved (0)
2-1 interrupt mode enable
00 no interrupt
01 ISA mode (direct IRQ routing)
10 serialized interrupt mode
11 reserved
4-3 reserved
5 3volt Socket Capable force bit
6 5volt Socket Capable force bit
7 reserved
SeeAlso: #0810,#0817
Bitfields for PCI Configuration I/O base and limit:
Bit(s) Description (Table 0819)
3-0 (read-only) address decoding type
0000 16-bit
0001 32-bit
other reserved
7-4 bits 15-12 of I/O address range
SeeAlso: #0798,#0820
Bitfields for PCI Configuration memory base and limit:
Bit(s) Description (Table 0820)
3-0 address decode type
0000 32-bit address decoder
0001 64-bit address decoder
other reserved
15-4 bits 31-20 of memory address range
SeeAlso: #0798,#0819
Format of PCI Configuration Data for VLSI VL82C591 Host/PCI bridge:
Offset Size Description (Table 0821)
00h 64 BYTEs header (see #0798)
(vendor ID 1004h, device ID 0005h)
40h BYTE bus number
41h BYTE subordinate bus number
42h WORD reserved
44h 4 DWORDs reserved
54h 2 BYTEs device-specific configuration registers
56h WORD reserved
58h 2 BYTEs device-specific configuration registers
5Ah WORD reserved
5Ch 5 BYTEs device-specific configuration registers
...
FFh BYTE device-specific configuration register
SeeAlso: #0798,#0656,#0822
Format of PCI Configuration data for VLSI VL82C593 PCI/ISA bridge:
Offset Size Description (Table 0822)
00h 64 BYTEs header (see #0798)
(vendor ID 1004, device ID 0006h)
40h 4 DWORDs reserved
50h 11 BYTEs device-specific configuration registers
5Bh BYTE reserved
5Ch 25 BYTEs device-specific configuration registers
75h 138 BYTEs reserved
FFh BYTE device-specific configuration register
SeeAlso: #0798,#0821
Format of AMD Am53C974A PC-SCSI PCI configuration data:
Offset Size Description (Table 0823)
00h 64 BYTEs header (see #0798)
(vendor ID 1022h, device ID 2020h)
10h DWORD I/O base address (see PORT xxxxh"Am53C974A")
40h 16 BYTEs scratch registers
(used by AMD's PC-SCSI drivers as follows:
40h/41h SCSI configuration register 0 (see #0824,#0825)
...
4Eh/4Fh SCSI configuration register 7)
SeeAlso: #0670
Bitfields for AMD Am53C974A Target Device Configuration Register:
Bit(s) Description (Table 0824)
15-14 reserved
13 "FSCSI" Fast SCSI drive is present
12-8 "SPD" synchronous period
7-4 synchronous offset (0 = asynchronous transfers)
3-1 SCSI bus status
0 target device is present and active
if 0, all other bits must be cleared to zero for target devices
SeeAlso: #0823,#0825
Bitfields for AMD Am53C974A Host Configuration Register:
Bit(s) Description (Table 0825)
15-9 reserved
8 SCSI bus has been reset
7 starting BIOS number (bits 6-4) is valid
6-4 starting BIOS number (000 = BIOS drive 80h, 001 = drive 81h, etc)
3 this device is a SCSI host
2 protected-mode driver initialized
1 real-mode driver initialized
0 target device present
=0 indicates that this is a host if bit 3 is set
SeeAlso: #0823,#0824
Format of PCI Configuration data for PC Technology RZ-1000 EIDE controller:
Offset Size Description (Table 0826)
00h 64 BYTEs header (see #0798)
(vendor ID 1042h, device ID 1000h)
10h DWORD base address for controller I/O registers
(set to 01F1h for primary controller, 0171h for secondary)
14h DWORD base address for controller digital I/O port
(set to 03F5h for primary, 0375h for secondary)
40h DWORD ???
bits 7-1: ???
bit 13: read-ahead mode enabled
(Read-Ahead is buggy on original RZ-1000, and is
thus typically disabled by clearing this bit)
bit 16: ???
44h DWORD ???
48h 8 BYTEs ???
50h 176 BYTEs unused???
Format of OpenHCI Host Controller memory-mapped registers:
Offset Size Description (Table 0827)
00h DWORD "HcRevision" OpenHCI revision (see #0828)
04h DWORD "HcControl" HC operating modes (see #0829)
08h DWORD "HcCommandStatus" command/status (see #0830)
0Ch DWORD "HcInterruptStatus" interrupt status (see #0831)
10h DWORD "HcInterruptEnable" enable interrupts (see #0832)
14h DWORD "HcInterruptDisable" disable interrupts (see #0832)
18h DWORD "HcHCCA" HC Communications Area (see #0833)
1Ch DWORD "HcPeriodCurrentED" Endpoint Descriptor addr (see #0834)
20h DWORD "HcControlHeadED" Control Endpoint Descriptor (see #0835)
24h DWORD "HcControlCurrentED" Control Endpoint Descriptor (see #0835)
28h DWORD "HcBulkHeadED" Bulk Endpoint Descriptor (see #0836)
2Ch DWORD "HcBulkCurrentED" Bulk Endpoint Descriptor (see #0836)
30h DWORD "HcDoneHead" last completed Xfer Descr. (see #0837)
34h DWORD "HcFmInterval" Frame bit-time interval (see #0838)
38h DWORD "HcFmRemaining" bit time remaining in Frame (see #0839)
3Ch DWORD "HcFmNumber" Frame Number (bits 15-0)
40h DWORD "HcPeriodicStart" earliest time to start periodic list
(bits 13-0)
44h DWORD "HcLSThreshold" threshold for Low Speed transaction
(bits 11-0)
48h DWORD "HcRhDescriptorA" Root Hub Descriptor A (see #0840)
4Ch DWORD "HcRhDescriptorB" Root Hub Descriptor B (see #0841)
50h DWORD "HcRhStatus" Root Hub status (see #0842)
54h N DWORDs "HCRhPortStatus[1-N]" Root Hub port status N (see #0843)
Note: OpenHCI reserves a full 4K page of the systems address space for its
memory-mapped registers
SeeAlso: #0798,#0802,#F059
Bitfields for OpenHCI "HcRevision" register:
Bit(s) Description (Table 0828)
31-8 reserved
7-0 BCD OpenHCI specification number (10h = 1.0, 11h = 1.1)
Note: this register is read-only
SeeAlso: #0827,#0829
Bitfields for OpenHCI "HcControl" register:
Bit(s) Description (Table 0829)
31-11 reserved
10 RWE enable Remote Wakeup feature
9 RWC controller supports Remote Wakeup signalling
8 IR Interrupt Routing
0 normal host bus interrupt
1 System Managment Interrupt
7-6 HCFS USB Host Controller Functional State
00 USBReset
01 USBResume
10 USBOperational
11 USBSuspend
5 BLE enable Bulk List processing in next frame
4 CLE enable Control List processing in next frame
3 IE enable Isochronous ED processing
2 PLE enable processing of Periodic List in next frame
1-0 CBSR Control Bulk Service Ratio
00 1:1 Control EDs:Bulk EDs served
01 2:1
10 3:1
11 4:1
SeeAlso: #0827,#0828,#0830
Bitfields for OpenHCI "HcCommandStatus" register:
Bit(s) Description (Table 0830)
31-18 reserved
17-16 SOC scheduling-overrun count
15-4 reserved
3 OCR ownership change request is pending
2 BLF bulk list contains TDs
1 CLF control list contains TDs
0 HCR host controller software reset
Note: writing a 1 bit sets the corresponding bit, while a 0 bit leaves the
corresponding bit unchanged
SeeAlso: #0827,#0828,#0831
Bitfields for OpenHCI "HcInterruptStatus" register:
Bit(s) Description (Table 0831)
31 reserved (0)
30 OC ownership change
29-7 reserved
6 RHSC Root Hub status changed
5 FNO frame number overflowed
4 UE unrecoverable error
3 RD resume detected
2 SF start of frame
1 WDH writeback done
0 SO scheduling overrun
Note: writing a 1 bit clears the corresponding bit of the register
SeeAlso: #0827,#0828,#0830,#0832
Bitfields for OpenHCI "HcInterruptEnable" and "HcInterruptDisable" registers:
Bit(s) Description (Table 0832)
31 MIE master interrupt enable
30 OC ownership change
29-7 reserved
6 RHSC Root Hub status change
5 FNO frame number overflow
4 UE unrecoverable error
3 RD Resume Detect
2 SF start of frame
1 WDH HcDoneHead writeback
0 SO scheduling overrun
Note: writing a 1 bit to HcInterruptEnable enables the corresponding
interrupt, while writing a 1 bit to HcInterruptDisable disables it;
zero bits are ignored. On reading, both registers return the
same value, which reflects the currently enabled interrupts
SeeAlso: #0827
Bitfields for OpenHCI "HcHCCA" register:
Bit(s) Description (Table 0833)
31-8 physical address of Host Controller Communications Area (bits 31-8)
7-0 reserved (0)
Note: the required alignment for the HCCA may be determined by writing
FFFFFFFFh to this register and determining the number of low-order
zero bits
SeeAlso: #0827,#0834,#0835
Bitfields for OpenHCI "HcPeriodCurrentED" register:
Bit(s) Description (Table 0834)
31-4 physical address of current Isochronous/Interrupt Endpoint Descriptor
(bits 31-4)
3-0 reserved (0)
SeeAlso: #0827,#0833,#0835
Bitfields for OpenHCI "HcControlHeadED"/"HcControlCurrentED" register:
Bit(s) Description (Table 0835)
31-4 physical address of first/current Endpoint Descriptor (bits 31-4)
3-0 reserved (0)
Note: HcControlCurrentED is set to 0000000h to indicate the end of the
Control list
SeeAlso: #0827,#0833,#0834
Bitfields for OpenHCI "HcBulkHeadED"/"HcBulkCurrentED" register:
Bit(s) Description (Table 0836)
31-4 physical address of first/current Endpoint Descriptor in the Bulk
list (bits 31-4)
3-0 reserved (0)
Note: HcBulkCurrentED is set to 0000000h to indicate the end of the Bulk
list
SeeAlso: #0827,#0833,#0835
Bitfields for OpenHCI "HcDoneHead" register:
Bit(s) Description (Table 0837)
31-4 physical address of most-recently completed Transfer Descriptor added
to the Done queue (bits 31-4)
3-0 reserved (0)
SeeAlso: #0827,#0834,#0836
Bitfields for OpenHCI "HcFmInterval" register:
Bit(s) Description (Table 0838)
31 "FIT" toggled each time a new value is loaded into bits 13-0
30-16 "FSMPS" largest data packet in bits
15-14 reserved
13-0 "FI" Frame Interval (between to consecutive SOFs)
SeeAlso: #0827,#0839
Bitfields for OpenHCI "HcFmRemaining" register:
Bit(s) Description (Table 0839)
31 "FRT" loaded from bit 31 of HcFmInterval whenever FR reaches 0
30-14 reserved
13-0 "FR" FrameRemaining -- bits times left in current frame
SeeAlso: #0827,#0838
Bitfields for OpenHCI "HcRhDescriptorA" register:
Bit(s) Description (Table 0840)
31-24 "POTPGT" power-on to power-good time in 2ms units
23-13 reserved
12 "NOCP" no over-current protection supported
11 "OCPM" over-current status reported per-port
10 "DT" device type - is root hub compound device?
9 "NPS" NoPowerSwitching -- ports are always powered up
8 "PSM" power-switching mode -- if set, each port powered individually
7-0 "NDP" number of downstream ports
SeeAlso: #0827,#0841,#0842
Bitfields for OpenHCI "HcRhDescriptorB" register:
Bit(s) Description (Table 0841)
31-16 "PPCM" PortPowerControlMask -- bitmask of ports NOT affected by global
power control (bit 16 [port #0] is reserved)
15-0 "DR" DeviceRemovable -- bitmap of removable devices
SeeAlso: #0827,#0840,#0842
Bitfields for OpenHCI "HcRhStatus" register:
Bit(s) Description (Table 0842)
31 "CRWE" Clear Remote Wakeup Enable
write 1 to disable remote wakeup (writes of 0 ignored)
30-18 reserved
17 "OCIC" OverCurrent Indicator Change
write 1 to clear
16 R "LPSC" Local Power Status Change
W Set Global Power mode (write 1; writes of 0 ignored)
15 "DRWE" Device Remote Wakeup Enable
write 1 to enable (writes of 0 ignored)
read to get current status
14-2 reserved
1 "OCI" OverCurrent Indicator
0 R "LPS" LocalPowerStatus (always 0 for Root Hub)
W write 1 to turn off power to all ports/ports with clear
PortPowerControlMask bits
SeeAlso: #0827,#0840,#0841,#0843
Bitfields for OpenHCI "HcRhPortStatusN" register:
Bit(s) Description (Table 0843)
31-21 reserved
20 "PRSC" Port Reset Status Change (write '1' to clear)
19 "OCIC" Port OverCurrent Indiactor Change (write '1' to clear)
18 "PSSC" Port Suspend Status Change (write '1' to clear)
17 "PESC" Port Enable Status Change (write '1' to clear)
16 "CSC" Connect Status Change (write '1' to clear)
15-10 reserved
9 R "LSDA" Low Speed Device Attached
W clear port power by writing '1'
8 R "PPS" Port Power Status
W set port power by writing '1'
7-5 reserved
4 R "PRS" Port Reset Status
W set port reset by writing '1'
3 R "POCI" Port OverCurrent Indicator
W clear suspend status by writing '1'
2 R "PSS" Port Suspend Status
W set port suspend by writing '1'
1 R "PES" Port Enable Status
W set port enable by writing '1'
0 R "CCS" current connect status
W clear port enable by writing '1'
SeeAlso: #0827,#0840,#0841,#0842
--------X-1AB10ASF1106-----------------------
INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (VIA Technologies devices)
AX = B10Ah subfn 1106h
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (0000h-00FFh) (see #0798)
Return: CF clear if successful
ECX = dword read
CF set on error
AH = status (00h,87h) (see #0653)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on entry were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B10Ah,AX=B10Ah/SF=8086h
Format of AMD-645 Peripheral Bus Controller, function 1 (IDE Control) data:
Offset Size Description (Table 0844)
00h 64 BYTEs header (see #0798)
(vendor ID 1106h [VIA Technologies], device ID 0571h)
10h DWORD primary data/command base address
14h DWORD primary control/status base address
18h DWORD secondary data/command base address
1Ch DWORD secondary control/status base address
20h DWORD bus master control base address (default 0000CC01h)
40h BYTE chip enable
41h BYTE IDE configuration
42h BYTE reserved ("do not program")
43h BYTE FIFO configuration
44h BYTE miscellaneous control 1
45h BYTE miscellaneous control 2
46h BYTE miscellaneous control 3
47h BYTE unused???
48h DWORD drive timing control
4Ch BYTE address setup time
4Dh BYTE reserved ("do not program")
4Eh BYTE secondary non-01F0h port access timing
4Fh BYTE primary non-01F0h port access timing
50h DWORD UltraDMA/33 extended timing control
54h 4 BYTEs reserved
58h DWORD "reserved" (appears to be an additional drive timing control)
5Ch 4 BYTEs ???
60h WORD primary sector size
62h 6 BYTEs reserved
68h WORD secondary sector size
6Ah 150 BYTEs reserved
!!!amd\21095a.pdf p.129
SeeAlso: #0740,#0845,#0847
Format of AMD-645 Peripheral Bus Controller, function 0 (PCI-ISA bridge) data:
Offset Size Description (Table 0845)
00h 64 BYTEs header (see #0798)
(vendor ID 1106h, device ID 0586h)
40h BYTE ISA bus control
41h BYTE ISA Test Mode
42h BYTE ISA clock control
43h BYTE ROM Decode Control
44h BYTE keyboard controller control
45h BYTE Type F DMA control
46h BYTE Miscellaneous control 1
47h BYTE Miscellaneous control 2
48h BYTE Miscellaneous control 3
49h BYTE reserved
4Ah BYTE IDE interrupt routing
4Bh BYTE reserved
4Ch BYTE DMA/Master memory access control 1
4Dh BYTE DMA/Master memory access control 2
4Eh WORD DMA/Master memory access control 3
50h BYTE reserved ("do not program")
51h 3 BYTEs reserved
54h BYTE PIC IRQ Edge/Level selection
55h BYTE PnP Routing for external MIRQ0/1
56h BYTE PnP Routing for PCI INTB/INTA
57h BYTE PnP Routing for PCI INTD/INTC
58h BYTE PnP Routing for external MIRQ2
59h BYTE MIRQ pin configuration
5Ah BYTE XD Power-On Strap Options
5Bh BYTE internal RTC test mode
5Ch 4 BYTEs reserved
60h WORD distributed DMA, channel 0 base address/enable
62h WORD distributed DMA, channel 1 base address/enable
64h WORD distributed DMA, channel 2 base address/enable
66h WORD distributed DMA, channel 3 base address/enable
68h WORD reserved
6Ah WORD distributed DMA, channel 5 base address/enable
6Ch WORD distributed DMA, channel 6 base address/enable
6Eh WORD distributed DMA, channel 7 base address/enable
70h 144 BYTEs reserved
!!!amd\21095a.pdf p.125
SeeAlso: #0740,#0846,#0844,#0847
Format of AMD-640 System Controller:
Offset Size Description (Table 0846)
00h 64 BYTEs header (see #0798)
(vendor ID 1106h, device ID 0595h)
0Dh BYTE latency timer (bits 7-3)
00h = 256*8 PCI clocks
01h = 1*8 PCI clocks
02h = 2*8 PCI clocks
other reserved
40h 16 BYTEs unused???
50h BYTE cache control 1
!!!amd\21090a.pdf p.107
51h BYTE cache control 2
52h BYTE non-cacheable control
53h BYTE system performance control
54h WORD non-cacheable region 1
56h WORD non-cacheable region 2
58h BYTE DRAM configuration register 1
59h BYTE DRAM configuration register 2
5Ah 6 BYTEs end of DRAM banks 0-5
60h BYTE DRAM type
61h BYTE shadow RAM control register 1
62h BYTE shadow RAM control register 2
63h BYTE shadow RAM control register 3
64h BYTE DRAM timing
65h BYTE DRAM control register 1
66h BYTE DRAM control register 2
67h BYTE 32-bit DRAM width control register
68h 2 BYTEs reserved
6Ah BYTE DRAM refresh counter
6Bh BYTE DRAM refresh control register
6Ch BYTE SDRAM control register
6Dh BYTE DRAM drive strength control register
6Eh BYTE ECC control register
6Fh BYTE ECC status register
70h BYTE PCI buffer control 1
71h BYTE CPU-to-PCI flow control 1
72h BYTE CPU-to-PCI flow control 2 (write-clear)
73h BYTE PCI target control
74h BYTE PCI initiator control
75h BYTE PCI arbitration control 1
76h BYTE PCI arbitration control 2
77h 137 BYTEs reserved
Note: the AMD-640 uses PCI configuration mechanism #1; bus/device/function
are always 00h/00h/00h
SeeAlso: #0740,#0845
Format of AMD-645 Peripheral Bus Controller, function 2 (USB Controller) data:
Offset Size Description (Table 0847)
00h 64 BYTEs header (see #0798)
(vendor ID 1106h, device ID 3038h)
20h DWORD base address
40h BYTE miscellaneous control 1
41h BYTE miscellaneous control 2
42h 2 BYTEs reserved
44h 3 BYTEs reserved ("do not program")
47h BYTE reserved
48h 24 BYTEs reserved
60h BYTE USB release number (read-only, 10h)
61h 95 BYTEs reserved
C0h WORD USB legacy support (read-only, 2000h)
C2h 62 BYTEs reserved
!!!amd\21095a.pdf p.130
SeeAlso: #0740,#0846,#0845,#0844,#0848
Format of AMD-645 Peripheral Bus Controller, function 3 (Power Mgmt) data:
Offset Size Description (Table 0848)
00h 64 BYTEs header (see #0798)
(vendor ID 1106h, device ID 3040h)
20h DWORD base address for I/O registers (see #0849)
40h BYTE pin configuration
41h BYTE genearl configuration
42h BYTE SCI interrupt configuration
43h BYTE reserved
44h WORD primary interrupt channel
46h WORD secondary interrupt channel
48h 8 BYTEs unused???
50h DWORD GP timer control
54h 13 BYTEs reserved
61h BYTE programming interface read value (value to be returned by
configuration register 09h) (write-only)
62h BYTE subclass read value (value to be returned by
configuration register 0Ah) (write-only)
63h BYTE base class read value (value to be returned by configuration
register 0Bh) (write-only)
64h 156 BYTEs reserved
!!!amd\21095a.pdf p.133
SeeAlso: #0740,#0846,#0845,#0844,#0847,#0848
Format of AMD-645 Power Management Control/Status registers:
Offset Size Description (Table 0849)
00h WORD power management status (write-clear)
02h WORD power management enable
04h WORD power management control
06h 2 BYTEs unused???
08h DWORD power management timer
0Ch 4 BYTEs unused???
10h
!!!amd\21095a.pdf p.134
Note: this data structure is actually a range of I/O ports
SeeAlso: #0848
--------X-1AB10ASF8086-----------------------
INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (Intel devices)
AX = B10Ah subfn 8086h
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (0000h-00FFh) (see #0798)
Return: CF clear if successful
ECX = dword read
CF set on error
AH = status (00h,87h) (see #0653)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on entry were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B10Ah,AX=B10Ah/SF=1106h,AX=B10Dh
Format of PCI Configuration data for Intel 82375 EISA Bridge:
Offset Size Description (Table 0850)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 0482h)
(revision numbers: 03h = 82375EB, 04h = 82375SB)
40h BYTE PCI Control
!!!29047704.pdf pg. 32
41h BYTE PCI Arbiter Control
42h BYTE PCI Arbiter Priority Control
43h BYTE PCI Arbiter Priority Control Extension
44h BYTE MEMCS# Control
45h BYTE MEMCS# Bottom of Hole
46h BYTE MEMCS# Top of Hole
47h BYTE MEMCS# Top of Memory
48h WORD EISA Address Decode Control 1
4Ah 2 BYTEs reserved
4Ch BYTE ISA I/O Recovery Time Control
4Dh 7 BYTEs reserved
54h BYTE MEMCS# Attribute Register #1
55h BYTE MEMCS# Attribute Register #2
56h BYTE MEMCS# Attribute Register #3
57h BYTE reserved
58h BYTE PCI Decode Control
59h BYTE reserved
5Ah BYTE EISA Address Decode Control 2
5Bh BYTE reserved
5Ch BYTE EISA-to-PCI Memory Region Attributes
5Dh 3 BYTEs reserved
60h 4 DWORDs EISA-to-PCI Memory Region Address registers 1-4
70h 4 DWORDs EISA-to-PCI I/O Region Address registers 1-4
80h WORD BIOS Timer base address
82h 2 BYTEs reserved
84h BYTE EISA Latency Timer Control Register
85h 3 BYTEs reserved
88h DWORD PCEB Test Control Register ("DO NOT WRITE")
8Ch 116 BYTEs reserved
SeeAlso: #0798,#0851
Format of PCI Configuration data for Intel 82434LX/NX Cache/DRAM Controller:
Offset Size Description (Table 0851)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 04A3h)
(revision numbers: 01h/03h are 82434LX, 1xh are 82434NX)
(command register only supports bits 8,6,2,1,0)
40h 16 BYTEs unused (hard-wired to 00h)
44h BYTE ??? (AMI BIOS writes 00h)
45h BYTE ??? (AMI BIOS writes 00h)
50h BYTE Host CPU Selection (see #0852)
51h BYTE deturbo frequency control register
when deturbo mode is selected (see PORT 0CF9h), the chipset
places a hold on the memory bus for a fraction of the
time inversely proportional to the value in this register
by comparing it against a free-running 8-bit counter counting
at 1/8 the CPU clock speed
(i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
(only bits 7-6 writable, bits 5-0 hardwired to 0)
52h BYTE Secondary Cache Control (see #0853)
53h BYTE Host Read/Write Buffer Control (see #0854)
54h BYTE PCI Read/Write Buffer Control
bits 7-3: reserved
bit 2: LBXs connected to TRDY#
bit 1: enable PCI burst writes
bit 0: enable PCI-to-memory posted writes
55h 2 BYTEs reserved
57h BYTE DRAM Control (see #0855)
58h BYTE DRAM Timing (see also #0901)
bits 7-2: reserved
bit 1: (NX only) RAS# Wait State
bit 0: CAS# Wait State (one extra wait state before CAS#
within burst cycle)
59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #0902)
60h 8 BYTEs DRAM Row Boundary registers 0-7
(chip revisions numbered < 10h [LX] only support six rows of
DRAM)
each register N indicates the amount of cumulative amount of
memory in SIMM banks 0-N, in multiples of 1M; offset 67h
(65h on 82434LX's) contains the total amount of memory
installed in the system; on the 82434NX, two additional
bits are concatenated to each row boundary from the DRAM Row
Boundary Extension registers to allow up to 1024M of memory
to be specified (though only 512M are supported)
68h 4 BYTEs (NX only) DRAM Row Boundary Extension registers
each nybble is concatenated with the corresponding DRAM Row
Boundary register to form a 12-bit boundary value (of which
only the low 10 bits are actually used)
6Ch DWORD reserved (hardwired to 00000000h)
70h BYTE Error Command (see #0856)
71h BYTE Error Status (see #0857)
72h BYTE System Management RAM control (see also #0906)
bits 7-6: reserved
bit 5: map SMM-mode memory (64K) into address space when bits
2-0 = 010 (default 3000h:0000h; can be changed by
first SMM event)
bit 4: close SMRAM space (allows data accesses to be forwarded
to PCI bus while execuding SMM code)
bit 3: lock SMRAM space (can't be cleared by software)
bits 2-0: SMRAM memory address (010 = Axxxxh, 011 = Bxxxxh)
73h 5 BYTEs reserved
78h WORD Memory Space Gap
bit 15: enable ISA hole
bits 14-12: size of ISA hole in MB (less 1); must be power of 2
bits 11-8: reserved
bits 7-4: bottom of ISA memory hole in MB
(must be multiple of gap size)
bits 3-0: reserved
7Ah 2 BYTEs reserved
7Ch DWORD Frame Buffer Range (see #0858)
80h 128 BYTEs reserved
Note: the 82434NX is part of the Intel Neptune chipset
SeeAlso: #0860,#0879
Bitfields for Intel 82434LX/NX Host CPU Selection:
Bit(s) Description (Table 0852)
7-5 host CPU type
LX: hardwired to 100 (Pentium)
NX: "reserved" (101 on RB's system)
4-3 reserved
2 enable L1 cache
1-0 Host Operating Frequency (set according to external bus speed)
00: reserved
01: 50 MHz
10: 60 MHz
11: 66 MHz
(LX: bit 1 reserved, only 60/66 MHz supported)
SeeAlso: #0851,#0853
Bitfields for Intel 82434LX/NX Secondary Cache Control:
Bit(s) Description (Table 0853)
7-6 secondary cache size
00 none
01 reserved
10 256K
11 512K
5 SRAM type
0 standard SRAMs
1 burst SRAMs
4 secondary cache allocation
0 cache only CPU reads of memory with CACHE# asserted
1 cache all CPU reads of cacheable memory
3 Cache Byte Control
0 use single write enable and per-byte select lines
1 use per-byte write enables on the cache
2 (NX only) SRAM connectivity
0 disable CCS[1:0]# / CCS1# functionality
1 enable CCS[1:0]# functionality to de-select async SRAMs, placing them
in a low-power standby mode
1 enable CCS1# functionality for burst SRAMs, indicating the lack of an
external address latch
1 (LX only) Secondary Cache Write Policy
0 write-through
1 write-back (NX is always in write-back mode)
0 Secondary Cache Enable
SeeAlso: #0851,#0854
Bitfields for Intel 82434LX/NX Host Read/Write Buffer Control:
Bit(s) Description (Table 0854)
7-4 reserved
3 enable read-around-write
2 reserved
1 enable CPU-to-PCI posted writes
0 (LX only) enable CPU-to-memory posted writes
(NX always posts memory writes)
SeeAlso: #0851,#0853
Bitfields for Intel 82434LX/NX DRAM Control:
Bit(s) Description (Table 0855)
7-6 (NX only) DRAM burst timing
00 X-4-4-4 read/write (default)
01 X-4-4-4 read, X-3-3-3 write
10 reserved
11 X-3-3-3 read/write
5 parity error mask
4 0-Active RAS# mode
3 SMRAM enable (must be set to enable reg 72h)
2 Burst-of-Four Refresh
1 Refresh Type
=0 RAS#-only
=1 CAS#-before-RAS#
0 DRAM Refresh Enable
SeeAlso: #0851
Bitfields for Intel 82434LX/NX Error Command register:
Bit(s) Description (Table 0856)
7 assert SERR# on receiving target abort
6 assert SERR# on PCI data-write parity error
5 (NX only) assert SERR# on PCI data-read parity error
4 (NX only) assert SERR# on PCI address parity error
3 (NX only) assert PERR# on data parity error
2 enable L2 cache parity
1 enable SERR# on DRAM/L2 cache data parity error
0 assert PEN# on data reads; allow CPU to signal parity error via PCHK#
Notes: PCI command register bit 6 is master enable for bit 3;
PCI cmd bits 6 and 8 are the master enable for bits 7-4 and 1
bits 1-0 = 10 is not permitted
SeeAlso: #0851,#0857
Bitfields for Intel 82434LX/NX Error Status register:
Bit(s) Description (Table 0857)
7 reserved
6 PCI-write detected parity error
5 (NX only) PCI-read detected parity error
4 (NX only) PCI address parity error detected
3 main memory data parity error
2 L2 cache data parity error
1 reserved
0 Shutdown cycle detected
Note: clear status bits by writing a 'one' bit to each bit to be cleared
SeeAlso: #0856,#0851
Bitfields for Intel 82434LX/NX Frame Buffer Range register:
Bit(s) Description (Table 0858)
31-20 buffer offset (in 1MB increments; must be multiple of buffer set set
by bits 3-0)
19-14 reserved
13 enable byte merging
12 128K VGA-range Attribute Enable
when set, bits 13,9,7 also apply to VGA memory range (Axxxx-Bxxxx)
11-10 reserved
9 no lock requests
8 reserved
7 enable transparent bufer writes
6-4 reserved
3-0 buffer size in MB (less 1); must be power of 2
Note: if bits 31-20=0, the frame buffer feature is disabled
SeeAlso: #0851
Format of PCI Configuration data for Intel 82424 Cache Controller:
Offset Size Description (Table 0859)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 0483h)
40h BYTE bus number
41h BYTE subordinate bus number
42h BYTE disconnect timer
50h BYTE host CPU selection
51h BYTE deturbo frequency control
when deturbo mode is selected (see PORT 0CF9h), the chipset
places a hold on the memory bus for a fraction of the
time inversely proportional to the value in this register
(i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
52h BYTE secondary cache control
53h BYTE write buffer control
54h BYTE PCI features control
55h BYTE DRAM Operation Mode Select
56h BYTE System Exception Handling
57h BYTE SMM Control Register
58h BYTE reserved
59h 7 BYTEs Programmable Attribute Map registers 0-6 (see also #0902)
60h 4 BYTEs DRAM Row Boundary registers 0-3
each register N indicates amount of memory in rows 0-N (each
row is 64 bits wide)
boundary register 3 (offset 63h) contains the total system
memory, which may not exceed 128M
64h 4 BYTEs unused???
68h WORD Memory Hole-0
6Ah WORD Memory Hole-1
Note: the above field names are those given by EduWARE's PCI Configuration
Manager v1.2
SeeAlso: #0851,#0879,#0892
Format of PCI Configuration data for Intel 82378 and 82379 ISA Bridges:
Offset Size Description (Table 0860)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 0484h)
(revision ID:
bits 7-4: reserved
bits 3-0: revision
0011 82378ZB A0-step
1000 82379AB A0-step)
40h BYTE PCI Control (see #0861)
41h BYTE PCI Arbiter Control (see #0862)
42h BYTE PCI Arbiter Priority Control (see #0863)
43h BYTE (82378ZB) PCI Arbiter Priority Control Extension Register
bit 0: bank 3 fixed priority mode select (see also #0863)
=0 REQ2# has higher priority
=1 REQ3# has higher priority
44h BYTE MEMCS# Control (see #0864)
45h BYTE MEMCS# Bottom of Hole (address bits 23-16)
46h BYTE MEMCS# Top of Hole (address bits 23-16)
47h BYTE MEMCS# Top of Memory
(address bits 28-21 == size in 2M increments, less 1)
48h BYTE ISA Address Decoder Control (see #0865)
49h BYTE ISA Address Decoder ROM Block Enable (see #0866)
4Ah BYTE ISA Address Decoder Bottom of Hole (address bits 23-16)
4Bh BYTE ISA Address Decoder Top of Hole (address bits 23-16)
4Ch BYTE ISA Controller Recovery Time (see #0883)
4Dh BYTE ISA Clock Divisor (see #0867)
4Eh BYTE Utility Bus Chip Select Enable A (see #0868)
4Fh BYTE Utility Bus Chip Select Enable B (see #0869)
50h 4 BYTEs reserved
54h BYTE MEMCS# Attribute Register #1 (see #0870)
attributes for 16K blocks from C0000h-CFFFFh
55h BYTE MEMCS# Attribute Register #2 (see #0870)
attributes for 16K blocks from D0000h-DFFFFh
56h BYTE MEMCS# Attribute Register #3 (see #0870)
attributes for 16K blocks from E0000h-EFFFFh
57h BYTE (82378) Scatter/Gather Relocation Base Adress (see #0871)
(82379AB) reserved
58h 8 BYTEs reserved
60h BYTE (82378ZB) IRQ0# Route Control (see #0872)
61h BYTE (82378ZB) IRQ1# Route Control (see #0872)
62h BYTE (82378ZB) IRQ2# Route Control (see #0872)
63h BYTE (82378ZB) IRQ3# Route Control (see #0872)
64h 12 BYTEs reserved
70h BYTE (82378) reserved
(82379AB, write-only) PIC/APIC Configuration Control
(see #0873)
71h BYTE (82378) reserved
(82379AB, write-only) APIC Base Address Relocation
(see #0874,MEM FEC00000h)
72h 14 BYTEs reserved
80h WORD BIOS timer base address (see PORT 0078h)
bits 15-2 are bits 15-2 of BIOS timer port address
bit 1: reserved (0)
bit 0: timer enabled (if disabled, other bits ignored)
82h 30 BYTEs unused???
A0h BYTE SMI Control (see #0875)
A1h BYTE reserved
A2h WORD SMI Enable (see #0876)
A4h DWORD System Event Enable (SEE) (see #0877)
A8h BYTE Fast-Off Timer (in minutes)
A9h BYTE reserved
AAh WORD active SMI Requests (see #0878)
ACh BYTE (82378ZB) Clock Throttle STPCLK# Low Timer
duration of STPCLK# low period in 32 microsecond units
ADh BYTE reserved
AEh BYTE (82378ZB) Clock Throttle STPCLK# High Timer
duration of STPCLK# high period in 32 microsecond units
AFh 81 BYTEs reserved
SeeAlso: #0851,#0911,PORT 040Ah"82378ZB"
Bitfields for Intel 82378/82379 PCI Control:
Bit(s) Description (Table 0861)
7 reserved (0)
6 DMA Reserved Page Register Aliasing Control
=0 alias PORT 80h-8Fh to PORT 90h-9Fh
5 Interrupt Acknowledge Enable
=0 ignore INTA cycles on the PCI bus, but still allow 8259 register
access and poll-mode functions
4-3 Subtractive Decoding Sample Point
00 slow sample point
01 typical
10 fast sample point
11 reserved
2 PCI Posted Write Buffer Enable
1 ISA Master Line Buffer Configuration
=0 single-transaction mode
=1 eight-byte mode for ISA bus master transfers
0 DMA Line Buffer Configuration
=0 single-transaction mode
=1 eight-byte mode
SeeAlso: #0860,#0862
Bitfields for Intel 82378/82379 PCI Arbiter Control:
Bit(s) Description (Table 0862)
7-5 reserveed (0)
4-3 Master Retry Timer
00 disabled (retries never masked)
01 retries unmasked after 16 PCICLKs
10 retries unmasked after 32 PCICLKs
11 retries unmasked after 64 PCICLKs
2 Bus Park
=1 park CPUREQ# on PCI bus when 82378 detects PCI bus idle
1 Bus Lock
=0 resource lock
=1 Bus lock
0 Guaranteed Access Time
=1 ISA bus masters are guaranteed 2.5 microsecond CHRDY time-out
SeeAlso: #0860,#0861
Bitfields for Intel 82378/82379 PCI Arbiter Priority Control:
Bit(s) Description (Table 0863)
7 bank 3 rotate control
6 bank 2 rotate control
5 bank 1 rotate control
4 bank 0 rotate control
3 bank 2 fixed priority mode select B
2 bank 2 fixed priority mode select A
1 bank 1 fixed priority mode select
0 bank 0 fixed priority mode select
Note: if both 'rotate' and 'fixed' bits are set for a given bank,
that bank will be in rotating-priority mode
SeeAlso: #0860,#0862
Bitfields for Intel 82378/82379 MEMCS# Control Register:
Bit(s) Description (Table 0864)
7-5 reserved (0)
4 MEMCS# Master Enable
3 write enable for 0F0000h-0FFFFFh
2 read enable for 0F0000h-0FFFFFh
1 write enable for 080000h-09FFFFh
0 read enable for 080000h-09FFFFh
SeeAlso: #0860
Bitfields for Intel 82378/82379 ISA Address Decoder Control Register:
Bit(s) Description (Table 0865)
7-4 ISA memory cycle forwarding to PCI
0000-1111 = 1M-16M top of ISA memory; any accesses above programmed
limit are forwarded to PCI bus
3-0 ISA/DMA memory cycle to PCI bus enables
bit 3: 896K-960K (E000h-EFFFh)
bit 2: 640K-768K (A000h-BFFFh)
bit 1: 512K-640K (8000h-9FFFh)
bit 0: 0K-512K (0000h-7FFFh)
SeeAlso: #0860,#0866
Bitfields for Intel 82378/82379 ISA Address Decoder ROM Block Enable:
Bit(s) Description (Table 0866)
7 enable 880K-896K (EC00h-EFFFh)
6 enable 864K-880K (E800h-EBFFh)
5 enable 848K-864K (E400h-E7FFh)
4 enable 832K-848K (E000h-E3FFh)
3 enable 816K-832K (DC00h-DFFFh)
2 enabel 800K-816K (D800h-DBFFh)
1 enable 784K-800K (D400h-D7FFh)
0 enable 768K-784K (D000h-D3FFh)
Note: ISA accesses within any enabled ranges are forwarded to the PCI bus
SeeAlso: #0860,#0865
Bitfields for Intel 82378/82379 ISA Clock Divisor Register:
Bit(s) Description (Table 0867)
7 reserved (0)
6 enable positive decode of upper 64K BIOS at 000F0000h-000FFFFFh,
FFEF0000h-FFEFFFFFh, and FFFF0000h-FFFFFFFFh
5 coprocessor error enable
=1 FERR# is driven onto IRQ13
4 IRQ12/Mouse Function Enable
=0 standard IRQ12
=1 mouse
3 RSTDRV enable
=1 assert RSTDRV until this bit cleared (for use in changing ISA bus
speed)
2-0 PCICLK-to-ISA SYSCLK divisor
000 4
001 3
other reserved
SeeAlso: #0860,#0865
Bitfields for Intel 82378/82379 Utility Bus Chip Select A Register:
Bit(s) Description (Table 0868)
7 extended BIOS enable (decode accesses to FFF80000h-FFFDFFFFh)
6 lower BIOS enable (decode accesses to E0000h-EFFFFh,
FFEE0000h-FFEEFFFFh, and FFFE0000h-FFFEFFFFh)
5 (82378ZB) floppy disk primary/secondary address select
=1 use secondary address range
4 (82378ZB) IDE Decode enable
3,2 floppy disk address locations enable
1 keyboard controller address location enable
enables I/O addresses 60h,62h,64h,66h (82378ZB) or 60h/64h (82379AB)
0 RTC address location enabled
=1 enable decode of I/O ports 70h-77h
SeeAlso: #0860,#0885,#0869
Bitfields for Intel 82378ZB/82379 Utility Bus Chip Select B Register:
Bit(s) Description (Table 0869)
7 configuration RAM decode enable
=1 permit write accesses to I/O port 0C00h and r/w to ports 08xxh
6 enable PORT 0092h
5-4 parallel port enable
00 LPT1 (ports 03BCh-03BFh)
01 LPT2 (ports 0378h-037Fh)
10 LPT3 (ports 0278h-027Fh)
11 disabled
3-2 serial port B enable
00 COM1 (03F8h-03FFh)
01 COM2 (02F8h-02FFh)
10 reserved
11 port B disabled
1-0 serial port A enable
00 COM1 (03F8h-03FFh)
01 COM2 (02F8h-02FFh)
10 reserved
11 port A disabled
Note: if both serial ports are set to the same address, port B is disabled
SeeAlso: #0860,#0868,PORT 0092h
Bitfields for Intel 82378/82379 MEMCS# Attribute Register 1/2/3:
Bit(s) Description (Table 0870)
7 write-enable xC000h-xFFFFh expansion ROM
6 read-enable xC000h-xFFFFh expansion ROM
5 write-enable x8000h-xBFFFh expansion ROM
4 read-enable x8000h-xBFFFh expansion ROM
3 write-enable x4000h-x7FFFh expansion ROM
2 read-enable x4000h-x7FFFh expansion ROM
1 write-enable x0000h-x3FFFh expansion ROM
0 read-enable x0000h-x3FFFh expansion ROM
Note: x = C/D/E depending on the attribute register
SeeAlso: #0860
Bitfields for Intel 82378ZB Scatter Gather Relocation Base Address:
Bit(s) Description (Table 0871)
7-0 bits 15-8 of base address for scatter/gather I/O ports
(default 04h; low 8 bits of address are always 10h-3Fh)
SeeAlso: #0860,#0870,#0872,PORT 040Ah"82378ZB",#P038
Bitfields for Intel 82378/82379 PCI IRQ Route Control Register:
Bit(s) Description (Table 0872)
7 disable IRQ routing
6-4 reserved (0)
3-0 ISA IRQ number to which to route the PCI IRQ
Note: IRQs 0-2, 8, and 13 are reserved
SeeAlso: #0860,#0911
Bitfields for Intel 82379AB PIC/APIC Configuration Control Register:
Bit(s) Description (Table 0873)
7-2 reserved
1 SMI Routing Control
=1 SMI via APIC
=0 SMI via SMI# signal
0 INT Routing Control
=1 INT disabled (requires that APIC be enabled)
=0 INT enabled
SeeAlso: #0860,#0874
Bitfields for Intel 82379AB/82371 APIC Base Address Relocation:
Bit(s) Description (Table 0874)
7 reserved
6 (82379AB) reserved
6 (82371) A12 mask
=1 ignore address bit 12 in APIC address
5-0 bits 15-10 of APIC memory address (ORed with FEC00000h to form base
address)
SeeAlso: #0860,#0911,#0873,MEM FEC00000h
Bitfields for Intel 82378/82379 SMI Control Register:
Bit(s) Description (Table 0875)
7 reserved
6 (82378) reserved
(82379) require Stop Grant bus cycle before asserting STPCLK#
5-4 reserved
3 Fast-Off Timer freeze
2 STPCLK# scaling enable
=1 enable Clock Throttle bytes in PCI configuration space
1 STPCLK# signal enable
=1 assert STPCLK# on read from PORT 00B2h
0 SMI# Gate
=1 enable SMI# on system management interrupt
Notes: bit 1 is cleared either with an explicit write of 0 here, or by any
write to PORT 00B2h
bit 0 does not affect the recording of SMI events, so a pending SMI
will cause an immediate SMI# when the bit is set
SeeAlso: #0860,#0876,#0877,#0920,PORT 00B2h
Bitfields for Intel 82371/82378/82379 SMI Enable Register:
Bit(s) Description (Table 0876)
15-9 reserved
8 (82371SB only) Legacy USB SMI enable
7 APMC Write SMI enable
=1 generate SMI on write to PORT 00B2h
6 EXTSMI# SMI enable
5 Fast-Off Timer SMI enable
4 IRQ12 (PS/2 mouse) SMI enable
3 IRQ8 (RTC alarm) SMI enable
2 IRQ4 (COM1/COM3) SMI enable
1 IRQ3 (COM2/COM4) SMI enable
0 IRQ1 (keyboard) SMI enable
SeeAlso: #0860,#0875,#0877,#0911,PORT 00B2h
Bitfields for Intel 82371/82378/82379 System Event Enable Register:
Bit(s) Description (Table 0877)
31 Fast-Off SMI enable (system and break events)
30 (82379 only) Fast-Off Interrupt Enable (break events only)
30 (82371 only) INTR enable (break events only)
29 Fast-Off NMI enable (system and break events)
28 (82371SB only) Fast-Off APIC enable (break events only)
27 (82379 only) Fast-Off COM enable (system events only)
26 (82379 only) Fast-Off LPT enable (system events only)
25 (82379 only) Fast-Off Drive enable (system events only)
24 (82379 only) Fast-Off DMA enable (system events only)
23-16 reserved
15-3 Fast-Off IRQ (15-3) enable (system and break events)
2 reserved
1-0 Fast-Off IRQ (1-0) enable (system and break events)
Note: any enabled system event restarts the Fast-Off Timer, thus preventing
a Fast-Off powerdown; any enabled break event awakens the system from
powerdown
SeeAlso: #0860,#0875,#0876,#0878,#0911
Bitfields for Intel 82371/82378/82379 SMI Request Register:
Bit(s) Description (Table 0878)
15-9 reserved
8 (82371SB only) Legacy USB SMI status
7 APM SMI Status (write to PORT 00B2h triggered SMI)
6 EXTSMI# SMI Status (EXTSMI# line triggered SMI)
5 Fast-Off Timer expired
4 IRQ12 triggered SMI
3 IRQ8 triggered SMI
2 IRQ4 triggered SMI
1 IRQ3 triggered SMI
0 IRQ1 triggered SMI
Note: software must explicitly reset the appropriate bits
SeeAlso: #0860,#0877,#0911
Format of PCI Configuration data for Intel 82425EX PSC:
Offset Size Description (Table 0879)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 0486h)
40h BYTE PCI control register (see #0880)
41h 3 BYTEs ???
44h BYTE host device control register (see #0881)
45h 3 BYTEs ???
48h WORD PCI local-bus IDE control register (see #0882)
4Ah 2 BYTEs ???
4Ch BYTE ISA I/O recovery timer register (see #0883)
4Dh BYTE part revision register (see #0884)
4Eh BYTE X-bus Chip Select A register (see #0885)
4Fh BYTE X-bus Chip Select B register???
50h BYTE host select register
51h BYTE deturbo frequency control register
when deturbo mode is selected (see PORT 0CF9h), the chipset
places a hold on the memory bus for a fraction of the
time inversely proportional to the value in this register
(i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
52h WORD secondary (L2) cache control register
54h 2 BYTEs ???
56h WORD DRAM control register
58h BYTE ???
59h 7 BYTEs Programmable Attribute Map (PAM) registers 0-6 (see also #0902)
60h 5 BYTEs DRAM row boundary registers 0-4
each register N indicates amount of memory in rows 0-N (each
row is 64 bits wide); the fifth row of memory (if
implemented) must contain either 8M or 16M, depending on
system configuration
boundary register 4 (offset 64h) contains the total system
memory, which may not exceed 128M
65h BYTE ???
66h BYTE PIRQ route control register 0
67h BYTE PIRQ route control register 1
68h BYTE DRAM memory hole register
69h BYTE top of memory
6Ah 6 BYTEs ???
70h BYTE SMRAM control register
71h 47 BYTEs unused???
A0h BYTE SMI control register
A1h BYTE ???
A2h WORD SMI enable register
A4h DWORD system event enable
A8h BYTE fast off timer register
A9h BYTE ???
AAh WORD SMI request register
ACh BYTE clock throttle STPCLK# low timer
ADh BYTE unused???
AEh BYTE clock throttle STPCLK# high timer
AFh BYTE ???
B0h 80 BYTEs unused???
SeeAlso: #0798,#0859,#0851,#0892,#0911
Bitfields for Intel 82425EX PCI control register:
Bit(s) Description (Table 0880)
0 CPU-to-PCI byte merging
1 CPU-to-PCI bursting enable
2 PCI posted-write buffer enable
4-3 subtractive decode sampling point
00 slow
01 typical
10 fast
11 reserved
5 DRAM parity error enable
6 target abort error enable
7 reserved
SeeAlso: #0879,#0881,#0882,#0883
Bitfields for Intel 82425EX host device control register:
Bit(s) Description (Table 0881)
0 HRDY# maximum signal sampling point
0 slow timing
1 fast timing
1 HDEV# signal sampling point
0 slow timing
1 fast timing
2 host device present
7-3 reserved
SeeAlso: #0879,#0880
Bitfields for Intel 82425EX local-bus IDE control register:
Bit(s) Description (Table 0882)
1-0 primary/secondary PCI IDE enable
00 IDE disabled
01 primary (ports 01F0h-01F7h,03F6,03F7h)
10 secondary (ports 0170h-017Fh,0376h,0377h)
11 reserved
3-2 fast timing bank drive select 1
bit 2 = drive 0 enabled
bit 3 = drive 1 enabled
5-4 IORDY sample point Enable Drive Select
bit 4 = drive 0 enabled
bit 5 = drive 1 enabled
7-6 reserved
9-8 IORDY sample point
00 6 clocks
01 5 clocks
10 4 clocks
11 3 clocks
12-10 recover time (000 = 8 PCI clocks, 001 = 7, ..., 101 = 3, 110/111 = 3)
15-13 reserved
SeeAlso: #0879,#0880
Bitfields for Intel chipset ISA I/O recovery timer register:
Bit(s) Description (Table 0883)
1-0 16-bit I/O recovery time
00 = 4 SYSCLKs
01-11 = 1-3 SYSCLKs
2 16-bit I/O recovery enable
5-3 8-bit I/O recovery time
000 = 8 SYSCLKs
001-110 = 1-7 SYSCLKs
6 8-bit I/O recovery enable
7 (82425EX/82371) DMA reserved page register aliasing disable
=0 ports 0090h-009Fh alias ports 0080h-008Fh
=1 ports 0090h-009Fh forwarded to ISA bus
SeeAlso: #0860,#0879,#0880,#0911
Bitfields for Intel 82425EX part revision register:
Bit(s) Description (Table 0884)
7-5 fabrication house identifier (read-only)
4 E0000h-EFFFFh ISA-to-main-memory forwarding enabled
3-0 revision ID (read-only)
SeeAlso: #0879,#0885
Bitfields for Intel 82425EX/82371 X-bus Chip Select A register:
Bit(s) Description (Table 0885)
7 extended BIOS enabled at FFF80000h-FFFDFFFFh
6 lower (E000h) BIOS enabled
5 trigger IRQ13 on FERR#
4 IRQ12 mouse function enabled
3 reserved (0)
2 BIOS memory write protect
1 keyboard controller addresses (60h,62h,64h,66h) enabled
0 RTC addresses (70h-77h) enabled
SeeAlso: #0879,#0911,#0884
Format of PCI Configuration Data for Intel 82380AB PCI-ISA Bridge:
Offset Size Description (Table 0886)
00h 64 BYTEs header (see #0798)
(vender ID 8086h, device ID 123Ch)
!!!intel\29056301.pdf pg. 9
40h BYTE I/O Recovery Register
41h BYTE reserved
42h BYTE MISA Error Status
43h 189 BYTEs reserved
SeeAlso: #0793
Format of PCI Configuration data for Intel 82370FB PCI-PCI Bridge (MPCI2):
Offset Size Description (Table 0887)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, deivce ID 124Bh)
!!!intel\29056701.pdf pg. 13
40h BYTE Connector Control
41h BYTE Connector Event
42h 2 BYTEs reserved
44h WORD Serial Bus Interface/Burst Enable
46h BYTE MPCI2 Miscellaneous Status
47h 5 BYTEs reserved
4Ch WORD Special Message Encode
4Eh 178 BYTEs reserved
SeeAlso: #0793
Format of PCI Configuration Data for Intel 82439HX:
Offset Size Description (Table 0888)
00h 64 BYTEs header (see #0798)
(vender ID 8086h, device ID 1250h)
(revision ID 00h = A0 stepping)
40h 16 BYTEs reserved
50h BYTE PCI Control (see #0894)
51h BYTE reserved
52h BYTE cache control (see #0896)
53h 3 BYTEs reserved
56h BYTE DRAM extended control (see #0899)
57h BYTE DRAM control (see #0900)
58h BYTE DRAM timing (see #0901)
59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #0902)
60h 8 BYTEs DRAM Row Boundary registers 0-7
each register N indicates cumulative amount of memory in rows
0-N (each 64 bits wide), in 4M units
68h BYTE DRAM Row Type (see #0903)
bits 0-7 indicate whether each row 0-7 contains EDO DRAM
instead of page-mode DRAM
69h BYTE ???
6Ah 8 BYTEs reserved
72h BYTE System Management RAM control (see #0906)
73h 29 BYTEs reserved
90h BYTE Error Command (see #0909)
91h BYTE Error Status (see #0910) (read-only)
92h BYTE Error Syndrome (read-only)
latest non-zero ECC error syndrome
93h 109 BYTEs reserved
SeeAlso: #0892,#0927
Format of PCI Configuration Data for Intel 82439TX:
Offset Size Description (Table 0889)
00h 64 BYTEs header (see #0798)
(vender ID 8086h, device ID 7100h)
(revision ID 00h = A0 stepping)
!!!intel\29055901.pdf pg. 23
40h 15 BYTEs reserved
4Fh BYTE arbitration control
50h BYTE PCI control
51h BYTE reserved
52h BYTE cache control
53h BYTE extended cache control
54h WORD SDRAM control
56h BYTE DRAM extended control
57h BYTE DRAM control
58h BYTE DRAM timing
59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #0902)
60h 6 BYTEs DRAM Row Boundary registers 0-5
66h BYTE reserved
67h BYTE DRAM Row Type high
68h BYTE DRAM Row Type low
69h 2 BYTEs undefined (read-only)
6Bh 5 BYTEs reserved
70h BYTE Multi-Transaction Timer
71h BYTE Extended SMRAM control
72h BYTE System Management RAM control
73h BYTE reserved
74h BYTE undefined (read-only)
76h 3 BYTEs reserved
78h BYTE undefined (read-only)
79h BYTE Miscellaneous Control register
7Ah 131 BYTEs reserved
FDh BYTE undefined (read-only)
FEh 2 BYTEs reserved
SeeAlso: #0793
Format of PCI Configuration Data for Intel 82437MX:
Offset Size Description (Table 0890)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 1235h)
40h 16 BYTEs reserved
50h BYTE PCI Control (see #0895)
51h BYTE reserved
52h BYTE cache control (see #0896)
53h 4 BYTEs reserved
57h BYTE DRAM Control (see #0900)
58h BYTE DRAM timing (see #0901)
59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #0902)
60h 4 BYTEs DRAM Row Boundary Registers 0-3
each register N indicates cumulative amount of memory in rows
0-N, in 4M units (each row is 64 bits wide)
64h 4 BYTEs reserved
68h BYTE DRAM Row Type (see #0904)
69h 9 BYTEs reserved
72h BYTE System Management RAM control (see #0906)
73h 141 BYTEs reserved
SeeAlso: #0892,#0891
Format of PCI Configuration Data for Intel 82437FX:
Offset Size Description (Table 0891)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 122Dh) (see #0793)
40h 16 BYTEs reserved
50h BYTE PCI Control (see #0895)
51h BYTE reserved
52h BYTE cache control (see #0896)
53h 4 BYTEs reserved
57h BYTE DRAM Control (see #0900)
58h BYTE DRAM timing (see #0901)
59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #0902)
60h 5 BYTEs DRAM Row Boundary Registers 0-4
each register N indicates cumulative amount of memory in rows
0-N, in 4M units (each row is 64 bits wide)
65h 3 BYTEs reserved
68h BYTE DRAM Row Type (see #0904)
69h 9 BYTEs reserved
72h BYTE System Management RAM control (see #0906)
73h 141 BYTEs reserved
SeeAlso: #0890,#0892
Format of PCI Configuration Data for Intel 82437VX:
Offset Size Description (Table 0892)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 7030h)
(revision ID 00h = A0 stepping)
40h 15 BYTEs reserved
4Fh BYTE arbitration control (see #0893)
50h BYTE PCI Control (see #0894)
51h BYTE reserved
52h BYTE cache control (see #0896)
53h BYTE cache control extensions (see #0897)
54h WORD SDRAM control (see #0898)
55h BYTE reserved
56h BYTE DRAM extended control (see #0899)
57h BYTE DRAM control (see #0900)
58h BYTE DRAM timing (see #0901)
59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #0902)
60h 5 BYTEs DRAM Row Boundary registers 0-4
each register N indicates amount of memory in rows 0-N in 4M
units (each row is 64 bits wide); the fifth row of memory (if
implemented) must contain either 8M or 16M, depending on
system configuration
boundary register 4 (offset 64h) contains the total system
memory, which may not exceed 128M
65h 2 BYTEs reserved
67h BYTE DRAM Row Type (high)
defines memory type in DRAM row 4 in bits 4,0 (see #0903)
68h BYTE DRAM Row Type (low) (see #0903)
69h BYTE PCI TRDY timer (see #0905)
6Ah 6 BYTEs reserved
70h BYTE Multi-Transaction Timer
number of PCLKs guaranteed to the current agent before the
82437 will grant the bus to another PCI agent on request
71h BYTE reserved
72h BYTE System Management RAM control (see #0906)
73h BYTE shared memory buffer control (see #0907)
74h BYTE shared memory buffer start address, in 0.5MB units
end address is top-of-memory at offset 64h or start of an
enabled PCI memory hole when top-of-memory is 16M
76h 2 BYTEs reserved
78h BYTE graphics controller latency timers (see #0908)
79h 135 BYTEs reserved
SeeAlso: #0793,#0859,#0879,#0888,#0890
Bitfields for Intel 82437VX arbitration control:
Bit(s) Description (Table 0893)
7 extended CPU-to-PIIX PHLDA# signalling enabled
6-4 reserved
3 CPU priority enable
=1 CPU gets PCI bus after two PCI slots
=0 CPU gets PCI bus after three PCI slots
2-0 reserved
SeeAlso: #0892,#0894
Bitfields for Intel 82437VX/82439HX PCI Control register:
Bit(s) Description (Table 0894)
7-4 reserved (82437VX)
7 DRAM ECC/Parity Select (82439HX)
=1 ECC
=0 parity
6 ECC TEST enable (82439HX)
5 shutdown to port 92h (82439HX)
=1 send 01h to PORT 0092h on Shutdown special cycle on host bus
4 dual-processor NA# enable (82439HX)
3 PCI Concurrency Enable
=1 CPU can access DRAM/L2 during non-PIIX PCI master cycles
=0 CPU kept off PCI bus during all PCI bus-master cycles
2 SERR# Output Type (82439HX only)
=1 SERR# is actively driven high when negated
=0 SERR# is PCI-compatible open-drain output
1 reserved
0 Global TXC Enable (82439HX only)
=1 enable new 82439HX features
SeeAlso: #0892,#0888,#0896,#0895
Bitfields for Intel 82437FX/82437MX PCI Control register:
Bit(s) Description (Table 0895)
7-5 CPU inactivity timer (in PCI Clocks less 1)
4 reserved
3 enable PCI Peer Concurrency
=1 CPU can access DRAM/L2 during non-PIIX PCI master cycles
=0 CPU kept off PCI bus during all PCI bus-master cycles
2 disable PCI Bursting
1 disable PCI Streaming
0 disable Bus Concurrency
SeeAlso: #0890,#0891,#0894
Bitfields for Intel 82437/82439HX cache control register:
Bit(s) Description (Table 0896)
7-6 secondary cache size
00 none
01 256K
10 512K
11 reserved
5-4 L2 RAM type
00 pipelined burst SRAM/DRAM
01 reserved
10 asynchronous SRAM (82437FX/MX/VX only)
11 two banks of pipelined burst cache
3 NA disable
=1 never assert NA# pin
2 reserved (82437FX/82437MX/82437VX)
2 Extended Cacheability Enable (82439HX)
=1 cache up to 512M
=0 cache only first 64M
1 Secondary Cache Force Miss or Invalidate
=1 force all memory accesses to bypass L2 cache
0 First Level Cache Enable
=1 all memory accesses made non-cacheable by CPU L1 cache
SeeAlso: #0892,#0888,#0894,#0897,#0898,#0890
Bitfields for Intel 82437VX cache control extensions register:
Bit(s) Description (Table 0897)
7-6 reserved
5 DRAM cache detected (read-only)
4-0 DRAM cache refresh timer
number of HCLKs 82437VX remains idle during DRAM cache refresh
SeeAlso: #0892,#0896
Bitfields for Intel 82437VX SDRAM control register:
Bit(s) Description (Table 0898)
15-9 reserved
8-6 Special SDRAM Mode Select
000 normal mode (default)
001 enable NOP command
010 enable All Banks Precharge command
011 enable Mode Register Command
100 enable CBR Cycle
101 reserved
11x reserved
5 reserved
4 CAS# latency
=1 latency is 2 for all SDRAM cycles
=0 latency is 3
3 RAS# precharge and refresh timing
=0 slower
=1 faster
2-0 reserved
SeeAlso: #0892,#0896
Bitfields for Intel 82437VX/82439HX DRAM extended control register:
Bit(s) Description (Table 0899)
7 reserved
6 (82437VX) refresh RAS# assertion length (0=4 clocks, 1=5 clocks)
5 (82437VX) Fast EDO Path Select
4 Speculative Leadoff Disable
3 (82439HX) Turn-Around Insertion Enable
=1 insert one extra clock of turnaround time after asserting MWE#
2-1 Memory Address Drive Strength
82437VX: 82439HX:
00 reserved 00 8mA
01 10mA (default) 01 8mA/12mA (MAA/MWE#)
10 16mA 10 12mA/8mA (MAA/MWE#)
11 reserved 11 12mA
0 (82437VX) DRAM Symmetry Detect Mode
(used to force some memory address lines to fixed value for detecting
DRAM symmetry row-by-row)
0 (82439HX) 64MBit Mode Enable
=1 enable support for 64M SIMMs
SeeAlso: #0892,#0888,#0900
Bitfields for Intel 82437/82439HX DRAM control register:
Bit(s) Description (Table 0900)
7-6 DRAM Hole Enable
00 none
01 512K-640K
10 15M-16M (82437FX/MX/VX only)
11 14M-16M (82437VX only)
5 reserved
4 (82437MX only) refresh type during Suspend
=1 self-refreshing DRAMs in system
=0 CAS-before-RAS refresh
3 EDO Detect Mode enable
(used to detect whether memory is EDO bank-by-bank)
2-0 DRAM refresh rate
FX/VX/HX MX
000 disabled 15.6 us
001 50 MHz 31.2 us
010 60 MHz 62.4 us
011 66 MHz 125 us
100 reserved 250 us
1xx reserved reserved
SeeAlso: #0892,#0888,#0899,#0890
Bitfields for Intel 82437FX/82437MX/82437VX/82439HX DRAM timing register:
Bit(s) Description (Table 0901)
7 (82437FX) reserved
7 (82437MX) MA[11:2] buffer strength
=0 8mA
=1 12mA
7 (82437VX) MA-to-RAS# Delay
=1 one clock
=0 two clocks
7 (82439HX) Turbo Read Leadoff
=1 bypass first register in DRAM data pipeline, saving one clock
(may only be set in a cacheless configuration)
6-5 DRAM Read Burst Timing
00 x444 (EDO and Standard Page Mode)
01 x333 (EDO), x444 (SPM)
10 x222 (EDO), x333 (SPM)
11 x322 (EDO), x333 (SPM) (82437VX only)
11 reserved (other)
4-3 DRAM Write Burst Timing
00 x444
01 x333
10 x222
11 reserved
2 RAS-to-CAS Delay
=1 two clocks
=0 three clocks
1-0 DRAM Leadoff Timing
82437VX Read Leadoff Write Leadoff RAS# Precharge
00 11 7 3
01 10 6 3
10 11 7 4
11 10 6 4
82437FX/MX Read Lead Write Leadoff RAS# Precharge
00 8 6 3
01 7 5 3
10 8 6 4
11 7 5 4
82437VX Read Leadoff Write Leadoff RAS# Precharge
00 7 6 3
01 6 5 3
10 7 6 4
11 6 5 4
SeeAlso: #0892,#0900,#0890,#0891
Bitfields for Intel 82434/82437/82439HX Programmable Attribute Map Register:
Bit(s) Description (Table 0902)
7 reserved
6 cache enable (region 1)
5 write enable (region 1)
4 read enable (region 1)
3 reserved
2 cache enable (region 0)
1 write enable (region 0)
0 read enable (region 0)
Notes: each programmable attribute map register controls two memory
regions at the top of the first megabyte of memory
for the Intel 82441FX, bits 6 and 2 are reserved, as cacheability is
set using the Pentium Pro's MTRR registers (see MSR 000000FEh)
Intel 82434/82437FX/82437MX/82437VX/82439HX/82441FX PAM
registers/regions:
PAM0 low: reserved [*]
PAM0 hi: segment F000-FFFF
PAM1 low: segment C000-C3FF
PAM1 hi: segment C400-C7FF
PAM2 low: segment C800-CBFF
PAM2 hi: segment CC00-CFFF
PAM3 low: segment D000-D3FF
PAM3 hi: segment D400-D7FF
PAM4 low: segment D800-DBFF
PAM4 hi: segment DC00-DFFF
PAM5 low: segment E000-E3FF
PAM5 hi: segment E400-E7FF
PAM6 low: segment E800-EBFF
PAM6 hi: segment EC00-EFFF
[*] on the 82434 (and possibly other Intel chipsets), the low nybble of
PAM0 controls segment 8000-9FFF
SeeAlso: #0851,#0892,#0888,#0927,#0890,#0891
Bitfields for Intel 82437VX DRAM Row Type register:
Bit(s) Description (Table 0903)
7,3 row 3 type
6,2 row 2 type
5,1 row 1 type
4,0 row 0 type
00 SPM DRAM
01 EDO DRAM
10 SDRAM
11 reserved
SeeAlso: #0892,#0902
Bitfields for Intel 82437FX/82437MX DRAM Row Type register:
Bit(s) Description (Table 0904)
7-4 reserved
3-0 DRAM Row N is EDO instead of page-mode DRAM
SeeAlso: #0890,#0891
Bitfields for Intel 82437VX PCI TRDY timer:
Bit(s) Description (Table 0905)
7-3 reserved
2-0 TRDY timeout value
000 2 PCICLKs
001 4 PCICLKs
010 6 PCICLKs
011 8 PCICLKs
1xx reserved
SeeAlso: #0892,#0906
Bitfields for Intel 82437/82439HX System Management RAM control register:
Bit(s) Description (Table 0906)
7 reserved
6 SMM Space Open
=1 make SMM DRAM visible even when not in SMM if bit 4 =0
5 SMM Space Closed
=1 no data references permitted to SMM DRAM even in SMM
4 SMM Space Locked
=1 force bits 4 and 6 to become read-only; and clear bit 6
3 SMRAM Enable
=1 128K DRAM are accessible for use at A000 while in SMM
2-0 SMM Space Base Segment
010 segment A000-BFFF
100 segment C000-CFFF (82437MX only)
other reserved
Note: bits 5 and 6 must never both be set at the same time
SeeAlso: #0892,#0888,#0907,#0890,#0891
Bitfields for Intel 82437VX Shared Memory Buffer control register:
Bit(s) Description (Table 0907)
7-2 reserved
1 enable shared memory buffer
0 redirect shared memory buffer access
=0 treat SMB area as a hole in system DRAM
SeeAlso: #0892,#0906,#0908
Bitfields for Intel 82437VX Graphics Controller Latency Timer:
Bit(s) Description (Table 0908)
7-6 reserved
5-3 GC latency for PCI reads (in 4 HCLK multiples) (default=100)
2-0 GC latency for CPU and PCI writes (in 4 HCLK multiples) (default=011)
SeeAlso: #0892,#0907
Bitfields for Intel 82439HX Error Command register:
Bit(s) Description (Table 0909)
7 SERR# duration
=0 one PCI clock
=1 until error flags are cleared
6-3 reserved
2 force bad parity on multiple-bit uncorrectable error
1 assert SERR# on multiple-bit uncorrectable error
0 assert SERR# on single-bit correctable error
SeeAlso: #0888,#0910
Bitfields for Intel 82439HX Error Status register:
Bit(s) Description (Table 0910)
7-5 DRAM row associated with multi-bit error
4 multi-bit uncorrectable error occurred (write 1 bit to clear)
3-1 DRAM row associated with single-bit correctable error
0 single-bit correctable error occurred (write 1 bit to clear)
SeeAlso: #0888,#0909
Format of PCI Configuration for Intel 82371FB/82371SB Function 0 (ISA Bridge):
Offset Size Description (Table 0911)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 122Eh/7000h)
(revision ID 00h = 82371SB step A-1)
(revision ID 01h = 82371SB step B-0)
40h 12 BYTEs reserved
4Ch BYTE ISA I/O Controller Recovery Timer (see #0883)
4Dh BYTE reserved
4Eh BYTE X-Bus Chip Select Enable (see #0885)
4Fh BYTE (82371SB) X-Bus Chip Select Enable High
bit 0: I/O APIC enabled
4Fh BYTE (82371FB) reserved
50h 16 BYTEs reserved
60h 4 BYTEs PCI IRQ Route Control (see #0872)
64h 5 BYTEs reserved
69h BYTE top of memory (see #0914)
6Ah WORD miscellaneous status (see #0915)
6Ch 4 BYTEs reserved
70h BYTE motherboard IRQ Route Control 0 (see #0916)
71h BYTE (82371FB) motherboard IRQ Route Control 1 (see #0916)
72h 4 BYTEs reserved
76h 2 BYTEs motherboard DMA control (see #0917)
78h WORD programmable chip select control (see #0918)
7Ah 6 BYTEs reserved
80h BYTE (82371SB) APIC Base Address Relocation (see #0874)
81h BYTE reserved
82h BYTE (82371SB) Deterministic Latency Control (see #0919)
83h 29 BYTEs reserved
A0h BYTE SMI Control (see #0920)
A1h BYTE reserved
A2h WORD SMI Enable (see #0876)
A4h DWORD System Event Enable (SEE) (see #0877)
A8h BYTE Fast-Off Timer (in minutes, PCICLKs, or milliseconds)
value is count less one; timer must be stopped before
changing its value
A9h BYTE reserved
AAh WORD SMI Request (see #0878)
ACh BYTE Clock Scale STPCLK# Low Timer
STPCLK# stays low for 1+1056*(value+1) PCICLKs
ADh BYTE reserved
AEh BYTE Clock Scale STPCLK# High Timer
STPCLK# stays high for 1+1056*(value+1) PCICLKs
AFh 81 BYTEs reserved
SeeAlso: #0912,#0913,#0860,#0879,#0892,#0888
Format of PCI Configuration for Intel 82371FB/82371SB Function 1 (IDE):
Offset Size Description (Table 0912)
00h 64 BYTEs header (see #0798)
(vender ID 8086h, device ID 1230h/7010h)
20h DWORD Bus Master Interface Base Address
(see PORT xxxxh"Intel 82371SB")
40h WORD IDE timing modes, primary channel (see #0921)
42h WORD IDE timing modes, secondary channel (see #0921)
44h BYTE (82371SB) slave IDE timing register (see #0922)
45h 187 BYTEs reserved
SeeAlso: #0911,#0913,PORT xxxxh"Intel 82371SB"
Format of PCI Configuration data for Intel 82371SB Function 2 (USB):
Offset Size Description (Table 0913)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 7020h)
20h DWORD I/O space base address
(see PORT xxxxh"Intel 82371SB")
40h 32 BYTEs reserved
60h BYTE Serial Bus Specification release number
00h pre-release 1.0
10h Release 1.0
61h 9 BYTEs reserved
6Ah WORD miscellaneous status (see #0923)
6Ch 84 BYTEs reserved
C0h WORD legacy support (see #0924)
C2h 62 BYTEs reserved
SeeAlso: #0911,#0912,PORT xxxxh"Intel 82371SB"
Bitfields for Intel 82371FB/82371SB top of memory register:
Bit(s) Description (Table 0914)
7-4 top of ISA memory (in megabytes, less 1; i.e. 0001 = 2M)
3 ISA/DMA lower BIOS forwarding enable
2 (82371SB) enable A000/B000 segment forwarding to PCI bus
1 enable forwarding ISA/DMA 512K-640K region to PCI bus
0 reserved
SeeAlso: #0911,#0915
Bitfields for Intel 82371FB/82371SB miscellaneous status register:
Bit(s) Description (Table 0915)
15 (82371SB) enable SERR# on delayed transaction
write 1 to clear this bit
14-8 reserved
7 (82371SB) NB Retry Enable
6 (82371SB) EXTSMI# Mode Enable
allow special SERR# protocol between PCI bridge and 82371
5 reserved
4 (82371SB) enable USB
disable USB's master enable and I/O decode enable prior to
clearing this bit!
3 reserved
2 (82371FB) PCI Header Type Bit enable
=1 report multifunction device in PCI configuration header
1 (82371FB) internal ISA DMA/external DMA Mode status (read-only)
=0 normal DMA operation
0 (82371FB) ISA Clock Divisor status (read-only)
(82371SB) ISA Clock Divisor (read-write)
=1 SYSCLK clock divisor is 3
=0 SYSCLK clock divisor is 4
SeeAlso: #0911,#0914
Bitfields for Intel 82371FB/82371SB motherboard IRQ Route Control:
Bit(s) Description (Table 0916)
7 disable IRQ routing
6 enable MIRQx/IRQx sharing
5 (82371SB) enable IRQ0 output
4 reserved (0)
3-0 ISA IRQ number to which to route the PCI IRQ
Note: IRQs 0-2, 8, and 13 are reserved
SeeAlso: #0911,#0914,#0917
Bitfields for Intel 82371FB/82371SB motherboard DMA control:
Bit(s) Description (Table 0917)
7 type F and DMA buffer enable
6-4 reserved
3 (82371FB) disable motherboadr DMA channel
2-0 DMA channel number
(82371FB) Type F and Motherboard DMA
(82371SB) Type F DMA
SeeAlso: #0911,#0916
Bitfields for Intel 82371FB/83271SB programmable chip select control register:
Bit(s) Description (Table 0918)
15-2 I/O address which will assert PCS# signal
1-0 PCS address mask
00 four bytes
01 eight contiguous bytes
10 disabled
11 sixteen contiguous bytes
SeeAlso: #0911,#0917,#0919
Bitfields for Intel 82371SB Deterministic Latency Control register:
Bit(s) Description (Table 0919)
7-4 reserved
3 enable SERR# on delayed transaction timeout
2 enable USB passive release
1 enable passive release
0 enable delayed transactions
SeeAlso: #0911,#0918
Bitfields for Intel 82371FB/82371SB SMI Control Register:
Bit(s) Description (Table 0920)
7-5 reserved
4-3 Fast-Off Timer freeze/granularity selection
00 one minute granularity (assuming 33 MHz PCICLK)
01 disabled (frozen)
10 one PCICLK
11 one millisecond
2 STPCLK# scaling enable
=1 enable Clock Scale bytes in PCI configuration space
1 STPCLK# signal enable
=1 assert STPCLK# on read from PORT 00B2h
0 SMI# Gate
=1 enable SMI# on system management interrupt
Notes: bit 1 is cleared either with an explicit write of 0 here, or by any
write to PORT 00B2h
bit 0 does not affect the recording of SMI events, so a pending SMI
will cause an immediate SMI# when the bit is set
SeeAlso: #0911,#0875
Bitfields for Intel 82371FB/82371SB IDE timing modes:
Bit(s) Description (Table 0921)
15 IDE decode enable
14 (82371SB) slave IDE timing register enable (see #0922)
13-12 IORDY# sample point
00 five clocks after DIOx# assertion
01 four clocks
10 three clocks
11 two clocks
11-10 reserved
9-8 recovery time between IORDY# sample point and DIOx#
00 four clocks
01 three clocks
10 two clocks
11 one clock
7 DMA timing enable only, drive 1
6 prefetch and posting enable, drive 1
5 IORDY# sample point enable drive select 1
4 fast timing bank drive select 1
3 DMA timing enable only, drive 0
2 prefetch and posting enable, drive 0
1 IORDY# sample point enable drive select 0
0 fast timing bank drive select 0
SeeAlso: #0912
Bitfields for Intel 82371SB slave IDE timing register:
Bit(s) Description (Table 0922)
7-6 secondary drive 1 IORDY# sample point
00 five clocks after DIOx# assertion
01 four clocks
10 three clocks
11 two clocks
5-4 secondary drive 1 recovery time
00 four clocks
01 three clocks
10 two clocks
11 one clock
3-2 primary drive 1 IORDY# sample point
1-0 primary drive 1 recovery time
SeeAlso: #0921
Bitfields for Intel 82371SB miscellaneous status:
Bit(s) Description (Table 0923)
15-1 reserved
0 USB clock selection
=1 48 MHz
=0 24 MHz
SeeAlso: #0913,#0924
Bitfields for Intel 82371SB legacy support register:
Bit(s) Description (Table 0924)
15 A20GATE pass-through sequence ended
write 1 to clear this bit
14 reserved
13 USB PIRQ enabled
12 USR IRQ status (read-only)
11 trap caused by write to PORT 0064h
write 1 to clear this bit
10 trap caused by read from PORT 0064h
write 1 to clear this bit
9 trap caused by write to PORT 0060h
write 1 to clear this bit
8 trap caused by read from PORT 0060h
write 1 to clear this bit
7 enable SMI at end of A20GATE Pass-Through
6 A20GATE pass-through sequence in progress (read-only)
5 enable A20GATE pass-through sequence
(write PORT 64h,D1h; write 60h,xxh; read 64h; write 64h,FFh)
4 enable trap/SMI on USB IRQ
3 enable trap/SMI on PORT 0064h write
2 enable trap/SMI on PORT 0064h read
1 enable trap/SMI on PORT 0060h write
0 enable trap/SMI on PORT 0060h read
SeeAlso: #0913,#0923
Format of PCI Configuration Data for Intel 82557:
Offset Size Description (Table 0925)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 1229h) (see #0793)
10h DWORD base address of memory-mapped Control/Status Registers (4K)
(see #0926)
14h DWORD base address of I/O-mapped Control/Status Registers (32 ports)
18h DWORD base address of Flash memory (1M)
40h 192 BYTEs unused
SeeAlso: #0888
Format of Intel 82557 Control/Status Registers:
Offset Size Description (Table 0926)
00h WORD SCB status word
02h WORD SCB command word
04h DWORD SCB general pointer
08h DWORD PORT
0Ch WORD Flash control register
0Eh WORD EEPROM control register
10h DWORD MDI control register
14h DWORD Early RCV Interrupt Rx byte count (RXBC) register
Note: see 64434604.pdf for additional details
SeeAlso: #0926
Format of PCI Configuration Data for Intel 82441FX:
Offset Size Description (Table 0927)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 1237h) (see #0793)
40h 16 BYTEs reserved
50h WORD PMC Configuration (see #0928)
52h BYTE deturbo counter control
when deturbo mode is selected (see PORT 0CF9h), the chipset
places a hold on the memory bus for a fraction of the
time inversely proportional to the value in this register
(i.e. C0h = 1/4, 80h = 1/2, 40h = 3/4, 20h = 7/8, etc.)
53h BYTE DBX buffer control (see #0929)
54h BYTE auxiliary control (see #0930)
55h WORD DRAM Row Type (see #0931)
57h BYTE DRAM Control (see #0932)
58h BYTE DRAM Timing (see #0933)
59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #0902)
60h 8 BYTEs DRAM Row Buondary registers 0-7
each register N indicates cumulative amount of memory in rows
0-N (each 64 bits wide), in 8M units
68h BYTE Fixed DRAM Hole Control
69h 7 BYTEs reserved
70h BYTE Multi-Transaction Timer
number of PCLKs guaranteed to the current agent before the
82441 will grant the bus to another PCI agent on request
71h BYTE CPU Latency Timer (see #0934)
72h BYTE System Management RAM control (see #0906)
73h 29 BYTEs reserved
90h BYTE Error Command (see #0935)
91h BYTE Error Status (see #0936)
92h BYTE reserved
93h BYTE Turbo Reset Control (see #0937)
94h 108 BYTEs reserved
SeeAlso: #0888,#0892
Bitfields for Intel 82441FX PMC Configuration Register:
Bit(s) Description (Table 0928)
15 WSC Protocol Enable
14 Row Select/Extra Copy select (read-only)
=1 pins on PMC configured as two additional row selects (6/7)
=0 extra copy of two lowest memory address bits enabled
13-10 reserved
9-8 host frequence select
00 reserved
01 60 MHz
10 66 MHz
11 reserved
7 reserved
6 ECC/Parity TEST enable
5-4 DRAM Data Integrity Mode
00 no parity/ECC
01 parity generated and checked
10 ECC generated and checked, correction disabled
10 ECC generated and checked, correction enabled
3 reserved
2 In-Order Queue size (0=one, 1=four)
1-0 reserved
SeeAlso: #0927,#0929
Bitfields for Intel 82441FX DBX buffer control register:
Bit(s) Description (Table 0929)
7 enable delayed transactions
6 enable CPU-to-PCI IDE posting
5 enable USWC Write Post during I/O Bridge access
4 disable PCI Delayed Transaction timer
3 enable CPU-to-PCI Write Post
2 enable PCI-to-DRAM pipeline
1 enable PCI Burst Write Combining
0 enable Read-Around-Write
SeeAlso: #0927,#0928
Bitfields for Intel 82441FX auxiliary control register:
Bit(s) Description (Table 0930)
7 enable RAS precharge
6-2 reserved
1 Lower Memory Address Buffer Set A
=0 8mA
=1 12mA
0 reserved
SeeAlso: #0927
Bitfields for Intel 82441FX DRAM Row Type register:
Bit(s) Description (Table 0931)
15-14 row 7 DRAM type
13-12 row 6 DRAM type
11-10 row 5 DRAM type
9-8 row 4 DRAM type
7-6 row 3 DRAM type
5-4 row 2 DRAM type
3-2 row 1 DRAM type
1-0 row 0 DRAM type
00 fast page-mode DRAM
01 EDO DRAM
10 BEDO DRAM
11 empty row
SeeAlso: #0927,#0932
Bitfields for Intel 82441FX DRAM Control register:
Bit(s) Description (Table 0932)
7 reserved
6 enable DRAM Refresh Queue
5 enable DRAM EDO Auto-Detect Mode
4 DRAM Refresh Type
=0 CAS before RAS
=1 RAS only
3 reserved
2-0 DRAM refresh rate
000 disabled
001 normal (as set by PMCCFG register)
01x reserved
1xx reserved
111 fast refresh (every 32 host clocks)
SeeAlso: #0927,#0931,#0933
Bitfields for Intel 82441FX DRAM Timing register:
Bit(s) Description (Table 0933)
7 reserved
6 enable WCBR Mode
5-4 DRAM Read Burst Timing
BEDO EDO FPM
00 x333 x444 x444
01 x222 x333 x444
10 x222 x222 x333
11 res. res. res.
3-2 DRAM Write Burst Timing
(B)EDO FPM
00 x444 x444
01 x333 x444
10 x333 x333
11 x222 x333
1 RAS-to-CAS delay
=1 one clock
=0 zero clocks
0 insert one MA Wait State
SeeAlso: #0927,#0932
Bitfields for Intel 82441FX CPU Latency Timer register:
Bit(s) Description (Table 0934)
7-5 reserved
4-0 snoop stall count value
SeeAlso: #0927
Bitfields for Intel 82441FX Error Command register:
Bit(s) Description (Table 0935)
7-5 reserved
4 enable SERR# on receiving Target Abort
3 enable SERR# on PCI Parity Error (PERR#)
2 reserved
1 enable SERR# on receiving multiple-bit ECC/Parity error
0 enable SERR# on receiving single-bit ECC error
SeeAlso: #0927,#0936
Bitfields for Intel 82441FX Error Status register:
Bit(s) Description (Table 0936)
7-5 DRAM row causing first multi-bit error (read-only)
4 multiple-bit uncorrectable error detected
write 1 to this bit to clear it
3-1 DRAM row causing first single-bit error (read-only)
0 single-bit correctable ECC error detected
write 1 to this bit to clear it
SeeAlso: #0927,#0935
Bitfields for Intel 82441FX Turbo Reset Control register:
Bit(s) Description (Table 0937)
7-4 reserved
3 enable BIST on hard reset
2 reset CPU
1 reset mode
0 soft reset
1 hard reset
0 deturbo mode
SeeAlso: #0927,PORT 0CF9h
Format of PCI Configuration data for Intel 82454KX/GX:
Offset Size Description (Table 0938)
00h 64 BYTEs header (see #0798)
(vendor ID 8086h, device ID 84C4h)
!!!intel\29052301.pdf pg. 40
40h DWORD top of system memory
44h 4 BYTEs reserved
48h BYTE PCI decode mode
49h BYTE bridge device number
4Ah BYTE PCI bus number
4Bh BYTE PCI subordinate bus number
4Ch BYTE PB configuration
4Dh 4 BYTEs reserved
51h BYTE deturbo counter control
52h BYTE reserved
53h BYTE CPU read/write control
54h WORD PCI read/write control
56h BYTE reserved
57h BYTE SMM Enable
58h BYTE video buffer area enable
59h 7 BYTEs Programmable Attribute Map registers 0-6 (see #0902)
60h 16 BYTEs reserved
70h BYTE Error Command
71h BYTE Error Status
72h 6 BYTEs reserved
78h WORD memory gap range
7Ah WORD memory gap upper address
7Ch DWORD PCI frame buffer
80h 8 BYTEs reserved
88h DWORD high memory gap start address
8Ch DWORD high memory gap end address
90h 8 BYTEs reserved
98h DWORD (GX only) I/O Space Range #1
9Ch BYTE PCI reset
9Dh 3 BYTEs reserved
A0h DWORD (GX only) I/O Space Range #2
A4h DWORD I/O APIC range
A8h 8 BYTEs reserved
B0h WORD configuration values driven on reset
B2h 2 BYTEs reserved
B4h WORD captured system configuration values (read-only)
B6h 2 BYTEs reserved
B8h DWORD SMM range
BCh BYTE high BIOS register
BDh 3 BYTEs reserved
C0h DWORD PB Extended Error Reporting Command
C4h DWORD PB Extended Error Reporting Status
C8h DWORD PB Retry Timers
CCh 52 BYTEs reserved
SeeAlso: #0798
--------X-1AB10B-----------------------------
INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION BYTE
AX = B10Bh
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (0000h-00FFh)
CL = byte to write
Return: CF clear if successful
CF set on error
AH = status (00h,87h) (see #0653)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on entry were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B108h,AX=B10Ch,AX=B10Dh,AX=B18Bh,INT 2F/AX=1684h/BX=304Ch
--------X-1AB10C-----------------------------
INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION WORD
AX = B10Ch
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (multiple of 2 less than 0100h)
CX = word to write
Return: CF clear if successful
CF set on error
AH = status (00h,87h) (see #0653)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on entry were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B109h,AX=B10Bh,AX=B10Dh,AX=B18Ch,INT 2F/AX=1684h/BX=304Ch
--------X-1AB10D-----------------------------
INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION DWORD
AX = B10Dh
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (multiple of 4 less than 0100h)
ECX = dword to write
Return: CF clear if successful
CF set on error
AH = status (00h,87h) (see #0653)
EAX, EBX, ECX, and EDX may be modified
all other flags (except IF) may be modified
Notes: this function may require up to 1024 byte of stack; it will not enable
interrupts if they were disabled before making the call
the meanings of BL and BH on entry were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B10Ah,AX=B10Bh,AX=B10Ch,AX=B18Dh,INT 2F/AX=1684h/BX=304Ch
--------X-1AB10EBX0000-----------------------
INT 1A - PCI BIOS v2.1+ - GET IRQ ROUTING INFORMATION
AX = B10Eh
BX = 0000h
DS = segment/selector for PCI BIOS data
(real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
specified by BIOS32 services directory)
ES:(E)DI -> IRQ routing table header (see #0955 at AX=B406h)
Return: CF clear if successful
AH = 00h
BX = bit map of IRQ channels permanently dedicated to PCI
WORD ES:[DI] = size of returned data
CF set on error
AH = error code (59h) (see #0939)
WORD ES:[DI] = required size of buffer
SeeAlso: AX=B10Fh,AX=B406h,INT 2F/AX=1684h/BX=304Ch
--------X-1AB10F-----------------------------
INT 1A - PCI BIOS v2.1+ - SET PCI IRQ
AX = B10Fh
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
CH = number of IRQ to connect
CL = number of interrupt pin (0Ah=INTA# to 0Dh=INTD#) to reprogram
DS = segment/selector for PCI BIOS data
(real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
specified by BIOS32 services directory)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (59h) (see #0939)
Note: assumes that the calling application has determined the IRQ routing
topology (see AX=B10Eh), has ensured that the selected IRQ will not
cause a conflict, and will update the interrupt line configuration
register on all devices which currently use the IRQ line
SeeAlso: AX=B10Eh
--------X-1AB181-----------------------------
INT 1A - PCI BIOS v2.0c+ - INSTALLATION CHECK (32-bit)
AX = B181h
Return: as for AX=B101h
SeeAlso: AX=B101h
--------X-1AB182-----------------------------
INT 1A - PCI BIOS v2.0c+ - FIND PCI DEVICE (32-bit)
AX = B182h
CX = device ID (see #0659,#0665,#0666,#0793,#0795)
DX = vendor ID (see #0656 at AX=B102h)
SI = device index (0-n)
Return: as for AX=B102h
SeeAlso: AX=B102h
--------X-1AB183-----------------------------
INT 1A - PCI BIOS v2.0c+ - FIND PCI CLASS CODE (32-bit)
AX = B183h
ECX = class code (bits 23-0)
SI = device index (0-n)
Return: as for AX=B103h
SeeAlso: AX=B103h
--------X-1AB186-----------------------------
INT 1A - PCI BIOS v2.0c+ - PCI BUS-SPECIFIC OPERATIONS (32-bit)
AX = B186h
BH = bus number
EDX = Special Cycle data
Return: as for AX=B106h
Note: the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B106h
--------X-1AB188-----------------------------
INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION BYTE (32-bit)
AX = B188h
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (0000h-00FFh)
Return: as for AX=B108h
Note: the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B108h,AX=B189h,AX=B18Ah
--------X-1AB189-----------------------------
INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION WORD (32-bit)
AX = B189h
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (0000h-00FFh)
Return: as for AX=B109h
Note: the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B109h,AX=B188h,AX=B18Ah
--------X-1AB18A-----------------------------
INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION DWORD (32-bit)
AX = B18Ah
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (0000h-00FFh)
Return: as for AX=B10Ah
Note: the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B10Ah,AX=B188h,AX=B189h
--------X-1AB18B-----------------------------
INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION BYTE (32-bit)
AX = B18Bh
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (0000h-00FFh)
CL = byte to write
Return: as for AX=B10Bh
Note: the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B10Bh,AX=B18Ch,AX=B18Dh
--------X-1AB18C-----------------------------
INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION WORD (32-bit)
AX = B18Ch
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (multiple of 2 less than 0100h)
CX = word to write
Return: as for AX=B10Ch
Note: the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B10Ch,AX=B18Bh,AX=B18Dh
--------X-1AB18D-----------------------------
INT 1A - PCI BIOS v2.0c+ - WRITE CONFIGURATION DWORD (32-bit)
AX = B18Dh
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
DI = register number (multiple of 4 less than 0100h)
ECX = dword to write
Return: as for AX=B10Dh
Note: the meanings of BL and BH on return were exchanged between the initial
drafts of the specification and final implementation
SeeAlso: AX=B10Dh,AX=B18Bh,AX=B18Ch
--------X-1AB18EBX0000-----------------------
INT 1A - PCI BIOS v2.1+ - GET IRQ ROUTING INFORMATION (32-bit)
AX = B18Eh
BX = 0000h
DS = segment/selector for PCI BIOS data
(real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
specified by BIOS32 services directory)
ES:(E)DI -> IRQ routing table header (see #0955 at AX=B406h)
Return: CF clear if successful
AH = 00h
BX = bit map of IRQ channels permanently dedicated to PCI
WORD ES:[DI] = size of returned data
CF set on error
AH = error code (59h) (see #0939)
WORD ES:[DI] = required size of buffer
SeeAlso: AX=B10Fh,AX=B406h,INT 2F/AX=1684h/BX=304Ch
--------X-1AB18F-----------------------------
INT 1A - PCI BIOS v2.1+ - SET PCI IRQ (32-bit)
AX = B18Fh
BH = bus number
BL = device/function number (bits 7-3 device, bits 2-0 function)
CH = number of IRQ to connect
CL = number of interrupt pin (0Ah=INTA# to 0Dh=INTD#) to reprogram
DS = segment/selector for PCI BIOS data
(real mode: F000h; 16-bit PM: physical 000F0000h; 32-bit PM: as
specified by BIOS32 services directory)
Return: CF clear if successful
AH = 00h
CF set on error
AH = error code (59h) (see #0939)
Note: assumes that the calling application has determined the IRQ routing
topology (see AX=B10Eh), has ensured that the selected IRQ will not
cause a conflict, and will update the interrupt line configuration
register on all devices which currently use the IRQ line
SeeAlso: AX=B10Eh
--------X-1AB2-------------------------------
INT 1A - Reserved For PCI
AH = B2h
--------X-1AB3-------------------------------
INT 1A - Reserved For PCI
AH = B3h
--------X-1AB400-----------------------------
INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - INSTALLATION CHECK
AX = B400h
Return: CF clear if installed
AX = 0000h if installed
BH = ACFG major version (02h)
BL = ACFG minor version (08h)
CX = ??? (0002h)
EDX = 47464341h ('GFCA', which is byte-swapped 'ACFG')
SI = ??? (001Fh)
SeeAlso: AX=B401h,AX=B402h,AX=B403h,AX=B404h,AX=B405h,AX=B406h,AX=B407h
SeeAlso: @xxxxh:xxxxh"Plug-and-Play"
(Table 0939)
Values for Intel Plug-and-Play AUTO-CONFIGURATION error codes:
0000h successful
0001h specified action could not be completed
0051h ???
0055h unable to read/write configuration table from/to nonvolatile storage
0056h not a valid configuration table or wrong table version
0059h buffer too small
0081h unsupported function
FFFFh ???
SeeAlso: #F055
--------X-1AB401-----------------------------
INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET DEFAULT CONFIG TABLE
AX = B401h
Return: CF clear if successful
AX = 0000h
BX = maximum size of configuration table in bytes
CX = required configuration buffer size
(includes scratch space used by ACFG code)
EDI = linear/physical address of ESCD table (see #0940)
CF set on error
AX = error code (see #0939)
SeeAlso: AX=B400h,AX=B402h,@xxxxh:xxxxh"Plug-and-Play"
Format of Intel Plug-and-Play Extended System Configuration Data table:
Offset Size Description (Table 0940)
00h WORD total length of this table
02h 4 BYTEs signature "ACFG"
06h BYTE minor version number
07h BYTE major version number (currently 02h)
08h BYTE number of boards listed in the configuration data
09h 3 BYTEs reserved (00h)
0Ch var board data
WORD checksum
Notes: this table contains information about the standard devices in the
system, such as serial ports, parallel ports, etc. For each device,
it includes at least the I/O port address (03F8h,02F8h,0378h,etc).
the sum of all words in the table, including the checksum field (with
implied zero padding if the length is odd), must equal 0000h
SeeAlso: #0941
Format of Extended System Configuration Data Board Header:
Offset Size Description (Table 0941)
00h WORD length of this header in bytes
02h BYTE slot number
00h motherboard
01h-0Fh ISA/EISA
10h-40h PCI
03h BYTE reserved (00h)
SeeAlso: #0940,#0942
Format of Extended System Configuration Data Freeform Board Header:
Offset Size Description (Table 0942)
00h 4 BYTEs signature "ACFG"
04h BYTE minor version number
05h BYTE major version number (currently 02h)
06h BYTE board type
01h ISA
02h EISA
04h PCI
08h PCMCIA
10h PnPISA
20h MCA
07h BYTE reserved (00h)
08h WORD disabled functions (bit N set = function N disabled)
0Ah WORD configuration error functions
0Ch WORD reconfigurable functions (bit N set = function N reconfig'able)
0Eh 2 BYTEs reserved (00h)
SeeAlso: #0945,#0946
Format of Extended System Configuration Data Freeform PCI Device Data:
Offset Size Description (Table 0943)
00h BYTE PCI bus number
01h BYTE PCI device and function number
02h WORD PCI device identifier
04h WORD PCI vendor ID (see #0656 at INT 1A/AX=B102h)
06h 2 BYTEs reserved (00h)
SeeAlso: #0943,#0946
Format of Extended System Configuration Data Freeform PnP ISA Board ID:
Offset Size Description (Table 0944)
00h DWORD vendor ID (EISA device identifier)
04h DWORD serial number
SeeAlso: #0944,#0945
Format of Extended System Configuration Data PnP ISA ECD Extension Function:
Offset Size Description (Table 0945)
00h WORD 001Eh (length of this structure)
02h BYTE 01h (selection size)
03h BYTE 00h (selection data)
04h BYTE C0h (function information byte) (see #0948)
05h BYTE 18h (size of following free-format data)
06h 16 BYTEs freeform board header (see #0942)
16h 8 BYTEs Plug-and-Play board ID (see #0944)
Note: ECD = Extended Configuration Data; this structure must be the last
"function" for a particular ISA Plug-and-Play board
SeeAlso: #0946
Format of Extended System Configuration Data PCI ECD Extension Function:
Offset Size Description (Table 0946)
00h WORD length of this structure (at least 001Eh, up to 0056h)
02h BYTE 01h (selection size)
03h BYTE 00h (selection data)
04h BYTE C0h (function information byte) (see #0948)
05h BYTE size of following free-format data (at least 18h, max 50h)
06h 16 BYTEs freeform board header (see #0942)
16h 8N BYTEs PCI board ID (see #0943) for one to eight boards
Notes: ECD = Extended Configuration Data; this structure must be the last
"function" for a particular PCI board
AMI BIOS v1.00.05.AX1 sets the length field to 001Ch for entries with
a single board ID, apparently treating the field as the length of
the remainder of the structure instead of the full structure's length
SeeAlso: #0945
Bitfields for EISA ID and Slot Information:
Bit(s) Description (Table 0947)
3-0 selector among duplicate configuration file names (0000 if no dups)
5-4 slot type
00 expansion slot
01 embedded
10 virtual slot
11 reserved
6 ID is readable
7 duplicate IDs present
8 board can be disabled
9 IOCHKERR supported
10 board or entries locked
13-11 reserved
14 board does not have or need configuration file
15 configuration not complete
SeeAlso: #0948
Bitfields for EISA Function Information:
Bit(s) Description (Table 0948)
0 subtype data
1 memory information (see #0949)
2 IRQ information (see #0951)
3 DMA information (see #0952)
4 port range information (see #0953)
5 port initialization data (see #0954)
6 free form data
7 function disabled
SeeAlso: #0945,#0946,#0947
Format of EISA Memory Information:
Offset Size Description (Table 0949)
00h WORD memory information flags (see #0950)
02h 3 BYTEs high 24 bits of memory start address (LSB first)
05h WORD memory size in K (0000h = 65536K)
SeeAlso: #0948
Bitfields for EISA Memory Information Flags:
Bit(s) Description (Table 0950)
0 writable (RAM rather than ROM)
1 cached
2 write-back cache rather than write-through
4-3 memory type
00 system
01 expantion
10 virtual
11 other
5 shared
6 reserved (0)
7 more entries follow
9-8 memory width
00 byte
01 word
10 dword
11 reserved
11-10 decoded address lines
00 = 20
01 = 24
10 = 32
11 reserved
15-12 reserved (0)
SeeAlso: #0949
Bitfields for EISA IRQ Information:
Bit(s) Description (Table 0951)
3-0 IRQ number
4 reserved (0)
5 IRQ triggering (0 = edge, 1 = level)
6 IRQ is shareable
7 more entries follow
15-8 reserved (0)
SeeAlso: #0948
Bitfields for EISA DMA Information:
Bit(s) Description (Table 0952)
2-0 DMA channel number
5-3 reserved (0)
6 shareable
7 more entries follow
9-8 reserved
11-10 DMA transfer size
00 byte
01 word
10 dword
11 word, but count in bytes
13-12 DMA timing
00 ISA-compatible
01 EISA type "A"
10 EISA type "B"
11 EISA type "C"/"F" (burst)
15-14 reserved (0)
SeeAlso: #0948
Format of EISA Port Range Information:
Offset Size Description (Table 0953)
00h BYTE port description
bits 4-0: number of sequential ports
bit 5 reserved (0)
bit 6: shareable
bit 7: more entries follow
01h WORD I/O port address
SeeAlso: #0948,#0954
Format of EISA Port Initialization Data:
Offset Size Description (Table 0954)
00h BYTE flags
bits 1-0: port size
00 byte
01 word
10 dword
11 reserved
bit 2: masked write
bits 6-3 reserved (0)
bit 7: more entries follow
01h ???
SeeAlso: #0948,#0953
--------X-1AB402-----------------------------
INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - COPY AND VERIFY CONFIG TABLE
AX = B402h
DS:SI -> configuration table (see #0940)
ES:DI -> buffer for copy of configuration table
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code (0055h,0056h) (see #0939)
Note: the buffer pointed at by ES:DI must be at least as large as the
maximum configuration table size reported by AX=B401h
SeeAlso: AX=B400h,AX=B401h,AX=B403h
--------X-1AB403-----------------------------
INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - STORE ESCD TABLE IN NVRAM
AX = B403h
DS:SI -> configuration table (see #0940)
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code (0055h) (see #0939)
Note: sets the configuration table's checksum field, then copies the table
into nonvolatile storage (i.e. FlashROM)
SeeAlso: AX=B400h,AX=B402h
--------X-1AB404-----------------------------
INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET AVAILABLE IRQs???
AX = B404h
BX = bitmap of IRQs being used???
Return: CF clear if successful
AX = 0000h
BX = available for ISA??? (not(BXin) & A127h)
CX = available for on-board I/O??? (not(BXin) & 40D8h)
DX = available for PCI??? (either not(BXin) & 0E00h or 0000h)
CF set on error
AX = error code (0051h) (see #0939)
Note: the various vector types have also been called "shareable",
"unshareable", and "avoidable"
SeeAlso: AX=B400h,INT 2F/AX=1684h/BX=304Ch
--------X-1AB405-----------------------------
INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET ???
AX = B405h
Return: AX = ??? (0008h)
SeeAlso: AX=B400h
--------X-1AB406-----------------------------
INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - GET PCI IRQ ROUTING TABLE
AX = B406h
ES:DI -> IRQ routing table header (see #0955)
Return: CF clear if successful
AX = 0000h
WORD ES:[DI] = size of returned data
CF set on error
AX = error code (0059h) (see #0939)
WORD ES:[DI] = required size of buffer
SeeAlso: AX=B400h,AX=B404h,AX=B10Eh,INT 2F/AX=1684h/BX=304Ch
Format of Intel Plug-and-Play AUTO-CONFIGURATION PCI IRQ routing header:
Offset Size Description (Table 0955)
00h WORD length of IRQ routing table buffer
02h DWORD -> IRQ routing table array buffer (see #0956)
Format of Intel Plug-and-Play ACFG PCI IRQ routing table entry [array]:
Offset Size Description (Table 0956)
00h BYTE PCI bus number
01h BYTE PCI device number (bits 7-3)
02h BYTE link value for INTA#
(if non-zero, wire-ORed together with any other PCI interrupts
with same link value)
03h WORD IRQ connectivity bit map for INTA#
(standard AT IRQs to which PCI interrupt can be routed)
05h BYTE link value for INTB#
06h WORD IRQ connectivity bit map for INTB#
08h BYTE link value for INTC#
09h WORD IRQ connectivity bit map for INTC#
0Bh BYTE link value for INTD#
0Ch WORD IRQ connectivity bit map for INTD#
0Eh BYTE (PCI BIOS v2.1+) device slot number (00h = motherboard)
0Fh BYTE reserved
Note: each item in the routing table corresponds to a motherboard PCI
device or PCI slot
SeeAlso: #0955,#M086
--------X-1AB407-----------------------------
INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - ???
AX = B407h
EDX = length of ???
EDI = physical address of ???
Return: CF clear if successful
AX = 0000h
EDX = ???
EDI = ???
CF set on error
AX = error code (FFFFh) (see #0939)
Notes: returns error if EDI < 000C0000h or EDI+EDX > 00100000h
seems to force EDI and EDX to align to 16K boundaries
SeeAlso: AX=B400h
--------X-1AB4-------------------------------
INT 1A - Intel Plug-and-Play AUTO-CONFIGURATION - 32-BIT API
AH = B4h
AL = function (80h-87h)
further details not yet available
Note: these functions are 32-bit versions of functions 00h-07h
--------c-1AC0-------------------------------
INT 1A U - Disk Spool II v2.07+ - ALTERNATE INSTALLATION CHECK
AH = C0h
Return: (see AH=A0h)
Notes: this call is identical to AH=A0h
this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=A0h,AH=ABh,AH=D0h
--------U-1ACCCCBXCCCC-----------------------
INT 1A U - DATEFIX - INSTALLATION CHECK
AX = CCCCh
BX = CCCCh
CX = 0000h
Return: CX = CCCCh if installed
ES:BX -> original interrupt handler
Program: DATEFIX is a public-domain TSR to correct the date on AT&T 6300
machines, where the realtime clock's calendar wraps after 1991
SeeAlso: AH=FEh,AH=FFh"AT&T"
--------c-1AD0-------------------------------
INT 1A U - Disk Spool II v2.07+ - FUNCTION CALLS
AH = D0h
AL = function code
01h enable spooler and despooler
02h enable spooler only
03h enable despooler at beginning of file
04h disable the despooler
05h disable the despooler and spooler
06h clear the spool file
08h inhibit the popup menu
09h enable the popup menu
0Ah ??? (called by Disk Spool's INT 21 handler)
0Bh disable the spooler
0Ch start despooler after last successfully printed document
0Dh start despooler at the exact point where it last left off
0Eh pop up the menu
0Fh ???
11h start new spool file??? (called by Disk Spool's INT 21 handler
when a program terminates)
14h ???
15h delete despool file and reset ???
16h ??? (writes something to unknown file)
17h ??? (writes something to despool file, then reads something
else and ???)
18h ??? (reads something from despool file, and then ???)
19h ??? (creates/truncates spool file)
20h clear file pointed to by the despooler
21h ??? (writes something to unknown file)
22h ??? (writes something to spool file if spooler/despooler using
same file)
23h ??? (opens/creates unknown file, then ???)
30h ???
31h ???
32h beep
33h append CRLF to spool file???
34h ???
35h ???
36h ???
37h append CRLF to spool file and start a new spool file???
38h ???
40h ??? (v4.05)
41h ??? (v4.05)
51h ??? (called by Disk Spool's INT 21 handler)
52h ??? (called by Disk Spool's INT 21 handler)
57h ???
5Ah ??? (v4.05)
5Bh ??? (v4.05)
5Ch ??? (v4.05)
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=A0h,AH=ADh
--------c-1AE0-------------------------------
INT 1A - Disk Spool II v4.0x - ENABLE/DISABLE
AH = E0h
AL = subfunction
01h enable spooler
02h disable spooler
03h enable despooler
04h disable despooler
CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
Return: AH = status
00h successful
F0h printer port not managed by Disk Spool II
FFH failed
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=A0h,AH=E1h,AX=E301h,AX=E401h
--------c-1AE1-------------------------------
INT 1A - Disk Spool II v4.0x - GET STATUS
AH = E1h
CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
Return: AH = status
00h successful
CL = despooler state (00h disabled, 41h enabled)
CH = spooler state (00h disabled, 41h enabled)
DL = despooler activity (00h standing by, 41h printing)
ES:BX -> ASCIZ name of current spool file (or next if AutoSpool
or AutoDespool enabled)
ES:SI -> ASCIZ name of current despool file
ES:DI -> 3-byte file extension used by Disk Spool II
F0h printer port not managed by Disk Spool II
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=A0h,AH=E0h,AH=E2h
--------U-1AE11B-----------------------------
INT 1A - TheGrab v4.60 - ???
AX = E11Bh
???
Return: ??? (may destroy all registers)
SeeAlso: AX=E11Dh
--------U-1AE11D-----------------------------
INT 1A - TheGrab v4.60 - INSTALLATION CHECK
AX = E11Dh
Return: ES:DI -> signature block (see #0957) if installed
CX = length of signature block (000Fh)
Program: TheGrab is a resident ANSI screen grabber bundled with TheDraw
SeeAlso: AX=E11Bh
Format of TheGrab signature block:
Offset Size Description (Table 0957)
00h BYTE 08h
01h 8 BYTEs ASCIZ "THEGRAB"
09h 6 BYTEs ??? (zeros)
--------c-1AE2-------------------------------
INT 1A - Disk Spool II v4.0x - GET SPOOL FILES
AH = E2h
AL = which
01h first
02h next (can only call after "first")
CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
Return: AH = status
00h successful
ES:BX -> ASCIZ filename
F0h no (more) spool files
FFh failed
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=E0h,AH=E1h
--------c-1AE301-----------------------------
INT 1A - Disk Spool II v4.0x - GET SPOOL FILE STATUS
AX = E301h
ES:BX -> ASCIZ filename (max 32 chars)
Return: AH = status
00h successful
ES:SI -> spool file status record (see #0958)
F0h not a spool file
FFh failed
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=E0h,AX=E302h,AX=E401h
Format of Disk Spool II spool file status record:
Offset Size Description (Table 0958)
00h BYTE hour of creation or last update
01h BYTE minute of creation or last update
02h BYTE year-1980 of creation or last update
03h BYTE month of creation or last update
04h BYTE day of creation or last update
05h BYTE total number of copies to print
06h BYTE number of copies already printed
07h BYTE printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
08h BYTE save status (00h delete after printing, 01h save)
09h BYTE file status
01h done printing, but being saved
02h on hold
03h queued for printing
04h being spooled
05h being despooled (i.e. printed)
0Ah 16 BYTEs ASCIZ description
1Ah 2 WORDs file size in bytes (high,low)
1Eh 2 WORDs bytes left to print (high,low)
--------c-1AE302-----------------------------
INT 1A - Disk Spool II v4.0x - UPDATE SPOOL FILE
AX = E302h
ES:BX -> ASCIZ filename (max 32 chars)
ES:SI -> spool file status record (see #0958)
Return: AH = status
00h successful
F0h not a spool file
FFh failed
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=E0h,AX=E301h,AX=E401h
--------c-1AE401-----------------------------
INT 1A - Disk Spool II v4.0x - SPOOL EXISTING FILE
AX = E401h
ES:BX -> ASCIZ filename (max 32 chars)
CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
Return: AH = status
00h successful
FFh failed
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=E1h,AX=E302h,AX=E402h
--------c-1AE402-----------------------------
INT 1A U - Disk Spool II v4.0x - SPOOL EXISTING FILE???
AX = E402h
ES:BX -> ASCIZ filename (max 32 chars)
CL = printer port (01h COM1, 02h COM2, 05h LPT1, 06h LPT2)
Return: AH = status
00h successful
FFh failed
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=E1h,AX=E302h,AX=E401h
--------c-1AE5-------------------------------
INT 1A U - Emulaser ELSPL.COM - ???
AH = E5h
???
Return: ???
Program: ELSPL.COM is a licensed version of Disk Spool II which is distributed
as part of Vertisoft's Emulaser PostScript emulator
SeeAlso: AH=A0h,INT 17/AH=03h
--------c-1AEE-------------------------------
INT 1A U - Disk Spool II v4.05 - ???
AH = EEh
AL = printer port???
???
Return: ???
Note: this function is also supported by Vertisoft's Emulaser utility ELSPL,
as that is a licensed version of Disk Spool II
SeeAlso: AH=E1h
--------U-1AF7-------------------------------
INT 1A - RighTime v1.1 - TEMPORARILY DISABLE
AH = F7h
Program: RighTime is a TSR by G.T. Becker which continuously adjusts the
system time to correct for clock drift
Note: any AH value from F0h-F7h or F9h-FEh will perform this function in
version 1.1, but F7h is the function called by transient portion
SeeAlso: AH=F8h,AH=FFh"RighTime"
--------U-1AF8-------------------------------
INT 1A - RighTime v1.1 - ENABLE
AH = F8h
Program: RighTime is a TSR by G.T. Becker which continuously adjusts the
system time to correct for clock drift
Note: RighTime is TeSseRact-compatible (see INT 2F/AX=5453h) and modifies its
TeSseRact program identifier based on its current state: "RighTime"
when enabled, "RighTim"F7h when disabled.
SeeAlso: AH=F7h,AH=FFh"RighTime"
--------b-1AFE-------------------------------
INT 1A - AT&T 6300 - READ TIME AND DATE
AH = FEh
Return: BX = day count (0 = Jan 1, 1984)
CH = hour
CL = minute
DH = second
DL = hundredths
SeeAlso: AX=CCCCh/BX=CCCCh,AH=FFh"AT&T",INT 21/AH=2Ah,INT 21/AH=2Ch
--------b-1AFF-------------------------------
INT 1A - AT&T 6300 - SET TIME AND DATE
AH = FFh
BX = day count (0 = Jan 1, 1984)
CH = hour
CL = minute
DH = second
DL = hundredths
Return: ???
SeeAlso: AX=CCCCh/BX=CCCCh,AH=FEh,INT 21/AH=2Bh"DATE",INT 21/AH=2Dh
--------U-1AFF-------------------------------
INT 1A - RighTime v1.1 - PERMANENTLY DISABLE
AH = FFh
Program: RighTime is a TSR by G.T. Becker which continuously adjusts the
system time to correct for clock drift
Note: upon being permanently disabled, RighTime closes the file handle
referencing its executable (which is updated with time correction
information every two minutes while RighTime is enabled).
--------s-1AFF00-----------------------------
INT 1A - SND - INSTALLATION CHECK???
AX = FF00h
Return: AL = version??? (02h)
AH = busy flag (00h if not in a SND call, 01h if SND currently active)
Note: the SND API is also supported by IC (Internal Commands) v2.0, a
shareware TSR by Geoff Friesen which extends COMMAND.COM's internal
command set
SeeAlso: AX=FF01h,AX=FF02h,AX=FF04h,AX=FF05h
--------s-1AFF01-----------------------------
INT 1A - SND - PAUSE
AX = FF01h
DX = number of clock ticks to delay
Return: AH = status
00h successful
01h SND busy
Notes: if successful, execution returns to the caller after the delay expires;
if SND is busy, execution returns immediately
the IC v2.0 implementation of this API makes no special allowance for
time rollover at midnight, which can cause the delay to be over one
hour if this function is called just before the BIOS time count
rolls over and the delay extends into the next day
SeeAlso: AX=FF00h,INT 15/AH=86h,INT 62/AX=0096h,INT 7F/AH=E8h,INT 80/BX=0009h
SeeAlso: INT E0/CL=BDh
--------s-1AFF02-----------------------------
INT 1A - SND - START SOUND
AX = FF02h
DX = frequency in Hertz (14h-FFFFh)
Return: AH = status
00h successful
01h SND busy
SeeAlso: AX=FF00h,AX=FF01h,AX=FF03h
--------s-1AFF03-----------------------------
INT 1A - SND - STOP SOUND
AX = FF03h
Return: AH = status
00h successful
01h busy
Note: turns off any sound currently being emitted by the PC's speaker unless
SND is currently busy processing an API call (this includes
background music). Use AX=FF05h to stop the sound even if an API
call is in progress.
SeeAlso: AX=FF00h,AX=FF02h,AX=FF05h
--------s-1AFF04-----------------------------
INT 1A - SND - PLAY MUSIC STRING IN BACKGROUND
AX = FF04h
DS:DX -> ASCIZ music string
Return: AH = status
00h successful (music begins playing in background)
01h busy
Note: the music string accepted by SND is not the same as that accepted by
BASIC and other programs which process music strings
SeeAlso: AX=FF00h,AX=FF05h,INT 80/BX=0006h
--------s-1AFF05-----------------------------
INT 1A - SND - UNCONDITIONALLY STOP SOUND
AX = FF05h
Return: AH = 00h (successful)
Note: this function is the same as AX=FF03h, but will stop the sound even if
SND is currently busy, such as playing background music
SeeAlso: AX=FF00h,AX=FF03h,INT 80/BX=0007h
--------B-1B---------------------------------
INT 1B C - KEYBOARD - CONTROL-BREAK HANDLER
Desc: this interrupt is automatically called when INT 09 determines that
Control-Break has been pressed
Note: normally points to a short routine in DOS which sets the Ctrl-C flag,
thus invoking INT 23h the next time DOS checks for Ctrl-C.
SeeAlso: INT 23,MEM 0040h:0071h
--------B-1C---------------------------------
INT 1C - TIME - SYSTEM TIMER TICK
Desc: this interrupt is automatically called on each clock tick by the INT 08
handler
Notes: this is the preferred interrupt to chain when a program needs to be
invoked regularly
not available on NEC 9800-series PCs
SeeAlso: INT 08,INT E2"PC Cluster"
--------B-1D---------------------------------
INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
Note: the default parameter table (see #0959) is located at F000h:F0A4h for
100% compatible BIOSes
SeeAlso: INT 10/AH=00h
Format of video parameters:
Offset Size Description (Table 0959)
00h 16 BYTEs 6845 register values for modes 00h and 01h
10h 16 BYTEs 6845 register values for modes 02h and 03h
20h 16 BYTEs 6845 register values for modes 04h and 05h
30h 16 BYTEs 6845 register values for modes 06h and 07h
40h WORD bytes in video buffer for modes 00h and 01h (0800h)
42h WORD bytes in video buffer for modes 02h and 03h (1000h)
44h WORD bytes in video buffer for modes 04h and 05h (4000h)
46h WORD bytes in video buffer for mode 06h (4000h)
48h 8 BYTEs columns on screen for each of modes 00h through 07h
50h 8 BYTEs CRT controller mode bytes for each of modes 00h through 07h
Note: QEMM v7.5 Stealth appears to copy only the first 40h bytes of this
table into always-accessible memory
--------B-1E---------------------------------
INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
Notes: the default parameter table (see #0960) is located at F000h:EFC7h for
100% compatible BIOSes
if the table is changed, INT 13/AH=00h should be called to ensure that
the floppy-disk controller is appropriately reprogrammed
SeeAlso: INT 13/AH=0Fh,INT 41"HARD DISK 0",INT 4D/AH=0Ah
Format of diskette parameter table:
Offset Size Description (Table 0960)
00h BYTE first specify byte
bits 7-4: step rate (Fh=2ms,Eh=4ms,Dh=6ms,etc.)
bits 3-0: head unload time (0Fh = 240 ms)
01h BYTE second specify byte
bits 7-1: head load time (01h = 4 ms)
bit 0: non-DMA mode (always 0)
02h BYTE delay until motor turned off (in clock ticks)
03h BYTE bytes per sector (00h = 128, 01h = 256, 02h = 512, 03h = 1024)
04h BYTE sectors per track
05h BYTE length of gap between sectors (2Ah for 5.25", 1Bh for 3.5")
06h BYTE data length (ignored if bytes-per-sector field nonzero)
07h BYTE gap length when formatting (50h for 5.25", 6Ch for 3.5")
08h BYTE format filler byte (default F6h)
09h BYTE head settle time in milliseconds
0Ah BYTE motor start time in 1/8 seconds
---IBM SurePath BIOS---
0Bh BYTE maximum track number
0Ch BYTE data transfer rate
0Dh BYTE drive type in CMOS
SeeAlso: #2897 at INT 4D/AH=09h
--------B-1F---------------------------------
INT 1F - SYSTEM DATA - 8x8 GRAPHICS FONT
Desc: this vector points at 1024 bytes of graphics data, 8 bytes for each
character 80h-FFh
Note: graphics data for characters 00h-7Fh stored at F000h:FA6Eh in 100%
compatible BIOSes
SeeAlso: INT 10/AX=5000h,INT 43
--------b-1F12-------------------------------
INT 1F U - C&T "SuperState" BIOS - POWER OFF
AH = 12h
Return: none
Note: POWER OFF
--------b-1F17-------------------------------
INT 1F U - C&T "SuperState" BIOS - EXECUTE FAR PROC ROUTINE ON SuperState
AH = 17h
ES:DI -> far procedure
Return: all registers except AH,ES,DI
Note: You can change the BIOS area (F000h:0000h - F000h:FFFFh) only through
this function
--------b-1F19-------------------------------
INT 1F U - C&T "SuperState" BIOS - ENABLE AUTO WAKEUP AND SET TIME AND DATE
AH = 19h
AL = hour in BCD
BH = minutes in BCD
BL = seconds in BCD
CH = year century in BCD (must be 19h)
CL = year low in BCD
DH = month in BCD
DL = date in BCD
Return: CF clear
--------b-1F1C-------------------------------
INT 1F U - C&T "SuperState" BIOS - SET SUSPEND TIMEOUT
AH = 1Ch
BX = sec until suspend starts
Return: None
--------b-1F1D-------------------------------
INT 1F U - C&T "SuperState" BIOS - SET SLEEP TIMEOUT
AH = 1Dh
BX = sec until sleep starts
Return: None
--------J-1F90-------------------------------
INT 1F - NEC PC-9801 - COPY EXTENDED MEMORY
AH = 90h
ES:BX -> global descriptor table (see #0425 at INT 15/AH=87h)
CX = number of bytes to copy
SI = 0000h
DI = 0000h
Return: CF clear if successful
CF set on error
???
SeeAlso: INT 15/AH=87h
--------b-1FF5--BLFA-------------------------
INT 1F U - C&T "SuperState" BIOS - REQUEST PASSWORD INPUT
AH = F5h
BL = FAh
Return: none
Note: this function will not return until the correct password is entered
SeeAlso: AH=F5h/BL=FDh,AH=F5h/BL=FEh
--------b-1FF5--BLFD-------------------------
INT 1F U - C&T "SuperState" BIOS - ENCRYPT PASSWORD
AH = F5h
BL = FDh
CX:SI = input string
DX:DI = encrypted string
BH = length of input string
Return: CF set on error
SeeAlso: AH=F5h/BL=FAh,AH=F5h/BL=FEh
--------b-1FF5--BLFE-------------------------
INT 1F U - C&T "SuperState" BIOS - SET PASSWORD
AH = F5h
BL = FEh
CX:SI -> input string
BH = length of input string (if BH = 00h, clear password)
Return: CF set on error
Note: the input string must be encrypted by INT 1Fh/AH=F5h/BL=FDh
SeeAlso: AH=F5h/BL=FDh,AH=F5h/BL=FFh
--------b-1FF5--BLFF-------------------------
INT 1F U - C&T "SuperState" BIOS - GET ENCRYPTED PASSWORD
AH = F5h
BL = FFh
DX:DI = string buffer
Return: CF set on error
CF clear if successful
BH = length of input string (if BH = 00h, password is not valid)
DX:DI -> encrypted password string
SeeAlso: AH=F5h/BL=FDh,AH=F5h/BL=FEh
--------b-1FFB-------------------------------
INT 1F U - C&T "SuperState" BIOS - GET/SET CPU SPEED
AH = FBh
BL = function
00h get CPU speed
Return: AL = current CPU speed (00h = fast, 01h = slow)
01h set CPU speed
AL = new CPU speed (00h = fast, 01h = slow)
SeeAlso: AH=FCh/BL=00h
--------b-1FFC--BL00-------------------------
INT 1F U - C&T "SuperState" BIOS - GET ALARM STATUS
AH = FCh
BL = 00h
Return: AL = current alarm state (00h = disabled, 01h = enabled)
SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h
--------b-1FFC--BL01-------------------------
INT 1F U - C&T "SuperState" BIOS - SET ALARM STATUS
AH = FCh
BL = 01h
AL = new alarm state (00h = disabled, 01h = enabled)
SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h
--------b-1FFC--BL02-------------------------
INT 1F U - C&T "SuperState" BIOS - GET ALARM TIME
AH = FCh
BL = 02h
Return: CH = hour by BCD
CL = min by BCD
DH = sec by BCD
SeeAlso: AH=FCh/BL=00h,AH=FCh/BL=03h,AH=FCh/BL=04h
--------b-1FFC--BL03-------------------------
INT 1F U - C&T "SuperState" BIOS - SET ALARM TIME
AH = FCh
BL = 03h
CH = hour by BCD
CL = min by BCD
DH = sec by BCD
Return: CF set on error (incorrect time format or Alarm is not enable)
SeeAlso: AH=FCh/BL=01h,AH=FCh/BL=02h,AH=FCh/BL=05h
--------b-1FFC--BL04-------------------------
INT 1F U - C&T "SuperState" BIOS - GET ALARM DATE
AH = FCh
BL = 04h
Return: CH = year century by BCD
CL = year low by BCD
DH = month by BCD
DL = date by BCD
SeeAlso: AH=FCh/BL=02h,AH=FCh/BL=05h
--------b-1FFC--BL05-------------------------
INT 1F U - C&T "SuperState" BIOS - SET ALARM DATE
AH = FCh
BL = 05h
CH = year century by BCD
CL = year low by BCD
DH = month by BCD
DL = date by BCD
Return: CF set on error (incorrect date format or Alarm is not enable)
SeeAlso: AH=FCh/BL=03h,AH=FCh/BL=04h
--------b-1FFD--BL00-------------------------
INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP STATUS
AH = FDh
BL = 00h
Return: AL = current wake-up state (00h = disabled, 01h = enabled)
SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
--------b-1FFD--BL01-------------------------
INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP STATUS
AH = FDh
BL = 01h
AL = new wake-up state (00h = disabled, 01h = enabled)
SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
--------b-1FFD--BL02-------------------------
INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP TIME
AH = FDh
BL = 02h
Return: CH = hour by BCD
CL = min by BCD
DH = sec by BCD
SeeAlso: AH=FDh/BL=00h,AH=FDh/BL=03h
--------b-1FFD--BL03-------------------------
INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP TIME
AH = FDh
BL = 03h
CH = hour by BCD
CL = min by BCD
DH = sec by BCD
Return: CF set on error (incorrect Time format or Auto Wake up is not enable)
SeeAlso: AH=FDh/BL=01h,AH=FDh/BL=02h
--------b-1FFD--BL04-------------------------
INT 1F U - C&T "SuperState" BIOS - GET AUTO WAKE UP DATE
AH = FDh
BL = 04h
Return: CH = year century in BCD
CL = year low in BCD
DH = month in BCD
DL = date in BCD
SeeAlso: AH=FDh/BL=02h,AH=FDh/BL=05h
--------b-1FFD--BL05-------------------------
INT 1F U - C&T "SuperState" BIOS - SET AUTO WAKE UP DATE
AH = FDh
BL = 05h
CH = year century in BCD
CL = year low in BCD
DH = month in BCD
DL = date in BCD
Return: CF set on error (incorrect date format or Auto Wake up is not enable)
SeeAlso: AH=FDh/BL=03h"C&T",AH=FDh/BL=04h"C&T"
--------O-20---------------------------------
INT 20 - Minix - SEND/RECEIVE MESSAGE
AX = process ID of other process
BX -> message
CX = operation (1 send, 2 receive, 3 send&receive)
Program: Minix is a Version 7 Unix-compatible operating system by Andrew
Tanenbaum
Note: the message contains the system call number (numbered as in V7
Unix(tm)) and the call parameters
--------D-20---------------------------------
INT 20 - DOS 1+ - TERMINATE PROGRAM
CS = PSP segment
Return: never
Notes: (see INT 21/AH=00h)
this function sets the program's return code (ERRORLEVEL) to 00h
SeeAlso: INT 21/AH=00h,INT 21/AH=4Ch
--------G-20---------------------------------
INT 20 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE FIRMWARE DEBUGGER
???
Return: ???
SeeAlso: INT 21"COMTROL"
--------W-20----Vx0001-----------------------
INT 20 P - Microsoft Windows - VMM - VxD SERVICES
VxD = 0001h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0961)
Values for VMM (VxD ID 0001h) service number:
0000h get version
0001h get current VM handle
0002h test current VM handle
0003h get system VM handle
0004h test system VM handle
0005h validate VM handle
0006h get VMM reenter count
0007h begin reentrant execution
0008h end reentrant execution
0009h install V86 breakpoint
000Ah remove V86 breakpoint
000Bh allocate V86 callback
000Ch allocation PM callback
000Dh call when VM returns
000Eh schedule global event
000Fh schedule VM event
0010h call global event
0011h call VM event
0012h cancel global event
0013h cancel VM event
0014h call priority VM event
0015h cancel priority VM event
0016h get NMI handler address
0017h set NMI handler address
0018h hook NMI event
0019h call when VM interrupts enabled
001Ah enable VM interrupts
001Bh disable VM interrupts
001Ch map flat
001Dh map linear to VM address
001Eh adjust execution priority
001Fh begin critical section
0020h end critical section
0021h end critical section and suspend
0022h claim critical section
0023h release critical section
0024h call when not critical
0025h create semaphore
0026h destroy semaphore
0027h wait on semaphore
0028h signal semaphore
0029h get critical section status
002Ah call when task switched
002Bh suspend VM
002Ch resume VM
002Dh no-fail resume VM
002Eh nuke VM
002Fh crash current VM
0030h get execution focus
0031h set execution focus
0032h get time slice priority
0033h set time slice priority
0034h get time slice granularity
0035h set time slice granularity
0036h get time slice information
0037h adjust execution time
0038h release time slice
0039h wake up VM
003Ah call when idle
003Bh get next VM handle
003Ch set global timeout
003Dh set VM timeout
003Eh cancel timeout
003Fh get system time
Return: EAX = time in milliseconds that Windows has been running
0040h get VM execution time
0041h hook V86 interrupt chain
0042h get V86 interrupt vector
0043h set V86 interrupt vector
0044h get PM interrupt vector
0045h set PM interrupt vector
0046h simulate interrupt
0047h simulate IRET
0048h simulate far call
0049h simulate far jump
004Ah simulate far RET
004Bh simulate far RET N
004Ch build interrupt stack frame
004Dh simulate push
004Eh simulate pop
004Fh _HeapAllocate
0050h _HeapReAllocate
0051h _HeapFree
0052h _HeapGetSize
0053h _PageAllocate
0054h _PageReAllocate
0055h _PageFree
0056h _PageLock
0057h _PageUnLock
0058h _PageGetSizeAddr
0059h _PageGetAllocInfo
005Ah _GetFreePageCount
005Bh _GetSysPageCount
005Ch _GetVMPgCount
005Dh _MapIntoV86
005Eh _PhysIntoV86
005Fh _TestGlobalV86Mem
0060h _ModifyPageBits
0061h copy page table
0062h map linear into V86
0063h linear page lock
0064h linear page unlock
0065h _SetResetV86Pageabl
0066h _GetV86PageableArray
0067h _PageCheckLinRange
0068h page out dirty pages
0069h discard pages
006Ah _GetNulPageHandle
006Bh get first V86 page
006Ch map physical address to linear address
006Dh _GetAppFlatDSAlias
006Eh _SelectorMapFlat
006Fh _GetDemandPageInfo
0070h _GetSetPageOutCount
0071h hook V86 page
0072h assign device V86 pages
0073h deassign device V86 pages
0074h get array of V86 pages for device
0075h _SetNULPageAddr
0076h allocate GDT selector
0077h free GDT selector
0078h allocate LDT selector
0079h free LDT selector
007Ah _BuildDescriptorDWORDs
007Bh get descriptor
007Ch set descriptor
007Dh toggle HMA
007Eh get fault hook addresses
007Fh hook V86 fault
0080h hook PM fault
0081h hook VMM fault
0082h begin nested V86 execution
0083h begin nested execution
0084h execute V86-mode interrupt
0085h resume execution
0086h end nested execution
0087h allocate PM application callback area
0088h get current PM application callback area
0089h set V86 execution mode
008Ah set PM execution mode
008Bh begin using locked PM stack
008Ch end using locked PM stack
008Dh save client state
008Eh restore client state
008Fh execute VxD interrupt
STACK: WORD interrupt number
other registers as required by interrupt call
Return: registers as returned by interrupt call
0090h hook device service
EAX = service ID (high word = VxD ID, low = service number)
ESI -> new handler
0091h hook device V86 API
0092h hook device PM API
0093h system control (see also #2344)
0094h simulate I/O
0095h install multiple I/O handlers
0096h install I/O handler
0097h enable global trapping
0098h enable local trapping
0099h disable global trapping
009Ah disable local trapping
009Bh create list
009Ch destroy list
009Dh allocate list
009Eh attach list
009Fh attach list tail
00A0h insert into list
00A1h remove from list
00A2h deallocate list
00A3h get first item in list
00A4h get next item in list
00A5h remove first item in list
00A6h add instance item
00A7h allocate device callback area
00A8h allocate global V86 data area
00A9h allocate temporary V86 data area
00AAh free temporary V86 data area
00ABh get decimal integer from profile
00ACh convert decimal string to integer
00ADh get fixed-point number from profile
00AEh convert fixed-point string
00AFh get hex integer from profile
00B0h convert hex string to integer
00B1h get boolean value from profile
00B2h convert boolean string
00B3h get string from profile
00B4h get next string from profile
00B5h get environment string
00B6h get exec path
00B7h get configuration directory
00B8h open file
00B9h get PSP segment
00BAh get DOS vectors
00BBh get machine information
00BCh get/set HMA information
00BDh set system exit code
00BEh fatal error handler
00BFh fatal memory error
00C0h update system clock
00C1h test if debugger installed
00C2h output debugger string
00C3h output debugger character
00C4h input debugger character
00C5h debugger convert hex to binary
00C6h debugger convert hex to decimal
00C7h debugger test if valid handle
00C8h validate client pointer
00C9h test reentry
00CAh queue debugger string
00CBh log procedure call
00CCh debugger test current VM
00CDh get PM interrupt type
00CEh set PM interrupt type
00CFh get last updated system time
00D0h get last updated VM execution time
00D1h test if double-byte character-set lead byte
00D2h _AddFreePhysPage
00D3h _PageResetHandlePAddr
00D4h _SetLastV86Page
00D5h _GetLastV86Page
00D6h _MapFreePhysReg
00D7h _UnmapFreePhysReg
00D8h _XchgFreePhysReg
00D9h _SetFreePhysRegCalBk
00DAh get next arena (MCB)
00DBh get name of ugly TSR
00DCh get debug options
00DDh set physical HMA alias
00DEh _GetGlblRng0V86IntBase
00DFh add global V86 data area
00E0h get/set detailed VM error
00E1h Is_Debug_Chr
00E2h clear monochrome screen
00E3h output character to mono screen
00E4h output string to mono screen
00E5h set current position on mono screen
00E6h get current position on mono screen
00E7h get character from mono screen
00E8h locate byte in ROM
00E9h hook invalid page fault
00EAh unhook invalid page fault
00EBh set delete on exit file
00ECh close VM
00EDh "Enable_Touch_1st_Meg"
00EEh "Disable_Touch_1st_Meg"
00EFh install exception handler
00F0h remove exception handler
00F1h "Get_Crit_Status_No_Block"
00F2h "_Schedule_VM_RTI_Event"
00F3h "_Trace_Out_Service"
00F4h "_Debug_Out_Service"
00F5h "_Debug_Flags_Service"
00F6h VMM add import module name
00F7h VMM Add DDB
00F8h VMM Remove DDB
00F9h get thread time slice priority
00FAh set thread time slice priority
00FBh schedule thread event
00FCh cancel thread event
00FDh set thread timeout
00FEh set asynchronous timeout
00FFh "_AllocatreThreadDataSlot"
0100h "_FreeThreadDataSlot"
0101h create Mutex
0102h destroy Mutex
0103h get Mutex owner
0104h call when thread switched
0105h create thread
0106h start thread
0107h terminate thread
0108h get current thread handle
0109h test current thread handle
010Ah "Get_Sys_Thread_Handle"
010Bh "Test_Sys_Thread_Handle"
010Ch "Validate_Thread_Handle"
010Dh "Get_Initial_Thread_Handle"
010Eh "Test_Initial_Thread_Handle"
010Fh "Debug_Test_Valid_Thread_Handle"
0110h "Debug_Test_Cur_Thread"
0111h "VMM_GetSystemInitState"
0112h "Cancel_Call_When_Thread_Switched"
0113h "Get_Next_Thread_Handle"
0114h "Adjust_Thread_Exec_Priority"
0115h "_Deallocate_Device_CB_Area"
0116h "Remove_IO_Handler"
0117h "Remove_Mult_IO_Handlers"
0118h unhook V86 interrupt chain
0119h unhook V86 fault handler
011Ah unhook PM fault handler
011Bh unhook VMM fault handler
011Ch unhook device service
011Dh "_PageReserve"
011Eh "_PageCommit"
011Fh "_PageDecommit"
0120h "_PagerRegister"
0121h "_PagerQuery"
0122h "_PagerDeregister"
0123h "_ContextCreate"
0124h "_ContextDestroy"
0125h "_PageAttach"
0126h "_PageFlush"
0127h "_SignalID"
0128h "_PageCommitPhys"
0129h "_Register_Win32_Services"
012Ah "Cancel_Call_When_Not_Critical"
012Bh "Cancel_Call_When_Idle"
012Ch "Cancel_Call_When_Task_Switched"
012Dh "_Debug_Printf_Service"
012Eh enter Mutex
012Fh leave Mutex
0130h simulate VM I/O
0131h "Signal_Semaphore_No_Switch"
0132h "_MMSwitchContext"
0133h "_MMModifyPermissions"
0134h "_MMQuery"
0135h "_EnterMustComplete"
0136h "_LeaveMustComplete"
0137h "_ResumeExecMustComplete"
0138h get thread termination status
0139h "_GetInstanceInfo"
013Ah "_ExecIntMustComplete"
013Bh "_ExecVxDIntMustComplete"
013Ch begin V86 serialization
013Dh unhook V86 page
013Eh "VMM_GetVxDLocationList"
013Fh "VMM_GetDDBList" get start of VxD chain
(see also #2344 at INT 2F/AX=1684h/BX=0017h)
0140h unhook NMI event
0141h "Get_Instanced_V86_Int_Vector"
0142h get or set real DOS PSP
0143h call priority thread event
0144h "Get_System_Time_Address"
0145h "Get_Crit_Status_Thread"
0146h "Get_DDB"
0147h "Directed_Sys_Control"
0148h "_RegOpenKey"
0149h "_RegCloseKey"
014Ah "_RegCreateKey"
014Bh "_RegDeleteKey"
014Ch "_RegEnumKey"
014Dh "_RegQueryValue"
014Eh "_RegSetValue"
014Fh "_RegDeleteValue"
0150h "_RegEnumValue"
0151h "_RegQueryValueEx"
0152h "_RegSetValueEx"
0153h "_CallRing3"
0154h "Exec_PM_Int"
0155h "_RegFlushKey"
0156h "_PageCommitContig"
0157h "_GetCurrentContext"
0158h "_LocalizeSprintf"
0159h "_LocalizeStackSprintf"
015Ah "Call_Restricted_Event"
015Bh "Cancel_Restricted_Event"
015Ch "Register_PEF_Provider"
015Dh "_GetPhysPageInfo"
015Eh "_RegQueryInfoKey"
015Fh "MemArb_Reserve_Pages"
0160h "Time_Slice_Sys_VM_Idle"
0161h "Time_Slice_Sleep"
0162h "Boost_With_Decay"
0163h "Set_Inversion_Pri"
0164h "Reset_Inversion_Pri"
0165h "Release_Inversion_Pri"
0166h "Get_Thread_Win32_Pri"
0167h "Set_Thread_Win32_Pri"
0168h "Set_Thread_Static_Boost"
0169h "Set_VM_Static_Boost"
016Ah "Release_Inversion_Pri_ID"
016Bh "Attach_Thread_To_Group"
016Ch "Detach_Thread_From_Group"
016Dh "Set_Group_Static_Boost"
016Eh "_GetRegistryPath"
016Fh "_GetRegistryKey"
0170h "_CleanupNestedExec"
0171h "_RegRemapPreDefKey"
0172h "End_V86_Serialization"
0173h "_Assert_Range"
0174h "_Sprintf"
0175h "_PageChangePager"
0176h "_RegCreateDynKey"
0177h "RegQMulti"
0178h "Boost_Thread_With_VM"
0179h "Get_Boot_Flags"
017Ah "Set_Boot_Flags"
017Bh "_lstrcpyn"
017Ch "_lstrlen"
017Dh "_lmemcpy"
017Eh "_GetVxDName"
017Fh "Force_Mutexes_Free"
0180h "Restore_Forced_Mutexes"
0181h "_AddReclaimableItem"
0182h "_SetReclaimableItem"
0183h "_EnumReclaimableItem"
0184h "Time_Slice_Wake_Sys_VM"
0185h "VMM_Replace_Global_Environment"
0186h "Begin_Non_Serial_Nest_V86_Exec"
0187h "Get_Nest_Exec_Status"
0188h "Open_Boot_Log"
0189h "Write_Boot_Log"
018Ah "Close_Boot_Log"
018Bh "EnableDisable_Boot_Log"
018Ch "_Call_On_My_Stack"
018Dh "Get_Inst_V86_Int_Vec_Base"
018Eh "_lstrcmpi"
018Fh "_strupr"
0190h "Log_Fault_Call_Out"
0191h "_AtEventTime"
0191h ...last service for Windows95 SP1
811Ch unhook device service??? (called by KEYREMAP.VXD)
EAX = service ID (high word = VxD ID, low = service number)
ESI -> handler
SeeAlso: #0962,#0963,INT 2F/AX=1684h/BX=0001h
--------W-20----Vx0002-----------------------
INT 20 P - Microsoft Windows - DEBUG - VxD SERVICES
VxD = 0002h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0962,#1032
(Table 0962)
Values for DEBUG (VxD ID 0002h) service number:
0000h get version
0001h "DEBUG_Fault"
0002h "DEBUG_CheckFault"
0003h "_DEBUG_LoadSyms"
SeeAlso: #0961,#0963
--------W-20----Vx0003-----------------------
INT 20 P - Microsoft Windows - VPICD - VxD SERVICES
VxD = 0003h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0963,#1032
(Table 0963)
Values for VPICD (VxD ID 0003h) service number:
0000h get version
0001h virtualize IRQ
0002h set interrupt request
0003h clear interrupt request
0004h physical EOI
0005h get complete status
0006h get status
0007h test physical request
0008h physically mask
0009h physically unmask
000Ah set automatic masking
000Bh get IRQ complete status
000Ch convert handle to IRQ
000Dh convert IRQ to interrupt
000Eh convert interrupt to IRQ
000Fh call on hardware interrupt
0010h force default owner
0011h force default behavior
0012h "VPICD_Auto_Mask_At_Inst_Swap"
0013h "VPICD_Begin_Inst_Page_Swap"
0014h "VPICD_End_Inst_Page_Swap"
0015h "VPICD_Virtual_EOI"
0016h "VPICD_Get_Virtualization_Count"
0017h "VPICD_Post_Sys_Critical_Init"
0018h "VPICD_VM_SlavePIC_Mask_Change"
SeeAlso: #0961,#0964,INT 2F/AX=1684h/BX=0003h
--------W-20----Vx0004-----------------------
INT 20 P - Microsoft Windows - VDMAD - VxD SERVICES
VxD = 0004h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0964)
Values for VDMAD (VxD ID 0004h) service number:
0000h get version
0001h virtualize channel
0002h get region information
0003h set region information
0004h get virtual state
0005h set virtual state
0006h set physical state
0007h mask channel
0008h unmask channel
0009h lock DMA region
000Ah unlock DMA region
000Bh scatter lock
000Ch scatter unlock
000Dh reserve buffer space
000Eh request buffer
000Fh release buffer
0010h copy to buffer
0011h copy from buffer
0012h default handler
0013h disable translation
0014h enable translation
0015h get EISA address mode
0016h set EISA address mode
0017h unlock DMA region (ND)
0018h "VDMAD_Phys_Mask_Channel"
0019h "VDMAD_Phys_Unmask_Channel"
001Ah "VDMAD_Unvirtualize_Channel"
001Bh "VDMAD_Set_IO_Address"
001Ch "VDMAD_Get_Phys_Count"
001Dh "VDMAD_Get_Phys_Status"
001Eh "VDMAD_Get_Max_Phys_Page"
001Fh "VDMAD_Set_Channel_Callbacks"
0020h "VDMAD_Get_Virt_Count"
0021h "VDMAD_Set_Virt_Count"
0021h ...last service for Windows95 SP1
SeeAlso: #0963,#2333,#2370 at INT 2F/AX=1684h/BX=0444h
--------W-20----Vx0005-----------------------
INT 20 P - Microsoft Windows - VTD - VxD SERVICES
VxD = 0005h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0965)
Values for VTD (VxD ID 0005h) service number:
0000h get version
0001h update system clock
0002h get interrupt period
0003h begin minimum interrupt period
0004h end minimum interrupt period
0005h disable trapping
0006h enable trapping
0007h get real time
Return: EDX:EAX = time in 840ns units since Windows was started
0008h "VTD_Get_Date_And_Time"
0009h "VTD_Adjust_VM_Count"
000Ah "VTD_Delay"
SeeAlso: #2333 at INT 2F/AX=1684h/BX=0005h
--------W-20----Vx0006-----------------------
INT 20 P - Microsoft Windows - V86MMGR - VxD SERVICES
VxD = 0006h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0966)
Values for V86MMGR (VxD ID 0006h) service number:
00h get version
01h allocate V86 pages
02h set EMS and XMS limits
03h get EMS and XMS limits
04h set mapping information
05h get mapping information
06h Xlat API
07h load client pointer
08h allocate buffer
09h free buffer
0Ah get Xlat buffer state
0Bh set Xlat buffer state
0Ch get VM flat selector
0Dh map pages
0Eh free page map region
0Fh _LocalGlobalReg
10h get page status
11h set local A20
12h reset base pages
13h set available mapped pages
14h "V86MMGR_NoUMBInitCalls"
15h "V86MMGR_Get_EMS_XMS_Avail"
16h "V86MMGR_Toggle_HMA"
EAX = ???
17h "V86MMGR_Dev_Init"
18h "V86MMGR_Alloc_UM_Page"
SeeAlso: #2333,#0967,INT 2F/AX=1684h"DEVICE API"
--------W-20----Vx0007-----------------------
INT 20 P - Microsoft Windows - PageSwap - VxD SERVICES
VxD = 0007h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0967)
Values for PageSwap (VxD ID 0007h) service number:
00h get version
01h test create
02h create swap file
03h destroy swap file
04h in
05h out
06h test if I/O valid
07h "Read_Or_Write"
08h "Grow_File"
09h "Init_File"
SeeAlso: #0966,#0968,#0969,#2335
--------W-20----Vx0009-----------------------
INT 20 P - Microsoft Windows - REBOOT - VxD SERVICES
VxD = 0009h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0968)
Values for REBOOT (VxD ID 0009h) service number:
00h get REBOOT version???
01h ???
02h ???
03h ...last service for Windows95 SP1
SeeAlso: #0967,#0969,#2329
--------W-20----Vx000A-----------------------
INT 20 P - Microsoft Windows - VDD - VxD SERVICES
VxD = 000Ah
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0969)
Values for VDD (VxD ID 000Ah) service number:
00h get version
01h PIF state
02h get GrabRtn
03h hide cursor
04h set VM type
05h get ModTime
06h set HCurTrk
07h message clear screen
08h message foreground color
09h message background color
0Ah message output text
0Bh message set cursor position
0Ch query access
0Dh "VDD_Check_Update_Soon"
0Eh "VDD_Get_Mini_Dispatch_Table"
0Fh "VDD_Register_Virtual_Port"
10h "VDD_Get_VM_Info"
11h "VDD_Get_Special_VM_IDs"
12h "VDD_Register_Extra_Screen_Selector"
13h "VDD_Takeover_VGA_Port"
14h ???
15h ???
16h ...last service for Windows95 SP1
SeeAlso: #0968,#0970,#2335
--------W-20----Vx000B-----------------------
INT 20 P - Microsoft Windows - VSD - VxD SERVICES
VxD = 000Bh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0970)
Values for VSD (VxD ID 000Bh) service number:
00h get version
01h bell
02h sound on
03h "VSD_TakeSoundPort"
SeeAlso: #0969,#0971
--------W-20----Vx000C-----------------------
INT 20 P - Microsoft Windows - VMD / VMOUSE - VxD SERVICES
VxD = 000Ch
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0971)
Values for VMD / VMOUSE (VxD ID 000Ch) service number:
0000h get version
0001h set mouse type
0002h get mouse owner
0003h "VMOUSE_Post_Pointer_Message"
0004h "VMOUSE_Set_Cursor_Proc"
0005h "VMOUSE_Call_Cursor_Proc"
0006h "VMOUSE_Set_Mouse_Data~Get_Mouse_Data"
0007h "VMOUSE_Manipulate_Pointer_Message"
0008h "VMOUSE_Set_Middle_Button"
0009h "VMD_Set_Middle_Button"
000Ah "VMD_Enable_Disable_Mouse_Events"
000Bh "VMD_Post_Absolute_Pointer_Message"
...last service for Windows95 SP1
SeeAlso: #0970,#0972,INT 2F/AX=1684h/BX=000Ch
--------W-20----Vx000D-----------------------
INT 20 P - Microsoft Windows - VKD - VxD SERVICES
VxD = 000Dh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0972)
Values for VKD (VxD ID 000Dh) service number:
0000h get version
0001h define hotkey
0002h remove hotkey
0003h locally enable hotkey
0004h locally disable hotkey
0005h reflect hotkey
0006h cancel hotkey state
0007h force keys
0008h get keyboard owner
0009h define paste mode
000Ah start pasting
000Bh cancel paste
000Ch get message key
000Dh peek message key
000Eh flush message key queue
000Fh "VKD_Enable_Keyboard"
0010h "VKD_Disable_Keyboard"
0011h "VKD_Get_Shift_State"
0012h "VKD_Filter_Keyboard_Input"
0013h "VKD_Put_Byte"
0014h "VKD_Set_Shift_State"
...last service for Windows95 SP1
SeeAlso: #0971,#0973
--------W-20----Vx000E-----------------------
INT 20 P - Microsoft Windows - VCD - VxD SERVICES
VxD = 000Eh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0973)
Values for VCD (VxD ID 000Eh) service number:
0000h get version
0001h set port global
0002h get focus
0003h virtualize port
0004h "VCD_Acquire_Port"
0005h "VCD_Free_Port"
0006h "VCD_Acquire_Port_Windows_Style"
0007h "VCD_Free_Port_Windows_Style"
0008h "VCD_Steal_Port_Windows_Style"
0009h "VCD_Find_COM_Index"
000Ah "VCD_Set_Port_Global_Special"
000Bh "VCD_Virtualize_Port_Dynamic"
000Ch "VCD_Unvirtualize_Port_Dynamic"
...last service for Windows95 SP1
SeeAlso: #0972,#0974
--------W-20----Vx0010-----------------------
INT 20 P - Microsoft Windows - BlockDev / IOS - VxD SERVICES
VxD = 0010h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0974)
Values for BlockDev/IOS (VxD ID 0010h) service number:
0000h get version
0001h register device
0002h find INT 13 drive
0003h get device list
0004h send command
0005h command complete
0006h synchronous command
0007h "IOS_Register"
0008h "IOS_Requestor_Service"
0009h "IOS_Exclusive_Access"
000Ah "IOS_Send_Next_Command"
000Bh "IOS_Set_Async_Time_Out"
000Ch "IOS_Signal_Semaphore_No_Switch"
000Dh "IOSIdleStatus"
000Eh "IOSMapIORSToI24"
000Fh "IOSMapIORSToI21"
0010h "PrintLog"
SeeAlso: #0973,#0975
--------W-20----Vx0011-----------------------
INT 20 P - Microsoft Windows - VMCPD - VxD SERVICES
VxD = 0011h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0975)
Values for VMCPD (VxD ID 0011h) service number:
0000h "VMCPD_Get_Version"
0001h "VMCPD_Get_Virt_State"
0002h "VMCPD_Set_Virt_State"
0003h "VMCPD_Get_CR0_State"
0004h "VMCPD_Set_CR0_State"
0005h "VMCPD_Get_Thread_State"
0006h "VMCPD_Set_Thread_State"
0007h "_VMCPD_Get_FP_Instruction_Size"
0008h "VMCPD_Set_Thread_Precision"
SeeAlso: #0974,#0976,#2329
--------W-20----Vx0012-----------------------
INT 20 P - Microsoft Windows - EBIOS - VxD SERVICES
VxD = 0012h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0976)
Values for EBIOS (VxD ID 0012h) service number:
00h get EBIOS version
01h get unused memory
SeeAlso: #0975,#0977
--------W-20----Vx0014-----------------------
INT 20 P - Microsoft Windows - VNETBIOS - VxD SERVICES
VxD = 0014h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0977)
Values for VNETBIOS (VxD ID 0014h) service number:
00h get version
01h register
02h submit
03h enum
04h deregister
05h register2
06h map
07h enum2
SeeAlso: #0976,#0978
--------W-20----Vx0015-----------------------
INT 20 P - Microsoft Windows - DOSMGR - VxD SERVICES
VxD = 0015h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0978)
Values for DOSMGR (VxD ID 0015h) service number:
0000h get version
0001h set exec VM data
0002h coyp VM drive state
0003h execute VM
0004h get InDOS pointer
0005h add device
0006h remove device
0007h instance device
0008h get DOS critical status
0009h enable InDOS polling
000Ah backfill allowed
000Bh "LocalGlobalReg"
000Ch "Init_UMB_Area"
000Dh "Begin_V86_App"
000Eh "End_V86_App"
000Fh "Alloc_Local_Sys_VM_Mem"
EAX = number of paragraphs??? to allocate
0010h "DOSMGR_Grow_CDSs"
0011h "DOSMGR_Translate_Server_DOS_Call"
0012h "DOSMGR_MMGR_PSP_Change_Notifier"
SeeAlso: #0977,#2343 at INT 2F/AX=1684h/BX=0015h
--------W-20----Vx0017-----------------------
INT 20 P - Microsoft Windows - SHELL - VxD SERVICES
VxD = 0017h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0979)
Values for SHELL (VxD ID 0017h) service number:
0000h get version
0001h resolve contention
0002h event
0003h SYSMODAL message
0004h message
0005h get VM information
0006h "_SHELL_PostMessage"
0007h "_SHELL_WinExec"
0008h "_SHELL_CallDll"
0009h "SHELL_OpenClipboard"
000Ah "SHELL_SetClipboardData"
000Bh "SHELL_GetClipboardData"
000Ch "SHELL_CloseClipboard"
000Dh "_SHELL_Install_Taskman_Hooks"
000Eh "SHELL_Hook_Properties"
000Fh "SHELL_Unhook_Properties"
0010h "SHELL_OEMKeyScan"
0011h "SHELL_Update_User_Activity"
0012h "_SHELL_UnhookSystemBroadcast"
0013h "_SHELL_LocalAllocEx"
0014h "_SHELL_LocalFree"
0015h "_SHELL_LoadLibrary"
0016h "_SHELL_FreeLibrary"
0017h "_SHELL_GetProcAddress"
0018h "_SHELL_CallDll"
0019h "_SHELL_SuggestSingleMSDOSMode"
001Ah "SHELL_CheckHotkeyAllowed"
001Bh "_SHELL_GetDOSAppInfo"
SeeAlso: #0978,#0980,#2344 at INT 2F/AX=1684h/BX=0017h
--------W-20----Vx0018-----------------------
INT 20 P - Microsoft Windows - VMPoll - VxD SERVICES
VxD = 0018h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0980)
Values for VMPoll (VxD ID 0018h) service number:
00h get version
01h enable/disable
02h reset detection
03h check idle
SeeAlso: #0965,#2344 at INT 2F/AX=1684h/BX=0017h
--------W-20----Vx001A-----------------------
INT 20 P - Microsoft Windows - DOSNET - VxD SERVICES
VxD = 001Ah
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0981)
Values for DOSNET (VxD ID 001Ah) service number:
00h get version
01h send FILESYSCHANGE
02h do PSP adjust
SeeAlso: #0980,#0982
--------W-20----Vx001B-----------------------
INT 20 P - Microsoft Windows - VFD - VxD SERVICES
VxD = 001Bh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0982,#1032
(Table 0982)
Values for VFD (VxD ID 001Bh) service number:
0000h get version
SeeAlso: #0981,#0983
--------W-20----Vx001C-----------------------
INT 20 P - Microsoft Windows - LoadHi - VxD SERVICES
VxD = 001Ch
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0983)
Values for LoadHi (VxD ID 001Ch) service number:
00h get version
Return: CF clear
EAX = version (AH = major, AL = minor)
ESI -> ASCIZ signature "LoadHi"
SeeAlso: #0982,#0984
--------W-20----Vx0020-----------------------
INT 20 P - Microsoft Windows - Int13 - VxD SERVICES
VxD = 0020h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0984)
Values for Int13 (VxD ID 0020h) service number:
00h get version
01h device registered
02h translate VM interrupt
03h hooking BIOS interrupt
04h unhooking BIOS interrupt
SeeAlso: #0983,#0985
--------W-20----Vx0021-----------------------
INT 20 P - Microsoft Windows - PAGEFILE - VxD SERVICES
VxD = 0021h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0985)
Values for PAGEFILE (VxD ID 0021h) service number:
00h get version
01h init file
02h clean up
03h grow file
04h read or write
05h cancel
06h test I/O valid
07h "Get_Size_Info"
08h "Set_Async_Manager"
09h "Call_Async_Manager"
SeeAlso: #0984,#2348 at INT 2F/AX=1684h/BX=0021h
--------W-20----Vx0026-----------------------
INT 20 P - Microsoft Windows - VPOWERD - VxD SERVICES
VxD = 0026h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0986)
Values for VPOWERD (VxD ID 0026h) service number:
00h get version
Return: CF clear
EAX = version (AH = major, AL = minor)
01h get APM BIOS version
Return: CF clear
EAX = APM BIOS version
02h get current power management level
Return: CF clear
EAX = power management level
03h enable/disable power management (see INT 15/AX=5308h)
Return: EAX = error code (see #2352) or 00000000h if successful
04h set power state (see INT 15/AX=5307h)
???
Return: EAX = error code (see #2352) or 00000000h if successful
05h set system power status
Return: EAX = error code (see #2352) or 00000000h if successful
06h restore APM power-on defaults (see INT 15/AX=5309h)
Return: EAX = error code (see #2352) or 00000000h if successful
07h get power status (see INT 15/AX=530Ah)
Return: ???
08h get APM 1.1 power state (see INT 15/AX=530Ch)
Return: ???
09h invoke OEM APM function
??? -> bufer containing parameters for INT 15/AX=5380h
Return: EAX = error code (see #2352) or 00000000h if successful
buffer updated if successful
0Ah register power handler
???
Return: EAX = error code (see #2352) or 00000000h if successful
0Bh deregister power handler
???
Return: EAX = error code (see #2352) or 00000000h if successful
0Ch Win32 get system power status
0Dh Win32 set system power status
SeeAlso: #0985,#0987,INT 2F/AX=1684h/BX=0026h
--------W-20----Vx0027-----------------------
INT 20 P - Microsoft Windows - VXDLDR - VxD SERVICES
VxD = 0027h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0987)
Values for VXDLDR (VxD ID 0027h) service number:
0000h "VXDLDR_Get_Version"
0001h "VXDLDR_LoadDevice"
0002h "VXDLDR_UnloadDevice"
0003h "VXDLDR_DevInitSucceeded"
0004h "VXDLDR_DevInitFailed"
0005h "VXDLDR_GetDeviceList"
0006h "VXDLDR_UnloadMe"
0007h "PELDR_LoadModule"
0008h "PELDR_GetModuleHandle"
0009h "PELDR_GetModuleUsage"
000Ah "PELDR_GetEntryPoint"
000Bh "PELDR_GetProcAddress"
000Ch "PELDR_AddExportTable"
000Dh "PELDR_RemoveExportTable"
000Eh "PELDR_FreeModule"
000Fh "VXDLDR_Notify"
0010h "_PELDR_InitCompleted"
0011h "_PELDR_LoadModuleEx"
SeeAlso: #0985,#0988
--------W-20----Vx0028-----------------------
INT 20 P - Microsoft Windows - NDIS - VxD SERVICES
VxD = 0028h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0988)
Values for NDIS (VxD ID 0028h) service number:
00h "NdisGetVersion"
01h "NdisAllocateSpinLock"
02h "NdisFreeSpinLock"
03h "NdisAcquireSpinLock"
04h "NdisReleaseSpinLock"
05h "NdisOpenConfiguration"
06h "NdisReadConfiguration"
07h "NdisCloseConfiguration"
08h "NdisReadEisaSlotInformation"
09h "NdisReadMcaPosInformation"
0Ah "NdisAllocateMemory"
0Bh "NdisFreeMemory"
0Ch "NdisSetTimer"
0Dh "NdisCancelTimer"
0Eh "NdisStallExecution"
0Fh "NdisInitializeInterrupt"
10h "NdisRemoveInterrupt"
11h "NdisSynchronizeWithInterrupt"
12h "NdisOpenFile"
13h "NdisMapFile"
14h "NdisUnmapFile"
15h "NdisCloseFile"
16h "NdisAllocatePacketPool"
17h "NdisFreePacketPool"
18h "NdisAllocatePacket"
19h "NdisReinitializePacket"
1Ah "NdisFreePacket"
1Bh "NdisQueryPacket"
1Ch "NdisAllocateBufferPool"
1Dh "NdisFreeBufferPool"
1Eh "NdisAllocateBuffer"
1Fh "NdisCopyBuffer"
20h "NdisFreeBuffer"
21h "NdisQueryBuffer"
22h "NdisGetBufferPhysicalAddress"
23h "NdisChainBufferAtFront"
24h "NdisChainBufferAtBack"
25h "NdisUnchainBufferAtFront"
26h "NdisUnchainBufferAtBack"
27h "NdisGetNextBuffer"
28h "NdisCopyFromPacketToPacket"
29h "NdisRegisterProtocol"
2Ah "NdisDeregisterProtocol"
2Bh "NdisOpenAdapter"
2Ch "NdisCloseAdapter"
2Dh "NdisSend"
2Eh "NdisTransferData"
2Fh "NdisReset"
30h "NdisRequest"
31h "NdisInitializeWrapper"
32h "NdisTerminateWrapper"
33h "NdisRegisterMac"
34h "NdisDeregisterMac"
35h "NdisRegisterAdapter"
36h "NdisDeregisterAdapter"
37h "NdisCompleteOpenAdapter"
38h "NdisCompleteCloseAdapter"
39h "NdisCompleteSend"
3Ah "NdisCompleteTransferData"
3Bh "NdisCompleteReset"
3Ch "NdisCompleteRequest"
3Dh "NdisIndicateReceive"
3Eh "NdisIndicateReceiveComplete"
3Fh "NdisIndicateStatus"
40h "NdisIndicateStatusComplete"
41h "NdisCompleteQueryStatistics"
42h "NdisEqualString"
43h "NdisNetAddressStringToBinary"
44h "NdisReadNetworkAddress"
45h "NdisWriteErrorLogEntry"
46h "C_MapPhysToLinear"
47h "C_HeapFree"
48h "NdisAllocateSharedMemory"
49h "NdisFreeSharedMemory"
...
5Fh ...last service for Windows95 SP1
SeeAlso: #0987,#0989
--------W-20----Vx002A-----------------------
INT 20 P - Microsoft Windows - VWIN32 - VxD SERVICES
VxD = 002Ah
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0989)
Values for VWIN32 (VxD ID 002Ah) service number:
0000h "VWin32_Get_Version"
0001h "VWin32_Wake_For_Event"
0002h "_VWIN32_QueueUserApc"
0003h "_VWIN32_Get_Thread_Context"
0004h "_VWIN32_Set_Thread_Context"
0005h "_VWIN32_CopyMem"
0006h "_VWIN32_BlockForTermination"
0007h "_VWIN32_Emulate_Npx"
0008h "_VWIN32_CheckDelayedNpxTrap"
0009h "VWIN32_EnterCrstR0"
000Ah "VWIN32_LeaveCrstR0"
000Bh "_VWIN32_FaultPopup"
000Ch "VWIN32_GetContextHandle"
000Dh "VWIN32_GetCurrentProcessHandle"
000Eh "_VWIN32_SetWin32Event"
000Fh "_VWIN32_PulseWin32Event"
0010h "_VWIN32_ResetWin32Event"
0011h "_VWIN32_WaitSingleObject"
0012h "_VWIN32_WaitMultipleObjects"
0013h "_VWIN32_CreateRing0Thread"
0014h "_VWIN32_CloseVxDHandle"
0015h "VWIN32_ActiveTimeBiasSet"
0016h "VWIN32_GetCurrentDirectory"
0017h "VWIN32_BlueScreenPopup"
0018h "VWIN32_TerminateApp"
0019h "_VWIN32_QueueKernelAPC"
001Ah "VWIN32_SysErrorBox"
001Bh "_VWIN32_IsClientWin32"
001Ch "VWIN32_IFSRIPWhenLev2Taken"
SeeAlso: #0988,#0990
--------W-20----Vx002B-----------------------
INT 20 P - Microsoft Windows - VCOMM - VxD SERVICES
VxD = 002Bh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0990)
Values for VCOMM (VxD ID 002Bh) service number:
0000h "VCOMM_Get_Version"
0001h "_VCOMM_Register_Port_Driver"
0002h "_VCOMM_Acquire_Port"
0003h "_VCOMM_Release_Port"
0004h "_VCOMM_OpenComm"
0005h "_VCOMM_SetCommState"
0006h "_VCOMM_GetCommState"
0007h "_VCOMM_SetupComm"
0008h "_VCOMM_TransmitCommChar"
0009h "_VCOMM_CloseComm"
000Ah "_VCOMM_GetCommQueueStatus"
000Bh "_VCOMM_ClearCommError"
000Ch "_VCOMM_GetModemStatus"
000Dh "_VCOMM_GetCommProperties"
000Eh "_VCOMM_EscapeCommFunction"
000Fh "_VCOMM_PurgeComm"
0010h "_VCOMM_SetCommEventMask"
0011h "_VCOMM_GetCommEventMask"
0012h "_VCOMM_WriteComm"
0013h "_VCOMM_ReadComm"
0014h "_VCOMM_EnableCommNotification"
0015h "_VCOMM_GetLastError"
0016h "_VCOMM_Steal_Port"
0017h "_VCOMM_SetReadCallBack"
0018h "_VCOMM_SetWriteCallBack"
0019h "_VCOMM_GetSetCommTimeouts"
001Ah "_VCOMM_SetWriteRequest"
001Bh "_VCOMM_SetReadRequest"
001Ch "_VCOMM_Dequeue_Request"
001Dh "_VCOMM_Dequeue_Request"
001Eh "_VCOMM_Enumerate_DevNodes"
001Fh "VCOMM_Map_Win32DCB_To_Ring0"
0020h "VCOMM_Map_Ring0DCB_To_Win32"
0021h "_VCOMM_Get_Contention_Handler"
0022h "_VCOMM_Map_Name_To_Resource"
SeeAlso: #0989,#0991
--------W-20----Vx002C-----------------------
INT 20 P - Microsoft Windows - SPOOLER - VxD SERVICES
VxD = 002Ch
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0991)
Values for SPOOLER (VxD ID 002Ch) service number:
0000h get version???
0001h ???
0010h ...last service for Windows95 SP1
SeeAlso: #0990,#0992
--------W-20----Vx0032-----------------------
INT 20 P - Microsoft Windows - VSERVER - VxD SERVICES
VxD = 0032h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0992)
Values for VSERVER (VxD ID 0032h) service number:
00h get VSERVER version
Return: CF clear
EAX = version (AH = major, AL = minor)
EBX = ??? (00000000h)
01h allocate ???
AX = ???
ESI = ???
Return: CF clear if successful
CF set on error (table full)
02h NOP???
Return: EBX = 00000000h
03h ???
Return: ZF clear
SeeAlso: #0991,#0993,INT 2F/AX=1684h/BX=0032h
--------W-20----Vx0033-----------------------
INT 20 P - Microsoft Windows - CONFIGMG - VxD SERVICES
VxD = 0033h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0993)
Values for CONFIGMG (VxD ID 0033h) service number:
0000h "_CONFIGMG_Get_Version"
0001h "_CONFIGMG_Initialize"
0002h "_CONFIGMG_Locate_DevNode"
0003h "_CONFIGMG_Get_Parent"
0004h "_CONFIGMG_Get_Child"
0005h "_CONFIGMG_Get_Sibling"
0006h "_CONFIGMG_Get_Device_ID_Size"
0007h "_CONFIGMG_Get_Device_ID"
0008h "_CONFIGMG_Get_Depth"
0009h "_CONFIGMG_Get_Private_DWord"
000Ah "_CONFIGMG_Set_Private_DWord"
000Bh "_CONFIGMG_Create_DevNode"
000Ch "_CONFIGMG_Query_Remove_SubTree"
000Dh "_CONFIGMG_Remove_SubTree"
000Eh "_CONFIGMG_Register_Device_Driver"
000Fh "_CONFIGMG_Register_Enumerator"
0010h "_CONFIGMG_Register_Arbitrator"
0011h "_CONFIGMG_Deregister_Arbitrator"
0012h "_CONFIGMG_Query_Arbitrator_Free_Size"
0013h "_CONFIGMG_Query_Arbitrator_Free_Data"
0014h "_CONFIGMG_Sort_NodeList"
0015h "_CONFIGMG_Yield"
0016h "_CONFIGMG_Lock"
0017h "_CONFIGMG_Unlock"
0018h "_CONFIGMG_Add_Empty_Log_Conf"
0019h "_CONFIGMG_Free_Log_Conf"
001Ah "_CONFIGMG_Get_First_Log_Conf"
001Bh "_CONFIGMG_Get_Next_Log_Conf"
001Ch "_CONFIGMG_Add_Res_Des"
001Dh "_CONFIGMG_Modify_Res_Des"
001Eh "_CONFIGMG_Free_Res_Des"
001Fh "_CONFIGMG_Get_Next_Res_Des"
0020h "_CONFIGMG_Get_Performance_Info"
0021h "_CONFIGMG_Get_Res_Des_Data_Size"
0022h "_CONFIGMG_Get_Res_Des_Data"
0023h "_CONFIGMG_Process_Events_Now"
0024h "_CONFIGMG_Create_Range_List"
0025h "_CONFIGMG_Add_Range"
0026h "_CONFIGMG_Delete_Range"
0027h "_CONFIGMG_Test_Range_Available"
0028h "_CONFIGMG_Dup_Range_List"
0029h "_CONFIGMG_Free_Range_List"
002Ah "_CONFIGMG_Invert_Range_List"
002Bh "_CONFIGMG_Intersect_Range_List"
002Ch "_CONFIGMG_First_Range"
002Dh "_CONFIGMG_Next_Range"
002Eh "_CONFIGMG_Dump_Range_List"
002Fh "_CONFIGMG_Load_DLVxDs"
0030h "_CONFIGMG_Get_DDBs"
0031h "_CONFIGMG_Get_CRC_CheckSum"
0032h "_CONFIGMG_Register_DevLoader"
0033h "_CONFIGMG_Reenumerate_DevNode"
0034h "_CONFIGMG_Setup_DevNode"
0035h "_CONFIGMG_Reset_Children_Marks"
0036h "_CONFIGMG_Get_DevNode_Status"
0037h "_CONFIGMG_Remove_Unmarked_Children"
0038h "_CONFIGMG_ISAPNP_To_CM"
0039h "_CONFIGMG_CallBack_Device_Driver"
003Ah "_CONFIGMG_CallBack_Enumerator"
003Bh "_CONFIGMG_Get_Alloc_Log_Conf"
003Ch "_CONFIGMG_Get_DevNode_Key_Size"
003Dh "_CONFIGMG_Get_DevNode_Key"
003Eh "_CONFIGMG_Read_Registry_Value"
003Fh "_CONFIGMG_Write_Registry_Value"
0040h "_CONFIGMG_Disable_DevNode"
0041h "_CONFIGMG_Enable_DevNode"
0042h "_CONFIGMG_Move_DevNode"
0043h "_CONFIGMG_Set_Bus_Info"
0044h "_CONFIGMG_Get_Bus_Info"
0045h "_CONFIGMG_Set_HW_Prof"
0046h "_CONFIGMG_Recompute_HW_Prof"
0047h "_CONFIGMG_Query_Change_HW_Prof"
0048h "_CONFIGMG_Get_Device_Driver_Private_DWord"
0049h "_CONFIGMG_Set_Device_Driver_Private_DWord"
004Ah "_CONFIGMG_Get_HW_Prof_Flags"
004Bh "_CONFIGMG_Set_HW_Prof_Flags"
004Ch "_CONFIGMG_Read_Registry_Log_Confs"
004Dh "_CONFIGMG_Run_Detection"
004Eh "_CONFIGMG_Call_At_Appy_Time"
004Fh "_CONFIGMG_Fail_Change_HW_Prof"
0050h "_CONFIGMG_Set_Private_Problem"
0051h "_CONFIGMG_Debug_DevNode"
0052h "_CONFIGMG_Get_Hardware_Profile_Info"
0053h "_CONFIGMG_Register_Enumerator_Function"
0054h "_CONFIGMG_Call_Enumerator_Function"
0055h "_CONFIGMG_Add_ID"
0056h "_CONFIGMG_Find_Range"
0057h "_CONFIGMG_Get_Global_State"
0058h "_CONFIGMG_Broadcast_Device_Change_Message"
0059h "_CONFIGMG_Call_DevNode_Handler"
005Ah "_CONFIGMG_Remove_Reinsert_All"
Note: the VxD services appear to be identical to the PM/V86 APIs on
INT 2F/AX=1684h
SeeAlso: #0992,#0995,INT 2F/AX=1684h/BX=0033h
--------W-20----Vx0034-----------------------
INT 20 P - Microsoft Windows - DWCFGMG.SYS - VxD SERVICES
VxD = 0034h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0994)
Values for DWCFGMG.SYS (VxD ID 0034h) service number:
00h "CM_GetVersion" get supported DDI version
Return: EAX = 00000000h if not installed
else
AH = major version number
AL = minor version number
EBX = number of devices controlled by DWCFGMG.SYS
01h "CM_GetConfig" get device configuration
EBX = device index
EDI -> buffer for configuration information (see #2362)
Return: EAX = status (0000h successful, 0001h index out of range)
02h "CM_LockConfig" lock device configuration
EDI -> configuration information (see #2362)
Return: EAX = status
0000h successful
0001h resource conflict
0002h invalid request
03h "CM_UnlockConfig" unlock device configuration
EDI -> configuration information (see #2362)
Return: EAX = status (0000h successful, 0001h invalid request)
04h "CME_QueryResources"
05h "CME_AllocResources"
06h "CME_DeallocResources"
SeeAlso: INT 2F/AX=1684h/BX=0034h
--------W-20----Vx0036-----------------------
INT 20 P - Microsoft Windows - VFBACKUP - VxD SERVICES
VxD = 0036h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0995)
Values for VFBACKUP (VxD ID 0036h) service number:
0000h get version
Return: CF clear
EAX = version (AH = major, AL = minor)
0001h "VFBACKUP_Lock_NEC"
0002h "VFBACKUP_UnLock_NEC"
0003h "VFBACKUP_Register_NEC"
0004h "VFBACKUP_Register_VFD"
0005h "VFBACKUP_Lock_All_Ports"
SeeAlso: #0993,#0996
--------W-20----Vx0037-----------------------
INT 20 P - Microsoft Windows - VMINI / ENABLE - VxD SERVICES
VxD = 0037h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0996)
Values for VMINI / ENABLE (VxD ID 0037h) service number:
0000h get version
Return: CF clear
EAX = version (AH = major, AL = minor)
0001h "VMINI_Update"
??? (performs VMMCall 1800Eh, then falls through to service 04h)
Return: EAX = system time???
0002h "VMINI_Status"
get current ???
Return: EAX = ???
0003h "VMINI_DisplayError" (schedules a global event via VMMCall 1800Eh)
Return: ???
0004h "VMINI_SetTimeStamp" (performs VMMCall 100CFh)
Return: EAX = system time
0005h "VMINI_Siren" (call ??? priority event)
Return: nothing
0006h "VMINI_RegisterAccess" (set ??? / get ???)
EDI -> buffer containing data to copy into VxD and space for results
Return: EDI buffer updated
0007h "VMINI_GetData"
EBX = ??? flags (bits 2,15,17,18 checked)
EDI -> ???
???
Return: ???
0008h "VMINI_ShutDownItem" (schedules a global event via VMMCall 1800Eh)
Return: ???
0009h "VMINI_RegisterSK" (get ??? data)
EDI -> buffer for data (see #0997)
Return: EDI buffer updated if large enough
SeeAlso: #0995,#0998,#2364 at INT 2F/AX=1684h/BX=0037h
Format of ENABLE.VXD ??? data:
Offset Size Description (Table 0997)
00h DWORD (ret) length of data, including this word
(call) length of buffer
04h DWORD -> 24-byte (or larger) buffer
08h DWORD -> 20-byte buffer
0Ch DWORD -> 260-byte buffer
10h DWORD -> 260-byte buffer
SeeAlso: #0996
--------W-20----Vx0038-----------------------
INT 20 P - Microsoft Windows - VCOND - VxD SERVICES
VxD = 0038h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 0998)
Values for VCOND (VxD ID 0038h) service number:
0000h get VCOND version
Return: CF clear
EAX = version (AH = major, AL = minor)
0001h "VCOND_Launch_ConApp_Inherited"
SeeAlso: #0999,#0996,#1000
(Table 0999)
Values for Windows95 VCOND (Vxd ID 0038h) Win32 service number:
00h get VCOND version
Return: EAX = version (AH = major, AL = minor)
...
34h ...last Win32 service for Windows95 SP1
SeeAlso: #0998
--------W-20----Vx003D-----------------------
INT 20 P - Microsoft Windows - BIOS - VxD SERVICES
VxD = 003Dh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1000)
Values for BIOS (VxD ID 003Dh) service number:
00h get version???
01h ???
02h ???
03h ???
SeeAlso: #0998,#1001
--------W-20----Vx003E-----------------------
INT 20 P - Microsoft Windows - WSOCK - VxD SERVICES
VxD = 003Eh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1001)
Values for WSOCK (VxD ID 003Eh) service number:
00h get WSOCK version
Return: CF clear
AH = major version
AL = minor version
EAX high word = 0000h
01h ???
EAX = ??? or 00000000h
Return: CF clear if successful
EAX = 00000000h
CF set on error
EAX = ???
02h ???
EAX = ??? or 00000000h
Return: ???
03h ???
04h ...last service for Windows95 SP1
SeeAlso: #1000,#1002
--------W-20----Vx0040-----------------------
INT 20 P - Microsoft Windows - IFSMgr - VxD SERVICES
VxD = 0040h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1002)
Values for IFSMGR (VxD ID 0040h) service number:
00h get version
01h "RegisterMount"
02h "RegisterNet"
03h "RegisterMailSlot"
04h "Attach"
05h "Detach"
06h "Get_NetTime"
07h "Get_DOSTime"
08h "SetupConnection"
09h "DerefConnection"
0Ah "ServerDOSCall"
0Bh "CompleteAsync"
0Ch "RegisterHeap"
0Dh "GetHeap"
0Eh "RetHeap"
0Fh "CheckHeap"
10h "CheckHeapItem"
11h "FillHeapSpare"
12h "Block"
13h "Wakeup"
14h "Yield"
15h "SchedEvent"
16h "QueueEvent"
17h "KillEvent"
18h "FreeIOReg"
19h "MakeMailSlot"
1Ah "DeleteMailSlot"
1Bh "WriteMailSlot"
1Ch "PopUp"
1Dh "printf"
1Eh "AssertFailed"
1Fh "LogEntry"
20h "DebugMenu"
21h "DebugVars"
22h "GetDebugString"
23h "GetDebugHexNum"
24h "NetFunction"
25h "DoDelAllUses"
26h "SetErrString"
27h "GetErrString"
28h "SetReqHook"
29h "SetPathHook"
2Ah "UseAdd"
2Bh "UseDel"
2Ch "InitUseAdd"
2Dh "ChangeDir"
2Eh "DelAllUses"
2Fh "CDROM_Attach"
30h "CDROM_Detach"
31h "Win32DupHandle"
32h "Ring0_FileIO"
33h "Toggle_Extended_File_Handle"
34h "IFSMgr_GetDrive_Info"
35h "IFSMgr_Ring0GetDriveInfo"
36h "IFSMgr_BlockNoEvents"
37h "IFSMgr_NetToDosTime"
38h "IFSMgr_DosToNetTime"
39h "IFSMgr_DosToWin32Time"
3Ah "IFSMgr_Win32ToDosTime"
3Bh "IFSMgr_NetToWin32Time"
3Ch "IFSMgr_Win32ToNetTime"
3Dh "IFSMgr_MetaMatch"
3Eh "IFSMgr_TransMatch"
3Fh "IFSMgr_CallProvider"
40h "UniToBCS"
41h "UniToBCSPath"
42h "BCSToUni"
43h "UniToUpper"
44h "UniCharToOEM"
45h "CreateBasis"
46h "MatchBasisName"
47h "AppendBasisTail"
48h "FcbToShort"
49h "ShortToFcb"
4Ah "IFSMgr_ParsePath"
4Bh "Query_PhysLock"
4Ch "_VolFlush"
4Dh "NotifyVolumeArrival"
4Eh "NotifyVolumeRemoval"
4Fh "QueryVolumeRemoval"
50h "IFSMgr_FSDUnmountCFSD"
51h "IFSMgr_GetConversionTablePtrs"
52h "IFSMgr_CheckAccessConflict"
53h "IFSMgr_LockFile"
54h "IFSMgr_UnlockFile"
55h "IFSMgr_RemoveLocks"
56h "IFSMgr_CheckLocks"
57h "IFSMgr_CountLocks"
58h "IFSMgr_ReassignLockFileInst"
59h "IFSMgr_UnassignLockList"
5Ah "IFSMgr_MountChildVolume"
5Bh "IFSMgr_UnmountChildVolume"
5Ch "IFSMgr_SwapDrives"
5Dh "IFSMgr_FSDMapFHtoIOREQ"
5Eh "IFSMgr_FSDParsePath"
5Fh "IFSMgr_FSDAttachSFT"
60h "IFSMgr_GetTimeZoneBias"
61h "IFSMgr_PNPEvent"
62h "IFSMgr_RegisterCFSD"
63h "IFSMgr_Win32MapExtendedHandleToSFT"
64h "IFSMgr_DbgSetFileHandleLimit"
65h "IFSMgr_Win32MapSFTToExtendedHandle"
66h "IFSMgr_FSDGetCurrentDrive"
67h "IFSMgr_InstallFileSystemApiHook"
68h "IFSMgr_RemoveFileSystemApiHook"
69h "IFSMgr_RunScheduledEvents"
6Ah "IFSMgr_CheckDelResource"
6Bh "IFSMgr_Win32GetVMCurdir"
6Ch "IFSMgr_SetupFailedConnection"
6Dh "_GetMappedErr"
6Eh "ShortToLossyFcb"
6Fh "IFSMgr_GetLockState"
70h "BcsToBcs"
71h "IFSMgr_SetLoopback"
72h "IFSMgr_ClearLoopback"
73h "IFSMgr_ParseOneElement"
74h "BcsToBcsUpper"
SeeAlso: #1001,#1003
--------W-20----Vx0041-----------------------
INT 20 P - Microsoft Windows - VCDFSD - VxD SERVICES
VxD = 0041h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1003)
Values for VCDFSD (VxD ID 0041h) service number:
00h get VCDFSD version???
01h ???
02h ???
03h ???
SeeAlso: #1002,#1004
--------W-20----Vx0048-----------------------
INT 20 P - Microsoft Windows - PERF - VxD SERVICES
VxD = 0048h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1004)
Values for PERF (VxD ID 0048h) service number:
00h get version
Return: CF clear
EAX = version (AH = major, AL = minor)
01h "PERF_Server_Register"
(creates/sets a registry key for the server)
02h "PERF_Server_Deregister"
end performance monitoring (deletes registry key for server)
03h "PERF_Server_Add_Stat"
start performance monitoring (creates/sets a registry key)
04h "PERF_Server_Remove_Stat"
end performance monitoring (deletes registry key)
SeeAlso: #1003,#1005
--------W-20----Vx011F-----------------------
INT 20 P - Microsoft Windows - VFLATD - VxD SERVICES
VxD = 011Fh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1005)
Values for VFLATD (VxD ID 011Fh) service number:
00h get VFLATD version???
01h ???
SeeAlso: #1004,#1006
--------W-20----Vx0449-----------------------
INT 20 P - Microsoft Windows - vjoyd - VxD SERVICES
VxD = 0449h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1006)
Values for vjoyd (VxD ID 0449h) service number:
00h get vjoyd version???
01h ???
SeeAlso: #1005,#1007
--------W-20----Vx044A-----------------------
INT 20 P - Microsoft Windows - mmdevldr - VxD SERVICES
VxD = 044Ah
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1007)
Values for mmdevldr (VxD ID 044Ah) service number:
00h get mmdevldr version???
01h ???
02h ???
03h ???
04h ???
05h ???
SeeAlso: #1006,#1008
--------W-20----Vx0480-----------------------
INT 20 P - Microsoft Windows - VNetSup - VxD SERVICES
VxD = 0480h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1008)
Values for VNetSup (VxD ID 0480h) service number:
00h get VNetSup version???
01h ???
02h ???
03h ???
04h ???
05h ???
06h ???
SeeAlso: #1007,#1009
--------W-20----Vx0481-----------------------
INT 20 P - Microsoft Windows - VREDIR - VxD SERVICES
VxD = 0481h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1009)
Values for VREDIR (VxD ID 0481h) service number:
0000h "VRedir_Get_Version"
0001h "VRedir_Register"
0002h "VRedir_MakeMailSlot"
0003h "VRedir_DeleteMailSlot"
0004h "VRedir_ServerEnum"
0010h ...last service for Windows95 SP1
SeeAlso: #1008,#1010
--------W-20----Vx0483-----------------------
INT 20 P - Microsoft Windows - VSHARE - VxD SERVICES
VxD = 0483h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1010)
Values for VSHARE (VxD ID 0483h) service number:
00h get VSHARE version???
SeeAlso: #1009,#1011
--------W-20----Vx0487-----------------------
INT 20 P - Microsoft Windows - NWLINK - VxD SERVICES
VxD = 0487h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1011)
Values for NWLINK (VxD ID 0487h) service number:
00h get NWLINK version???
01h ???
06h ...last service for Windows95 SP1
SeeAlso: #1010,#1012,#2329
--------W-20----Vx0488-----------------------
INT 20 P - Microsoft Windows - VTDI - VxD SERVICES
VxD = 0488h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1012)
Values for VTDI (VxD ID 0488h) service number:
00h get VTDI version???
01h ???
0Dh ...last service for Windows95 SP1
SeeAlso: #1011,#1013
--------W-20----Vx0489-----------------------
INT 20 P - Microsoft Windows - VIP - VxD SERVICES
VxD = 0489h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1013)
Values for VIP (VxD ID 0489h) service number:
00h get VIP version???
01h ???
08h ...last service for Windows95 SP1
SeeAlso: #1012,#1014
--------W-20----Vx048A-----------------------
INT 20 P - Microsoft Windows - MSTCP - VxD SERVICES
VxD = 048Ah
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1014)
Values for MSTCP (VxD ID 048Ah) service number:
00h get MSTCP version???
SeeAlso: #1013,#1015
--------W-20----Vx048B-----------------------
INT 20 P - Microsoft Windows - VCACHE - VxD SERVICES
VxD = 048Bh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1015)
Values for VCACHE (VxD ID 048Bh) service number:
0000h "VCACHE_Get_Version"
0001h "VCACHE_Register"
0002h "VCACHE_GetSize"
0003h "VCACHE_CheckAvail"
0004h "VCACHE_FindBlock"
0005h "VCACHE_FreeBlock"
0006h "VCACHE_MakeMRU"
0007h "VCACHE_Hold"
0008h "VCACHE_Unhold"
0009h "VCACHE_Enum"
000Ah "VCACHE_TestHandle"
000Bh "VCACHE_VerifySums"
000Ch "VCACHE_RecalcSums"
000Dh "VCACHE_TestHold"
000Eh "VCACHE_GetStats"
000Fh "VCache_Deregister"
0010h "VCache_AdjustMinimum"
0011h "VCache_SwapBuffers"
0012h "VCache_RelinquishPage"
0013h "VCache_UseThisPage"
0014h "_VCache_CreateLookupCache"
0015h "_VCache_CloseLookupCache"
0016h "_VCache_DeleteLookupCache"
0017h "_VCache_Lookup"
0018h "_VCache_UpdateLookup"
SeeAlso: #1014,#1016
--------W-20----Vx048E-----------------------
INT 20 P - Microsoft Windows - NWREDIR - VxD SERVICES
VxD = 048Eh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1016)
Values for NWREDIR (VxD ID 048Eh) service number:
00h get NWREDIR version???
01h ???
SeeAlso: #1015,#1017
--------W-20----Vx0491-----------------------
INT 20 P - Microsoft Windows - FILESEC - VxD SERVICES
VxD = 0491h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1017)
Values for FILESEC (VxD ID 0491h) service number:
00h get FILESEC version???
01h ???
10h ...last service for Windows95 SP1
SeeAlso: #1016,#1018
--------W-20----Vx0492-----------------------
INT 20 P - Microsoft Windows - NWSERVER - VxD SERVICES
VxD = 0492h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1018)
Values for NWSERVER (VxD ID 0492h) service number:
00h get NWSERVER version???
01h ???
02h ???
03h ???
SeeAlso: #1017,#1019
--------W-20----Vx0493-----------------------
INT 20 P - Microsoft Windows - MSSP / NWSP - VxD SERVICES
VxD = 0493h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1019)
Values for MSSP/NWSP (VxD ID 0493h) service number:
00h get NSSP / NWSP version???
01h ???
06h ...last service for Windows95 SP1
SeeAlso: #1018,#1020
--------W-20----Vx0494-----------------------
INT 20 P - Microsoft Windows - NSCL - VxD SERVICES
VxD = 0494h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1020)
Values for NSCL (VxD ID 0494h) service number:
00h get NSCL version???
01h ???
02h ???
SeeAlso: #1019,#1021
--------W-20----Vx0495-----------------------
INT 20 P - Microsoft Windows - AFVXD - VxD SERVICES
VxD = 0495h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1021)
Values for AFVXD (VxD ID 0495h) service number:
00h get version
Return: CF clear
AX = version (AH = high, AL = low)
01h ???
EAX -> ???
EBX -> ???
ECX = ???
Return: ???
02h ???
EAX -> ???
Return: ???
SeeAlso: #1020,#1022
--------W-20----Vx0496-----------------------
INT 20 P - Microsoft Windows - NDIS2SUP - VxD SERVICES
VxD = 0496h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier (see #2329)
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1022)
Values for NDIS2SUP (VxD ID 0496h) service number:
00h get NDIS2SUP version???
01h ???
SeeAlso: #1021,#1023
--------W-20----Vx0498-----------------------
INT 20 P - Microsoft Windows - Splitter - VxD SERVICES
VxD = 0498h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier (see #2329)
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1023)
Values for Splitter (VxD ID 0498h) service number:
00h get Splitter version
Return: CF clear
EAX = version (00000001h)
01h ???
02h ???
03h hook/unhook VMM "hook device service" service
EAX = request (0 = unhook, nonzero = hook)
Return: if EAX nonzero on entry, Splitter's service 04h replaces VMM
service 0090h; otherwise, default handler is restored
04h Splitter "hook device service" handler
SeeAlso: #1022,#1024
--------W-20----Vx0499-----------------------
INT 20 P - Microsoft Windows - PPPMAC - VxD SERVICES
VxD = 0499h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier (see #2329)
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1024)
Values for PPPMAC (VxD ID 0499h) service number:
00h ???
09h ...last service for Windows95 SP1
SeeAlso: #1023,#1025,#2329
--------W-20----Vx049A-----------------------
INT 20 P - Microsoft Windows - VDHCP - VxD SERVICES
VxD = 049Ah
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier (see #2329)
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1025)
Values for VDHCP (VxD ID 049Ah) service number:
00h get VDHCP version???
01h ???
02h ???
03h ???
SeeAlso: #1024,#1026
--------W-20----Vx049B-----------------------
INT 20 P - Microsoft Windows - VNBT - VxD SERVICES
VxD = 049Bh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier (see #2329)
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1026)
Values for VNBT (VxD ID 049Bh) service number:
00h get VNBT version???
SeeAlso: #1025,#1027
--------W-20----Vx049D-----------------------
INT 20 P - Microsoft Windows - LOGGER - VxD SERVICES
VxD = 049Dh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier (see #2329)
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1027)
Values for LOGGER (VxD ID 049Dh) service number:
00h get LOGGER version???
01h ???
02h ???
03h ???
04h ???
SeeAlso: #1026,#1028
--------W-20----Vx097C-----------------------
INT 20 P - Microsoft Windows - PCCARD - VxD SERVICES
VxD = 097Ch
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier (see #2329)
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#1028,#1032
(Table 1028)
Values for PCCARD (VxD ID 097Ch) service number:
0000h "PCCARD_Get_Version"
0001h "PCCARD_Card_Services"
SeeAlso: #1027,#1029
--------W-20----Vx3098-----------------------
INT 20 P - QEMM - VstlthD - VxD SERVICES
VxD = 3098h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1029)
Values for VStlthD (VxD ID 3098h) service number:
00h get version
Return: CF clear
EAX = version (AH = major, AL = BCD minor)
01h ???
02h get current ???
Return: CF clear
EDX = current value of ???
03h ???
SeeAlso: #1028,#1030
--------W-20----Vx30F6-----------------------
INT 20 P - Microsoft Windows - WSVV - VxD SERVICES
VxD = 30F6h
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1030)
Values for WSVV (VxD ID 30F6h) service number:
00h get WSVV version???
SeeAlso: #1029,#1031
--------W-20----Vx33FC-----------------------
INT 20 P - Microsoft Windows - APSIENUM - VxD SERVICES
VxD = 33FCh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1031)
Values for ASPIENUM (VxD ID 33FCh) service number:
00h get ASPIENUM version???
01h ???
02h ???
03h ???
SeeAlso: #1030,#1032
--------W-20----Vx357E-----------------------
INT 20 P - Microsoft Windows - DSOUND - VxD SERVICES
VxD = 357Eh
Note: the desired VxD and service number are identified by the data
immediately following the INT 20 instruction, as in:
INT 20h
DW service number
DW VxD identifier
SeeAlso: INT 2F/AX=1684h"DEVICE API",INT 30"Windows",#0961,#1032
(Table 1032)
Values for DSOUND (VxD ID 357Eh) service number:
00h get DSOUND version???
01h ???
02h ???
SeeAlso: #1031,#2329
--------G-21---------------------------------
INT 21 - COMTROL HOSTESS i/ISA DEBUGGER - GET SEGMENT FOR CONTROL PROGRAM USE
???
Return: AX = first segment available for control program use
SeeAlso: INT 20"COMTROL",INT 22"COMTROL"
--------D-2100-------------------------------
INT 21 - DOS 1+ - TERMINATE PROGRAM
AH = 00h
CS = PSP segment
Notes: Microsoft recommends using INT 21/AH=4Ch for DOS 2+
this function sets the program's return code (ERRORLEVEL) to 00h
execution continues at the address stored in INT 22 after DOS performs
whatever cleanup it needs to do (restoring the INT 22,INT 23,INT 24
vectors from the PSP assumed to be located at offset 0000h in the
segment indicated by the stack copy of CS, etc.)
if the PSP is its own parent, the process's memory is not freed; if
INT 22 additionally points into the terminating program, the
process is effectively NOT terminated
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=26h,AH=31h,AH=4Ch,INT 20,INT 22
--------D-2101-------------------------------
INT 21 - DOS 1+ - READ CHARACTER FROM STANDARD INPUT, WITH ECHO
AH = 01h
Return: AL = character read
Notes: ^C/^Break are checked, and INT 23 executed if read
^P toggles the DOS-internal echo-to-printer flag
^Z is not interpreted, thus not causing an EOF if input is redirected
character is echoed to standard output
standard input is always the keyboard and standard output the screen
under DOS 1.x, but they may be redirected under DOS 2+
SeeAlso: AH=06h,AH=07h,AH=08h,AH=0Ah
--------v-21010F-----------------------------
INT 21 - VIRUS - "Susan" - INSTALLATION CHECK
AX = 010Fh
Return: AX = 7553h ("Su") if resident
SeeAlso: INT 16/AH=DDh"VIRUS",INT 21/AX=0B56h
--------D-2102-------------------------------
INT 21 - DOS 1+ - WRITE CHARACTER TO STANDARD OUTPUT
AH = 02h
DL = character to write
Return: AL = last character output (despite the official docs which state
nothing is returned) (at least DOS 2.1-7.0)
Notes: ^C/^Break are checked, and INT 23 executed if pressed
standard output is always the screen under DOS 1.x, but may be
redirected under DOS 2+
the last character output will be the character in DL unless DL=09h
on entry, in which case AL=20h as tabs are expanded to blanks
if standard output is redirected to a file, no error checks (write-
protected, full media, etc.) are performed
SeeAlso: AH=06h,AH=09h
--------D-2103-------------------------------
INT 21 - DOS 1+ - READ CHARACTER FROM STDAUX
AH = 03h
Return: AL = character read
Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected
STDAUX is usually the first serial port
SeeAlso: AH=04h,INT 14/AH=02h,INT E0/CL=03h
--------D-2104-------------------------------
INT 21 - DOS 1+ - WRITE CHARACTER TO STDAUX
AH = 04h
DL = character to write
Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected
STDAUX is usually the first serial port
if STDAUX is busy, this function will wait until it becomes free
SeeAlso: AH=03h,INT 14/AH=01h,INT E0/CL=04h
--------D-2105-------------------------------
INT 21 - DOS 1+ - WRITE CHARACTER TO PRINTER
AH = 05h
DL = character to print
Notes: keyboard checked for ^C/^Break, and INT 23 executed if detected
STDPRN is usually the first parallel port, but may be redirected under
DOS 2+
if the printer is busy, this function will wait
SeeAlso: INT 17/AH=00h
--------D-2106-------------------------------
INT 21 - DOS 1+ - DIRECT CONSOLE OUTPUT
AH = 06h
DL = character (except FFh)
Return: AL = character output (despite official docs which state nothing is
returned) (at least DOS 2.1-7.0)
Notes: does not check ^C/^Break
writes to standard output, which is always the screen under DOS 1.x,
but may be redirected under DOS 2+
SeeAlso: AH=02h,AH=09h
--------D-2106--DLFF-------------------------
INT 21 - DOS 1+ - DIRECT CONSOLE INPUT
AH = 06h
DL = FFh
Return: ZF set if no character available
AL = 00h
ZF clear if character available
AL = character read
Notes: ^C/^Break are NOT checked
if the returned character is 00h, the user pressed a key with an
extended keycode, which will be returned by the next call of this
function
this function reads from standard input, which is always the keyboard
under DOS 1.x, but may be redirected under DOS 2+
although the return of AL=00h when no characters are available is not
documented, some programs rely on this behavior
SeeAlso: AH=0Bh
--------D-2107-------------------------------
INT 21 - DOS 1+ - DIRECT CHARACTER INPUT, WITHOUT ECHO
AH = 07h
Return: AL = character read from standard input
Notes: does not check ^C/^Break
standard input is always the keyboard under DOS 1.x, but may be
redirected under DOS 2+
if the interim console flag is set (see AX=6301h), partially-formed
double-byte characters may be returned
SeeAlso: AH=01h,AH=06h,AH=08h,AH=0Ah
--------D-2108-------------------------------
INT 21 - DOS 1+ - CHARACTER INPUT WITHOUT ECHO
AH = 08h
Return: AL = character read from standard input
Notes: ^C/^Break are checked, and INT 23 executed if detected
standard input is always the keyboard under DOS 1.x, but may be
redirected under DOS 2+
if the interim console flag is set (see AX=6301h), partially-formed
double-byte characters may be returned
SeeAlso: AH=01h,AH=06h,AH=07h,AH=0Ah,AH=64h"DOS 3.2+"
--------D-2109-------------------------------
INT 21 - DOS 1+ - WRITE STRING TO STANDARD OUTPUT
AH = 09h
DS:DX -> '$'-terminated string
Return: AL = 24h (the '$' terminating the string, despite official docs which
state that nothing is returned) (at least DOS 2.1-7.0 and
NWDOS)
Notes: ^C/^Break are checked, and INT 23 is called if either pressed
standard output is always the screen under DOS 1.x, but may be
redirected under DOS 2+
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=02h,AH=06h"OUTPUT"
--------D-210A-------------------------------
INT 21 - DOS 1+ - BUFFERED INPUT
AH = 0Ah
DS:DX -> buffer (see #1033)
Return: buffer filled with user input
Notes: ^C/^Break are checked, and INT 23 is called if either detected
reads from standard input, which may be redirected under DOS 2+
if the maximum buffer size (see #1033) is set to 00h, this call returns
immediately without reading any input
SeeAlso: AH=0Ch,INT 2F/AX=4810h
Format of DOS input buffer:
Offset Size Description (Table 1033)
00h BYTE maximum characters buffer can hold
01h BYTE (call) number of chars from last input which may be recalled
(ret) number of characters actually read, excluding CR
02h N BYTEs actual characters read, including the final carriage return
--------K-210A00-----------------------------
INT 21 - WCED v1.6+ - INSTALLATION CHECK
AX = 0A00h
DS:DX -> 6-byte buffer whose first two bytes must be 00h
Return: buffer offset 02h-05h filled with "Wced" if installed
Program: WCED is a free command-line editor and history utility by Stuart
Russell
SeeAlso: AH=FFh"CED"
--------D-210B-------------------------------
INT 21 - DOS 1+ - GET STDIN STATUS
AH = 0Bh
Return: AL = status
00h if no character available
FFh if character is available
Notes: ^C/^Break are checked, and INT 23 is called if either pressed
standard input is always the keyboard under DOS 1.x, but may be
redirected under DOS 2+
if the interim console flag is set (see AX=6301h), this function
returns AL=FFh if a partially-formed double-byte character is
available
SeeAlso: AH=06h"INPUT",AX=4406h
--------v-210B56-----------------------------
INT 21 - VIRUS - "Perfume" - INSTALLATION CHECK
AX = 0B56h
Return: AX = 4952h if resident
SeeAlso: AX=0D20h,INT 12/AX=4350h/BX=4920h,INT 13/AH=F2h,INT 21/AX=010Fh
--------D-210C-------------------------------
INT 21 - DOS 1+ - FLUSH BUFFER AND READ STANDARD INPUT
AH = 0Ch
AL = STDIN input function to execute after flushing buffer
other registers as appropriate for the input function
Return: as appropriate for the specified input function
Note: if AL is not one of 01h,06h,07h,08h, or 0Ah, the buffer is flushed but
no input is attempted
SeeAlso: AH=01h,AH=06h"INPUT",AH=07h,AH=08h,AH=0Ah
--------D-210D-------------------------------
INT 21 - DOS 1+ - DISK RESET
AH = 0Dh
Return: (DOS 6 only) CF clear (earlier versions preserve CF)
Notes: This function writes all modified disk buffers to disk, but does not
update the directory information (that is only done when files are
closed or a SYNC call is issued)
SeeAlso: AX=5D01h,INT 13/AH=00h,INT 2F/AX=1120h
--------v-210D20-----------------------------
INT 21 - VIRUS - "Crazy Imp" - INSTALLATION CHECK
AX = 0D20h
Return: AX = 1971h if resident
SeeAlso: AX=0B56h,AX=1812h,AX=2C2Ch,AX=710Dh,AH=30h/DX=ABCDh
--------D-210E-------------------------------
INT 21 - DOS 1+ - SELECT DEFAULT DRIVE
AH = 0Eh
DL = new default drive (00h = A:, 01h = B:, etc)
Return: AL = number of potentially valid drive letters
Notes: under Novell NetWare, the return value is always 32, the number of
drives that NetWare supports
under DOS 3.0+, the return value is the greatest of 5, the value of
LASTDRIVE= in CONFIG.SYS, and the number of drives actually present
on a DOS 1.x/2.x single-floppy system, AL returns 2 since the floppy
may be accessed as either A: or B:
otherwise, the return value is the highest drive actually present
DOS 1.x supports a maximum of 16 drives, 2.x a maximum of 63 drives,
and 3+ a maximum of 26 drives
under Novell DOS 7, this function returns the correct LASTDRIVE value
even when the undocumented LASTDRIVE=27..32 directive was used in
CONFIG.SYS
SeeAlso: AH=19h,AH=3Bh,AH=DBh
--------v-210E--DLAD-------------------------
INT 21 U - Novell DOS 7 - SDRes v27.03 - INSTALLATION CHECK
AH = 0Eh
DL = ADh
Return: AL = BAh if installed
Program: SDRes is the resident portion of the Search&Destroy antiviral by
Fifth Generation Systems, as bundled with Novell DOS 7
Note: SDRes will terminate programs which test for the presence of viruses
using interrupt-based installation calls, saying that the program
may be infected
SeeAlso: AH=0Eh/DL=AEh,AH=0Eh/DL=AFh,AH=4Ah/BX=00B6h,INT 13/AX=A759h
--------v-210E--DLAE-------------------------
INT 21 U - Novell DOS 7 - SDRes v27.03 - CLEAR ??? FLAG
AH = 0Eh
DL = AEh
SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AFh,INT 13/AX=A759h
--------v-210E--DLAF-------------------------
INT 21 U - Novell DOS 7 - SDRes v27.03 - SET ??? FLAG
AH = 0Eh
DL = AFh
SeeAlso: AH=0Eh/DL=ADh,AH=0Eh/DL=AEh,INT 13/AX=A759h
--------D-210F-------------------------------
INT 21 - DOS 1+ - OPEN FILE USING FCB
AH = 0Fh
DS:DX -> unopened File Control Block (see #1034,#1035)
Return: AL = status
00h successful
FFh file not found or access denied
Notes: (DOS 3.1+) file opened for read/write in compatibility mode
an unopened FCB has the drive, filename, and extension fields filled
in and all other bytes cleared
not supported by MS Windows 3.0 DOSX.EXE DOS extender
DR DOS checks password attached with AX=4303h
(FAT32 drive) this function will only succeed for creating a volume
label; FAT32 does not support FCBs for file I/O
BUG: APPEND for DOS 3.3+ corrupts DX if the file is not found
SeeAlso: AH=10h,AH=16h,AH=3Dh,AX=4303h
Format of File Control Block:
Offset Size Description (Table 1034)
00h BYTE drive number (0 = default, 1 = A, etc)
FFh is not allowed (signals extended FCB, see #1035)
01h 8 BYTEs blank-padded file name
09h 3 BYTEs blank-padded file extension
0Ch WORD current block number
0Eh WORD logical record size
10h DWORD file size
14h WORD date of last write (see #1352 at AX=5700h)
16h WORD time of last write (see #1351 at AX=5700h) (DOS 1.1+)
18h 8 BYTEs reserved (see #1036,#1037,#1038,#1039,#1040)
20h BYTE record within current block
21h DWORD random access record number (if record size is > 64 bytes, high
byte is omitted)
SeeAlso: #1035
Format of Extended File Control Block (XFCB):
Offset Size Description (Table 1035)
00h BYTE FFh signature for extended FCB
01h 5 BYTEs reserved
06h BYTE file attribute if extended FCB
07h 36 BYTEs standard FCB (all offsets are shifted by seven bytes)
SeeAlso: #0942
Format of FCB reserved field for DOS 1.0:
Offset Size Description (Table 1036)
16h WORD location in directory (if high byte = FFh, low byte is device
ID)
18h WORD number of first cluster in file
1Ah WORD current absolute cluster number on disk
1Ch WORD current relative cluster number within file
(0 = first cluster of file, 1 = second cluster, etc.)
1Eh BYTE dirty flag (00h = not dirty)
1Fh BYTE unused
Format of FCB reserved field for DOS 1.10-1.25:
Offset Size Description (Table 1037)
18h BYTE bit 7: set if logical device
bit 6: not dirty
bits 5-0: disk number or logical device ID
19h WORD starting cluster number on disk
1Bh WORD current absolute cluster number on disk
1Dh WORD current relative cluster number within file
1Fh BYTE unused
Format of FCB reserved field for DOS 2.x:
Offset Size Description (Table 1038)
18h BYTE bit 7: set if logical device
bit 6: set if open???
bits 5-0: ???
19h WORD starting cluster number on disk
1Bh WORD ???
1Dh BYTE ???
1Eh BYTE ???
1Fh BYTE ???
Format of FCB reserved field for DOS 3.x:
Offset Size Description (Table 1039)
18h BYTE number of system file table entry for file
19h BYTE attributes
bits 7,6: 00 = SHARE.EXE not loaded, disk file
01 = SHARE.EXE not loaded, character device
10 = SHARE.EXE loaded, remote file
11 = SHARE.EXE loaded, local file or device
bits 5-0: low six bits of device attribute word
---SHARE.EXE loaded, local file---
1Ah WORD starting cluster of file on disk
1Ch WORD (DOS 3.x) offset within SHARE of sharing record
(see #1323 at AH=52h)
1Eh BYTE file attribute
1Fh BYTE ???
---SHARE.EXE loaded, remote file---
1Ah WORD number of sector containing directory entry (see #1041)
1Ch WORD relative cluster within file of last cluster accessed
1Eh BYTE absolute cluster number of last cluster accessed
1Fh BYTE ???
---SHARE.EXE not loaded---
1Ah BYTE (low byte of device attribute word AND 0Ch) OR open mode
1Bh WORD starting cluster of file
1Dh WORD number of sector containing directory entry (see #1041)
1Fh BYTE number of directory entry within sector
Note: if FCB opened on character device, DWORD at 1Ah is set to the address
of the device driver header, then the BYTE at 1Ah is overwritten.
SeeAlso: #1332
Format of FCB reserved field for DOS 5.0:
Offset Size Description (Table 1040)
18h BYTE number of system file table entry for file
19h BYTE attributes
bits 7,6: 00 = SHARE.EXE not loaded, disk file
01 = SHARE.EXE not loaded, character device
10 = SHARE.EXE loaded, remote file
11 = SHARE.EXE loaded, local file or device
bits 5-0: low six bits of device attribute word
---SHARE.EXE loaded, local file---
1Ah WORD starting cluster of file on disk
1Ch WORD unique sequence number of sharing record
1Eh BYTE file attributes
1Fh BYTE unused???
---SHARE.EXE loaded, remote file---
1Ah WORD network handle
1Ch DWORD network ID
---SHARE not loaded, local device---
1Ah DWORD pointer to device driver header (see #1332)
1Eh 2 BYTEs unused???
---SHARE not loaded, local file---
1Ah BYTE extra info
bit 7: read-only attribute from SFT
bit 6: archive attribute from SFT
bits 5-0: high bits of sector number
1Bh WORD starting cluster of file
1Dh WORD low word of sector number containing directory entry
(see #1041)
1Fh BYTE number of directory entry within sector
--------D-2110-------------------------------
INT 21 - DOS 1+ - CLOSE FILE USING FCB
AH = 10h
DS:DX -> File Control Block (see #1034)
Return: AL = status
00h successful
FFh failed
Notes: a successful close forces all disk buffers used by the file to be
written and the directory entry to be updated
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=16h,AH=3Eh
--------D-2111-------------------------------
INT 21 - DOS 1+ - FIND FIRST MATCHING FILE USING FCB
AH = 11h
DS:DX -> unopened FCB (see #1034), may contain '?' wildcards
Return: AL = status
00h successful
[DTA] unopened FCB for first matching file
FFh no matching filename, or bad FCB
Notes: the type of the returned FCB depends on whether the input FCB was a
normal or an extended FCB
the data returned in the DTA (disk transfer area) is actually the
drive number (or extended FCB header and drive number) followed by
the file's directory entry (see #1041); this format happens to be
compatible with an unopened FCB
for extended FCBs with search attribute 08h, the volume label (if any)
will be returned even if the current directory is not the root dir.
DOS 3.0+ also allows the '*' wildcard
the search FCB must not be modified if AH=12h will be used to continue
searching; DOS 3.3 has set the following parts of the FCB:
0Ch BYTE ???
0Dh WORD directory entry number of matching file
0Fh WORD cluster number of current directory
11h 4 BYTEs ???
15h BYTE drive number (1=A:)
this function is used by many copy protection schemes to obtain the
starting cluster of a file
SeeAlso: AH=12h,AH=1Ah,AH=4Eh,INT 2F/AX=111Bh
Format of DOS directory entry:
Offset Size Description (Table 1041)
00h 8 BYTEs blank-padded filename
08h 3 BYTEs blank-padded file extension
0Bh BYTE attributes
0Ch 10 BYTEs (MS-DOS 1.0-6.22) reserved
(DR-DOS) used to store file password
(MS-DOS 7/Windows95) additional file times (see #1042)
16h WORD time of creation or last update (see #1351 at AX=5700h)
18h WORD date of creation or last update (see #1352 at AX=5700h)
1Ah WORD starting cluster number (see also AX=440Dh/CX=0871h)
1Ch DWORD file size
SeeAlso: #1043,#2315,#2316
Format of MS-DOS 7/Windows95 additional file times:
Offset Size Description (Table 1042)
00h BYTE reserved
01h BYTE 10-millisecond units past creation time below
02h WORD file creation time
04h WORD file creation date
06h WORD last-access date
08h WORD (FAT32) high word of starting cluster number
Note: this data is stored beginning at offset 0Ch in a standard directory
entry
SeeAlso: #1041
Format of MS-DOS 7/Windows95 long-filename directory entry:
Offset Size Description (Table 1043)
00h BYTE LFN record sequence (bit 6 set if last record for file)
01h 10 BYTEs long filename, first part
0Bh BYTE 0Fh (otherwise impossible file attribute, used as signature)
0Ch BYTE reserved??? (00h)
0Dh BYTE checksum for short filename
10h 10 BYTEs long filename, second part
1Ah WORD first cluster number (always 0000h for LFN records)
1Ch 4 BYTEs long filename, third part
Notes: long-filename entries are always stored in the directory just prior
to the short-name entry for a file
multiple LFN records are used if the long filename does not fit into
a single record
the short-filename checksum byte is computed by adding up the
eleven bytes of the short filename, rotating the intermediate
sum right one bit before adding the next character
the long filename is encoded as 16-bit Unicode characters; for most
filenames, this appears in the directory as the ASCII character
followed by 00h
SeeAlso: #1041
--------D-2112-------------------------------
INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
AH = 12h
DS:DX -> unopened FCB (see #1034)
Return: AL = status
00h successful
Disk Transfer Area filled with unopened FCB
FFh no more matching filenames
Note: (see AH=11h)
assumes that successful FindFirst executed on search FCB before call
SeeAlso: AH=1Ah,AH=4Fh,INT 2F/AX=111Ch
--------D-2113-------------------------------
INT 21 - DOS 1+ - DELETE FILE USING FCB
AH = 13h
DS:DX -> unopened FCB (see #1034), filename filled with template for
deletion ('?' wildcards allowed)
Return: AL = status
00h one or more files successfully deleted
FFh no matching files or all were read-only or locked
Notes: DOS 1.25+ deletes everything in the current directory (including
subdirectories) and sets the first byte of the name to 00h (entry
never used) instead of E5h if called on an extended FCB with
filename '???????????' and bits 0-4 of the attribute set (bits 1 and
2 for DOS 1.x). This may have originally been an optimization to
minimize directory searching after a mass deletion (DOS 1.25+ stop
the directory search upon encountering a never-used entry), but can
corrupt the filesystem under DOS 2+ because subdirectories are
removed without deleting the files they contain.
currently-open files should not be deleted
MS-DOS allows deletion of read-only files with an extended FCB, whereas
Novell NetWare, DR DOS 6, and Novell DOS 7/OpenDOS 7.01 do not
this function reportedly generates an intentional trap under OS/2 v4.x
(Warp4)
SeeAlso: AH=41h,INT 2F/AX=1113h
--------D-2114-------------------------------
INT 21 - DOS 1+ - SEQUENTIAL READ FROM FCB FILE
AH = 14h
DS:DX -> opened FCB (see #1034)
Return: AL = status
00h successful
01h end of file (no data)
02h segment wrap in DTA
03h end of file, partial record read
Disk Tranfer Area filled with record read from file
Notes: reads a record of the size specified in the FCB beginning at the
current file position, then updates the current block and current
record fields in the FCB
if a partial record was read, it is zero-padded to the full size
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=15h,AH=1Ah,AH=3Fh"DOS",INT 2F/AX=1108h
--------D-2115-------------------------------
INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
AH = 15h
DS:DX -> opened FCB (see #1034)
Disk Tranfer Area contains record to be written
Return: AL = status
00h successful
01h disk full
02h segment wrap in DTA
Notes: writes a record of the size specified in the FCB beginning at the
current file position, then updates the current block and current
record fields in the FCB
if less than a full sector is written, the data is placed in a DOS
buffer to be written out at a later time
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=0Fh,AH=14h,AH=1Ah,AH=40h,INT 2F/AX=1109h
--------D-2116-------------------------------
INT 21 - DOS 1+ - CREATE OR TRUNCATE FILE USING FCB
AH = 16h
DS:DX -> unopened FCB (see #1034), wildcards not allowed
Return: AL = status
00h successful
FFh directory full or file exists and is read-only or locked
Notes: if file already exists, it is truncated to zero length
if an extended FCB is used, the file is given the attribute in the
FCB; this is how to create a volume label in the disk's root dir
not supported by MS Windows 3.0 DOSX.EXE DOS extender
(FAT32 drive) this function will only succeed for creating a volume
label; FAT32 does not support FCBs for file I/O
SeeAlso: AH=0Fh,AH=10h,AH=3Ch
--------D-2117-------------------------------
INT 21 - DOS 1+ - RENAME FILE USING FCB
AH = 17h
DS:DX -> modified FCB (see also #1034)
the old filename ('?' wildcards OK) is in the standard location
while the new filename ('?' wildcards OK, no drive) is stored
in the 11 bytes beginning at offset 11h
Return: AL = status
00h successfully renamed
FFh no matching files,file is read-only, or new name already exists
Notes: subdirectories may be renamed using an extended FCB with the
appropriate attribute, as may volume labels
DR DOS checks password attached with AX=4303h before permitting rename
SeeAlso: AH=0Fh,AH=13h,AX=4303h,AH=56h,INT 2F/AX=1111h
--------D-2118-------------------------------
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
AH = 18h
Return: AL = 00h
Note: corresponds to the CP/M BDOS function "get bit map of logged drives",
which is meaningless under MS-DOS
SeeAlso: AH=1Dh,AH=1Eh,AH=20h,AX=4459h,INT 60/DI=0513h
--------v-211812------------------------
INT 21 - VIRUS - "Tasha Yar" - INSTALLATION CHECK
AX = 1812h
Return: AL = 00h if resident
DX = 4310h if resident
SeeAlso: INT 21/AX=0B56h"VIRUS",INT 21/AX=187Fh,INT 21/AX=2C2Ch"VIRUS"
--------v-21187FBX4453-----------------------
INT 21 - VIRUS - "DS-3783" -INSTALLATION CHECK
AX = 187Fh
BX = 4453h
Return: BX = 87A1h if resident
SeeAlso: AX=1812h"VIRUS",AX=18FFh"VIRUS"
--------v-2118FF-----------------------------
INT 21 - VIRUS - "Pathogen:SMEG" - INSTALLATION CHECK
AX = 18FFh
Return: AX = E701h if resident
SeeAlso: INT 21/AX=1812h"VIRUS",INT 21/AX=2080h"VIRUS"
--------D-2119-------------------------------
INT 21 - DOS 1+ - GET CURRENT DEFAULT DRIVE
AH = 19h
Return: AL = drive (00h = A:, 01h = B:, etc)
Note: Novell NetWare uses the fact that DOS 2.x COMMAND.COM issues this call
from a particular location every time it starts a command to
determine when to issue an automatic EOJ
SeeAlso: AH=0Eh,AH=47h,AH=BBh
--------D-211A-------------------------------
INT 21 - DOS 1+ - SET DISK TRANSFER AREA ADDRESS
AH = 1Ah
DS:DX -> Disk Transfer Area (DTA)
Notes: the DTA is set to PSP:0080h when a program is started
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=11h,AH=12h,AH=2Fh,AH=4Eh,AH=4Fh
--------D-211B-------------------------------
INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR DEFAULT DRIVE
AH = 1Bh
Return: AL = sectors per cluster (allocation unit)
CX = bytes per sector
DX = total number of clusters
DS:BX -> media ID byte (see #1044)
Notes: under DOS 1.x, DS:BX points at an actual copy of the FAT; later
versions return a pointer to a copy of the FAT's ID byte
this function may not be properly supported on CD-ROMs and other
installable file systems (use AX=4402h"CD-ROM" for CD-ROMs
instead)
SeeAlso: AH=1Ch,AH=36h
(Table 1044)
Values for media ID byte:
FFh floppy, double-sided, 8 sectors per track (320K)
FEh floppy, single-sided, 8 sectors per track (160K)
FDh floppy, double-sided, 9 sectors per track (360K)
FCh floppy, single-sided, 9 sectors per track (180K)
FAh HP 200LX D: ROM disk, 16 sectors per track (995K)
HP 200LX E: (Stacker host drive ???)
F9h floppy, double-sided, 15 sectors per track (1.2M)
floppy, double-sided, 9 sectors per track (720K,3.5")
F8h hard disk
F0h other media
(e.g. floppy, double-sized, 18 sectors per track -- 1.44M,3.5")
--------D-211C-------------------------------
INT 21 - DOS 1+ - GET ALLOCATION INFORMATION FOR SPECIFIC DRIVE
AH = 1Ch
DL = drive (00h = default, 01h = A:, etc)
Return: AL = sectors per cluster (allocation unit), or FFh if invalid drive
CX = bytes per sector
DX = total number of clusters
DS:BX -> media ID byte (see #1044)
Notes: under DOS 1.x, DS:BX points at an actual copy of the FAT; later
versions return a pointer to a copy of the FAT's ID byte
on a DBLSPACE drive, the total number of clusters is based on the
estimated compression ratio
this function may not be properly supported on CD-ROMs and other
installable file systems (use AX=4402h"CD-ROM" for CD-ROMs
instead)
SeeAlso: AH=1Bh,AH=36h
--------D-211D-------------------------------
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
AH = 1Dh
Return: AL = 00h
Note: corresponds to the CP/M BDOS function "get bit map of read-only
drives", which is meaningless under MS-DOS
SeeAlso: AH=18h,AH=1Eh,AH=20h,AX=4459h
--------D-211E-------------------------------
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
AH = 1Eh
Return: AL = 00h
Note: corresponds to the CP/M BDOS function "set file attributes" which was
meaningless under MS-DOS 1.x
SeeAlso: AH=18h,AH=1Dh,AH=20h
--------D-211F-------------------------------
INT 21 - DOS 1+ - GET DRIVE PARAMETER BLOCK FOR DEFAULT DRIVE
AH = 1Fh
Return: AL = status
00h successful
DS:BX -> Drive Parameter Block (DPB) (see #1045 for DOS 1.x,
AH=32h for DOS 2+)
FFh invalid drive
Note: this call was undocumented prior to the release of DOS 5.0; however,
only the DOS 4.0+ version of the DPB has been documented
SeeAlso: AH=32h,AX=7302h
Format of DOS 1.1 and MS-DOS 1.25 drive parameter block:
Offset Size Description (Table 1045)
00h BYTE sequential device ID
01h BYTE logical drive number (0=A:)
02h WORD bytes per sector
04h BYTE highest sector number within a cluster
05h BYTE shift count to convert clusters into sectors
06h WORD starting sector number of first FAT
08h BYTE number of copies of FAT
09h WORD number of directory entries
0Bh WORD number of first data sector
0Dh WORD highest cluster number (number of data clusters + 1)
0Fh BYTE sectors per FAT
10h WORD starting sector of directory
12h WORD address of allocation table
Note: the DOS 1.0 table is the same except that the first and last fields
are missing; see INT 21/AH=32h for the DOS 2+ version
--------D-2120-------------------------------
INT 21 - DOS 1+ - NULL FUNCTION FOR CP/M COMPATIBILITY
AH = 20h
Return: AL = 00h
Note: corresponds to the CP/M BDOS function "get/set default user
(sublibrary) number", which is meaningless under MS-DOS
SeeAlso: AH=18h,AH=1Dh,AH=1Eh,AX=4459h
--------v-212080-----------------------------
INT 21 - VIRUS - "New-Year" - INSTALLATION CHECK
AX = 2080h
Return: AH = 00h if resident (normal DOS return would be AX = 2000h)
SeeAlso: INT 21/AX=18FFh"VIRUS",INT 21/AX=2C2Ch"VIRUS"
--------D-2121-------------------------------
INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
AH = 21h
DS:DX -> opened FCB (see #1034)
Return: AL = status
00h successful
01h end of file, no data read
02h segment wrap in DTA, no data read
03h end of file, partial record read
Disk Tranfer Area filled with record read from file
Notes: the record is read from the current file position as specified by the
random record and record size fields of the FCB
the file position is not updated after reading the record
if a partial record is read, it is zero-padded to the full size
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=14h,AH=22h,AH=27h,AH=3Fh"DOS"
--------D-2122-------------------------------
INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
AH = 22h
DS:DX -> opened FCB (see #1034)
Disk Transfer Area contains record to be written
Return: AL = status
00h successful
01h disk full
02h segment wrap in DTA
Notes: the record is written to the current file position as specified by the
random record and record size fields of the FCB
the file position is not updated after writing the record
if the record is located beyond the end of the file, the file is
extended but the intervening data remains uninitialized
if the record only partially fills a disk sector, it is copied to a
DOS disk buffer to be written out to disk at a later time
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=15h,AH=21h,AH=28h,AH=40h
--------D-2123-------------------------------
INT 21 - DOS 1+ - GET FILE SIZE FOR FCB
AH = 23h
DS:DX -> unopened FCB (see #1034), wildcards not allowed
Return: AL = status
00h successful (matching file found)
FCB random record field filled with size in records, rounded up
to next full record
FFh failed (no matching file found)
Notes: not supported by MS Windows 3.0 DOSX.EXE DOS extender
MS-DOS returns nonsense if the FCB record number field is set to a very
large positive number, and status FFh if negative; DR DOS returns the
correct file size in both cases
BUG: APPEND for DOS 3.3+ corrupts DX if the file is not found
SeeAlso: AH=42h
--------D-2124-------------------------------
INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
AH = 24h
DS:DX -> opened FCB (see #1034)
Notes: computes the random record number corresponding to the current record
number and record size, then stores the result in the FCB
normally used when switching from sequential to random access
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=21h,AH=27h,AH=42h
--------D-2125-------------------------------
INT 21 - DOS 1+ - SET INTERRUPT VECTOR
AH = 25h
AL = interrupt number
DS:DX -> new interrupt handler
Notes: this function is preferred over direct modification of the interrupt
vector table
some DOS extenders place an API on this function, as it is not
directly meaningful in protected mode
under DR DOS 5.0+, this function does not use any of the DOS-internal
stacks and may thus be called at any time
Novell NetWare (except the new DOS Requester) monitors the offset of
any INT 24 set, and if equal to the value at startup, substitutes
its own handler to allow handling of network errors; this introduces
the potential bug that any program whose INT 24 handler offset
happens to be the same as COMMAND.COM's will not have its INT 24
handler installed
SeeAlso: AX=2501h,AH=35h
--------E-212501-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - RESET DOS EXTENDER DATA STRUCTURES
AX = 2501h
SS = application's original SS or DS (FlashTek X-32VM)
Return: CF clear if successful
CF set on error
caller is operating on X-32 stack (FlashTek X-32VM)
Notes: Phar Lap uses INT 21/AH=25h as the entry point for all 386/DOS-Extender
system calls. Only available when directly using 386/DOS-Extender or
a compatible DOS extender, or when using a product that was created
using 386-DOS/Extender or a compatible
this function is also supported by FlashTek X-32VM
SeeAlso: AH=30h"Phar Lap"
--------E-212502-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - GET PROTECTED-MODE INTERRUPT VECTOR
AX = 2502h
CL = interrupt number
Return: CF clear
ES:EBX = CS:EIP of protected-mode interrupt handler
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0204h
--------E-212503-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE INTERRUPT VECTOR
AX = 2503h
CL = interrupt number
Return: CF clear
EBX = CS:IP of real-mode interrupt handler
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2502h,AX=2504h,AH=35h,INT 31/AX=0200h
--------E-212504-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - SET PROTECTED-MODE INTERRUPT VECTOR
AX = 2504h
CL = interrupt number
DS:EDX = CS:EIP of protected-mode interrupt handler
Return: CF clear
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2502h,AX=2505h,INT 31/AX=0205h
--------E-212505-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - SET REAL-MODE INTERRUPT VECTOR
AX = 2505h
CL = interrupt number
EBX = CS:IP of real-mode interrupt handler
Return: CF clear
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2503h,AX=2504h,INT 31/AX=0201h
--------E-212506-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CNTRL IN PR. MODE
AX = 2506h
CL = interrupt number
DS:EDX = CS:EIP of protected-mode interrupt handler
Return: CF clear
Notes: this function modifies both the real-mode low-memory interrupt
vector table and the protected-mode Interrupt Descriptor Table (IDT)
interrupts occurring in real mode are resignaled in protected mode
this function is also supported by FlashTek X-32VM
--------E-212507-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
AX = 2507h
CL = interrupt number
DS:EDX = CS:EIP of protected-mode interrupt handler
EBX = CS:IP of real-mode interrupt handler
Return: CF clear
Notes: interrupts are disabled until both vectors have been modified
this function is also supported by FlashTek X-32VM
SeeAlso: AX=2504h,AX=2505h
--------E-212508-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT LINEAR BASE ADDRESS
AX = 2508h
BX = segment selector
Return: CF clear if successful
ECX = linear base address of segment
CF set if invalid segment selector
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2509h
--------E-212509-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - CONVERT LINEAR TO PHYSICAL ADDRESS
AX = 2509h
EBX = linear address to convert
Return: CF clear if successful
ECX = physical address (carry flag clear)
CF set if linear address not mapped in page tables
SeeAlso: AX=2508h
--------E-212509-----------------------------
INT 21 P - FlashTek X-32VM - GET SYSTEM SEGMENTS AND SELECTORS
AX = 2509h
Return: CF clear
EAX high word = default DS
AX = alias for 16-bit data segment
BX = real mode code segment
EDX high word = selector covering full 4GB address space
DX = default SS
ESI high word = PSP selector
SI = environment selector
--------E-21250A-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - MAP PHYSICAL MEMORY AT END OF SEGMENT
AX = 250Ah
ES = segment selector in the Local Descriptor Table (LDT) of segment
to modify
EBX = physical base address of memory to map (multiple of 4K)
ECX = number of physical 4K pages to map
Return: CF clear if successful
EAX = 32-bit offset in segment of mapped memory
CF set on error
EAX = error code
08h insufficient memory to create page tables
09h invalid segment selector
SeeAlso: INT 31/AX=0800h
--------E-21250C-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - GET HARDWARE INTERRUPT VECTORS
AX = 250Ch
Return: CF clear
AL = base interrupt vector for IRQ0-IRQ7
AH = base interrupt vector for IRQ8-IRQ15
BL = interrupt vector for BIOS print screen function (Phar Lap only)
Note: this function is also supported by FlashTek X-32VM
SeeAlso: INT 31/AX=0400h,INT 67/AX=DE0Ah
--------E-21250D-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
AX = 250Dh
Return: CF clear
EAX = CS:IP of real-mode callback procedure (see #1046) that will
call through from real mode to a protected-mode routine
EBX = 32-bit real-mode address of intermode call data buffer
ECX = size in bytes of intermode call data buffer
ES:EDX = protected-mode address of intermode call data buffer
Notes: this function is also supported by FlashTek X-32VM
X-32VM guarantees the intermode buffer to be at least 4 KB
SeeAlso: AX=250Eh
(Table 1046)
Call Phar Lap real-mode callback with:
STACK: DWORD offset to protected-mode code
WORD placeholder for protected-mode CS
DWORD pointer to selector structure (see #1047)
or 0000h:0000h for defaults
var parameters for protected-mode procedure
Return: via FAR return
Format of Phar Lap selector structure:
Offset Size Description (Table 1047)
00h WORD protected-mode GS selector
02h WORD protected-mode FS selector
04h WORD protected-mode ES selector
06h WORD protected-mode DS selector
--------E-21250E-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE
AX = 250Eh
EBX = CS:IP of real-mode procedure to call
ECX = number of two-byte words to copy from protected-mode stack
to real-mode stack
Return: CF clear if successful
all segment registers unchanged
all general registers contain values set by real-mode procedure
all other flags set as they were left by real-mode procedure
stack unchanged
CF set on error
EAX = error code
01h not enough real-mode stack space
Note: this function is also supported by FlashTek X-32VM; under X-32VM, the
call will fail if ECX > 0000003Fh
SeeAlso: AX=250Dh,AX=2510h,AH=E1h"OS/286",INT 31/AX=0301h
--------E-21250F-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
AX = 250Fh
ES:EBX = 48-bit protected-mode address to convert
ECX = 00000000h or length of data in bytes
Return: CF clear if successful (address < 1MB and contiguous)
ECX = 32-bit real-mode MS-DOS address
CF set on error (address >= 1MB or not contiguous)
ECX = linear address
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2510h
--------E-212510-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - CALL REAL-MODE PROCEDURE, REGISTERS
AX = 2510h
EBX = CS:IP of real-mode procedure to call
ECX = number of two-byte words to copy to protected-mode stack to
real-mode stack
DS:EDX -> pointer to parameter block (see #1048)
Return: CF clear if successful
all segment registers unchanged,
EDX unchanged
all other general registers contain values set by real-mode proc
all other flags are set as they were left by real-mode procedure
real-mode register values are returned in the parameter block
CF set on error
EAX = error code
01h not enough real-mode stack space
Note: unlike most of the preceding 25xxh functions, this one is not
supported by FlashTek X-32VM
SeeAlso: AX=250Eh,AX=250Fh
Format of Phar Lap real-mode call parameter block:
Offset Size Description (Table 1048)
00h WORD real-mode DS value
02h WORD real-mode ES value
04h WORD real-mode FS value
06h WORD real-mode GS value
08h DWORD real-mode EAX value
0Ch DWORD real-mode EBX value
10h DWORD real-mode ECX value
14h DWORD real-mode EDX value
--------E-212511-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
AX = 2511h
DS:EDX -> parameter block (see #1049)
Return: all segment registers unchanged
EDX unchanged
all other registers contain values set by the real-mode int handler
the flags are set as they were left by the real-mode interrupt handler
real-mode register values are returned in the parameter block
Note: this function is also supported by FlashTek X-32VM
SeeAlso: AX=2503h,AX=2505h,AX=250Eh,AH=E3h"OS/286",INT 31/AX=0300h
Format of Phar Lap real-mode interrupt parameter block:
Offset Size Description (Table 1049)
00h WORD interrupt number
02h WORD real-mode DS value
04h WORD real-mode ES value
06h WORD real-mode FS value
08h WORD real-mode GS value
0Ah DWORD real-mode EAX value
0Eh DWORD real-mode EDX value
Note: all other real-mode values set from protected-mode registers
--------E-212512-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
AX = 2512h
DS:EDX -> pointer to ASCIZ program name
ES:EBX -> pointer to parameter block (see #1051)
ECX = size in bytes of LDT buffer
Return: CF clear if successful
EAX = number of segment descriptors in LDT
CF set on error
EAX = error code (see #1050)
SeeAlso: AX=2517h
(Table 1050)
Values for Phar Lap error code:
02h file not found or path invalid
05h access denied
08h insufficient memory
0Ah environment invalid
0Bh invalid file format
80h LDT too small
Format of Phar Lap program load parameter block:
Offset Size Description (Table 1051)
Input:
00h DWORD 32-bit offset of environment string
04h WORD segment of environment string
06h DWORD 32-bit offset of command-tail string
0Ah WORD segment of command-tail string
0Ch DWORD 32-bit offset of LDT buffer (size in ECX)
10h WORD segment of LDT buffer
Output:
12h WORD real-mode paragraph address of PSP (see also AH=26h)
14h WORD real/protected mode flag
0000h real mode
0001h protected mode
16h DWORD initial EIP value
1Ah WORD initial CS value
1Ch DWORD initial ESP value
20h WORD initial SS value
22h WORD initial DS value
24h WORD initial ES value
26h WORD initial FS value
28h WORD initial GS value
--------E-212513-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - ALIAS SEGMENT DESCRIPTOR
AX = 2513h
BX = segment selector of descriptor in GDT or LDT
CL = access-rights byte for alias descriptor
CH = use-type bit (USE16 or USE32) for alias descriptor
Return: CF clear if successful
AX = segment selector for created alias
CF set on error
EAX = error code
08h insufficient memory (can't grow LDT)
09h invalid segment selector in BX
--------E-212514-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - CHANGE SEGMENT ATTRIBUTES
AX = 2514h
BX = segment selector of descriptor in GDT or LDT
CL = new access-rights byte
CH = new use-type bit (USE16 or USE32)
Return: CF clear if successful
CF set on error
EAX = error code
09h invalid selector in BX
SeeAlso: AX=2515h,INT 31/AX=0009h
--------E-212515-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - GET SEGMENT ATTRIBUTES
AX = 2515h
BX = segment selector of descriptor in GDT or LDT
Return: CF clear if successful
CL = access-rights byte for segment
CH = use-type bit (USE16 or USE32)
ECX<16-31> destroyed
CF set on error
EAX = error code
09h invalid segment selector in BX
SeeAlso: AX=2514h
--------E-212516-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender v2.2+ - FREE ALL MEMORY OWNED BY LDT
AX = 2516h
Return: CF clear
Note: this function must be called from Ring 0 or the CS descriptor is freed
--------E-212517-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender v2.1c+ - GET INFO ON DOS DATA BUFFER
AX = 2517h
Return: CF clear
ES:EBX -> data buffer (protected mode address)
ECX -> data buffer (real mode address)
EDX = size of data buffer in bytes
Note: the data buffer's address changes after calls to AX=2512h and AX=252Ah
SeeAlso: AX=2512h,AX=252Ah,AX=2530h
--------E-212518-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender 2.1c+ - SPECIFY HANDLER FOR MOVED SEGMENTS
AX = 2518h
ES:EBX -> function to call when a segment is moved
Return: CF clear
ES:EBX -> previous handler
--------E-212519-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - GET ADDITIONAL MEMORY ERROR INFO
AX = 2519h
Return: CF clear
EAX = error code
0000h no error
0001h out of physical memory
0002h out of swap space (unable to grow swap file)
0003h out of LDT entries and unable to grow LDT
0004h unable to change extended memory allocation mark
FFFFFFFFh paging disabled
Note: VMM is the Virtual Memory Manager option
--------E-21251A-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - LOCK PAGES IN MEMORY
AX = 251Ah
EDX = number of 4k pages to lock
if BL = 00h
ECX = linear address of first page to lock
if BL = 01h
ES:ECX -> pointer to first page to lock
Return: CF clear if successful
CF set on error
EAX = error code
08h insufficient memory
09h invalid address range
SeeAlso: AX=251Bh,AX=EB06h,INT 31/AX=0600h
--------E-21251B-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - UNLOCK PAGES
AX = 251Bh
EDX = number of pages to unlock
if BL = 00h
ECX = linear address of first page to unlock
if BL = 01h
ES:ECX -> pointer to first page to unlock
Return: CF clear if successful
CF set on error
EAX = error code
09h invalid address range
SeeAlso: AX=251Ah,AX=EB07h,INT 31/AX=0601h
--------E-21251C-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM v2.1c+ - FREE PHYSICAL MEMORY PAGES
AX = 251Ch
BH = preservation flag (00h preserve contents, 01h discard contents)
EDX = number of pages to free
BL = address type
00h linear address
ECX = linear address of first page to be freed
01h pointer
ES:ECX -> first page to be freed
Return: CF clear if successful
CF set on error
EAX = error code
08h memory error, swap space full, no VMM or DPMI
09h invalid address
--------E-21251D-----------------------------
INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - READ PAGE-TABLE ENTRY
AX = 251Dh
BL = address type
00h linear address
ECX = linear address of page table entry to read
01h pointer
ES:ECX -> page table entry to read
Return: CF clear if successful
EAX = contents of page table entry
CF set on error
EAX = error code
09h invalid address or NOPAGE option set
78h invalid under DPMI
Note: this function is obsolete; use AX=252Bh/BH=09h instead
SeeAlso: AX=251Eh,AX=252Bh/BH=09h,AX=EB00h,INT 31/AX=0506h
--------E-21251E-----------------------------
INT 21 OP - Phar Lap 386/DOS-Extender VMM v2.1c - WRITE PAGE-TABLE ENTRY
AX = 251Eh
BL = address type
00h linear address
ECX = linear address of page table entry to read
01h pointer
ES:ECX -> page table entry to read
EDX = new value for page table entry
Return: CF clear if successful
CF set on error
EAX = error code
09h invalid address or NOPAGE option set
82h not compatible with DPMI
Note: this call is obsolete; use AX=252Bh/BH=0Ah instead
SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah,INT 31/AX=0507h
--------E-21251F-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
AX = 251Fh
BL = address type
00h linear address
ECX = linear address of first page table entry
EDX = linear address of second page table entry
01h pointer
ES:ECX -> first page table entry
ES:EDX -> second page table entry
Return: CF clear if successful
CF set on error
EAX = error code
09h invalid address or NOPAGE option set
82h not compatible with DPMI
SeeAlso: AX=251Dh,AX=251Eh
--------E-212520-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
AX = 2520h
DS:EDX -> pointer to buffer at least 100 bytes in size (see #1052)
BL = 0 (don't reset VM stats), 1 (reset VM stats)
Return: carry flag clear
Format of Phar Lap VM statistics buffer:
Offset Size Description (Table 1052)
00h DWORD VM status
0001h VM subsystem is present
0000h VM not present
04h DWORD "nconvpg" number of conventional memory pages available
08h DWORD "nbimpg" number of Compaq built-in memory pages available
0Ch DWORD "nextpg" total number of extended memory pages
10h DWORD "extlim" extender memory pages limit
14h DWORD "aphyspg" number of physical memory pages allocated to appl
18h DWORD "alockpg" number of locked pages owned by application
1Ch DWORD "sysphyspg" number physical memory pages allocated to system
20h DWORD "nfreepg" number of free physical pages; approx if EMS VCPI
24h DWORD linear address of beginning of application address space
28h DWORD linear address of end of application address space
2Ch DWORD number of seconds since last time VM stats were reset
30h DWORD number of page faults since last time
34h DWORD number of pages written to swap file since last time
38h DWORD number of reclaimed pages (page faults on swapped pages)
3Ch DWORD number of virtual pages allocated to the application
40h DWORD size in pages of swap file
44h DWORD number of system pages allocated with EMS calls
48h DWORD minimum number of conventional memory pages
4Ch DWORD maximum size in pages to which swap file can be increased
50h DWORD "vmflags"
bit 0 = 1 if page fault in progress
---v4.0+ ---
54h DWORD number of physical pages guaranteed to be free
58h DWORD number of free physical pages currently available
5Ch DWORD size in pages of largest free block of memory (including disk
swap space)
60h DWORD reserved
--------E-212521-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEM USAGE
AX = 2521h
EBX = max 4k pages of physical extended memory which program may use
Return: CF clear if successful
EBX = maximum limit in pages
ECX = minimum limit in pages
CF set on error
EAX = error code
08h insufficient memory or -nopage switch used
SeeAlso: AX=2522h
--------E-212522-----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY ALTERNATE PAGE-FAULT HANDLR
AX = 2522h
ES:EBX -> alternate handler for page faults
Return: CF clear
ES:EBX -> previous page-fault handler
SeeAlso: AX=2523h
--------E-212523-----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - SPECIFY OUT-OF-SWAP-SPACE HANDLER
AX = 2523h
???
Return: ???
Note: this function takes a DWORD pointer and a DWORD pointer to a DWORD
pointer as arguments
SeeAlso: AX=2522h
--------E-212524-----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v2.2+ - INSTALL PAGE-REPLACEMENT HANDLERS
AX = 2524h
???
Return: ???
Note: this function takes three DWORD pointers and three DWORD pointers to
DWORD pointers as arguments
--------E-212525-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENT'L MEM USAGE
AX = 2525h
EBX = limit in 4k pages of physical conventional memory which program
may use
Return: CF clear if successful
EBX = maximum limit in pages
ECX = minimum limit in pages
CF set on error
EAX = error code
08h insufficient memory or -nopage switch used
SeeAlso: AX=2521h
--------E-212526-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
AX = 2526h
???
Return: ???
Notes: details are not yet available
this function takes a pointer to the configuration buffer (see #1053)
and a poitner to a BYTE as arguments
Format of Phar Lap configuration buffer:
Offset Size Description (Table 1053)
00h DWORD flags 1 (see #1054)
04h DWORD flags 2 (unused through v5.0)
08h DWORD flags 3 (unused through v5.0)
0Ch DWORD 386|DOS-Extender major version
10h DWORD 386|DOS-Extender minor version
14h DWORD first letter of text after minor version number in version str
18h DWORD beta flag (00h normal release, 01h beta release)
1Ch DWORD processor (3 = 386, 4 = 486)
20h DWORD coprocessor (4 = none, 6 = 287, 7 = 387/486)
24h DWORD Weitek coprocessor flag (0 = none, 1 = present)
28h DWORD machine type (0 = IBM PC compatible, 1 = NEC 9800 series)
2Ch DWORD machine class
IBM: bus type (0=ISA, 1=MCA, 2=XT, 3=EISA)
NEC: 0=normal mode, 1=high-res mode
30h DWORD VCPI flag (0 = none, 1 = present)
34h DWORD -WEITEK/-1167 switch (0 = AUTO, 1 = ON, 2 = OFF)
38h DWORD -MINREAL setting
3Ch DWORD -MAXREAL setting
40h DWORD -MINIBUF setting
44h DWORD -MAXIBUF setting
48h DWORD size in bytes of DOS call data buffer
4Ch DWORD number of interrupt stacks (-NISTACK)
50h DWORD interrupt stack size (-ISTKSIZE)
54h DWORD -REALBREAK setting
58h DWORD -CALLBUFS
5Ch DWORD -HWIVEC
60h DWORD -PRIVEC
64h DWORD -INTMAP
68h DWORD -PRIMAP
6Ch DWORD VCPI: master 8259 interrupt vector base (IRQ0 mapping)
70h DWORD VCPI: slave 8259 interrupt vector base (IRQ8 mapping)
74h DWORD BIOS print screen interrupt vector (0 if NEC)
78h DWORD -EXTLOW setting
7Ch DWORD -EXTHIGH setting
80h DWORD lowest physical extended-memory address allocatable
84h DWORD highest physical extended-memory address allocatable + 1
88h DWORD special memory's physical base address (00000000h if none)
8Ch DWORD special memory size in bytes (00000000h if none)
90h DWORD -MAXVCPIMEM setting
94h DWORD -VSCAN
98h DWORD -SWAPCHK (0 = OFF, 1 = ON, 2 = FORCE, 3 = MAX)
9Ch DWORD -CODESIZE setting
A0h DWORD minimum swap file size (-MINSWFSIZE)
A4h DWORD maximum swap fiel size (-MAXSWFSIZE)
A8h DWORD page replacement policy (0 = LFU, 1 = NUR)
ACh DWORD number of GDT entries (-NGDTENT)
B0h DWORD number of LDT entries (-NLDTENT)
B4h DWORD program's privilege level (0-3)
---386|DOS-Extender v3.0+ ---
B8h DWORD -LOCKSTACK setting
BCh DWORD -MAXEXTMEM
C0h DWORD -MAXXMSMEM
C4h DWORD -MAXPGMMEM
C8h DWORD -DATATHRESHOLD
CCh DWORD virtual memory manager flag (0 = not present, 1 = present)
D0h DWORD Cyrix coprocessor flag (0 = no Cyrix EMC387, 1 = present)
D4h DWORD -CYRIX setting (0 = AUTO, 1 = ON, 2 = OFF)
D8h DWORD DPMI flag (0 = not present, 1 = present)
DCh DWORD DPMI major version
E0h DWORD DPMI minor version
E4h DWORD DPMI capabilities flags (see #1055)
E8h DWORD VCPI major version
ECh DWORD VCPI minor version
F0h WORD VCPI: IRQ0-7 physical base interrupt vector
F2h WORD VCPI: IRQ8-15 physical base interrupt vector
F4h DWORD XMS flag (0 = none, 1 = present)
F8h DWORD XMS major version
FCh DWORD XMS minor version
100h WORD application's CS selector
102h WORD application's DS selector
104h WORD application's PSP selector
106h WORD application's environment selector
108h WORD selector mapping entire first megabyte
10Ah WORD selector mapping text video memory
10Ch WORD selector mapping video memory (text for IBM, graphics for NEC)
10Eh WORD selector mapping Weitek address space, 0000h if not present
110h WORD selector mapping Cyrix EMC387 address space, 0000h if none
112h WORD reserved (0)
114h DWORD real-mode FAR entry point to call to switch to protected mode
with no saved context
118h DWORD size of LDT in bytes
---386|DOS-Extender v5.0+ ---
11Ch DWORD Windows flag (0 = not present, 1 = Windows present)
120h DWORD Windows major version
124h DWORD Windows minor version
128h DWORD Windows mode (0 = real/standard, 1 = enhanced)
12Ch DWORD OS/2 flag (0 = not present, 1 = OS/2 present)
130h DWORD OS/2 major version
134h DWORD OS/2 minor version
138h 50 DWORDs reserved (0)
Bitfields for flags 1:
Bit(s) Description (Table 1054)
0 -NOPAGE specified
1 -A20 specified
2 -VDISK specified
3 -XT specified
4 -AT specified
5 -MCA specified
6 -EISA specified
7 -NORMRES specified (NEC only)
8 -HIGHRES specified (NEC only)
9 set if -SWFGROW1ST, clear if -NOSWFGROW1ST
10 -NOVM specified
11 -SAVEREGS specified
12 unused (clear)
13 -NOVCPI specified
14 -NOMUL specified
15 -NOBMCHK specified
16 -NOSPCLMEM or -NOBIM
17 -NOPGEXP specified
18 -SWAPDEFDISK specified
---v3.0+ ---
19 -SAVEINTS specified
20 -NOLOAD specified
21 -PAGELOG specified
22 -OPENDENY specified
23 -ERRATA17 specified
---v4.1+ ---
24 -NESTDPMI specified
25 -NONESTDPMI specified
26 -NODPMI specified
27 -NOPCDWEITEK specified
---v4.2+ ---
28 -WININT21 specified
Bitfields for DPMI capabilities flags:
Bit(s) Description (Table 1055)
0 paging supported
1 physical device mapping
2 conventional memory mapping
3 exceptions restartable
--------E-212527-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - EN/DISABLE STATE SAVE ON INTERRUPTS
AX = 2527h
EBX = new status (00h disabled, 01h enabled)
Return: CF clear
EBX = previous state save flag
SeeAlso: AX=2528h
--------E-212528-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - READ REGISTERS AFTER CTRL-C INT
AX = 2528h
DS:EBX -> buffer for registers (see #1056)
Return: CF clear if successful
DS:EBX buffer filled
CF set on error
EAX = error code
83h interrupt state save not enabled
84h no active interrupt
SeeAlso: AX=2527h
Format of Phar Lap buffer for registers:
Offset Size Description (Table 1056)
00h 8 BYTEs unused
08h 4 DWORDs EAX,EBX,ECX,EDX
18h 4 DWORDs ESI,EDI,EBP,ESP
28h 6 WORDs CS,DS,SS,ES,FS,GS
34h DWORD EIP
38h DWORD EFLAGS
--------E-212529-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - LOAD FLAT MODEL .EXP or .REX FILE
AX = 2529h
???
Return: ES:EBX -> parameter block (see #1057)
???
Note: details not available at this time
SeeAlso: AX=252Ah
Format of Phar Lap program load parameter block:
Offset Size Description (Table 1057)
00h DWORD initial EIP
04h WORD initial CS
06h DWORD initial ESP
0Ah WORD initial SS
0Ch 4 WORDs initial DS, ES, FS, GS
14h DWORD minimum size in bytes of program segment
18h DWORD bytes of additional memory allocated
1Ch DWORD flags
bit 0: child linked with -UNPRIVILEGED
---v6.0+ ---
bit 1: child is PE file instead of .EXP
bit 2: loaded file is a DLL
bits 3-31 reserved
---v6.0+ ---
20h DWORD module handles (PE files only)
24h 7 DWORDs reserved (0)
--------E-21252A-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM - NEW LOAD PROGRAM FOR DEBUG
AX = 252Ah
DS:EDX -> ASCIZ program name
ES:EBX -> parameter block (see #1051)
ECX = size of LDT buffer in bytes
ESI = bit flags
bit 0: allow demand paging rather than loading entire program
bit 1: demand page from swap file rather than from .EXP
Return: CF clear if successful
EAX = VMM handle or FFFFFFFFh if none
ECX = number of descriptors in LDT buffer
CF set on error
EAX = error code
02h file error
EBX = file error code (see #1058)
ECX = DOS error code if EBX=1,2,3, or 8
08h insufficient memory
EBX = memory error code (see #1059)
80h LDT buffer too small
87h called twice without intervening call to AX=2531h
SeeAlso: AX=2512h,AX=2517h,AX=2529h,AX=2531h
(Table 1058)
Values for Phar Lap file error code:
01h DOS open error
02h DOS seek error
03h DOS read error
04h not an .EXP or .REX file
05h invalid file format
06h -OFFSET is not a multiple of 64K
07h -NOPAGE incompatible with -REALBREAK/-OFFSET
08h DOS error loading .EXE file
(Table 1059)
Values for Phar Lap memory error code:
01h out of physical memory
02h out of swap space
04h unable to change extended memory allocation
05h -MAXPGMMEM exceeded
06h insufficient low memory to REALBREAK value
07h insufficient low memory for PSP and environment
--------E-21252BBH00-------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE UNMAPPED PAGES
AX = 252Bh
BH = 00h
???
Return: ???
--------E-21252BBH01-------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE ALLOCATED PAGES
AX = 252Bh
BH = 01h
???
Return: ???
--------E-21252BBH02-------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender - CREATE PHYSICAL DEVICE PAGES
AX = 252Bh
BH = 02h
???
Return: ???
--------E-21252BBH03-------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender - MAP DATA FILE
AX = 252Bh
BH = 03h
???
Return: ???
SeeAlso: AX=252Bh/BH=0Bh
--------E-21252BBH04-------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender - GET PAGE TYPES
AX = 252Bh
BH = 04h
???
Return: ???
Note: returns one word per page
SeeAlso: #1060
Bitfields for Phar Lap page information:
Bit(s) Description (Table 1060)
7 mapped to read/write data file
6 mapped to read-only data file
5 swapped to disk
4 locked
3-0 page type
0 unmapped
1 allocated
2 physical device page
--------E-21252B-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - VIRTUAL MEMORY MANAGEMENT - PAGE LOCKING
AX = 252Bh
BH = function
05h lock pages
06h unlock pages
BL = address type
00h linear address
ECX = linear start address of memory region
01h segmented address
ES:ECX -> start of memory region
EDX = size of memory region in bytes
Return: CF clear if successful
CF set on error
Note: this function is also supported by FlashTek X-32VM; if X-32 is not
using virtual memory, this function always succeeds
--------E-21252B-----------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender - FREE PHYSICAL PAGES
AX = 252Bh
BH = function (07h,08h)
???
Return: ???
--------E-21252BBH09-------------------------
INT 21 P - Phar Lap 386/DOS-Extender v4.1 - GET PAGETABLE ENTRY/PAGE TABLE INFO
AX = 252Bh
BH = 09h
BL = subfunction
00h get page table entry by linear address
ECX = linear address for which to get page table entry
01h get page table entry by logical address
ES:ECX = address for which to get page table entry
Return: CF clear if successful
EAX = page table entry
EBX = additional page table information
CF set on error
EAX = error code
0009h invalid address
0082h running under DPMI
SeeAlso: AX=251Dh,AX=252Bh/BH=0Ah
--------E-21252BBH0A-------------------------
INT 21 P - Phar Lap 386/DOS-Extender v4.1 - SET PAGETABLE ENTRY/PAGE TABLE INFO
AX = 252Bh
BH = 0Ah
BL = subfunction
00h set page table entry for linear address
ECX = linear address for which to get page table entry
01h set page table entry for logical address
ES:ECX = address for which to get page table entry
ESI = page table entry
EDI = additional page table information
Return: CF clear if successful
CF set on error
EAX = error code
0009h invalid address
0082h running under DPMI
SeeAlso: AX=252Bh/BH=09h
--------E-21252BBH0B-------------------------
INT 21 P - Phar Lap 386/DOS-Extender v4.1+ - MAP DATA FILE AT FILE OFFSET
AX = 252Bh
BH = 0Bh
BL = subfunction
00h by linear address
ECX = linear address at which to map data file
01h by logical address
ES:ECX = logical address at which to map data file
EDX = number of bytes to map
DS:ESI -> mapping structure (see #1061)
DS:EDI -> ASCIZ filename
Return: CF clear if successful
CF set on error
EAX = error code
0002h file error
ECX = phase (01h opening file, 02h seeking, 03h reading)
EDX = error code returned by DOS
0009h invalid address
0081h invalid parameters or 386|VMM not present
0086h all 386|VMM file handles already in use
SeeAlso: AX=252Bh/BH=03h,AX=252Bh/BH=09h
Format of Phar Lap mapping structure:
Offset Size Description (Table 1061)
00h DWORD starting file offset to be mapped
04h DWORD DOS file access and sharing modes (see #1091 at INT 21/AH=3Dh)
--------E-21252C-----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ADD UNMAPPED PAGES AT END OF SEGMENT
AX = 252Ch
BX = segment selector
ECX = number of 4K pages to add
Return: CF clear if successful
EAX = offset in segment of beginning of unmapped pages
CF set on error
EAX = error code
08h insufficent memory
09h invalid selector
82h not supported by current DPMI
--------E-21252D-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - CLOSE VMM FILE HANDLE
AX = 252Dh
EBX = VMM file handle
Return: CF clear if successful
CF set on error
EAX = error code (81h invalid VMM handle)
--------E-21252E-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM v2.3+ - GET/SET VMM PARAMETERS
AX = 252Eh
CL = direction (00h get parameters, 01h set parameters)
DS:EBX -> parameter buffer (see #1062)
Return: CF clear if successful
CF set on error
EAX = error code (81h bad parameter value)
Format of Phar Lap VMM parameter buffer:
Offset Size Description (Table 1062)
00h DWORD flags
bit 0: page fault logging enabled
---v5.0+ ---
bit 1: swap extender to disk during DOS EXEC call
bit 2: don't zero allocated memory
04h DWORD scan period for page aging, in milliseconds
08h DWORD maximum size (in bytes) to check on each page scan
0Ch 52 BYTEs unused
--------E-21252F-----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - WRITE RECORD TO VMM PAGE LOG FILE
AX = 252Fh
DS:EBX -> data to be written
CX = size of data in bytes
Return: CF clear if successful
CF set on error
EAX = error code (85h no page log file or not 386/VMM)
--------E-212530-----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v2.3+ - SET SIZE OF BUFFER FOR DOS CALLS
AX = 2530h
ECX = size of data buffer in bytes (1024 to 65536)
Return: CF clear if successful
CF set on error
EAX = error code
08h insufficient low memory
81h invalid size
SeeAlso: AX=2517h
--------E-212531-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0 - READ/WRITE LDT DESCRIPTOR
AX = 2531h
BX = segment selector
ECX = direction (00h read, 01h write)
DS:EDX -> 8-byte buffer for descriptor contents
Return: CF clear if successful
CF set on error
EAX = error code
81h invalid selector
82h DPMI running, or not a code or data segment
--------E-212532-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - GET EXCEPTION HANDLER VECTOR
AX = 2532h
CL = exception number (00h-0Fh)
Return: CF clear if successful
ES:EBX = CS:EIP of current exception handler
CF set on error (CL > 0Fh)
Notes: this call is also supported by the FlashTek X-32VM extender
this function is incompatible with 386|VMM; use AX=2522h instead
SeeAlso: AX=2522h,AX=2533h
--------E-212533-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - SET EXCEPTION HANDLER VECTOR
AX = 2533h
CL = exception number (00h-0Fh)
DS:EDX = CS:EIP of new exception handler
Return: CF clear if successful
CF set on error (CL > 0Fh)
Notes: this call is also supported by the FlashTek X-32VM extender
this function is incompatible with 386|VMM; use AX=2522h instead
SeeAlso: AX=2522h,AX=2532h
--------E-212534-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - GET INTERRUPT FLAG
AX = 2534h
Return: CF clear
EAX = interrupt state (00h disabled, 01h enabled)
--------E-212535-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - READ/WRITE SYSTEM REGISTERS
AX = 2535h
EBX = direction (00h read registers, 01h write)
DS:EDX -> system register record (see #1063)
Return: CF clear
Note: this call is only available under MS Windows if PHARLAP.386 VDD is
installed
Format of Phar Lap system register record:
Offset Size Description (Table 1063)
00h DWORD CR0
04h 4 DWORDs DR0,DR1,DR2,DR3
14h 2 DWORDs reserved
1Ch 2 DWORDs DR6,DR7
24h 3 DWORDs reserved
--------E-212536----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0+ - MIN/MAX EXTENDED/CONV MEMORY USAGE
AX = 2536h
EBX = bit flags
bit 0: modifying conventional memory rather than extended memory
bit 1: setting maximum memory usage rather than minimum
ECX = new limit in 4K pages
Return: CF clear if successful
EAX = new limit
CF set on error
EAX = error code (08h memory error or -NOPAGE set)
EBX = maximum limit in pages
ECX = minimum limit in pages
--------E-212537----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - ALLOCATE DOS MEMORY ABOVE DOS BUFFER
AX = 2537h
BX = number of paragraphs to allocate
Return: CF clear if successful
AX = real-mode segment of allocated block
CF set on error
AX = error code
07h MS-DOS memory chain corrupted
08h insufficient low memory
BX = size in paragraphs of largest free block
SeeAlso: AH=48h
--------E-212538----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - READ PROTMODE REGS AFTER SFTWARE INT
AX = 2538h
DS:EBX -> buffer for registers (see #1056)
ECX = register record to retrieve
00h first interrupt state
01h next interrupt state
EDX = handle for current interrupt state
Return: CF clear if successful
DS:EBX buffer filled
EDX = handle of current interrupt state
ESI = number of interrupt which occurred
CF set on error
EAX = error code
81h invalid handle in EDX
83h register saving not enabled
84h no more interrupt states
SeeAlso: AX=2527h,AX=2528h
--------E-212539----------------------------
INT 21 P - Phar Lap 386/DOS-Ext VMM v3.0 - GET OFFSET OF .EXP FILE HEADER
AX = 2539h
BX = MS-DOS file handle for open file
Return: CF clear if successful
EAX = offset of .EXP header in file
CF set on error
EAX = error code (02h file error)
EBX = file error code
02h DOS error seeking
03h DOS error reading
04h invalid file type
05h invalid file format
ECX = DOS error code if EBX=02h or 03h
current file position in file modified
--------E-21253A----------------------------
INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - INSTALL MOD. SEG FAILURE HANDLER
AX = 253Ah
ES:EBX -> function to be called when INT 21/AH=4Ah is about to return
an error
Return: CF clear
ES:EBX -> previous handler
SeeAlso: AH=4Ah
--------E-21253B----------------------------
INT 21 P - Phar Lap 386/DOS-Extender v3.0+ - JUMP TO REAL MODE CODE, NO CONTEXT
AX = 253Bh
DS:EBX -> buffer containing register contents (see #1056)
Return: never returns
SeeAlso: AX=2528h
--------E-21253C-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender VMM v3.0+ - SHRINK 386|VMM SWAP FILE
AX = 253Ch
Return: CF clear
EAX = old size of swap file in bytes
EBX = new size of swap file in bytes
--------E-21253D-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender v4.0+ - READ/WRITE IDT DESCRIPTOR
AX = 253Dh
BL = interrupt number
ECX = direction (0 = read, 1 = write)
DS:EDX -> 8-byte buffer for descriptor
Return: CF clear if successful
DS:EDX filled if reading
CF set on error
EAX = error code (0082h if running under DPMI)
Desc: access hardware-level IDT rather than the internal 386/DOS-Extender
shadow IDT
Notes: this call will always fail under DPMI because it is not possible to
access the IDT
the descriptor is not checked when writing
this call can normally be used only by programs running in ring 0
because the processor does not allow an interrupt to be vectored to
a less privileged ring
--------E-21253F-----------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - ALLOCATE LDT DESCRIPTOR
AX = 253Fh
BX = LDT descriptor to allocate (0000h for any)
???
Return: ???
--------E-212540-----------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FORCE ALIAS OF SEGMENT
AX = 2540h
???
Return: ???
--------E-212544-----------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - FREE DLL
AX = 2544h
???
Return: ???
--------E-212545-----------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET/SET PROCEDURE ADDRESS
AX = 2545h
ECX = direction (00h get, 01h set)
???
Return: ???
--------E-212546-----------------------------
INT 21 Pu - Phar Lap 386/DOS-Extender v6.0+ - GET MODULE HANDLE
AX = 2546h
???
Return: ???
--------E-2125C0-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - ALLOCATE MS-DOS MEMORY BLOCK
AX = 25C0h
BX = number of 16-byte paragraphs of MS-DOS memory requested
Return: CF clear if successful
AX = real-mode paragraph address of memory
CF set on error
AX = error code
07h MS-DOS memory control blocks destroyed
08h insufficient memory
BX = size in paragraphs of largest available memory block
SeeAlso: AX=25C1h,AX=25C2h
--------E-2125C1-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - RELEASE MS-DOS MEMORY BLOCK
AX = 25C1h
CX = real-mode paragraph address of memory block to free
Return: CF clear if successful
EAX destroyed
CF set on error
AX = error code
07h MS-DOS memory control blocks destroyed
09h invalid memory block address in CX
SeeAlso: AX=25C0h,AX=25C2h
--------E-2125C2-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - MODIFY MS-DOS MEMORY BLOCK
AX = 25C2h
BX = new requested block size in paragraphs
CX = real-mode paragraph address of memory block to modify
Return: CF clear if successful
EAX destroyed
CF set on error
AX = error code
07h MS-DOS memory control blocks destroyed
08h insufficient memory
09h invalid memory block address in CX
BX = size in paragraphs of largest available memory block
SeeAlso: AX=25C0h,AX=25C1h
--------E-2125C3-----------------------------
INT 21 P - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
AX = 25C3h
ES:EBX -> pointer to parameter block (see #1065)
DS:EDX -> pointer to ASCIZ program filename
Return: CF clear if successful
all registers unchanged
CF set on error
EAX = error code (see #1064)
(Table 1064)
Values for Phar Lap error code:
01h function code in AL is invalid ???
02h file not found or path invalid
05h access denied
08h insufficient memory to load program
0Ah environment invalid
0Bh invalid file format
Format of parameter block:
Offset Size Description (Table 1065)
00h DWORD 32-bit offset of environment string
04h WORD segment selector of environment string
06h DWORD 32-bit offset of command-tail string
0Ah WORD segment selector of command-tail string
--------D-2126-------------------------------
INT 21 - DOS 1+ - CREATE NEW PROGRAM SEGMENT PREFIX
AH = 26h
DX = segment at which to create PSP (see #1066)
Return: AL destroyed
Notes: new PSP is updated with memory size information; INTs 22h, 23h, 24h
taken from interrupt vector table; the parent PSP field is set to 0
(DOS 2+) DOS assumes that the caller's CS is the segment of the PSP to
copy
SeeAlso: AH=4Bh,AH=50h,AH=51h,AH=55h,AH=62h,AH=67h
Format of Program Segment Prefix (PSP):
Offset Size Description (Table 1066)
00h 2 BYTEs INT 20 instruction for CP/M CALL 0 program termination
the CDh 20h here is often used as a signature for a valid PSP
02h WORD segment of first byte beyond memory allocated to program
04h BYTE (DOS) unused filler
(OS/2) count of fake DOS version returns
05h BYTE CP/M CALL 5 service request (FAR CALL to absolute 000C0h)
BUG: (DOS 2+ DEBUG) PSPs created by DEBUG point at 000BEh
06h WORD CP/M compatibility--size of first segment for .COM files
08h 2 BYTEs remainder of FAR JMP at 05h
0Ah DWORD stored INT 22 termination address
0Eh DWORD stored INT 23 control-Break handler address
12h DWORD DOS 1.1+ stored INT 24 critical error handler address
16h WORD segment of parent PSP
18h 20 BYTEs DOS 2+ Job File Table, one byte per file handle, FFh = closed
2Ch WORD DOS 2+ segment of environment for process (see #1067)
2Eh DWORD DOS 2+ process's SS:SP on entry to last INT 21 call
32h WORD DOS 3+ number of entries in JFT (default 20)
34h DWORD DOS 3+ pointer to JFT (default PSP:0018h)
38h DWORD DOS 3+ pointer to previous PSP (default FFFFFFFFh in 3.x)
used by SHARE in DOS 3.3
3Ch BYTE DOS 4+ (DBCS) interim console flag (see AX=6301h)
Novell DOS 7 DBCS interim flag as set with AX=6301h
(possibly also used by Far East MS-DOS 3.2-3.3)
3Dh BYTE (APPEND) TrueName flag (see INT 2F/AX=B711h)
3Eh BYTE (Novell NetWare) flag: next byte initialized if CEh
(OS/2) capabilities flag
3Fh BYTE (Novell NetWare) Novell task number if previous byte is CEh
40h 2 BYTEs DOS 5+ version to return on INT 21/AH=30h
42h WORD (MSWindows3) selector of next PSP (PDB) in linked list
Windows keeps a linked list of Windows programs only
44h WORD (MSWindows3) "PDB_Partition"
46h WORD (MSWindows3) "PDB_NextPDB"
48h BYTE (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
49h BYTE unused by DOS versions <= 6.00
4Ch WORD (MSWindows3) "PDB_EntryStack"
4Eh 2 BYTEs unused by DOS versions <= 6.00
50h 3 BYTEs DOS 2+ service request (INT 21/RETF instructions)
53h 2 BYTEs unused in DOS versions <= 6.00
55h 7 BYTEs unused in DOS versions <= 6.00; can be used to make first FCB
into an extended FCB
5Ch 16 BYTEs first default FCB, filled in from first commandline argument
overwrites second FCB if opened
6Ch 16 BYTEs second default FCB, filled in from second commandline argument
overwrites beginning of commandline if opened
7Ch 4 BYTEs unused
80h 128 BYTEs commandline / default DTA
command tail is BYTE for length of tail, N BYTEs for the tail,
followed by a BYTE containing 0Dh
Notes: in DOS v3+, the limit on simultaneously open files may be increased by
allocating memory for a new open file table, filling it with FFh,
copying the first 20 bytes from the default table, and adjusting the
pointer and count at 34h and 32h. However, DOS will only copy the
first 20 file handles into a child PSP (including the one created on
EXEC).
in an OS/2 DOS box, values of D0h-FEh in the open file table indicate
device drivers
network redirectors based on the original MS-Net implementation use
values of 80h-FEh in the open file table to indicate remote files;
Novell NetWare also uses values from FEh down to 80h or one more than
FILES= (whichever is greater) to indicate remote files (except on
OS/2, where is uses CFh down to 80h)
MS-DOS 5.00 incorrectly fills the FCB fields when loading a program
high; the first FCB is empty and the second contains the first
parameter
some DOS extenders place protected-mode values in various PSP fields
such as the "parent" field, which can confuse PSP walkers. Always
check either for the CDh 20h signature or that the suspected PSP is
at the beginning of a memory block which owns itself (the preceding
paragraph should be a valid MCB with "owner" the same as the
suspected PSP).
Novell NetWare updates the fields at offsets 3Eh and 3Fh without
checking that a legal PSP segment is current; see AH=50h for further
discussion
for 4DOS and Windows95, the command tail may be more than 126
characters; in that case, the length byte will be set to 7Fh (with
an 0Dh in the 127th position at offset FFh), and the first 126
characters will be stored in the PSP, with the entire command line
in the environment variable CMDLINE; under at least some versions
of 4DOS, the byte at offset FFh is *not* set to 0Dh, so there is no
terminating carriage return in the PSP's command tail.
Format of environment block:
Offset Size Description (Table 1067)
00h N BYTEs first environment variable, ASCIZ string of form "var=value"
N BYTEs second environment variable, ASCIZ string
...
N BYTEs last environment variable, ASCIZ string of form "var=value"
BYTE 00h
---DOS 3.0+ ---
WORD number of strings following environment (normally 1)
N BYTEs ASCIZ full pathname of program owning this environment
other strings may follow
--------D-2127-------------------------------
INT 21 - DOS 1+ - RANDOM BLOCK READ FROM FCB FILE
AH = 27h
CX = number of records to read
DS:DX -> opened FCB (see #1034)
Return: AL = status
00h successful, all records read
01h end of file, no data read
02h segment wrap in DTA, no data read
03h end of file, partial read
Disk Transfer Area filled with records read from file
CX = number of records read (return AL = 00h or 03h)
Notes: read begins at current file position as specified in FCB; the file
position is updated after reading
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=21h,AH=28h,AH=3Fh"DOS"
--------D-2128-------------------------------
INT 21 - DOS 1+ - RANDOM BLOCK WRITE TO FCB FILE
AH = 28h
CX = number of records to write
DS:DX -> opened FCB (see #1034)
Disk Transfer Area contains records to be written
Return: AL = status
00h successful
01h disk full or file read-only
02h segment wrap in DTA
CX = number of records written
Notes: write begins at current file position as specified in FCB; the file
position is updated after writing
if CX = 0000h on entry, no data is written; instead the file size is
adjusted to be the same as the file position specified by the random
record and record size fields of the FCB
if the data to be written is less than a disk sector, it is copied into
a DOS disk buffer, to be written out to disk at a later time
not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=22h,AH=27h,AH=40h,AH=59h/BX=0000h
--------D-2129-------------------------------
INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
AH = 29h
AL = parsing options (see #1068)
DS:SI -> filename string (both '*' and '?' wildcards OK)
ES:DI -> buffer for unopened FCB
Return: AL = result code
00h successful parse, no wildcards encountered
01h successful parse, wildcards present
FFh failed (invalid drive specifier)
DS:SI -> first unparsed character
ES:DI buffer filled with unopened FCB (see #1034)
Notes: asterisks expanded to question marks in the FCB
all processing stops when a filename terminator is encountered
cannot be used with filespecs which include a path (DOS 2+)
Novell NetWare monitors the result code since an 'invalid drive' may
signal an attempt to reconnect a network drive; if there are no
connections to the specified drive, NetWare attempts to build a
connection and map the drive to the SYS:LOGIN directory
SeeAlso: AH=0Fh,AH=16h,AH=26h
Bitfields for parsing options:
Bit(s) Description (Table 1068)
0 skip leading separators
1 use existing drive number in FCB if no drive is specified, instead of
setting field to zero
2 use existing filename in FCB if no base name is specified, instead of
filling field with blanks
3 use existing extension in FCB if no extension is specified, instead of
filling field with blanks
4-7 reserved (0)
--------D-212A-------------------------------
INT 21 - DOS 1+ - GET SYSTEM DATE
AH = 2Ah
Return: CX = year (1980-2099)
DH = month
DL = day
---DOS 1.10+---
AL = day of week (00h=Sunday)
SeeAlso: AH=2Bh"DOS",AH=2Ch,AH=E7h"Novell",INT 1A/AH=04h,INT 2F/AX=120Dh
--------!---Section--------------------------
Interrupt List, part 6 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------D-212B-------------------------------
INT 21 - DOS 1+ - SET SYSTEM DATE
AH = 2Bh
CX = year (1980-2099)
DH = month
DL = day
Return: AL = status
00h successful
FFh invalid date, system date unchanged
Note: DOS 3.3+ also sets CMOS clock
SeeAlso: AH=2Ah,AH=2Dh,INT 1A/AH=05h
--------E-212B--CX4149-----------------------
INT 21 - AI Architects - ??? - INSTALLATION CHECK
AH = 2Bh
CX = 4149h ('AI')
DX = 413Fh ('A?')
Return: AL <> FFh if installed
Note: Borland's TKERNEL makes this call
--------c-212B--CX4358-----------------------
INT 21 - Super PC-Kwik v3.20+ - INSTALLATION CHECK
AH = 2Bh
CX = 4358h ('CX')
Return: AL = FFh if PC-Kwik/PC-Cache not installed
AL = 00h if installed
CF clear
CX = 6378h ('cx')
BX = ???
DX = version (DH = major version, DL = binary minor version)
Note: PC Tools PC-Cache v5.x and Qualitas Qcache v4.00 are OEM versions of
Super PC-Kwik, and thus support this call (PC-Cache 5.1 corresponds
to PC-Kwik v3.20)
SeeAlso: INT 13/AH=A0h,INT 13/AH=B0h,INT 16/AX=FFA5h/CX=1111h
Index: PC-Cache;installation check|Qualitas Qcache;installation check
Index: installation check;PC-Cache 5.x|installation check;Qualitas Qcache
--------Q-212B--CX4445-----------------------
INT 21 - DESQview - INSTALLATION CHECK
AH = 2Bh
CX = 4445h ('DE')
DX = 5351h ('SQ')
AL = subfunction (DV v2.00+)
01h get version
Return: BX = version (BH = major, BL = minor)
Note: early copies of v2.00 return 0002h
02h get shadow buffer info, and start shadowing
Return: BH = rows in shadow buffer
BL = columns in shadow buffer
DX = segment of shadow buffer
04h get shadow buffer info
Return: BH = rows in shadow buffer
BL = columns in shadow buffer
DX = segment of shadow buffer
05h stop shadowing
Return: AL = FFh if DESQview not installed
Notes: in DESQview v1.x, there were no subfunctions; this call only identified
whether or not DESQview was loaded. DESQview v2.52 performs function
01h for all subfunction requests 0Ch and higher and appears to ignore
all lower-numbered functions not listed here.
DESQview versions 2.50-2.52 are part of DESQview/X v1.0x; version 2.53
is part of DESQview/X v1.10; and version 2.63 is part of DESQview/X
v2.00.
BUG: subfunction 05h does not appear to work correctly in DESQview 2.52
SeeAlso: INT 10/AH=FEh,INT 10/AH=FFh,INT 15/AX=1024h,INT 15/AX=DE30h
--------U-212B--CX454C-----------------------
INT 21 - ELRES v1.1 - INSTALLATION CHECK
AH = 2Bh
CX = 454Ch ('EL')
DX = 5253h ('RS')
Return: ES:BX -> ELRES history structure (see #1069)
DX = DABEh (signature, DAve BEnnett)
Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
Bennett which stores recent errorlevel values, allows them to be
retrieved for use in batch files, and can place them in an
environment variable
SeeAlso: AH=4Bh"ELRES",AH=4Dh
Format of ELRES history structure:
Offset Size Description (Table 1069)
00h WORD number of return codes which can be stored by following buffer
02h WORD current position in buffer (treated as a ring)
04h N BYTEs ELRES buffer
--------l-212B00CX5643-----------------------
INT 21 - The Volkov Commander - GET POINTER TO LEFT PANEL DATA STRUCTURE
AX = 2B00h
CX = 5643h ('VC')
DX = 4F4Dh ('OM')
Return: AL = 0
ES:BX -> left panel data structure
Program: Volcov Commander is a shell for MS-DOS by Vsevolod V. Volkov
SeeAlso: AX=2B01h/CX=5643h,AX=2B02h/CX=5643h
--------l-212B01CX5643-----------------------
INT 21 - The Volkov Commander - GET POINTER TO RIGHT PANEL DATA STRUCTURE
AX = 2B01h
CX = 5643h ('VC')
DX = 4F4Dh ('OM')
Return: AL = 0
ES:BX -> right panel data structure
SeeAlso: AX=2B00h/CX=5643h,AX=2B02h/CX=5643h
--------l-212B02CX5643-----------------------
INT 21 - The Volkov Commander - GET POINTER TO GLOBAL VARIABLES
AX = 2B02h
CX = 5643h ('VC')
DX = 4F4Dh ('OM')
Return: AL = 0
ES:BX -> global variables
SeeAlso: AX=2B00h/CX=5643h,AX=2B01h/CX=5643h
--------m-212B01CX444D-----------------------
INT 21 - Quarterdeck DOS-UP.SYS v2.00 - INSTALLATION CHECK
AX = 2B01h
CX = 444Dh ('DM')
DX = 4158h ('AX')
Return: AX = 0000h if installed
BX = DOS-UP version (BH = minor, BL = major)
CX = 4845h ('HE')
DX = 5245h ('RE')
ES = DOS-UP driver segment
--------T-212B01CX5441-----------------------
INT 21 - TAME v2.10+ - INSTALLATION CHECK
AX = 2B01h
CX = 5441h ('TA')
DX = 4D45h ('ME')
---v2.60---
BH = ???
00h skip ???, else do
Return: AL = 02h if installed
ES:DX -> data area in TAME-RES (see #1070,#1074,#1076)
Program: TAME is a shareware program by David G. Thomas which gives up CPU
time to other partitions under a multitasker when the current
partition's program incessantly polls the keyboard or system time
Format of TAME 2.10-2.20 data area:
Offset Size Description (Table 1070)
00h BYTE data structure minor version number (01h in TAME 2.20)
01h BYTE data structure major version number (07h in TAME 2.20)
02h DWORD number of task switches
06h DWORD number of keyboard polls
0Ah DWORD number of time polls
0Eh DWORD number of times DESQview told program runs only in foreground
12h DWORD original INT 10h
16h DWORD original INT 14h
1Ah DWORD original INT 15h
1Eh DWORD original INT 16h
22h DWORD original INT 17h
26h DWORD original INT 21h
2Ah DWORD original INT 28h
2Eh WORD offset of TAME INT 10h handler
30h WORD offset of TAME INT 14h handler
32h WORD offset of TAME INT 15h handler
34h WORD offset of TAME INT 16h handler
36h WORD offset of TAME INT 17h handler
38h WORD offset of TAME INT 21h handler
3Ah WORD offset of TAME INT 28h handler
3Ch WORD X in /max:X,Y or /freq:X,Y
3Eh WORD Y in /max:X,Y or /freq:X,Y
40h WORD number of polls remaining before next task switch
42h WORD /KEYIDLE value
44h BYTE interrupts already grabbed by TAME (see #1071)
45h BYTE flags for interrupts which may be acted on (same bits as above)
46h BYTE TAME enabled (01h) or disabled (00h)
47h BYTE /TIMEPOLL (01h) or /NOTIMEPOLL (00h)
48h BYTE /NOTIMER (01h) or /TIMER (00h)
49h BYTE window or task number for this task
4Ah BYTE multitasker type (see #1072)
4Bh BYTE type of task switching selected
bit 0: DESQview???
bit 1: DoubleDOS???
bit 2: TopView???
bit 3: KeySwitch
bit 4: HLT instruction
4Ch BYTE ???
4Dh BYTE flags
bit 1: /FREQ instead of /MAX
4Eh BYTE /FG: value
4Fh BYTE task switches left until next FGONLY DESQview API call
50h BYTE ???
Bitfields for interrupts already grabbed by TAME:
Bit(s) Description (Table 1071)
0 INT 10h
1 INT 14h
2 INT 15h
3 INT 16h
4 INT 17h
5 INT 21h
6 INT 28h
(Table 1072)
Values for multitasker type:
01h DESQview
02h DoubleDOS
03h TopView
04h OmniView
05h VM/386
Bitfields for type of task switching selected:
Bit(s) Description (Table 1073)
0 DESQview
1 DoubleDOS
2 TopView
3 OmniView
4 KeySwitch
5 HLT instruction
Format of TAME 2.30 data area:
Offset Size Description (Table 1074)
00h BYTE data structure minor version number (02h in TAME 2.30)
01h BYTE data structure major version number (0Ah in TAME 2.30)
02h DWORD number of task switches
06h DWORD number of keyboard polls
0Ah DWORD number of time polls
0Eh DWORD number of times DESQview told program runs only in foreground
12h DWORD time of last /CLEAR or TAME-RES load
16h DWORD time yielded
1Ah DWORD time spent polling
1Eh DWORD time spent waiting on key input with INT 16/AH=01h,11h
22h DWORD original INT 10h
26h DWORD original INT 14h
2Ah DWORD original INT 15h
2Eh DWORD original INT 16h
32h DWORD original INT 17h
36h DWORD original INT 21h
3Ah DWORD original INT 28h
3Eh WORD offset of TAME INT 10h handler
40h WORD offset of TAME INT 14h handler
42h WORD offset of TAME INT 15h handler
44h WORD offset of TAME INT 16h handler
46h WORD offset of TAME INT 17h handler
48h WORD offset of TAME INT 21h handler
4Ah WORD offset of TAME INT 28h handler
4Ch WORD X in /max:X,Y or /freq:X,Y
4Eh WORD Y in /max:X,Y or /freq:X,Y
50h WORD number of polls remaining before next task switch
52h WORD /KEYIDLE value
54h WORD /FG: value
56h WORD task switches left until next FGONLY DESQview API call
58h WORD multitasker version
5Ah WORD virtual screen segment
5Ch BYTE interrupts already grabbed by TAME (see #1071)
5Dh BYTE flags for interrupts which may be acted on (same bits as above)
5Eh BYTE window or task number for this task
5Fh BYTE multitasker type (see #1072)
60h BYTE type of task switching selected (bit flags) (see #1073)
61h BYTE watch_DOS
62h BYTE action flags (see #1075)
63h BYTE old status
64h WORD signature DA34h
Bitfields for TAME action flags:
Bit(s) Description (Table 1075)
0 TAME enabled
1 /FREQ instead of /MAX (X and Y count fields are per tick)
2 /TIMEPOLL
3 /KEYPOLL
4 inhibit timer
5 enable status monitoring
SeeAlso: #1074,#1076
Format of TAME 2.60 data area:
Offset Size Description (Table 1076)
00h BYTE data structure minor version number (02h in TAME 2.60)
01h BYTE data structure major version number (0Bh in TAME 2.60)
02h DWORD number of task switches
06h DWORD number of keyboard polls
0Ah DWORD number of time polls
0Eh DWORD number of times DESQview told program runs only in foreground
12h DWORD time of last /CLEAR or TAME-RES load
16h DWORD time yielded
1Ah DWORD time spent polling
1Eh DWORD time spent waiting on key input with INT 16/AH=01h,11h
22h 4 BYTEs ???
26h DWORD original INT 10h
2Ah DWORD original INT 14h
2Eh DWORD original INT 15h
32h DWORD original INT 16h
36h DWORD original INT 17h
3Ah DWORD original INT 21h
3Eh DWORD original INT 28h
42h WORD offset of TAME INT 10h handler
44h WORD offset of TAME INT 14h handler
46h WORD offset of TAME INT 15h handler
48h WORD offset of TAME INT 16h handler
4Ah WORD offset of TAME INT 17h handler
4Ch WORD offset of TAME INT 21h handler
4Eh WORD offset of TAME INT 28h handler
50h WORD X in /max:X,Y or /freq:X,Y
52h WORD Y in /max:X,Y or /freq:X,Y
54h WORD number of polls remaining before next task switch
56h WORD /KEYIDLE value
58h 4 BYTEs ???
5Ch WORD X in /boost:X,Y
5Eh WORD Y in /boost:X,Y
60h WORD /FG: value
62h WORD task switches remaining until next FGONLY DESQview API call
64h WORD multitasker version ???
66h WORD virtual screen segment
68h BYTE interrupts already grabbed by TAME (see #1071)
69h BYTE flags for interrupts which may be acted on (same bits as above)
6Ah BYTE window or task number for this task
6Bh BYTE multitasker type (see #1072)
6Ch BYTE type of task switching selected (bit flags) (see #1073)
6Dh BYTE watch_DOS
6Eh BYTE action flags (see #1075)
6Fh BYTE old status
70h WORD signature DA34h
--------v-212B16CX0643-----------------------
INT 21 - VIRUS - "Maltese Amoeba" - INSTALLATION CHECK
AX = 2B16h
CX = 0643h
Return: AX = 1603h if installed
--------R-212B44BX4D41-----------------------
INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
AX = 2B44h ('D')
BX = 4D41h ('MA')
CX = 7063h ('pc')
DX = 4157h ('AW')
Return: AX = resident program
4F4Bh ('OK') if large host resident
6F6Bh ('ok') if small host resident
CX:DX -> API entry point (see #1077)
SeeAlso: INT 16/AH=79h
(Table 1077)
Call pcANYWHERE API entry point with:
AX = 0000h get pcANYWHERE IV version
DS:SI -> BYTE buffer for host type code
Return: AH = version number
AL = revision number
DS:DI buffer byte filled with
00h full-featured host
01h limited-feature LAN host
other API may not be supported
AX = 0001h initialize operation
DS:SI -> initialization request structure (see #1078)
Return: AX = function status (see #1081)
AX = 0002h get status
Return: AH = current operating mode (see #1078)
AL = current connection status (see #1080)
AX = 0003h suspend remote screen updates
Return: AX = function status (see #1081)
AX = 0004h resume screen updates
Return: AX = function status (see #1081)
AX = 0005h end current remote access session
DS:SI -> termination request structure (see #1079)
Return: AX = function status (see #1081)
AX = 0006h remove pcANYWHERE IV from memory
Return: AX = status (see #1081)
AX = 8000h read data from communications channel
DS:BX -> buffer
CX = buffer size
Return: AX >= number of characters read/available
AX < 0 on error
AX = 8001h write data to communications channel
DS:BX -> buffer
CX = buffer size
Return: AX >= number of characters written
AX < 0 on error
AX = 8002h get connection status
Return: AX = status
> 0000h if connection active
= 0000h if connection lost
< 0000h on error
Format of pcANYWHERE initialization request structure:
Offset Size Description (Table 1078)
00h BYTE operating mode
00h wait for a call
01h hot key activates
02h incoming call activates
03h initiate a call
01h 3 BYTEs user ID to append to config file names
04h WORD DS-relative pointer to path for config files
06h WORD DS-relative pointer to path for program files
Format of pcANYWHERE termination request structure:
Offset Size Description (Table 1079)
00h BYTE operating mode after termination
00h wait for a call
01h hot key activates
02h incoming call activates
80h use current mode
FFh remove from memory
Bitfields for current connection status:
Bit(s) Description (Table 1080)
0 a physical connection is active
1 remove screen updating is active
2 connection checking is active
3 hot key detection is active
4 background file transfer is active
(Table 1081)
Values for pcANYWHERE function status:
0000h function completed successfully
FFD1h unable to release interrupt vectors
FFD2h unable to release allocated memory
FFF2h unable to establish a connection when operating mode is
"Initiate a call"
FFF3h modem configuration is invalid (corrupt config)
FFF4h modem initialization failed (no modem response)
FFF5h the communications device could not be initialized
FFF6h the host operator aborted the function
FFF7h the communications driver type specified in the configuration file is
different than the one loaded when pcANYWHERE IV was started
FFF9h the configuration file is invalid
FFFAh the configuration file could not be found
FFFBh no session is active
FFFCh a remote access session is active
FFFDh the specified operating mode is invalid
--------l-212B--CX5643-----------------------
INT 21 - Volkov Commander - INSTALLATION CHECK
AH = 2Bh
CX = 5643h ('VC')
DX = 4F4Dh ('OM')
AL = function number
00h get left window data address
01h get right window data address
02h get address of general variables
Return: AL = 00h if Volkov Commander installed
AH = version code (27h for v4.00.039)
ES:BX -> requested data
Program: Volkov Commander is a Norton Commander-like DOS shell
--------G-212B--CX6269-----------------------
INT 21 - WDTSR.COM - INSTALLATION CHECK
AH = 2Bh
CX = 6269h ('bi')
DX = 742Dh ('t-')
Return: AL = FFh if not installed
AL = 77h ('w') if WDTSR is installed
CX = 6174h ('at')
DX = 6368h ('ch')
ES = resident code segment
ES:DI -> identification and configuration data
Program: WDTSR is a driver for the bitWatch watchdog hardware by bit-design
GmbH
SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 14/AH=14h"FOSSIL",INT 15/AH=C3h
--------S-212B--CX6269-----------------------
INT 21 - bitFOSS - INSTALLATION CHECK
AH = 2Bh
CX = 6269h ('bi')
DX = 7446h ('tF')
Return: AL = FFh if not installed
AL = 4Fh ('O') if bitFOSS is installed
CX = 5353h ('SS')
DX = 494Ch ('IL')
ES = resident code segment
ES:DI -> identification data
Program: bitFOSS is a revision 5 FOSSIL driver
SeeAlso: AH=2Bh/CX=6269h"bitFOSSI",INT 11/AH=BCh
--------S-212B--CX6269-----------------------
INT 21 - bitFOSSI - INSTALLATION CHECK
AH = 2Bh
CX = 6269h ('bi')
DX = 7449h ('tI')
Return: AL = FFh if not installed
AL = 53h ('S') if bitFOSSI is installed
CX = 444Eh ('DN')
DX = 2D46h ('-F')
ES = resident code segment
ES:DI -> identification data
Program: bitFOSSI is a revision 5 FOSSIL driver for ???'s ISDN board
SeeAlso: AH=2Bh/CX=6269h"bitFOSS",INT 11/AH=BCh
--------D-212C-------------------------------
INT 21 - DOS 1+ - GET SYSTEM TIME
AH = 2Ch
Return: CH = hour
CL = minute
DH = second
DL = 1/100 seconds
Note: on most systems, the resolution of the system clock is about 5/100sec,
so returned times generally do not increment by 1
on some systems, DL may always return 00h
SeeAlso: AH=2Ah,AH=2Dh,AH=E7h"Novell",INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
SeeAlso: INT 2F/AX=120Dh
--------v-212C--------------------------
INT 21 - VIRUS - "Anti Pode 2.0" - INSTALLATION CHECK
AH = 2Ch
Return: DL = F2h if resident
SeeAlso: AX=1812h"VIRUS",AX=2C2Ch
--------v-212C00CX534B-----------------------
INT 21 - SKUDO - INSTALLATION CHECK
AX = 2C00h
CX = 534Bh ('SK')
DX = 5544h ('UD')
BX = 4F21h ('O!')
Return: AX = 5349h ('SI') if installed
CH = version number
CL = subversion
Program: SKUDO is an antivirus TSR by Jordi Mas
--------v-212C2C------------------------
INT 21 - VIRUS - "LockJaw/Proto-T" - INSTALLATION CHECK
AX = 2C2Ch
Return: AX = 0DCDh if resident
SeeAlso: AH=2Ch"VIRUS",AX=3000h"VIRUS"
--------D-212D-------------------------------
INT 21 - DOS 1+ - SET SYSTEM TIME
AH = 2Dh
CH = hour
CL = minute
DH = second
DL = 1/100 seconds
Return: AL = result
00h successful
FFh invalid time, system time unchanged
Note: DOS 3.3+ also sets CMOS clock
SeeAlso: AH=2Bh"DOS",AH=2Ch,INT 1A/AH=01h,INT 1A/AH=03h,INT 1A/AH=FFh"AT&T"
--------T-212D01CX7820-----------------------
INT 21 - PC-Mix - INSTALLATION CHECK
AX = 2D01h
CX = 7820h ('X ')
DX = 6D69h ('MI')
Return: AL = 00h if installed
--------D-212E--DL00-------------------------
INT 21 - DOS 1+ - SET VERIFY FLAG
AH = 2Eh
DL = 00h (DOS 1.x/2.x only)
AL = new state of verify flag
00h off
01h on
Notes: default state at system boot is OFF
when ON, all disk writes are verified provided the device driver
supports read-after-write verification
SeeAlso: AH=54h
--------D-212F-------------------------------
INT 21 - DOS 2+ - GET DISK TRANSFER AREA ADDRESS
AH = 2Fh
Return: ES:BX -> current DTA
Note: under the FlashTek X-32 DOS extender, the pointer is in ES:EBX
SeeAlso: AH=1Ah
--------D-2130-------------------------------
INT 21 - DOS 2+ - GET DOS VERSION
AH = 30h
---DOS 5+ ---
AL = what to return in BH
00h OEM number (as for DOS 2.0-4.0x)
01h version flag
Return: AL = major version number (00h if DOS 1.x)
AH = minor version number
BL:CX = 24-bit user serial number (most versions do not use this)
---if DOS <5 or AL=00h---
BH = MS-DOS OEM number (see #1082)
---if DOS 5+ and AL=01h---
BH = version flag
bit 3: DOS is in ROM
other: reserved (0)
Notes: the OS/2 v1.x Compatibility Box returns major version 0Ah (10)
the OS/2 v2.x Compatibility Box returns major version 14h (20)
OS/2 Warp 3.0 Virtual DOS Machines report v20.30; Warp 4 VDMs report
v20.40.
the WindowsNT DOS box returns version 5.00, subject to SETVER
DOS 4.01 and 4.02 identify themselves as version 4.00; use
INT 21/AH=87h to distinguish between the original European MS-DOS 4.0
and the later PC-DOS 4.0x and MS-DOS 4.0x
IBM DOS 6.1 reports its version as 6.00; use the OEM number to
distinguish between MS-DOS 6.00 and IBM DOS 6.1 (there was never an
IBM DOS 6.0)
MS-DOS 6.21 reports its version as 6.20; version 6.22 returns the
correct value
Windows95 returns version 7.00 (the underlying MS-DOS), as did the
"Chicago" beta (reported in _Microsoft_Systems_Journal_,August 1994);
Windows95 OSR2 returns version 7.10
DR DOS 5.0 and 6.0 report version 3.31; Novell DOS 7 reports IBM v6.00,
which some software displays as IBM DOS v6.10 (because of the version
mismatch in true IBM DOS, as mentioned above)
generic MS-DOS 3.30, Compaq MS-DOS 3.31, and others identify themselves
as PC-DOS by returning OEM number 00h
the version returned under DOS 4.0x may be modified by entries in
the special program list (see #1348 at AH=52h); the version returned
under DOS 5+ may be modified by SETVER--use AX=3306h to get the true
version number
SeeAlso: AX=3000h/BX=3000h,AX=3306h,AX=4452h,AH=87h,INT 15/AX=4900h
SeeAlso: INT 2F/AX=122Fh,INT 2F/AX=4010h,INT 2F/AX=4A33h,INT 2F/AX=E002h
(Table 1082)
Values for DOS OEM number:
00h IBM
01h Compaq
02h MS Packaged Product
04h AT&T
05h ZDS (Zenith Electronics)
06h Hewlett-Packard
07h ZDS (Groupe Bull)
0Dh Packard-Bell
16h DEC
23h Olivetti
28h Texas Instruments
29h Toshiba
33h Novell (Windows/386 device IDs only)
34h MS Multimedia Systems (Windows/386 device IDs only)
35h MS Multimedia Systems (Windows/386 device IDs only)
4Dh Hewlett-Packard
5Eh RxDOS
66h PhysTechSoft (PTS-DOS)
99h General Software's Embedded DOS
EEh DR DOS
EFh Novell DOS
FDh FreeDOS
FFh Microsoft, Phoenix
--------E-2130-------------------------------
INT 21 - Phar Lap 386/DOS-Extender, Intel Code Builder - INSTALLATION CHECK
AH = 30h
EAX = 00003000h
EBX = 50484152h ("PHAR")
Return: AL = major DOS version
AH = minor DOS version
EAX bits 31-16 = 4458h ('DX') if 386/DOS-extender installed
BL = ASCII major version number
EAX bits 31-16 = 4243h ('BC') if Intel Code Builder installed
EDX = address of GDA
SeeAlso: AX=2501h,AX=FF00h,INT 2F/AX=F100h
--------v-2130--DXABCD-----------------------
INT 21 - VIRUS - "Possessed" - INSTALLATION CHECK
AH = 30h
DX = ABCDh
Return: DX = DCBAh if installed
SeeAlso: AX=0D20h,AH=30h/SI=1234h,AX=3000h"VIRUS",AX=30F1h
--------v-2130--SI1234---------------------
INT 21 - VIRUS - "ANDROMEDA-758" -INSTALLATION CHECK
AH = 30h
SI = 1234h
Return: AX = FFDDh if resident
SeeAlso: AH=30h/DX=ABCDh,AX=3000h"VIRUS"
--------T-213000BX1234-----------------------
INT 21 - CTask 2.0+ - INSTALLATION CHECK
AX = 3000h
BX = 1234h
DS:DX -> 8-byte version string (DX < FFF0h) "CTask21",00h for v2.1-2.2
Return: AL = DOS major version
AH = DOS minor version
CX:BX -> Ctask global data block
Program: CTask is a multitasking kernel for C written by Thomas Wagner
Note: if first eight bytes of returned data block equal eight bytes passed
in, CTask is resident
--------O-213000BX3000-----------------------
INT 21 - PC-MOS/386 v3.0 - INSTALLATION CHECK/GET VERSION
AX = 3000h
BX = 3000h
CX = DX = 3000h
Return: AX = PC-MOS version
Program: PC-MOS/386 is a multitasking/multiuser MS-DOS-compatible operating
system by The Software Link, Inc.
SeeAlso: AH=30h,INT D4/AH=02h,INT D4/AH=10h
--------v-213000BX614A------------------
INT 21 - VIRUS - "Jackal" - INSTALLATION CHECK
AX = 3000h
BX = 614Ah ('aJ')
CX = 6B63h ('kc')
DX = 6C61h ('la')
Return: BX = ???
SeeAlso: AX=2C2Ch"VIRUS",AX=3030h"VIRUS"
--------G-213022-----------------------------
INT 21 - StopPrg v2.0 - INSTALLATION CHECK
AX = 3022h
Return: AX = DOS version (see AH=30h)
CX = 1112h if StopPrg installed
BX = segment of resident code
Program: StopPrg is a resident program aborter by MAK-TRAXON's Prophet
Note: StopPrg may be temporarily disabled by storing 9090h in the word at
0000h:04FEh
--------v-213030BX694D-----------------------
INT 21 - VIRUS - "IMTC" -INSTALLATION CHECK
AX = 3030h
BX = 694Dh
Return: DX = 7443h if resident
SeeAlso: AX=3000h/BX=614Ah"VIRUS",AX=3032h"VIRUS"
--------v-213032DX1234-----------------------
INT 21 - VIRUS - "Uruguay" - INSTALLATION CHECK
AX = 3032h
DX = 1234h
Return: AX = 5678h if resident
SeeAlso: AX=3030h"VIRUS",AX=30F1h"VIRUS"
--------v-2130F1-----------------------------
INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
AX = 30F1h
Return: AL = 00h if resident
SeeAlso: AH=30h/DX=ABCDh,AX=3032h,AX=330Fh,AX=33DAh
----------2130FFCX4445-----------------------
INT 21 - DESQ??? - INSTALLATION CHECK
AX = 30FFh
CX = 4445h ("DE")
DX = 5351h ("SQ")
Return: BH = 05h if installed
???
Note: called by DUBLDISK.COM v2.6; this function is not supported by
DESQview, so it may be for DESQview's precursor DESQ.
SeeAlso: AX=4404h"DUBLDISK"
--------D-2131-------------------------------
INT 21 - DOS 2+ - TERMINATE AND STAY RESIDENT
AH = 31h
AL = return code
DX = number of paragraphs to keep resident
Return: never
Notes: the value in DX only affects the memory block containing the PSP;
additional memory allocated via AH=48h is not affected
the minimum number of paragraphs which will remain resident is 11h
for DOS 2.x and 06h for DOS 3.0+
most TSRs can save some memory by releasing their environment block
before terminating (see #1066 at AH=26h,AH=49h)
any open files remain open, so one should close any files which will
not be used before going resident; to access a file which is left
open from the TSR, one must switch PSP segments first (see AH=50h)
SeeAlso: AH=00h,AH=4Ch,AH=4Dh,INT 20,INT 22,INT 27
--------D-2132-------------------------------
INT 21 - DOS 2+ - GET DOS DRIVE PARAMETER BLOCK FOR SPECIFIC DRIVE
AH = 32h
DL = drive number (00h = default, 01h = A:, etc)
Return: AL = status
00h successful
DS:BX -> Drive Parameter Block (DPB) (see #1083) for specified
drive
FFh invalid or network drive
Notes: the OS/2 compatibility box supports the DOS 3.3 version of this call
except for the DWORD at offset 12h
this call updates the DPB by reading the disk; the DPB may be accessed
via the DOS list of lists (see #1313 at AH=52h) if disk access is not
desirable.
undocumented prior to the release of DOS 5.0; only the DOS 4.0+
version of the DPB has been documented, however
supported by DR DOS 3.41+; DR DOS 3.41-6.0 return the same data as
MS-DOS 3.31
IBM ROM-DOS v4.0 also reports invalid/network (AL=FFh) on the ROM drive
SeeAlso: AH=1Fh,AH=52h,AX=7302h
Format of DOS Drive Parameter Block:
Offset Size Description (Table 1083)
00h BYTE drive number (00h = A:, 01h = B:, etc)
01h BYTE unit number within device driver
02h WORD bytes per sector
04h BYTE highest sector number within a cluster
05h BYTE shift count to convert clusters into sectors
06h WORD number of reserved sectors at beginning of drive
08h BYTE number of FATs
09h WORD number of root directory entries
0Bh WORD number of first sector containing user data
0Dh WORD highest cluster number (number of data clusters + 1)
16-bit FAT if greater than 0FF6h, else 12-bit FAT
0Fh BYTE number of sectors per FAT
10h WORD sector number of first directory sector
12h DWORD address of device driver header (see #1332)
16h BYTE media ID byte (see #1044)
17h BYTE 00h if disk accessed, FFh if not
18h DWORD pointer to next DPB
---DOS 2.x---
1Ch WORD cluster containing start of current directory, 0000h=root,
FFFFh = unknown
1Eh 64 BYTEs ASCIZ pathname of current directory for drive
---DOS 3.x---
1Ch WORD cluster at which to start search for free space when writing
1Eh WORD number of free clusters on drive, FFFFh = unknown
---DOS 4.0-6.0---
0Fh WORD number of sectors per FAT
11h WORD sector number of first directory sector
13h DWORD address of device driver header (see #1332)
17h BYTE media ID byte (see #1044)
18h BYTE 00h if disk accessed, FFh if not
19h DWORD pointer to next DPB
1Dh WORD cluster at which to start search for free space when writing,
usually the last cluster allocated
1Fh WORD number of free clusters on drive, FFFFh = unknown
SeeAlso: #1349,#1475 at AX=7302h
--------D-2133-------------------------------
INT 21 - DOS 2+ - EXTENDED BREAK CHECKING
AH = 33h
AL = subfunction
00h get current extended break state
Return: DL = current state, 00h = off, 01h = on
01h set state of extended ^C/^Break checking
DL = new state
00h off, check only on character I/O functions
01h on, check on all DOS functions
Return: (Novell DOS 7) DL = old state of extended Break checks
Note: under DOS 3.1+ and DR DOS, this function does not use any of the
DOS-internal stacks and may thus be called at any time
SeeAlso: AX=3302h
--------D-213302-----------------------------
INT 21 - DOS 3.x+ internal - GET AND SET EXTENDED CONTROL-BREAK CHECKING STATE
AX = 3302h
DL = new state (00h for OFF, 01h for ON)
Return: DL = old state of extended BREAK checking
Notes: this function does not use any of the DOS-internal stacks and may thus
be called at any time; one possible use is modifying Control-Break
checking from within an interrupt handler or TSR
not supported by DR DOS through version 6.0 (error code 01h);
newly-supported by Novell DOS 7
SeeAlso: AH=33h
--------D-213303-----------------------------
INT 21 - DOS 4.0+ - UNUSED
AX = 3303h
Return: nothing
Note: this function and AX=3304h were intended to support a proposed
code-page switching flag (using two of the ten reserved bytes in
the DOS directory entry for codepage information); however, this
function has always been a NOP in public releases of DOS and OS/2.
See _DOS_Internals_ Chapter 2 for more information
SeeAlso: AX=3304h
--------D-213304-----------------------------
INT 21 - DOS 4.0+ - UNUSED
AX = 3304h
Return: nothing
Note: this function and AX=3303h were intended to support a proposed
code-page switching flag (using two of the ten reserved bytes in
the DOS directory entry for codepage information); however, this
function has always been a NOP in public releases of DOS and OS/2.
See _DOS_Internals_ Chapter 2 for more information
SeeAlso: AX=3303h
--------D-213305-----------------------------
INT 21 - DOS 4.0+ - GET BOOT DRIVE
AX = 3305h
Return: DL = boot drive (1=A:,...)
Notes: fully reentrant
NEC 9800-series PCs always call the boot drive A: and assign the other
drive letters sequentially to the other drives in the system
this call is supported by OS/2 Warp 3.0, but not earlier versions of
OS/2; it is also supported by Novell DOS 7
--------D-213306-----------------------------
INT 21 - DOS 5+ - GET TRUE VERSION NUMBER
AX = 3306h
Return: BL = major version
BH = minor version
DL = revision (bits 2-0, all others 0)
DH = version flags
bit 3: DOS is in ROM
bit 4: DOS is in HMA
AL = FFh if true DOS version < 5.0
Notes: this function always returns the true version number, unlike AH=30h,
whose return value may be changed with SETVER
because of the conflict from the CBIS redirector (see next
entry), programs should check whether BH is less than 100 (64h)
and BL is at least 5 before accepting the returned BX as the true
version number; however, even this is not entirely reliable when
that redirector is loaded
fully reentrant
OS/2 v2.1 will return BX=0A14h (version 20.10)
the Windows NT DOS box returns BX=3205h (version 5.50)
Novell DOS 7 returns IBM v6.00, which some software displays as
IBM DOS v6.10 (because of the version mismatch in true IBM DOS
mentioned for INT 21/AH=30h); versions through Update 15 all
return revision code 00h
Windows95 and Windows95 SP1 return version 7.00; Windows95 OSR2 returns
version 7.10
BUG: DR DOS 5.0 and 6.0 return CF set/AX=0001h for INT 21/AH=33h
subfunctions other than 00h-02h and 05h, while MS-DOS returns AL=FFh
for invalid subfunctions
SeeAlso: AH=30h,INT 2F/AX=122Fh,INT 2F/AX=E000h"SETDRVER"
--------N-213306-----------------------------
INT 21 - CBIS network - NETWORK REDIRECTOR - ???
AX = 3306h
Return: AX = 3306h
BL = ??? (usually 00h)
BH = ??? (usually 00h or FFh)
Note: unknown function, is in conflict with DOS 5+ version call
SeeAlso: AX=3306h"DOS"
--------v-21330F-----------------------------
INT 21 - VIRUS - "Burghofer" - INSTALLATION CHECK
AX = 330Fh
Return: AL = 0Fh if resident (DOS returns AL=FFh)
SeeAlso: AX=30F1h,AX=33DAh,AX=33E0h
--------k-213341-----------------------------
INT 21 - Diet Disk v1.0 - INSTALLATION CHECK
AX = 3341h
Return: DX = 1234h if installed
CX = resident code segment
Program: Diet Disk is a public domain transparent data file compressor by
Barry Nance
--------v-2133DA------------------------
INT 21 - VIRUS - "CoffeeShop" - INSTALLATION CHECK
AX = 33DAh
Return: AH = A5h if resident
AL = virus version
SeeAlso: AX=330Fh,AX=33E0h,AX=5643h"VIRUS"
--------v-2133E0-----------------------------
INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
AX = 33E0h
Return: AL = E0h if resident (DOS returns AL=FFh)
SeeAlso: AX=330Fh,AX=33DAh,AX=357Fh
--------D-2134-------------------------------
INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
AH = 34h
Return: ES:BX -> one-byte InDOS flag
Notes: this function executes on the DOS stack, and thus cannot be called
while another DOS function is already executing; you should use
this function once at the beginning of the program and store the
returned pointer rather than calling it when requiring DOS access
the value of InDOS is incremented whenever an INT 21 function begins
and decremented whenever one completes
during an INT 28 call, it is safe to call some INT 21 functions even
though InDOS may be 01h instead of zero
InDOS alone is not sufficient for determining when it is safe to
enter DOS, as the critical error handling decrements InDOS and
increments the critical error flag for the duration of the critical
error. Thus, it is possible for InDOS to be zero even if DOS is
busy.
SMARTDRV 4.0 sets the InDOS flag while flushing its buffers to disk,
then zeros it on completion
the critical error flag is the byte immediately following InDOS in
DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3.0+ and
DR DOS 3.41+ (except COMPAQ DOS 3.0, where the critical error flag
is located 1AAh bytes BEFORE the critical section flag)
for DOS 3.1+, an undocumented call exists to get the address of the
critical error flag (see AX=5D06h)
this function was undocumented prior to the release of DOS 5.0.
SeeAlso: AX=5D06h,AX=5D0Bh,INT 15/AX=DE1Fh,INT 28
--------D-2135-------------------------------
INT 21 - DOS 2+ - GET INTERRUPT VECTOR
AH = 35h
AL = interrupt number
Return: ES:BX -> current interrupt handler
Note: under DR DOS 5.0+, this function does not use any of the DOS-internal
stacks and may thus be called at any time
SeeAlso: AH=25h,AX=2503h
--------E-213501-----------------------------
INT 21 P - FlashTek X-32VM - ALLOCATE PROTECTED-MODE SELECTOR
AX = 3501h
Return: CF clear if successful
BX = new selector
CF set on error (no more selectors available)
Note: the new selector will be an expand-up read/write data selector with
undefined base and limit
SeeAlso: AX=3502h,INT 31/AX=0000h
--------E-213502-----------------------------
INT 21 P - FlashTek X-32VM - DEALLOCATE PROTECTED-MODE SELECTOR
AX = 3502h
BX = selector
Return: CF clear if successful
CF set on error (invalid selector)
Note: only selectors allocated via AX=3501h should be deallocated
SeeAlso: AX=3501h,INT 31/AX=0001h
--------E-213503-----------------------------
INT 21 P - FlashTek X-32VM - SET SELECTOR BASE ADDRESS
AX = 3503h
BX = selector
ECX = base address
Return: CF clear if successful
CF set on error (invalid selector)
SeeAlso: AX=3504h,AX=3505h,INT 31/AX=0007h
--------E-213504-----------------------------
INT 21 P - FlashTek X-32VM - GET SELECTOR BASE ADDRESS
AX = 3504h
BX = selector
Return: CF clear if successful
ECX = absolute base address of selector
CF set on error (invalid selector)
SeeAlso: AX=3503h,INT 31/AX=0006h
--------E-213505-----------------------------
INT 21 P - FlashTek X-32VM - SET SELECTOR LIMIT
AX = 3505h
BX = selector
ECX = desired limit
Return: CF clear if successful
ECX = actual limit set
CF set on error (no more selectors available)
Note: the limit will be rounded down to nearest 4K boundary if the requested
limit is greater than 1MB
SeeAlso: AX=3503h,INT 31/AX=0008h
--------E-21350A-----------------------------
INT 21 P - FlashTek X-32VM - PHYSICAL ADDRESS MAPPING
AX = 350Ah
EBX = absolute physical address
ECX = size in bytes of area to map
Return: CF clear if successful
CF set on error (insufficient memory or service refused by DPMI host)
Notes: should not make repeated calls for the same physical address
there is no provision for unmapping memory
--------E-21350B-----------------------------
INT 21 P - FlashTek X-32VM - UPDATE AND RETURN AVAILABLE FREE MEMORY
AX = 350Bh
DS = default selector for DS
Return: CF clear
EAX = maximum amount of memory which can be allocated via AX=350Ch
SeeAlso: AX=350Ch
--------E-21350C-----------------------------
INT 21 P - FlashTek X-32VM - ALLOCATE A BLOCK OF MEMORY
AX = 350Ch
ECX = size of block in bytes
DS = default DS
Return: CF clear if successful
EAX = near pointer to new block
EDX = new lowest legal value for stack
CF set on error (requested size not multiple of 4K)
SeeAlso: AX=350Bh,AX=350Dh
--------E-21350D-----------------------------
INT 21 P - FlashTek X-32VM - RESERVE BLOCK OF MEMORY FOR 32-BIT STACK
AX = 350Dh
EBX = current ESP value
ECX = size of block in bytes
DS = default DS
Return: CF clear if successful
EBX = new value for ESP
EDX = suggested new limit for SS
CF set on error
Note: this function should only be called once during initialization
SeeAlso: AX=350Bh,AX=350Ch
--------v-21357F-----------------------------
INT 21 - VIRUS - "Agiplan"/"Month 4-6" - INSTALLATION CHECK
AX = 357Fh
Return: DX = FFFFh if installed
SeeAlso: AX=33E0h,AX=3DFFh
--------D-2136-------------------------------
INT 21 - DOS 2+ - GET FREE DISK SPACE
AH = 36h
DL = drive number (00h = default, 01h = A:, etc)
Return: AX = FFFFh if invalid drive
else
AX = sectors per cluster
BX = number of free clusters
CX = bytes per sector
DX = total clusters on drive
Notes: free space on drive in bytes is AX * BX * CX
total space on drive in bytes is AX * CX * DX
"lost clusters" are considered to be in use
according to Dave Williams' MS-DOS reference, the value in DX is
incorrect for non-default drives after ASSIGN is run
this function does not return proper results on CD-ROMs;
use AX=4402h"CD-ROM" instead
(FAT32 drive) the reported total and free space are limited to 2G-32K
should they exceed that value
SeeAlso: AH=1Bh,AH=1Ch,AX=4402h"CD-ROM",AX=7303h
--------D-213700-----------------------------
INT 21 - DOS 2+ - "SWITCHAR" - GET SWITCH CHARACTER
AX = 3700h
Return: AL = status
00h successful
DL = current switch character
FFh unsupported subfunction
Desc: Determine the character which is used to introduce command switches.
This setting is ignored by MS-DOS commands in version 4.0 and higher,
but is honored by many third-party programs and by Novell DOS 7
external commands
BUG: Novell DOS 7's COMMAND.COM fails to honor the SwitChar setting for
internal commands even though COMMAND.COM honors it in its own
command tail (i.e. COMMAND /?)
Notes: documented in some OEM versions of some releases of DOS
supported by OS/2 compatibility box
always returns AL=00h/DL=2Fh for MS-DOS 5+ and DR DOS 3.41-6.0
Novell DOS 7 COMMAND.COM indicates switch characters other than '/'
by changing the first backslash (and only the first one) in the
path it prints for PROMPT $p with a forward slash
SeeAlso: AX=3701h
--------D-213701-----------------------------
INT 21 - DOS 2+ - "SWITCHAR" - SET SWITCH CHARACTER
AX = 3701h
DL = new switch character
Return: AL = status
00h successful
FFh unsupported subfunction
Notes: documented in some OEM versions of some releases of DOS
supported by OS/2 compatibility box and Novell DOS 7
ignored by MS-DOS 5+ and DR DOS 3.41-6.0; DR DOS 6.0 and Novell DOS 7
leave AX unchanged
SeeAlso: AX=3700h
--------D-2137-------------------------------
INT 21 - DOS 2.x and 3.3+ only - "AVAILDEV" - SPECIFY \DEV\ PREFIX USE
AH = 37h
AL = subfunction
02h get availdev flag
Return: DL = 00h \DEV\ must precede character device names
= nonzero \DEV\ is optional
03h set availdev flag
DL = new state
00h \DEV\ is mandatory
nonzero \DEV\ is optional
Return: AL = status
00h successful
FFh unsupported subfunction
Notes: all versions of DOS from 2.00 allow \DEV\ to be prepended to device
names without generating an error even if the directory \DEV does
not actually exist (other paths generate an error if they do not
exist).
although MS-DOS 3.3+, DR DOS 3.41+, and Novell DOS 7 accept these
calls, they have no effect, and AL=02h always returns DL=FFh (except
for Novell DOS 7, which leaves AX unchanged for both subfunctions)
--------k-2137A0BX6A6D-----------------------
INT 21 - XPACK v1.52+ - TSR INSTALLATION CHECK
AX = 37A0h
BX = 6A6Dh ('jm')
Return: AL = FFh if not present as TSR (default return value from DOS)
AX = 0000h if installed as a TSR
CX = 6A6Dh ('jm')
DX = version ID (0152h)
Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
SeeAlso: AX=37A1h/BX=6A6Dh,AX=37A3h/BX=6A6Dh
--------k-2137A1BX6A6D-----------------------
INT 21 - XPACK v1.52+ - UNINSTALL
AX = 37A1h
BX = 6A6Dh ('jm')
Return: AX = status
0000h successful
FFFFh failed
Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
SeeAlso: AX=37A0h/BX=6A6Dh
--------k-2137A2BX6A6D-----------------------
INT 21 - XPACK v1.52+ - GET TSR STATUS
AX = 37A2h
BX = 6A6Dh ('jm')
Return: AX = 0000h (successful)
DL = status (01h active, 00h disabled)
SeeAlso: AX=37A3h/BX=6A6Dh
--------k-2137A3BX6A6D-----------------------
INT 21 - XPACK v1.52+ - SET TSR STATUS
AX = 37A3h
BX = 6A6Dh ('jm')
DL = status (01h active, 00h disabled)
Return: AX = 0000h (successful)
SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A2h/BX=6A6Dh
----------2137A6BX6A6D-----------------------
INT 21 - XPACK v1.65 - GET TEMPORARY DIRECTORY NAME
AX = 37A6h
BX = 6A6Dh ('jm')
Return: AX = 0000h
DS:DX -> name of temporary directory
Program: XPACK is a transparent file compressor/decompressor by JauMing Tseng
SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A7h/BX=6A6Dh
----------2137A7BX6A6D-----------------------
INT 21 - XPACK v1.65 - SET TEMPORARY DIRECTORY NAME
AX = 37A7h
BX = 6A6Dh ('jm')
DS:DX -> ASCIZ name of temporary directory (max 64 chars)
Return: AX = 0000h
Note: the specified directory name must include a drive letter and end with
a backslash (e.g. 'c:\dos\',0)
SeeAlso: AX=37A0h/BX=6A6Dh,AX=37A6h/BX=6A6Dh
--------k-2137D0BX899D-----------------------
INT 21 - DIET v1.43e - TSR INSTALLATION CHECK
AX = 37D0h
BX = 899Dh ('DI' + 'ET')
Return: AL = FFh if not present as TSR (default return value from DOS)
AX = 0000h if installed as a TSR
CX = 899Dh
DX = version ID
Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
SeeAlso: AX=37D1h,AX=37D2h,AX=37D4h,AX=37D6h,AX=37DFh,AX=4BF0h,AX=4BF1h
--------k-2137D1BX899D-----------------------
INT 21 - DIET v1.43e - GET DIET.EXE RESIDENT SEGMENT
AX = 37D1h
BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
CX = code segment of TSR part of DIET.EXE
DX = memory block segment of TSR DIET.EXE
(0000h if installed as device driver)
SeeAlso: AX=37D0h,AX=37DFh
--------k-2137D2BX899D-----------------------
INT 21 - DIET v1.43e - GET TSR CONTROL FLAGS
AX = 37D2h
BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
DL = control flag (00h active, else disabled)
DH = skip flag (nonzero while TSR active)
SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
--------k-2137D3BX899D-----------------------
INT 21 - DIET v1.43e - SET TSR CONTROL FLAGS
AX = 37D3h
BX = 899Dh ('DI' + 'ET')
DL = control flag (00h active, else disabled)
DH = skip flag (00h)
Return: AX = 0000h
SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
--------k-2137D4BX899D-----------------------
INT 21 - DIET v1.43e - GET TSR OPTIONS
AX = 37D4h
BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
DX = TSR options (see #1084)
SeeAlso: AX=37D0h,AX=37D2h,AX=37D5h
Bitfields for DIET TSR options:
Bit(s) Description (Table 1084)
0 automated compression of DIETed file
1 automated compression of newly-created file
2 suppress DIET message
3 display original file size
4-15 reserved (0)
--------k-2137D5BX899D-----------------------
INT 21 - DIET v1.43e - SET TSR OPTIONS
AX = 37D5h
BX = 899Dh ('DI' + 'ET')
DX = TSR options (see #1084)
Return: AX = 0000h
Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
SeeAlso: AX=37D0h,AX=37D3h,AX=37D4h
--------k-2137D6BX899D-----------------------
INT 21 - DIET v1.43e - GET TEMPORARY DIRECTORY NAMES
AX = 37D6h
BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
DS:DX -> name of temporary directory or 0000h:0000h for current dir
SeeAlso: AX=37D0h,AX=37D7h
--------k-2137D7BX899D-----------------------
INT 21 - DIET v1.43e - SET TEMPORARY DIRECTORY NAMES
AX = 37D7h
BX = 899Dh ('DI' + 'ET')
DS:DX -> ASCIZ name of temporary directory (max 61 chars)
0000h:0000h for current directory
Return: AX = 0000h
Note: the specified directory name must include a drive letter and end with
a backslash
SeeAlso: AX=37D0h,AX=37D6h
--------k-2137DCBX899D-----------------------
INT 21 - DIET v1.43e - SET ADDRESS OF EXTERNAL PROCEDURE
AX = 37DCh
BX = 899Dh ('DI' + 'ET')
DS:DX -> external procedure (see #1085)
Return: AX = 0000h
Note: the resident code will call the specified external procedure at the
beginning of decompression and when compression is exited on failure
SeeAlso: AX=37DDh
(Table 1085)
Values DIET external procedure is called with:
STACK: WORD class
FFFDh creation failed for unknown reasons
FFFEh creation failed due to lack of space
FFFFh file creation error
else file handle of DIETed file to be decompressed
DWORD -> compressed filename
DWORD -> decompressed or temporary filename
Return: SI,DI,BP,DS,ES must be preserved by external procedure
--------k-2137DDBX899D-----------------------
INT 21 - DIET v1.43e - RELEASE EXTERNAL PROCEDURE
AX = 37DDh
BX = 899Dh ('DI' + 'ET')
Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
Note: unlinks the external procedure specified by AX=37DCh
SeeAlso: AX=37DCh
--------k-2137DEBX899D-----------------------
INT 21 - DIET v1.43e - READ EMS STATUS
AX = 37DEh
BX = 899Dh ('DI' + 'ET')
Return: AX = 0000h
CX = EMS status
0000h not used
0001h used as work area
0002h used for code and as work area
DX = EMM handle when EMS is in use
--------k-2137DFBX899D-----------------------
INT 21 - DIET v1.43e - UNINSTALL TSR
AX = 37DFh
BX = 899Dh ('DI' + 'ET')
Return: AX = status
0000h successful
00FFh failed
Program: DIET is a transparent file copressor/decompressor by Teddy Matsumoto
SeeAlso: AX=37D0h
Index: uninstall;DIET
--------D-2138-------------------------------
INT 21 - DOS 2+ - GET COUNTRY-SPECIFIC INFORMATION
AH = 38h
--DOS 2.x--
AL = 00h get current-country info
DS:DX -> buffer for returned info (see #1086,#1087)
Return: CF set on error
AX = error code (02h)
CF clear if successful
AX = country code (MS-DOS 2.11 only)
buffer at DS:DX filled
--DOS 3.0+--
AL = 00h for current country
AL = 01h thru 0FEh for specific country with code <255 (see #1088)
AL = 0FFh for specific country with code >= 255
BX = 16-bit country code (see #1088)
DS:DX -> buffer for returned info (see #1087)
Return: CF set on error
AX = error code (02h)
CF clear if successful
AX = country code (Novell NWDOS v7.0)
BX = country code
DS:DX buffer filled
Note: this function is not supported by the Borland DPMI host, but no error
is returned; as a workaround, one should allocate a buffer in
conventional memory with INT 31/AX=0100h and simulate an INT 21 with
INT 31/AX=0300h
SeeAlso: AH=65h,INT 10/AX=5001h,INT 2F/AX=110Ch,INT 2F/AX=1404h
Format of DOS 2.00-2.10 country info:
Offset Size Description (Table 1086)
00h WORD date format 0 = USA mm dd yy
1 = Europe dd mm yy
2 = Japan yy mm dd
02h BYTE currency symbol
03h BYTE 00h
04h BYTE thousands separator char
05h BYTE 00h
06h BYTE decimal separator char
07h BYTE 00h
08h 24 BYTEs reserved
Format of DOS 2.11+ country info:
Offset Size Description (Table 1087)
00h WORD date format (see #1086)
02h 5 BYTEs ASCIZ currency symbol string
07h 2 BYTEs ASCIZ thousands separator
09h 2 BYTEs ASCIZ decimal separator
0Bh 2 BYTEs ASCIZ date separator
0Dh 2 BYTEs ASCIZ time separator
0Fh BYTE currency format
bit 2 = set if currency symbol replaces decimal point
bit 1 = number of spaces between value and currency symbol
bit 0 = 0 if currency symbol precedes value
1 if currency symbol follows value
10h BYTE number of digits after decimal in currency
11h BYTE time format
bit 0 = 0 if 12-hour clock
1 if 24-hour clock
12h DWORD address of case map routine
(FAR CALL, AL = character to map to upper case [>= 80h])
16h 2 BYTEs ASCIZ data-list separator
18h 10 BYTEs reserved
(Table 1088)
Values for country code:
001h (1) United States
002h (2) Canadian-French
003h (3) Latin America
004h (4) Canada (English)
007h (7) Russia
014h (20) Egypt
01Bh (27) South Africa
01Eh (30) Greece
01Fh (31) Netherlands
020h (32) Belgium
021h (33) France
022h (34) Spain
023h (35) Bulgaria???
024h (36) Hungary (not supported by DR DOS 5.0)
026h (38) Yugoslavia (not supported by DR DOS 5.0) -- obsolete
027h (39) Italy / San Marino / Vatican City
028h (40) Romania
029h (41) Switzerland / Liechtenstein
02Ah (42) Czechoslovakia / Tjekia / Slovakia (not supported by DR DOS 5.0)
02Bh (43) Austria (DR DOS 5.0)
02Ch (44) United Kingdom
02Dh (45) Denmark
02Eh (46) Sweden
02Fh (47) Norway
030h (48) Poland (not supported by DR DOS 5.0)
031h (49) Germany
033h (51) Peru
034h (52) Mexico
035h (53) Cuba
036h (54) Argentina
037h (55) Brazil (not supported by DR DOS 5.0)
038h (56) Chile
039h (57) Columbia
03Ah (58) Venezuela
03Ch (60) Malaysia
03Dh (61) International English / Australia
03Eh (62) Indonesia / East Timor
03Fh (63) Philippines
040h (64) New Zealand
041h (65) Singapore
042h (66) Taiwan???
051h (81) Japan (DR DOS 5.0, MS-DOS 5.0+)
052h (82) South Korea (DR DOS 5.0)
054h (84) Vietnam
056h (86) China (MS-DOS 5.0+)
058h (88) Taiwan (MS-DOS 5.0+)
05Ah (90) Turkey (MS-DOS 5.0+)
05Bh (91) India
05Ch (92) Pakistan
05Dh (93) Afghanistan
05Eh (94) Sri Lanka
062h (98) Iran
063h (99) Asia (English)
070h (112) Belarus
0C8h (200) Thailand
0D4h (212) Morocco
0D5h (213) Algeria
0D8h (216) Tunisia
0DAh (218) Libya
0DCh (220) Gambia
0DDh (221) Senegal
0DEh (222) Maruitania
0DFh (223) Mali
0E0h (224) African Guinea
0E1h (225) Ivory Coast
0E2h (226) Burkina Faso
0E3h (227) Niger
0E4h (228) Togo
0E5h (229) Benin
0E6h (230) Mauritius
0E7h (231) Liberia
0E8h (232) Sierra Leone
0E9h (233) Ghana
0EAh (234) Nigeria
0EBh (235) Chad
0ECh (236) Centra African Republic
0EDh (237) Cameroon
0EEh (238) Cape Verde Islands
0EFh (239) Sao Tome and Principe
0F0h (240) Equatorial Guinea
0F1h (241) Gabon
0F2h (242) Congo
0F3h (243) Zaire
0F4h (244) Angola
0F5h (245) Guinea-Bissau
0F6h (246) Diego Garcia
0F7h (247) Ascension Isle
0F8h (248) Seychelles
0F9h (249) Sudan
0FAh (250) Rwhanda
0FBh (251) Ethiopia
0FCh (252) Somalia
0FDh (253) Djibouti
0FEh (254) Kenya
0FFh (255) Tanzania
100h (256) Uganda
101h (257) Burundi
103h (259) Mozambique
104h (260) Zambia
105h (261) Madagascar
106h (262) Reunion Island
107h (263) Zimbabwe
108h (264) Namibia
109h (265) Malawi
10Ah (266) Lesotho
10Bh (267) Botswana
10Ch (268) Swaziland
10Dh (269) Comoros
10Eh (270) Mayotte
122h (290) St. Helena
129h (297) Aruba
12Ah (298) Faroe Islands
12Bh (299) Greenland
15Eh (350) Gibraltar
15Fh (351) Portugal
160h (352) Luxembourg
161h (353) Ireland
162h (354) Iceland
163h (355) Albania
164h (356) Malta
165h (357) Cyprus
166h (358) Finland
167h (359) Bulgaria
172h (370) Lithuania
173h (371) Latvia
174h (372) Estonia
175h (373) Moldova
17Dh (381) Serbia / Montenegro
180h (384) Croatia???
181h (385) Croatia
182h (386) Slovenia
183h (387) Bosnia-Herzegovina (Latin)
184h (388) Bosnia-Herzegovina (Cyrillic)
185h (389) FYR Macedonia
1A5h (421) Czech Republic
1A6h (422) Slovakia
1F4h (500) Falkland Islands
1F5h (501) Belize
1F6h (502) Guatemala
1F7h (503) El Salvador
1F8h (504) Honduras
1F9h (505) Nicraragua
1FAh (506) Costa Rica
1FBh (507) Panama
1FCh (508) St. Pierre and Miquelon
1FDh (509) Haiti
24Eh (590) Guadeloupe
24Fh (591) Bolivia
250h (592) Guyana
251h (593) Ecuador
252h (594) rench Guiana
253h (595) Paraguay
254h (596) Martinique / French Antilles
255h (597) Suriname
256h (598) Uruguay
257h (599) Netherland Antilles
29Eh (670) Saipan / N. Mariana Island
29Fh (671) Guam
2A0h (672) Norfolk Island (Australia) / Christmas Island/Cocos Islands / Antartica
2A1h (673) Brunei Darussalam
2A2h (674) Nauru
2A3h (675) Papua New Guinea
2A4h (676) Tonga Islands
2A5h (677) Solomon Islands
2A6h (678) Vanuatu
2A7h (679) Fiji
2A8h (680) Palau
2A9h (681) Wallis & Futuna
2AAh (682) Cook Islands
2ABh (683) Niue
2ACh (684) American Samoa
2ADh (685) Western Samoa
2AEh (686) Kiribati
2AFh (687) New Caledonia
2B0h (688) Tuvalu
2B1h (689) French Polynesia
2B2h (690) Tokealu
2B3h (691) Micronesia
2B4h (692) Marshall Islands
2C7h (711) ??? (currency = EA$)
311h (785) Arabic (Middle East/Saudi Arabia/etc.)
324h (804) Ukraine
329h (809) Antigua and Barbuda / Anguilla / Bahamas / Barbados / Bermuda
British Virgin Islands / Cayman Islands / Dominica
Dominican Republic / Grenada / Jamaica / Montserra
St. Kitts and Nevis / St. Lucia / St. Vincent and Grenadines
Trinidad and Tobago / Turks and Caicos
352h (850) North Korea
354h (852) Hong Kong
355h (853) Macao
357h (855) Cambodia
358h (856) Laos
370h (880) Bangladesh
376h (886) Taiwan (DOS 6.22+)
3C0h (960) Maldives
3C1h (961) Lebanon
3C2h (962) Jordan
3C3h (963) Syrian Arab Republic
3C4h (964) Ireq
3C5h (965) Kuwait
3C6h (966) Saudi Arabia
3C7h (967) Yemen
3C8h (968) Oman
3CBh (971) United Arab Emirates
3CCh (972) Israel (Hebrew) (DR DOS 5.0,MS-DOS 5.0+)
3CDh (973) Bahrain
3CEh (974) Qatar
3CFh (975) Bhutan
3D0h (976) Mongolia
3D1h (977) Nepal
3E3h (995) Myanmar (Burma)
Note: not all country codes are supported by all versions of DOS
--------D-2138--DXFFFF-----------------------
INT 21 - DOS 3.0+ - SET COUNTRY CODE
AH = 38h
DX = FFFFh
AL = 01h thru FEh for specific country with code <255
AL = FFh for specific country with code >= 255
BX = 16-bit country code (see #1088)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Note: not supported by OS/2
SeeAlso: INT 2F/AX=1403h
--------D-2139-------------------------------
INT 21 - DOS 2+ - "MKDIR" - CREATE SUBDIRECTORY
AH = 39h
DS:DX -> ASCIZ pathname
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (03h,05h) (see #1366 at AH=59h/BX=0000h)
Notes: all directories in the given path except the last must exist
fails if the parent directory is the root and is full
DOS 2.x-3.3 allow the creation of a directory sufficiently deep that
it is not possible to make that directory the current directory
because the path would exceed 64 characters
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=3Ah,AH=3Bh,AH=6Dh,AX=7139h,AH=E2h/SF=0Ah,INT 2F/AX=1103h
SeeAlso: INT 60/DI=0511h
--------D-213A-------------------------------
INT 21 - DOS 2+ - "RMDIR" - REMOVE SUBDIRECTORY
AH = 3Ah
DS:DX -> ASCIZ pathname of directory to be removed
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (03h,05h,06h,10h) (see #1366 at AH=59h/BX=0000h)
Notes: directory must be empty (contain only '.' and '..' entries)
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=39h,AH=3Bh,AX=713Ah,AH=E2h/SF=0Bh,INT 2F/AX=1101h,INT 60/DI=0512h
--------D-213B-------------------------------
INT 21 - DOS 2+ - "CHDIR" - SET CURRENT DIRECTORY
AH = 3Bh
DS:DX -> ASCIZ pathname to become current directory (max 64 bytes)
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (03h) (see #1366 at AH=59h/BX=0000h)
Notes: if new directory name includes a drive letter, the default drive is
not changed, only the current directory on that drive
changing the current directory also changes the directory in which
FCB file calls operate
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=47h,AH=71h,INT 2F/AX=1105h
--------D-213C-------------------------------
INT 21 - DOS 2+ - "CREAT" - CREATE OR TRUNCATE FILE
AH = 3Ch
CX = file attributes (see #1089)
DS:DX -> ASCIZ filename
Return: CF clear if successful
AX = file handle
CF set on error
AX = error code (03h,04h,05h) (see #1366 at AH=59h/BX=0000h)
Notes: if a file with the given name exists, it is truncated to zero length
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
DR DOS checks the system password or explicitly supplied password at
the end of the filename against the reserved field in the directory
entry before allowing access
SeeAlso: AH=16h,AH=3Dh,AH=5Ah,AH=5Bh,AH=93h,INT 2F/AX=1117h
Bitfields for file attributes:
Bit(s) Description (Table 1089)
0 read-only
1 hidden
2 system
3 volume label (ignored)
4 reserved, must be zero (directory)
5 archive bit
7 if set, file is shareable under Novell NetWare
--------D-213D-------------------------------
INT 21 - DOS 2+ - "OPEN" - OPEN EXISTING FILE
AH = 3Dh
AL = access and sharing modes (see #1090)
DS:DX -> ASCIZ filename
CL = attribute mask of files to look for (server call only)
Return: CF clear if successful
AX = file handle
CF set on error
AX = error code (01h,02h,03h,04h,05h,0Ch,56h) (see #1366 at AH=59h)
Notes: file pointer is set to start of file
file handles which are inherited from a parent also inherit sharing
and access restrictions
files may be opened even if given the hidden or system attributes
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
DR DOS checks the system password or explicitly supplied password at
the end of the filename against the reserved field in the directory
entry before allowing access
sharing modes are only effective on local drives if SHARE is loaded
BUG: Novell DOS 7 SHARE v1.00 would refuse file access in the cases in
#1091 marked with [1] (read-only open of a read-only file
which had previously been opened in compatibility mode); this was
fixed in SHARE v1.01 of 09/29/94
SeeAlso: AH=0Fh,AH=3Ch,AX=4301h,AX=5D00h,INT 2F/AX=1116h,INT 2F/AX=1226h
Bitfields for access and sharing modes:
Bit(s) Description (Table 1090)
2-0 access mode
000 read only
001 write only
010 read/write
011 (DOS 5+ internal) passed to redirector on EXEC to allow
case-sensitive filenames
3 reserved (0)
6-4 sharing mode (DOS 3.0+) (see #1091)
000 compatibility mode
001 "DENYALL" prohibit both read and write access by others
010 "DENYWRITE" prohibit write access by others
011 "DENYREAD" prohibit read access by others
100 "DENYNONE" allow full access by others
111 network FCB (only available during server call)
7 inheritance
if set, file is private to current process and will not be inherited
by child processes
SeeAlso: #1471
(Table 1091)
Values of DOS file sharing behavior:
| Second and subsequent Opens
First |Compat Deny Deny Deny Deny
Open | All Write Read None
|R W RW R W RW R W RW R W RW R W RW
- - - - -| - - - - - - - - - - - - - - - - -
Compat R |Y Y Y N N N 1 N N N N N 1 N N
W |Y Y Y N N N N N N N N N N N N
RW|Y Y Y N N N N N N N N N N N N
- - - - -|
Deny R |C C C N N N N N N N N N N N N
All W |C C C N N N N N N N N N N N N
RW|C C C N N N N N N N N N N N N
- - - - -|
Deny R |2 C C N N N Y N N N N N Y N N
Write W |C C C N N N N N N Y N N Y N N
RW|C C C N N N N N N N N N Y N N
- - - - -|
Deny R |C C C N N N N Y N N N N N Y N
Read W |C C C N N N N N N N Y N N Y N
RW|C C C N N N N N N N N N N Y N
- - - - -|
Deny R |2 C C N N N Y Y Y N N N Y Y Y
None W |C C C N N N N N N Y Y Y Y Y Y
RW|C C C N N N N N N N N N Y Y Y
Legend: Y = open succeeds, N = open fails with error code 05h
C = open fails, INT 24 generated
1 = open succeeds if file read-only, else fails with error code
2 = open succeeds if file read-only, else fails with INT 24
SeeAlso: #1322
--------v-213D76-----------------------------
INT 21 - VIRUS - "GT-SPOOF" -INSTALLATION CHECK
AX = 3D76h
Return: AX = 763Dh if resident
SeeAlso: AX=357Fh,AX=3DFFh
--------v-213DFF-----------------------------
INT 21 - VIRUS - "JD-448" - INSTALLATION CHECK
AX = 3DFFh
Return: AX = 4A44h if resident
SeeAlso: AX=3D76h,AX=4203h
--------D-213E-------------------------------
INT 21 - DOS 2+ - "CLOSE" - CLOSE FILE
AH = 3Eh
BX = file handle
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (06h) (see #1366 at AH=59h/BX=0000h)
Notes: if the file was written to, any pending disk writes are performed, the
time and date stamps are set to the current time, and the directory
entry is updated
recent versions of DOS preserve AH because some versions of Multiplan
had a bug which depended on AH being preserved
SeeAlso: AH=10h,AH=3Ch,AH=3Dh,INT 2F/AX=1106h,INT 2F/AX=1227h
--------D-213F-------------------------------
INT 21 - DOS 2+ - "READ" - READ FROM FILE OR DEVICE
AH = 3Fh
BX = file handle
CX = number of bytes to read
DS:DX -> buffer for data
Return: CF clear if successful
AX = number of bytes actually read (0 if at EOF before call)
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Notes: data is read beginning at current file position, and the file position
is updated after a successful read
the returned AX may be smaller than the request in CX if a partial
read occurred
if reading from CON, read stops at first CR
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
BUG: Novell NETX.EXE v3.26 and 3.31 do not set CF if the read fails due to
a record lock (see AH=5Ch), though it does return AX=0005h; this
has been documented by Novell
SeeAlso: AH=27h,AH=40h,AH=93h,INT 2F/AX=1108h,INT 2F/AX=1229h
--------G-213F-------------------------------
INT 21 - Turbo Debug HARDWARE BREAKPOINTS - READ STATUS BLOCK
AH = 3Fh
BX = handle for character device "TDHDEBUG"
CX = number of bytes to read
DS:DX -> buffer for status block (see #1093)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AH=40h"Turbo Debug"
(Table 1092)
Values for status of Turbo Debugger command:
00h successful
01h invalid handle
02h no more breakpoints available
03h hardware does not support specified breakpoint type
04h previous command prevents execution
05h debugger hardware not found
06h hardware failure
07h invalid command
08h driver not initialized yet
FEh recursive entry (hardware breakpoint inside hw bp handler)
Format of Turbo Debugger status block:
Offset Size Description (Table 1093)
00h BYTE status of command (see #1092)
---status for command 01h---
01h WORD device driver interface version number (currently 1)
03h WORD device driver software version
05h BYTE maximum simultaneous hardware breakpoints
06h BYTE configuration bits (see #1094)
07h BYTE supported breakpoint types (see #1095)
08h WORD supported addressing match modes (see #1096)
0Ah WORD supported data matches (see #1097)
0Ch BYTE maximum data match length (01h, 02h, or 04h)
0Dh WORD size of onboard memory (in KB)
0Fh WORD maximum number of trace-back events
11h WORD hardware breakpoint enable byte address segment (0000h if not
supported)
---status for command 04h---
01h BYTE handle to use when referring to the just-set breakpoint
Bitfields for Turbo Debugger configuration bits:
Bit(s) Description (Table 1094)
0 CPU and DMA accesses are distinct
1 can detect DMA transfers
2 supports data mask
3 hardware pass counter on breakpoints
4 can match on data as well as addresses
Bitfields for Turbo Debugger supported breakpoint types:
Bit(s) Description (Table 1095)
0 memory read
1 memory write
2 memory read/write
3 I/O read
4 I/O write
5 I/O read/write
6 instruction fetch
Bitfields for Turbo Debugger supported addressing match modes:
Bit(s) Description (Table 1096)
0 any address
1 equal to test value
2 not equal
3 above test value
4 below test value
5 below or equal
6 above or equal
7 within range
8 outside range
Bitfields for Turbo Debugger supported data matches:
Bit(s) Description (Table 1097)
0 any data
1 equal to test value
2 not equal
3 above test value
4 below test value
5 below or equal
6 above or equal
7 within range
8 outside range
--------N-213F-------------------------------
INT 21 - PC/TCP IPCUST.SYS - READ CONFIGURATION DATA
AH = 3Fh
BX = handle for character device "$IPCUST"
CX = number of bytes to read
DS:DX -> buffer for configuration data (see #1098)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Notes: if less than the entire data is read or written, the next read/write
continues where the previous one ended; IOCTL calls AX=4402h and
AX=4403h both reset the location at which the next operation starts
to zero
the data pointer is also reset to zero if the previous read or write
reached or exceeded the end of the data, when the current function
is read and the previous was write, or vice versa
v2.1+ uses a new configuration method, but allows the installation
of IPCUST.SYS for backward compatibility with other software which
must read the PC/TCP configuration
SeeAlso: AH=40h"IPCUST",AX=4402h"IPCUST",AX=4402h"FTPSOFT"
Format of PC/TCP configuration data:
Offset Size Description (Table 1098)
00h 12 BYTEs IPCUST.SYS device driver header (see #1332)
12h BYTE ???
13h BYTE ???
14h WORD ???
16h BYTE bit flags
bit 0: send BS rather than DEL for BackSpace key
bit 1: wrap long lines
17h BYTE ???
18h 64 BYTEs ASCIZ hostname
58h 64 BYTEs ASCIZ domain name
(fully qualified domain name is hostname.domain-name)
98h 16 BYTEs ASCIZ username
A8h 64 BYTEs ASCIZ full name
E8h 64 BYTEs ASCIZ office address
128h 32 BYTEs ASCIZ phone number
148h WORD offset from GMT in minutes
14Ah 4 BYTEs ASCIZ timezone name
14Eh WORD number of time servers
150h ? DWORDs (big-endian) IP addresses for time servers
???
164h WORD number of old-style name servers
166h 3 DWORDs (big-endian) IP addresses for name servers
172h WORD number of domain name servers
174h 3 DWORDs (big-endian) IP addresses for domain name servers
180h DWORD (big-endian) IP address of default gateway
184h DWORD (big-endian) IP address of log server
188h DWORD (big-endian) IP address of cookie server
18Ch DWORD (big-endian) IP address of lpr server
190h DWORD (big-endian) IP address of imagen print server
194h 54 BYTEs ???
1E8h WORD TCP default window size in bytes
1EAh WORD TCP low window size
1ECh 64 BYTEs ASCIZ host tabel filename
22Ch 2 BYTEs ???
22Eh 80 BYTEs ASCIZ mail relay host name
27Eh BYTE ???
27Fh BYTE ??? bit flags
280h 44 BYTEs ???
2ACh WORD ???
2AEh 202 BYTEs ???
--------N-213F-------------------------------
INT 21 - WORKGRP.SYS - GET ENTRY POINT
AH = 3Fh
BX = file handle for device "NET$HLP$"
CX = 0008h
DS:DX -> buffer for entry point record (see #1172)
Return: CF clear if successful
AX = number of bytes actually read (0 if at EOF before call)
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Program: WORKGRP.SYS is the portion of Microsoft's Workgroup Connection which
permits communication with PCs running Windows for Workgroups or
LAN Manager
SeeAlso: AX=4402h"WORKGRP.SYS",INT 2F/AX=9400h
--------N-213F-------------------------------
INT 21 - BW-TCP - GET DRIVER INFO
AH = 3Fh
BX = file handle for device "ETHDEV27"
CX = 002Bh
DS:DX -> buffer for driver info (see #1099)
Return: CF clear if successful
AX = number of bytes actually read (0 if at EOF before call)
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Program: BW-TCP is a TCP/IP protocol stack by Beame & Whiteside Software
Notes: the B&W socket library performs an INT 21/AX=4401h with DX=0060h before
making this call to retrieve the driver information; one should also
call the private API interrupt with AH=15h
the installation check for the TCP/IP stack is to test for the
existence of the character device UDP-IP10
SeeAlso: INT 14/AH=56h,INT 62/AH=00h"ETHDEV",INT 63/AH=03h,INT 64/AH=01h
Index: installation check;BW-TCP hardware driver
Index: installation check;BW-TCP TCPIP.SYS
Format of BW-TCP driver info:
Offset Size Description (Table 1099)
00h WORD I/O base address
02h BYTE shared memory page (01h = segment 0100h, etc.)
03h BYTE interrupt vector for private API
04h BYTE IRQ used by board
05h WORD size of data buffer
07h WORD maximum transfer window
09h WORD time zone
0Bh BYTE address type (01h user, 04h RARP, 05h BOOTP)
0Ch DWORD internet address
10h WORD "value" ???
12h BYTE subnet mask
13h WORD "ether_pointer" ???
15h WORD offset in device driver of log server records (see #1100)
17h WORD offset in device driver of name server records (see #1100)
19h WORD offset in device driver of print server records (see #1100)
1Bh WORD offset in device driver of time server records (see #1100)
1Dh WORD offset in device driver of gateway records (see #1100)
1Fh WORD segment address of device driver
21h BYTE transfer size
22h 9 BYTEs network adapter board name
---11/21/91+ ---
23h BYTE ETHDEV version (major in high nybble, minor in low nybble)
24h BYTE ETHDEV revision
25h BYTE TCPIP version (major in high nybble, minor in low nybble)
26h BYTE TCPIP revision
27h BYTE BWRPC version (major in high nybble, minor in low nybble)
28h BYTE BWRPC revision
29h BYTE BWNFS version (major in high nybble, minor in low nybble)
2Ah BYTE BWNFS revision
2Bh BYTE Telnet version (major in high nybble, minor in low nybble)
2Ch BYTE Telnet revision
2Dh BYTE NETBIOS version (major in high nybble, minor in low nybble)
2Eh BYTE NETBIOS revision
Note: for each driver, if version=0, the driver is not installed or does
not support the version check
Format of BW-TCP server records:
Offset Size Description (Table 1100)
00h BYTE number of server records following
01h N DWORDs internet addresses of servers
--------y-213F-------------------------------
INT 21 - Trusted Access - NB.SYS - GET STATE
AH = 3Fh
BX = file handle for device "$$NB$$NB"
CX = 0002h (size of state)
DS:DX -> buffer for state record (see #1101)
Return: CF clear if successful
AX = number of bytes actually read (0 if at EOF before call)
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Program: Trusted Access is a security and access-control package by Lassen
Software, Inc.; NB.SYS is a device driver to prevent the user from
terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
SeeAlso: AH=40h"NB.SYS",AX=4101h
Format of Trusted Access state record:
Offset Size Description (Table 1101)
00h BYTE 00h off, 01h on
01h BYTE keys being disabled
bit 0: Ctrl-Break
bit 1: SysReq
bit 2: Ctrl and Alt
bit 3: Ctrl-Alt-Del
bit 7: all keys (overrides other bits)
----------213F-------------------------------
INT 21 U - IFSHLP.SYS - GET ENTRY POINT
AH = 3Fh
BX = file handle for device "IFS$HLP$"
CX = 0008h (size of buffer in bytes)
DS:DX -> buffer for entry point record (see #1102)
Return: CF clear if successful
AX = number of bytes actually read (0 if at EOF before call)
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Program: IFSHLP.SYS is a support driver for Microsoft Windows for Workgroups
SeeAlso: AX=4402h"IFSHLP"
Format of IFSHLP.SYS entry point record:
Offset Size Description (Table 1102)
00h 4 BYTEs (call) required signature if called via IOCTL
70h E9h 34h 37h for Windows 3.11
70h E9h 35h 37h for Windows 3.11
(ret) signature 34h 37h 70h EFh (Windows 3.11)
(ret) signature 35h 37h 70h EFh (Windows95)
04h DWORD (ret) pointer to FAR call entry point (see #1103)
(Table 1103)
Call IFSHLP.SYS entry point with:
STACK: WORD function number (00h-0Ch)
00h get ??? data
01h set interrupt intercepts (trap)
02h remove interrupt intercepts (untrap)
03h ??? LPT2
04h ??? LPT1
05h revector INT 2F to trap and remove trap for others
06h set ??? flag
07h clear ??? flag
08h get ??? flag word
---Windows 3.11 only---
09h ???
0Ah ???
0Bh ???
0Ch get ???
---if function 00h---
Return: DX:AX -> ??? data (see #1104)
BX destroyed
---if function 01h---
STACK: DWORD new intercept (trap) address
Return: AX = status
0000h successful
0001h failed (already set)
DX = 0000h
BX destroyed
Note: the trap handler is called with a function number in BX, and the
original BX on top of the stack; a null handler must perform a
POP BX and an IRET
---if function 02h---
Return: AX = status
0000h successful
0001h failed (not set)
DX = 0000h
BX destroyed
---if function 03h,04h---
STACK: WORD ???
Return: AX = 0000h
DX = 0000h
BX destroyed
---if function 05h---
???
Return: BX destroyed
---if function 06h---
Return: AX = 0001h and DX = 0000h if already set
AX,DX unchanged if successful
BX destroyed
---if function 07h---
Return: AX = 0001h and DX = 0000h if not set
AX,DX unchanged if successful
BX destroyed
---if function 08h---
Return: DX = 0000h
AX = flags
bit 0: set/cleared by functions 06h and 07h
bit 1: trap is currently set (refer to functions 01h/02h)
BX destroyed
---if function 09h---
Return: AX = status
0000h successful
0001h failed (already called)
BX destroyed
---if function 0Ah---
STACK: WORD ???
???
Return: BX destroyed
---if function 0Bh---
Return: AX = status
0000h successful
0001h failed (not set)
BX destroyed
---if function 0Ch---
Return: AX = 0000h
ES:BX -> ??? data
---if function > 0Ch---
Return: AX = 0001h
DX = 0000h
BX destroyed
Format of IFSHLP ??? data:
Offset Size Description (Table 1104)
00h DWORD -> DOS Swappable Data Area (see #1373,#1375)
02h WORD ??? offset in DOS data segment?
04h WORD offset in DOS data segment of current-PSP WORD
06h WORD ???
08h WORD ???
0Ah WORD ???
0Ch DWORD -> DOS List of Lists (see #1313)
10h ???
SeeAlso: #1103
--------v-213F--BXFEB0-----------------------
INT 21 - VIRUS - "KYZ/LieWait" - INSTALLATION CHECK
AH = 3Fh
BX = FEB0h
Return: BX = 1212h if resident
SeeAlso: AX=3032h"VIRUS",AX=4BF1h"VIRUS"
--------D-2140-------------------------------
INT 21 - DOS 2+ - "WRITE" - WRITE TO FILE OR DEVICE
AH = 40h
BX = file handle
CX = number of bytes to write
DS:DX -> data to write
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Notes: if CX is zero, no data is written, and the file is truncated or
extended to the current position
data is written beginning at the current file position, and the file
position is updated after a successful write
for FAT32 drives, the file must have been opened with AX=6C00h with
the "extended size" flag in order to expand the file beyond 2GB;
otherwise the write will fail with error code 0005h (access denied)
the usual cause for AX < CX on return is a full disk
BUG: a write of zero bytes will appear to succeed when it actually failed
if the write is extending the file and there is not enough disk
space for the expanded file (DOS 5.0-6.0); one should therefore check
whether the file was in fact extended by seeking to 0 bytes from
the end of the file (INT 21/AX=4202h/CX=0000h/DX=0000h)
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
SeeAlso: AH=28h,AH=3Fh"DOS",AH=93h,INT 2F/AX=1109h
--------G-2140-------------------------------
INT 21 - Turbo Debug HARDWARE BREAKPOINTS - SEND CMD TO HARDWARE BRKPNT DRIVER
AH = 40h
BX = handle for character device "TDHDEBUG"
CX = number of bytes to write
DS:DX -> hardware breakpoint command (see #1105)
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Note: results are retrieved by reading from the device
SeeAlso: AH=3Fh"Turbo Debug"
Format of Turbo Debugger hardware breakpoint commands:
Offset Size Description (Table 1105)
00h BYTE command code
00h install interrupt vectors
01h get hardware capabilities
02h enable hardware breakpoints
03h disable hardware breakpoints
04h set hardware breakpoint
05h clear hardware breakpoint
06h set I/O base address and reset hardware
07h restore interrupt vectors
---command code 00h---
01h DWORD pointer to Turbo Debugger entry point to be jumped to on
hardware breakpoint; call with CPU state the same as on
the breakpoint except for pushing AX and placing an entry
code (FFh if breakout button or breakpoint handle) in AH
---command code 04h---
01h BYTE breakpoint type
00h memory read
01h memory write
02h memory read/write
03h I/O read
04h I/O write
05h I/O read/write
06h instruction fetch
02h BYTE address matching mode (see #1106)
03h DWORD 32-bit linear low address
07h DWORD 32-bit linear high address
0Bh WORD pass count
0Dh BYTE data size (01h, 02h, or 04h)
0Eh BYTE source of matched bus cycle (01h CPU, 02h DMA, 03h either)
0Fh BYTE data-matching mode (see #1106)
10h DWORD low data value
14h DWORD high data value
18h DWORD data mask specifying which bits of the data are tested
---command code 05h---
01h BYTE handle of breakpoint to clear (breakpoint returned from command
04h)
---command code 06h---
01h WORD base address of hardware debugger board
(Table 1106)
Values for Turbo Debugger address/data matching mode:
00h match any
01h equal to test value
02h different from test value
03h above test value
04h below test value
05h below or equal to test value
06h above or equal to test value
07h within inclusive range
08h outside specified range
--------N-2140-------------------------------
INT 21 - PC/TCP IPCUST.SYS - WRITE CONFIGURATION DATA
AH = 40h
BX = handle for character device "$IPCUST"
CX = number of bytes to write
DS:DX -> buffer for configuration data (AH=3Fh"IPCUST")
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Notes: if less than the entire data is read or written, the next read/write
continues where the previous one ended; IOCTL calls AX=4402h and
AX=4403h both reset the location at which the next operation starts
to zero
the data pointer is also reset to zero if the previous read or write
reached or exceeded the end of the data, when the current function
is read and the previous was write, or vice versa
v2.1+ uses a new configuration method, but allows the installation
of IPCUST.SYS for backward compatibility with other software which
must read the PC/TCP configuration
SeeAlso: AH=3Fh"IPCUST",AX=4402h"IPCUST"
--------y-2140-------------------------------
INT 21 U - Trusted Access - NB.SYS - SET STATE
AH = 40h
BX = handle for character device "$$NB$$NB"
DS:DX -> state record (see #1101)
CX ignored
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (05h,06h) (see #1366 at AH=59h/BX=0000h)
Program: Trusted Access is a security and access-control package by Lassen
Software, Inc.; NB.SYS is a device driver to prevent the user from
terminating CONFIG.SYS or AUTOEXEC.BAT with Ctrl-Break
SeeAlso: AH=3Fh"NB.SYS"
--------j-214000BX0002-----------------------
INT 21 - FARTBELL.EXE - INSTALLATION CHECK
AX = 4000h
BX = 0002h
CX = 0000h
DS:DX = 0000h:0000h
Return: CF clear if installed
AX = CS of resident code
Program: FARTBELL is a joke program by Guenther Thiele which makes various
noises when programs output a bell
SeeAlso: AX=4001h
--------j-214001BX0002-----------------------
INT 21 - FARTBELL.EXE - FORCE NOISE
AX = 4001h
BX = 0002h
CX = 0000h
DS:DX = 0000h:0000h
Program: FARTBELL is a joke program by Guenther Thiele which makes various
noises when programs output a bell
SeeAlso: AX=4000h
--------D-2141-------------------------------
INT 21 - DOS 2+ - "UNLINK" - DELETE FILE
AH = 41h
DS:DX -> ASCIZ filename (no wildcards, but see notes)
CL = attribute mask for deletion (server call only, see notes)
Return: CF clear if successful
AX destroyed (DOS 3.3) AL seems to be drive of deleted file
CF set on error
AX = error code (02h,03h,05h) (see #1366 at AH=59h/BX=0000h)
Notes: (DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
the filespec must be canonical (as returned by AH=60h), and only
files matching the attribute mask in CL are deleted
DR DOS 5.0-6.0 returns error code 03h if invoked via AX=5D00h; DR DOS
3.41 crashes if called via AX=5D00h with wildcards
DOS does not erase the file's data; it merely becomes inaccessible
because the FAT chain for the file is cleared
deleting a file which is currently open may lead to filesystem
corruption. Unless SHARE is loaded, DOS does not close the handles
referencing the deleted file, thus allowing writes to a nonexistant
file.
under DR DOS and DR Multiuser DOS, this function will fail if the file
is currently open
under the FlashTek X-32 DOS extender, the pointer is in DS:EDX
BUG: DR DOS 3.41 crashes if called via AX=5D00h
SeeAlso: AH=13h,AX=4301h,AX=4380h,AX=5D00h,AH=60h,AH=71h,AX=F244h
SeeAlso: INT 2F/AX=1113h
--------y-214101DXFFFE-----------------------
INT 21 - SoftLogic Data Guardian - ???
AX = 4101h
DX = FFFEh
Return: AX = 0000h if installed
Note: resident code sets several internal variables on this call
SeeAlso: AH=3Fh"NB.SYS",INT 16/AX=FFA3h/BX=0000h
--------D-2142-------------------------------
INT 21 - DOS 2+ - "LSEEK" - SET CURRENT FILE POSITION
AH = 42h
AL = origin of move
00h start of file
01h current file position
02h end of file
BX = file handle
CX:DX = (signed) offset from origin of new file position
Return: CF clear if successful
DX:AX = new file position in bytes from start of file
CF set on error
AX = error code (01h,06h) (see #1366 at AH=59h/BX=0000h)
Notes: for origins 01h and 02h, the pointer may be positioned before the
start of the file; no error is returned in that case, but subsequent
attempts at I/O will produce errors
if the new position is beyond the current end of file, the file will
be extended by the next write (see AH=40h); for FAT32 drives, the
file must have been opened with AX=6C00h with the "extended size"
flag in order to expand the file beyond 2GB
BUG: using this method to grow a file from zero bytes to a very large size
can corrupt the FAT in some versions of DOS; the file should first
be grown from zero to one byte and then to the desired large size
SeeAlso: AH=24h,INT 2F/AX=1228h
--------v-214203-----------------------------
INT 21 - VIRUS - "Shake" - INSTALLATION CHECK
AX = 4203h
Return: AX = 1234h if resident
SeeAlso: AX=3DFFh,AX=4243h
--------v-214243-----------------------------
INT 21 - VIRUS - "Invader" - INSTALLATION CHECK
AX = 4243h
Return: AX = 5678h if resident
SeeAlso: AX=4203h,AX=44A0h,AX=4B04h
--------D-214300-----------------------------
INT 21 - DOS 2+ - GET FILE ATTRIBUTES
AX = 4300h
DS:DX -> ASCIZ filename
Return: CF clear if successful
CX = file attributes (see #1107)
AX = CX (DR DOS 5.0)
CF set on error
AX = error code (01h,02h,03h,05h) (see #1366 at AH=59h)
Notes: under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
under DR DOS 3.41 and 5.0, attempts to change the subdirectory bit are
simply ignored without an error
BUG: Windows for Workgroups returns error code 05h (access denied) instead
of error code 02h (file not found) when attempting to get the
attributes of a nonexistent file. This causes open() with O_CREAT
and fopen() with the "w" mode to fail in Borland C++.
SeeAlso: AX=4301h,AX=4310h,AX=7143h,AH=B6h,INT 2F/AX=110Fh,INT 60/DI=0517h
--------D-214301-----------------------------
INT 21 - DOS 2+ - "CHMOD" - SET FILE ATTRIBUTES
AX = 4301h
CX = new file attributes (see #1107)
DS:DX -> ASCIZ filename
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,02h,03h,05h) (see #1366 at AH=59h)
Notes: will not change volume label or directory attribute bits, but will
change the other attribute bits of a directory (the directory
bit must be cleared to successfully change the other attributes of a
directory, but the directory will not be changed to a normal file as
a result)
MS-DOS 4.01 reportedly closes the file if it is currently open
for security reasons, the Novell NetWare execute-only bit can never
be cleared; the file must be deleted and recreated
under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
DOS 5.0 SHARE will close the file if it is currently open in sharing-
compatibility mode, otherwise a sharing violation critical error is
generated if the file is currently open
DR DOS 3.41/5.0 will silently ignore attempts to change the 'directory'
attribute bit
SeeAlso: AX=4300h,AX=4311h,AX=7143h,INT 2F/AX=110Eh
Bitfields for file attributes:
Bit(s) Description (Table 1107)
7 shareable (Novell NetWare)
6 unused
5 archive
4 directory
3 volume label
execute-only (Novell NetWare)
2 system
1 hidden
0 read-only
--------D-214302-----------------------------
INT 21 - MS-DOS 7 - GET COMPRESSED FILE SIZE
AX = 4302h
DS:DX -> ASCIZ pathname for file or directory
Return: CF clear if successful
??? = compressed size of file/directory in bytes
CF set on error
AX = error code
Note: on volumes which do not support compression, the returned size is the
actual file size rounded up to the next cluster boundary
SeeAlso: AH=71h,AH=72h
--------O-214302-----------------------------
INT 21 - DR DOS 3.41+ internal - GET ACCESS RIGHTS
AX = 4302h
DS:DX -> ASCIZ pathname
Return: CF clear if successful
CX = access rights (see #1108)
AX = CX (DR DOS 5.0)
CF set on error
AX = error code
Desc: Determine which operations the calling program may perform on a
specified file without being required to provide a password.
Notes: this protection scheme has been coordinated on all current Digital
Research/Novell operating systems (DR DOS 3.41+, DRMDOS 5.x, and
FlexOS 2+)
this function is documented in DR DOS 6.0 and corresponds to the
"Get/Set File Attributes" function, subfunction 2, documented in
Concurrent DOS.
only FlexOS actually uses the "execution" bits; DR DOS 3.41+ treats
them as "read" bits.
DR DOS 3.41-5.x only use bits 0-3. Only DR DOS 6.0 using a
DRMDOS 5.x security system allowing for users and groups uses bits
4-11.
SeeAlso: AX=4303h
Bitfields for DR DOS file access rights:
Bit(s) Description (Table 1108)
0 owner delete requires password
1 owner execution requires password (FlexOS)
2 owner write requires password
3 owner read requires password
4 group delete requires password
5 group execution requires password (FlexOS)
6 group write requires password
7 group read requires password
8 world delete requires password
9 world execution requires password (FlexOS)
10 world write requires password
11 world read requires password
--------O-214303-----------------------------
INT 21 - DR DOS 3.41+ internal - SET ACCESS RIGHTS AND PASSWORD
AX = 4303h
CX = access rights
bits 11-0: access rights (see #1108)
bit 15: new password is to be set
DS:DX -> ASCIZ pathname
[DTA] = new password if CX bit 15 is set (blank-padded to 8 characters)
Return: CF clear if successful
CF set on error
AX = error code
Notes: if the file is already protected, the old password must be added after
the pathname, separated by a ";"
this function is documented in DR DOS 6.0 and corresponds to the
"Get/Set File Attributes" function, subfunction 3, documented in
Concurrent DOS.
SeeAlso: AH=0Fh,AH=17h,AX=4302h"DR DOS",AX=4305h,AX=4454h
--------O-214304-----------------------------
INT 21 U - DR DOS 5.0-6.0 internal - GET ENCRYPTED PASSWORD
AX = 4304h
DS:DX -> ASCIZ filename
???
Return: CF clear if successful
CX = AX = 0000h if no password assigned to file
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
Note: this function is only supported by DR DOS 5.0 and 6.0 and DRMDOS 5.1
SeeAlso: AX=4303h,AX=4305h
--------O-214305-----------------------------
INT 21 U - DR DOS 5.0-6.0 internal - SET EXTENDED FILE ATTRIBUTES
AX = 4305h
DS:DX -> ASCIZ filename
???
Return: CF clear if successful
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
Desc: this function allows the extended attributes, and optionally the
encrypted password, of a file to be set.
Note: this function is only supported by DR DOS 5.0 and 6.0 and DRMDOS 5.1
SeeAlso: AX=4304h,AX=4311h
--------O-214306-----------------------------
INT 21 - DR DOS 6.0 - GET FILE OWNER
AX = 4306h
DS:DX -> ASCIZ filename
Return: CF clear if successful
AX = CX = value set with AX=4307h
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4307h
--------O-214307-----------------------------
INT 21 - DR DOS 6.0 - SET FILE OWNER
AX = 4307h
CX = ??? (owner identification number?)
DS:DX -> ASCIZ filename
Return: CF clear if successful
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4306h
--------N-214310-----------------------------
INT 21 - Banyan VINES 2.1+ - GET EXTENDED FILE ATTRIBUTES
AX = 4310h
DS:DX -> ASCIZ filename
Return: CF clear if successful
CH = attributes (see #1109)
CF set on error
AX = error code (01h,02h,03h,05h) (see #1366 at AH=59h/BX=0000h)
Note: the filename may be a directory but must be on a VINES file service
SeeAlso: AX=4300h,AX=4311h,AH=B6h,INT 2F/AX=110Fh
--------N-214311-----------------------------
INT 21 - Banyan VINES 2.1+ - SET EXTENDED FILE ATTRIBUTES
AX = 4311h
CH = new attributes (see #1109)
DS:DX -> ASCIZ filename
Return: CF clear if successful
CF set on error
AX = error code (01h,02h,03h,05h) (see #1366 at AH=59h/BX=0000h)
Note: the filename may be a directory but must be on a VINES file service
SeeAlso: AX=4301h,AX=4305h,AX=4310h,INT 2F/AX=110Eh
Bitfields for VINES extended file attributes:
Bit(s) Description (Table 1109)
7 unused
6 shareable
5 execute-only
4-0 unused
--------u-214321BX0000-----------------------
INT 21 - Q87, Q387 - INSTALLATION CHECK
AX = 4321h
BX = 0000h
EAX = 87654321h (entire EAX value is required, not just AX)
Return: EAX = 12345678h if installed
Program: Q387 (renamed to Q87 as of v3.7) is a math coprocessor emulator from
Quickware
Note: this function is available only in virtual-86 mode in older versions;
newer versions also provide it in MS Windows 16- and 32-bit protected
mode
SeeAlso: AX=4321h/BX=0001h,AX=4321h/BX=0002h,INT 67/AX=4321h
--------u-214321BX0001-----------------------
INT 21 - Q87, Q387 - ENABLE EMULATOR
AX = 4321h
BX = 0001h
EAX = 87654321h (entire EAX value is required, not just AX)
Desc: enable the emulator by setting the CPU MSW's EM bit and updating
the BIOS equipment list
Note: this function is available only in virtual-86 mode in older versions;
newer versions also provide it in MS Windows 16- and 32-bit protected
mode
SeeAlso: AX=4321h/BX=0000h,AX=4321h/BX=0002h
--------u-214321BX0002-----------------------
INT 21 - Q87, Q387 - DISABLE EMULATOR
AX = 4321h
BX = 0002h
EAX = 87654321h (entire EAX value is required, not just AX)
Desc: disable the emulator by clearing the CPU MSW's EM bit and updating
the BIOS equipment list
Note: this function is available only in virtual-86 mode in older versions;
newer versions also provide it in MS Windows 16- and 32-bit protected
mode
SeeAlso: AX=4321h/BX=0000h,AX=4321h/BX=0001h
--------O-214380-----------------------------
INT 21 - Novell DOS 7 - UNDELETE PENDING DELETE FILE
AX = 4380h
???
Return: ???
SeeAlso: AH=41h,AX=4381h
--------O-214381-----------------------------
INT 21 - Novell DOS 7 - PURGE PENDING DELETE FILE
AX = 4381h
???
Return: ???
SeeAlso: AH=41h,AX=4380h
--------D-214400-----------------------------
INT 21 - DOS 2+ - IOCTL - GET DEVICE INFORMATION
AX = 4400h
BX = handle
Return: CF clear if successful
DX = device information word (see #1110)
AX destroyed
CF set on error
AX = error code (01h,05h,06h) (see #1366 at AH=59h/BX=0000h)
Notes: value in DH corresponds to high byte of device driver's attribute word
if handle refers to a character device
Novell NetWare reportedly does not return a drive number in bits 5-0
for a disk file
SeeAlso: AX=4401h,INT 2F/AX=122Bh
Bitfields for device information word:
Bit(s) Description (Table 1110)
character device
14 device driver can process IOCTL requests (see AX=4402h"DOS 2+")
13 output until busy supported
11 driver supports OPEN/CLOSE calls
7 set (indicates device)
6 EOF on input
5 raw (binary) mode
4 device is special (uses INT 29)
3 clock device
2 NUL device
1 standard output
0 standard input
disk file
15 file is remote (DOS 3.0+)
14 don't set file date/time on closing (DOS 3.0+)
11 media not removable
8 (DOS 4 only) generate INT 24 if no disk space on write or read past
end of file
7 clear (indicates file)
6 file has not been written
5-0 drive number (0 = A:)
SeeAlso: INT 29
--------D-214401-----------------------------
INT 21 - DOS 2+ - IOCTL - SET DEVICE INFORMATION
AX = 4401h
BX = handle (must refer to character device)
DX = device information word (see #1110)
(DH must be zero)
Return: CF clear if successful
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4400h,INT 2F/AX=122Bh
--------D-214402-----------------------------
INT 21 - DOS 2+ - IOCTL - READ FROM CHARACTER DEVICE CONTROL CHANNEL
AX = 4402h
BX = file handle referencing character device
CX = number of bytes to read
DS:DX -> buffer
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: format of data is driver-specific
(also see separate entries below for some specific cases)
SeeAlso: AX=4400h,AX=4403h"DOS",AX=4404h"DOS",INT 2F/AX=122Bh
--------N-214402-----------------------------
INT 21 - Network Driver Interface Specification (NDIS) 2.0.1 - PROTOCOL MANAGER
AX = 4402h
BX = file handle for device "PROTMAN$"
CX = 000Eh (size of request block)
DS:DX -> request block (see #1111,#1112,#1113,#1114,#1115,#1119,#1120)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4402h"FTPSOFT"
Format of NDIS request block for GetProtocolManagerInfo:
Offset Size Description (Table 1111)
00h WORD 01h
02h WORD returned status (see #1121)
04h DWORD returned pointer to structure representing parsed user config
08h DWORD unused
0Ch WORD returned BCD version of NDIS on which Protocol Manager is based
SeeAlso: #1112,#1113,#1114,#1115,#1116,#1117,#1118,#1119,#1120
Format of NDIS request block for RegisterModule:
Offset Size Description (Table 1112)
00h WORD 02h
02h WORD returned status (see #1121)
04h DWORD pointer to module's common characteristics table (see #1122)
08h DWORD pointer to list of modules to which the module is to be bound
0Ch WORD unused
SeeAlso: #1111,#1113,#1114,#1115,#1116,#1117,#1118,#1119,#1120
Format of NDIS request block for BindAndStart:
Offset Size Description (Table 1113)
00h WORD 03h
02h WORD returned status (see #1121)
04h DWORD caller's virtual address in FailingModules structure
08h DWORD unused
0Ch WORD unused
SeeAlso: #1111,#1112,#1114,#1115,#1116,#1117,#1118,#1119,#1120
Format of NDIS request block for GetProtocolManagerLinkage:
Offset Size Description (Table 1114)
00h WORD 04h
02h WORD returned status (see #1121)
04h DWORD returned dispatch point
08h DWORD unused
0Ch WORD returned protocol manager DS
Note: the dispatch point may be called as follows instead of using this IOCTL
STACK: WORD protocol manager DS
DWORD pointer to request block
Return: AX = returned status
STACK popped
SeeAlso: #1111,#1112,#1113,#1115,#1116,#1117,#1118,#1119,#1120
Format of NDIS request block for GetProtocolIniPath:
Offset Size Description (Table 1115)
00h WORD 05h
02h WORD returned status (see #1121)
04h DWORD pointer to a buffer for the ASCIZ pathname of PROTOCOL.INI
08h DWORD unused
0Ch WORD buffer length
SeeAlso: #1111,#1112,#1113,#1114,#1116,#1117,#1118,#1119,#1120
Format of NDIS request block for RegisterProtocolManagerInfo:
Offset Size Description (Table 1116)
00h WORD 06h
02h WORD returned status (see #1121)
04h DWORD pointer to structure containing parsed user config file
08h DWORD unused
0Ch WORD length of structure
SeeAlso: #1111,#1112,#1113,#1114,#1115,#1117,#1118,#1119,#1120
Format of NDIS request block for InitAndRegister:
Offset Size Description (Table 1117)
00h WORD 07h
02h WORD returned status (see #1121)
04h DWORD unused
08h DWORD poitner to ASCIZ name of the module to be prebind initialized
0Ch WORD unused
SeeAlso: #1111,#1112,#1113,#1114,#1115,#1116,#1118,#1119,#1120
Format of NDIS request block for UnbindAndStop:
Offset Size Description (Table 1118)
00h WORD 08h
02h WORD returned status (see #1121)
04h DWORD failing modules as for BindAndStart
08h DWORD if not 0000h:0000h, pointer to ASCIZ name of module to unbind
if 0000h:0000h, terminate a set of previously dynamically
bound protocol modules
0Ch WORD unused
SeeAlso: #1111,#1112,#1113,#1114,#1115,#1116,#1117,#1119,#1120
Format of NDIS request block for BindStatus:
Offset Size Description (Table 1119)
00h WORD 09h
02h WORD returned status (see #1121)
04h DWORD must be 0000h:0000h
on return, points to root tree
08h DWORD 0000h:0000h
0Ch WORD unused under DOS
SeeAlso: #1111,#1112,#1113,#1114,#1115,#1116,#1117,#1118,#1120
Format of NDIS request block for RegisterStatus:
Offset Size Description (Table 1120)
00h WORD 0Ah
02h WORD returned status (0000h, 0008h, 002Ch) (see #1121)
04h DWORD 0000h:0000h
08h DWORD pointer to 16-byte ASCIZ module name
0Ch WORD 0000h
Note: not supported by the 10NET v5.0 PROTMAN$ driver
SeeAlso: #1111,#1112,#1113,#1114,#1115,#1116,#1117,#1118,#1119
(Table 1121)
Values for NDIS status code:
0000h success
0001h wait for release--protocol has retained control of the data buffer
0002h request queued
0003h frame not recognized
0004h frame rejected
0005h frame should be forwarded
0006h out of resource
0007h invalid parameter
0008h invalid function
0009h not supported
000Ah hardware error
000Bh transmit error
000Ch unrecognized destination
000Dh buffer too small
0020h already started
0021h binding incomplete
0022h driver not initialized
0023h hardware not found
0024h hardware failure
0025h configuration failure
0026h interrupt conflict
0027h MAC incompatible
0028h initialization failed
0029h no binding
002Ah network may be disconnected
002Bh incompatible OS version
002Ch already registered
002Dh path not found
002Eh insufficient memory
002Fh info not found
00FFh general failure
F000h-FFFFh reserved for vendor-specific codes, treated as general failure
Format of NDIS common characteristics table:
Offset Size Description (Table 1122)
00h WORD size of table in bytes
02h BYTE NDIS major version
03h BYTE NDIS minor version
04h WORD reserved
06h BYTE module major version
07h BYTE module minor version
08h DWORD module function flag bits
bit 0: binding at upper boundary supported
bit 1: binding at lower boundary supported
bit 2: dynamically bound
bits 3-31 reserved, must be 0
0Ch 16 BYTEs ASCIZ module name
1Ch BYTE upper boundary protocol level (see #1123)
1Dh BYTE upper boundary interface type
for MACs: 1 = MAC
for data links and transports: to be defined
for session: 1 = NCB
any level: 0 = private (ISV-defined)
1Eh BYTE lower boundary protocol level (see #1123)
1Fh BYTE lower boundary interface type
same as offset 1Dh
20h WORD module ID filled in by protocol manager
22h WORD module DS
24h DWORD system request entry point
28h DWORD pointer to service-specific characteristics (see #1125,#1127)
0000h:0000h if none
2Ch DWORD pointer to service-specific status, or 0000h:0000h if none
(see #1128)
30h DWORD pointer to upper dispatch table (see #1124)
0000h:0000h if none
34h DWORD pointer to lower dispatch table (see #1124)
0000h:0000h if none
38h 2 DWORDs reserved, must be 0
Note: for compatibility with NDIS 1.x.x, a major version of 00h is
interpreted as 01h
(Table 1123)
Values for NDIS boundary protocol level:
00h physical
01h Media Access Control
02h Data link
03h network
04h transport
05h session
FFh not specified
Format of NDIS dispatch table:
Offset Size Description (Table 1124)
00h DWORD -> common characteristics table (see #1122)
04h 4 BYTEs ???
08h DWORD -> ??? function (called with 12 bytes of stack arguments)
0Ch DWORD -> ??? function (called with 10 bytes of stack arguments)
10h DWORD -> ??? function (called with 16 bytes of stack arguments)
14h DWORD -> ??? function (called with 4 bytes of stack arguments)
18h DWORD -> ??? function (called with 18 bytes of stack arguments)
1Ch DWORD -> ??? function (called with 12 bytes of stack arguments)
Format of MAC Service-Specific Characteristics Table:
Offset Size Description (Table 1125)
00h WORD length of table in bytes
02h 16 BYTEs ASCIZ MAC type name, "802.3", "802.4", "802.5", "802.6", "DIX",
"DIX+802.3", "APPLETALK", "ARCNET", "FDDI", "SDLC", "BSC",
"HDLC", or "ISDN"
12h WORD length of station addresses in bytes
14h 16 BYTEs permanent station address
24h 16 BYTEs current station address
34h DWORD current functional adapter address (00000000h if none)
38h DWORD pointer to multicast address list
3Ch DWORD link speed in bits/sec
40h DWORD service flags (see #1126)
44h WORD maximum frame size which may be both sent and received
46h DWORD total transmit buffer capacity in bytes
4Ah WORD transmit buffer allocation block size in bytes
4Ch DWORD total receive buffer capacity in bytes
50h WORD receive buffer allocation block size in bytes
52h 3 BYTEs IEEE vendor code
55h BYTE vendor adapter code
56h DWORD pointer to ASCIZ vendor adapter description
5Ah WORD IRQ used by adapter
5Ch WORD transmit queue depth
5Eh WORD maximum supported number of data blocks in buffer descriptors
60h N BYTEs vendor-specific info
SeeAlso: #1127
Bitfields for service flags:
Bit(s) Description (Table 1126)
0 supports broadcast
1 supports multicast
2 supports functional/group addressing
3 supports promiscuous mode
4 station address software settable
5 statistics always current
6 supports InitiateDiagnostics
7 supports loopback
8 MAC does primarily ReceiveChain indications instead of ReceiveLookahead
indications
9 supports IBM source routing
10 supports MAC reset
11 supports Open/Close adapter
12 supports interrupt request
13 supports source routing bridge
14 supports GDT virtual addresses (OS/2 version)
15 multiple TransferDatas allowed durign a single indication
16 MAC normally sets FrameSize = 0 in ReceiveLookahead
17-31 reserved, must be 0
Format of NetBIOS Service-Specific Characteristics Table:
Offset Size Description (Table 1127)
00h WORD length of table in bytes
02h 16 BYTEs ASCIZ type name of NetBIOS module
12h WORD NetBIOS module code
14h N BYTEs vendor-specific info
SeeAlso: #1125
Format of MAC Service-Specific Status Table:
Offset Size Description (Table 1128)
00h WORD length of table in bytes
02h DWORD seconds since 0:00 1/1/70 when diagnostics last run
(FFFFFFFFh = never)
06h DWORD MAC status bits (see #1129)
0Ah WORD current packet filter flags (see #1130)
0Ch DWORD pointer to media-specific status table or 0000h:0000h
10h DWORD seconds past 0:00 1/1/70 of last ClearStatistics
14h DWORD total frames received (FFFFFFFFh = not counted)
18h DWORD frames with CRC error (FFFFFFFFh = not counted)
1Ch DWORD total bytes received (FFFFFFFFh = not counted)
20h DWORD frames discarded--no buffer space (FFFFFFFFh = not counted)
24h DWORD multicast frames received (FFFFFFFFh = not counted)
28h DWORD broadcast frames received (FFFFFFFFh = not counted)
2Ch DWORD frames with errors (FFFFFFFFh = not counted)
30h DWORD overly large frames (FFFFFFFFh = not counted)
34h DWORD frames less than minimum size (FFFFFFFFh = not counted)
38h DWORD multicast bytes received (FFFFFFFFh = not counted)
3Ch DWORD broadcast bytes received (FFFFFFFFh = not counted)
40h DWORD frames discarded--hardware error (FFFFFFFFh = not counted)
44h DWORD total frames transmitted (FFFFFFFFh = not counted)
48h DWORD total bytes transmitted (FFFFFFFFh = not counted)
4Ch DWORD multicast frames transmitted (FFFFFFFFh = not counted)
50h DWORD broadcast frames transmitted (FFFFFFFFh = not counted)
54h DWORD broadcast bytes transmitted (FFFFFFFFh = not counted)
58h DWORD multicast bytes transmitted (FFFFFFFFh = not counted)
5Ch DWORD frames not transmitted--timeout (FFFFFFFFh = not counted)
60h DWORD frames not transmitted--hardware error (FFFFFFFFh = not countd)
64h N BYTEs vendor-specific info
Bitfields for MAC status bits:
Bit(s) Description (Table 1129)
0-2 operational status
000 hardware not installed
001 hardware failed startup diagnostics
010 hardware configuration problem
011 hardware fault
100 operating marginally due to soft faults
101 reserved
110 reserved
111 hardware fully operational
3 MAC bound
4 MAC open
5 diagnostics in progress
6-31 reserved
Bitfields for packet filter flags:
Bit(s) Description (Table 1130)
0 directed/multicast or group/functional
1 broadcast
2 promiscuous
3 all source routing
4-15 reserved, must be zero
--------D-214402-----------------------------
INT 21 U - MS-DOS 7.0 - CONFIG$ device - GET CONFIGURATION INFORMATION
AX = 4402h
BX = file handle for character device "CONFIG$"
CX = number of bytes to read (at least 5)
DS:DX -> buffer for ??? data (see #1131)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4403h"CONFIG$"
Format of MS-DOS 7.0 CONFIG$ ??? data:
Offset Size Description (Table 1131)
00h WORD ??? (0000h)
02h WORD ??? (0000h or value read from IO.SYS segment 70h)
04h BYTE ??? (value read from IO.SYS segment 70h)
--------I-214402-----------------------------
INT 21 U - IBM SYSTEM 36/38 WORKSTATION EMULATION - VDI.SYS - GET ???
AX = 4402h
BX = handle for character device "GDMS"
CX = number of bytes to read (>= 4)
DS:DX -> buffer (see #1132)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = number of bytes read
Format of System 36/38 emulator returned data:
Offset Size Description (Table 1132)
00h 4 BYTEs ???
04h DWORD pointer to ???
08h 4 BYTEs ???
--------m-214402-----------------------------
INT 21 U - LASTBYTE.SYS v1.19 - IOCTL - GET ??? TABLE
AX = 4402h
BX = handle for device "LA$TBYTE"
CX = 0004h
DS:DX -> DWORD to hold address of 39-byte table of ???
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = number of bytes read
Program: LASTBYTE.SYS is part of the shareware "The Last Byte" memory
management package by Key Software Products
SeeAlso: AX=4402h"HIGHUMM"
--------m-214402-----------------------------
INT 21 - HIGHUMM.SYS v1.17+ - IOCTL - GET API ADDRESS
AX = 4402h
BX = handle for device "KSP$UMM"
CX = 0004h
DS:DX -> DWORD to hold entry point (see #1133)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = number of bytes read
Program: HIGHUMM.SYS is part of the shareware "The Last Byte" memory
management package by Key Software Products
SeeAlso: AX=4402h"LASTBYTE"
(Table 1133)
Call HIGHUMM.SYS entry point with:
AH = 00h allocate UMB (same as XMS function 10h) (see INT 2F/AX=4310h)
DX = size in paragraphs
Return: BX = segment number (if successful)
DX = size of requested block/size of largest block
AH = 01h deallocate UMB (same as XMS func 11h) (see INT 2F/AX=4310h)
DX = segment number of UMB
AH = 02h request a bank-switched memory block
DX = size in paragraphs
Return: BX = segment number (if successful)
DX = size of requested block/size of largest block
AH = 03h release a bank-switched memory block
DX = segment number
AH = 04h transfer data to/from high memory
DS:SI -> source
ES:DI -> destination
CX = length in bytes
Note: enables bank-switched memory, does the copy, then disables
bank-switched memory
AH = 05h get a word from bank-switched memory
ES:DI -> word to read
Return: DX = word
AH = 06h put a word to bank-switched memory
ES:DI -> word to write
DX = word
AH = 07h put a byte to bank-switched memory
ES:DI -> byte to write
DL = byte
AH = 08h enable bank-switched memory
DS:SI -> 6-byte status save area
AH = 09h disable bank-switched memory
DS:SI -> 6-byte save area from enable call (AH=08h)
AH = 0Ah assign name to UMB or high bank-switched block
DX = segment number
DS:SI -> 8-byte blank-padded name
AH = 0Bh locate UMB block by name
DS:SI -> 8-byte blank-padded name
Return: BX = segment number (if successful)
DX = size of block
AH = 0Ch locate bank-switched block by name
DS:SI -> 8-byte blank-padded name
Return: BX = segment number (if successful)
DX = size of block
Return: AX = status code
0001h successful
0000h failed
BL = error code
80h not implemented
B0h insufficient memory, smaller block available
B1h insufficient memory, no blocks available
B2h invalid segment number
Note: only functions 00h and 01h are always available; the remaining
functions are only enabled if the proper commandline switch is given
--------c-214402-----------------------------
INT 21 - SMARTDRV.SYS v3.x only - IOCTL - GET CACHE STATUS
AX = 4402h
BX = file handle for device "SMARTAAR"
CX = number of bytes to read (min 28h)
DS:DX -> buffer for status record (see #1134)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: NCache2 (from the Norton Utilities v8.0) attempts to support this
interface, but does not do so correctly, often hanging the system;
one should use the SmartDrive v4.x or NCache private interfaces
(see INT 2F/AX=4A10h/BX=0000h,INT 2F/AX=FE00h/DI=4E55h)
SeeAlso: AX=4403h"SMARTDRV",INT 2F/AX=4A10h/BX=0000h
Format of SMARTDRV status record:
Offset Size Description (Table 1134)
00h BYTE write-through flag (always 01h)
01h BYTE writes should be buffered (always 00h)
02h BYTE cache enabled if 01h
03h BYTE driver type (01h extended memory, 02h expanded)
04h WORD clock ticks between cache flushes (currently unused)
06h BYTE cache contains locked tracks if nonzero
07h BYTE flush cache on INT 19 reboot if nonzero
08h BYTE cache full track writes if nonzero
09h BYTE double buffering (for VDS) state (00h off, 01h on, 02h dynamic)
0Ah DWORD original INT 13 vector
0Eh BYTE minor version number
0Fh BYTE major version number
10h WORD unused
12h WORD sectors read \
14h WORD sectors already in cache > may be scaled rather than
16h WORD sectors already in track buffer / absolute counts
18h BYTE cache hit rate in percent
19h BYTE track buffer hit rate in percent
1Ah WORD total tracks in cache
1Ch WORD number of tracks in use
1Eh WORD number of locked tracks
20h WORD number of dirty tracks
22h WORD current cache size in 16K pages
24h WORD original (maximum) cache size in 16K pages
26h WORD minimum cache size in 16K pages
28h DWORD pointer to byte flag to increment for locking cache contents
--------d-214402-----------------------------
INT 21 - CD-ROM device driver - IOCTL INPUT
AX = 4402h
BX = file handle referencing character device for CD-ROM driver
CX = number of bytes to read
DS:DX -> control block (see #1136)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: the data returned depends on the first byte of the control block
(two bytes for function 07h, see #1136); the remainder of the
control block is filled by the driver
some device drivers support several subunits (that is more than one
drive) but it is not possible to distinguish between them with this
function; use INT 2F/AX=1510h or INT 2F/AX=0802h instead
under Windows95, the "mscd$$$$" device cannot be opened so you cannot
obtain the handle required by this function: use INT 2F/AX=1510h
or INT 2F/AX=0802h instead
SeeAlso: AX=4403h"CD-ROM",INT 2F/AX=0802h,INT 2F/AX=1510h
(Table 1135)
Values for CD-ROM data being requested:
00h device driver header address
01h drive head location
02h reserved
03h error statistics
04h audio channel info
05h raw drive bytes (uninterpreted and device-specific)
06h device status
07h sector size
08h volume size
09h media change status
0Ah audio disk info
0Bh audio track info
0Ch audio Q-Channel info
0Dh audio sub-channel info
0Eh UPC code
0Fh audio status info
Format of CD-ROM control block:
Offset Size Description (Table 1136)
00h BYTE data being requested (see #1135)
---function 00h---
01h DWORD device driver header address (see also AH=52h,#1332)
---function 01h---
01h BYTE addressing mode
00h HSG
01h Red Book
02h DWORD current location of drive's head
logical sector number in HSG mode
frame/second/minute/unused in Red Book mode
(HSG sector = minute * 4500 + second * 75 + frame - 150)
---function 03h---
01h N BYTEs undefined as of 5 Aug 88 specification
---function 04h---
01h BYTE input channel (0-3) for output channel 0
02h BYTE volume for output channel 0
03h BYTE input channel (0-3) for output channel 1
04h BYTE volume for output channel 1
05h BYTE input channel (0-3) for output channel 2
06h BYTE volume for output channel 2
07h BYTE input channel (0-3) for output channel 3
08h BYTE volume for output channel 3
Notes: output channels 0 and 1 are left and right, 2 and 3 are left prime and
right prime; a volume of 00h is off
the default setting is for each input channel to be assigned to the
same-numbered output channel at full (FFh) volume
---function 05h---
01h BYTE number of bytes read
02h 128 BYTEs buffer for drive bytes
---function 06h---
01h DWORD device parameters (see #1137)
---function 07h---
01h BYTE (call) read mode
00h cooked
01h raw
02h WORD (return) sector size in bytes
---function 08h---
01h DWORD volume size in sectors
BUGS: Aztech device driver v1.10 and v1.27 (at least) return the last sector
number, i.e. total number of sectors - 1
Windows95 returns the total number of sectors + 150 (see the Red Book
to HSG conversion formula at function 01h to understand why this
happens)
---function 09h---
01h BYTE media change status
00h don't know
01h media unchanged
FFh media has been changed
---function 0Ah---
01h BYTE lowest audio track number
02h BYTE highest audio track number
03h DWORD start address of lead-out track (Red Book format)
--function 0Bh---
01h BYTE track number (set by caller)
02h DWORD starting point of track (Red Book format)
06h BYTE track control info
bits 15,14,12: track type (notice: bits not contiguous!)
000 two audio channels, no pre-emphasis
001 two audio channels with pre-emphasis
010 data track
100 four audio channels, no pre-emphasis
101 four audio channels with pre-emphasis
other reserved
bit 13: digital copy permitted
---function 0Ch---
01h BYTE CONTROL and ADR byte (as received from drive)
02h BYTE track number
03h BYTE point or index
04h BYTE minute \
05h BYTE second > running time within track
06h BYTE frame /
07h BYTE zero
08h BYTE "AMIN" or "PMIN" \
09h BYTE "ASEC" or "PSEC" > running time on disk
0Ah BYTE "AFRAME" or "PFRAME" /
---function 0Dh---
01h DWORD starting frame address (Red Book format)
05h DWORD transfer address
09h DWORD number of sectors to read
Note: copies 96 bytes of sub-channel info per sector into buffer
---function 0Eh---
01h BYTE CONTROL and ADR byte
02h 7 BYTEs UPC/EAN code (13 BCD digits,low-order nybble of last byte is 0)
09h BYTE zero
0Ah BYTE "AFRAME"
---function 0Fh---
??? documentation not yet available
01h WORD pause status (0000h not paused, 0001h paused)
03h DWORD audio play start address
07h DWORD ??? audio play length or end address
Bitfields for CD-ROM device parameters:
Bit(s) Description (Table 1137)
0 door open
1 door unlocked
2 supports raw reading in addition to cooked
3 writable
4 can play audio/video tracks
5 supports interleaving
6 reserved
7 supports prefetch requests
8 supports audio channel control
9 supports Red Book addressing in addition to HSG
10 audio is playing
11 no disk in drive
12 supports R-W subchannels
--------m-214402-----------------------------
INT 21 - Quarterdeck - QEMM-386 v5+ - GET API ENTRY POINT
AX = 4402h
BX = file handle for device "QEMM386$"
CX = 0004h
DS:DX -> DWORD buffer for API entry point
Return: CF clear if successful
buffer filled (refer to INT 67/AH=3Fh for entry point parameters)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: Quarterdeck recently (June 1993) documented this function, but the
documentation incorrectly states that it is only available for
QEMM 6+
SeeAlso: AX=4402h"HOOKROM",INT 2F/AX=D201h/BX=5145h,INT 67/AH=3Fh
--------Q-214402-----------------------------
INT 21 U - Quarterdeck - HOOKROM.SYS - GET HOOKED VECTOR TABLE
AX = 4402h
BX = file handle for device "HOOKROM$"
CX = 0004h
DS:DX -> DWORD buffer for address of hooked vector table (see #1138)
Return: CF clear if successful
DS:DX buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4402h/SF=01h
Format of HOOKROM.SYS hooked vector table entry:
Offset Size Description (Table 1138)
00h 5 BYTEs FAR jump to actual interrupt handler
(end of table if first byte is not EAh)
05h BYTE interrupt vector number
--------d-214402-----------------------------
INT 21 - Advanced SCSI Programming Interface (ASPI) - INTERFACE
AX = 4402h
BX = file handle for device "SCSIMGR$"
CX = 0004h or 0005h (refer to notes below)
DS:DX -> buffer for result (see #1139), set to zeros before call
Return: CF clear if successful
AX = 0004h or 0005h (refer to notes below)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: the variant of the call requesting five bytes is an UNDOCUMENTED
extension supported by Adaptec's ASPI2DOS.SYS, ASPI4DOS.SYS, and
ASPI7DOS.SYS; if made of a host manager which does not support the
variant, only four bytes will be returned. If the variant is
supported, Adaptec's WINASPI.DLL assumes that the host manager is
an "advanced" one which operates in either real or protected mode
(and thus does not require a DPMI INT 31/AX=0301h call to be invoked
from protected mode). Support of the five-byte variant also appears
to imply that an advanced ASPI host manager uses no temporary
storage space except the SRB (see #1141) and the stack, and that it
is fully reentrant.
if called with a standard request for four bytes, even Adaptec's
advanced drivers return only the requested four bytes containing the
ASPI entry point address
the function address is called with the address of a SCSI Request
Block (see #1141) on the stack and the caller must clean up the
stack
SeeAlso: AX=440Ch"ASPITAPE",INT 11/AH=FFh"WD7000"
Format of ASPI IOCTL result:
Offset Size Description (Table 1139)
00h DWORD function address
04h BYTE number of SCSI host adapters supported by host manager
(Table 1140)
Values for ASPI request number:
00h "HA_INQ" host adapter inquiry / extended host adapter inquiry
01h "GET_TYPE" get device type
02h "EXEC_SIO" execute SCSI I/O
03h "ABORT_SRB" abort SRB
04h "RESET_DEV" reset SCSI device
05h "SET_HAPRMS" set host adapter parameters
06h get disk drive information
Format of SCSI Request Block (64 bytes):
Offset Size Description (Table 1141)
00h BYTE request number (see #1140)
01h BYTE request status (see #1142)
02h BYTE host adapter ID
03h BYTE request flags (see #1143)
04h DWORD reserved (0)
---request 00h---
08h BYTE (ret) number of host adapters
09h BYTE (ret) target adapter ID
0Ah 16 BYTEs (ret) SCSI manager ID
1Ah 16 BYTEs (ret) host adapter ID
2Ah 16 BYTEs (ret) host adapter-unique parameters
---extended request 00h---
04h 2 BYTEs (call) extended request signature 55h AAh
(ret) if extended request supported, reply AAh 55h
06h WORD (call) length of extended buffer at offset 3Ah
(ret) number of bytes returned in extended buffer
08h BYTE (ret) number of host adapters
09h BYTE (ret) target adapter ID
0Ah 16 BYTEs (ret) SCSI manager ID
1Ah 16 BYTEs (ret) host adapter ID
2Ah 16 BYTEs (ret) host adapter-unique parameters
3Ah N BYTEs extended buffer
3Ah WORD features (see #1144)
3Ch WORD maximum scatter/gather list length
3Eh DWORD maximum SCIS data transfer size (0 = unlimited)
---request 01h---
08h BYTE target ID
09h BYTE logical unit number
0Ah BYTE (ret) device type (see #1147)
---request 02h---
08h BYTE target ID
09h BYTE logical unit number
0Ah DWORD data allocation length
(ret) residual byte length (if supported and requested)
0Eh BYTE sense allocation length
0Fh DWORD data buffer pointer
13h DWORD next request pointer (for linking)
17h BYTE CDB length
18h BYTE (ret) host adapter status (see #1141)
19h BYTE (ret) target status (see #1146)
1Ah DWORD post routine address (see #1153)
1Eh WORD real mode Post DS
20h DWORD SRB pointer
24h WORD reserved
26h DWORD SRB physical address
2Ah 22 BYTEs SCSIMGR$ workspace
40h N BYTEs CCB, including sense data (20-24 bytes)
---request 03h---
08h DWORD address of SRB to abort
---request 04h---
08h BYTE target ID
09h BYTE logical unit number
0Ah 14 BYTEs reserved
18h BYTE (ret) host adapter status (see #1145)
19h BYTE (ret) target status (see #1146)
1Ah DWORD post routine address
1Eh 34 BYTEs workspace
---request 05h---
08h 16 BYTEs host adapter-unique parameters
---request 06h---
08h BYTE target ID
09h BYTE logical unit number
0Ah BYTE disk drive flags (see #1148)
0Bh BYTE INT 13h drive number
0Ch BYTE preferred head number translation
0Dh BYTE preferred sector size translation
0Eh 10 BYTEs reserved
SeeAlso: #1149
(Table 1142)
Values for ASPI request status:
00h not done yet
01h completed successfully
02h aborted by host
04h SCSI I/O error
80h invalid
81h no adapter
82h no device attached
else status
SeeAlso: #1141
Bitfields for ASPI request flags:
Bit(s) Description (Table 1143)
0 posting enabled
1 linking enabled
2 residual byte length reported in Data Allocation Length field
3 transfer from SCSI target to host
4 transfer from host to SCSI target
5 scatter/gather
7-6 reserved
Note: no data is transferred if both bits 3 and 4 are set; if neither is
set, the direction is determined by the SCSI command
SeeAlso: #1141
Bitfields for ASPI extended features:
Bit(s) Description (Table 1144)
0 scatter/gather supported
1 residual byte length reported
2 Wide SCSI 16 host adapter
3 Wide SCSI 32 host adapter
15-4 reserved
SeeAlso: #1141
(Table 1145)
Values for host adapter status:
00h no error detected
11h select timeout
12h data overrun
13h bus error
14h bus failure
(Table 1146)
Values for target status:
00h no status
02h sense data stored in SRB
08h target busy
18h reservation error
(Table 1147)
Values for device type:
00h disk drive
01h tape drive (streamer)
02h printer
03h processor
04h WORM drive
05h CD-ROM drive
06h scanner
07h optical drive
08h autochanger
09h communications device
(Table 1148)
Values for disk drive flags:
00h no INT 13 access
01h INT 13 with DOS access
02h INT 13 without DOS access
03h invalid flags
Format of CCB:
Offset Size Description (Table 1149)
00h BYTE command code (see #1150)
01h BYTE flags
bits 4-0: vary by function
bits 7-5: logical unit number
02h BYTE "adr_1"
03h BYTE "adr_0"
04h BYTE length
05h BYTE control
...
06h/0Ah 14 BYTEs buffer for sense data (see #1151)
SeeAlso: #1141
(Table 1150)
Values for CCB command code:
00h test unit ready
01h rewind
03h request sense data
05h get block size limits
08h Group 0 read
0Ah Group 0 write
10h write file marks
11h SCSI Space (set position?)
12h SCSI Inquire
15h set mode information
16h reserve SCSI device
17h release SCSI device
19h erase
1Ah request mode information
1Bh load/unload media
1Dh request target self-check
24h set window parameters
25h get window parameters
28h Group 1 read
2Ah Group 1 write
31h document feeder control
34h get scan data status
---vendor-specific commands---
D3h get document feeder status
D4h set document feeder mode
Format of sense data:
Offset Size Description (Table 1151)
00h BYTE error code (bit 7 set if valid)
01h BYTE segment number
02h BYTE sense key
bit 6: EOM
bit 5: ILI
bits 0-3: sense key (see #1152)
03h 4 BYTEs information bytes
07h BYTE additional sense length (0Ah)
08h 4 BYTEs command-specific information
0Ch BYTE additional sense code
0Dh BYTE additional sense code qualifier
0Eh BYTE field replaceable unit code
0Fh 3 BYTEs sense key specific bytes
(Table 1152)
Values for sense key:
00h no sense data
02h SCSI unit not ready
03h media error
04h unrecoverable hardware error
05h illegal parameter in CDB
06h target has been reset
0Bh target aborted command
(Table 1153)
Values APSI post function is called with:
STACK: DWORD -> SRB (see #1141) which completed
interrupts disabled
Return: EBP, EBX, ESI, EDI must be preserved
interrupts disabled
Note: the post function may issue any APSI function except an abort; it
should complete as quickly as possible
--------m-214402-----------------------------
INT 21 U - Qualitas 386MAX v6.00+ - IOCTL INPUT - GET STATE
AX = 4402h
BX = file handle for device "386MAX$$"
CX = number of bytes to read
DS:DX -> BYTE 03h followed by 386MAX state buffer (see #1154)
Return: CF clear if successful
buffer at DS:DX+1 filled
AX = number of bytes actually copied
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: if the value given in CX is less than the size of the state record
(5Ah for v6.01, 66h for v7.00), only a partial state record will be
returned
the state is 40h bytes for 386MAX (actually ASTEMM) v2.20 ("386MAX$$"
did not exist yet, use "QMMXXXX0" and then "EMMXXXX0" instead) and
56h bytes for v5.11.
to invoke 386MAX API functions, push DX onto the stack, load DX with
the word at offset 25h in the returned state, load all other
registers as needed for the desired function, and execute an
OUT DX,AL or OUT DX,AX; DX will be set to the pushed value on return
if it is not otherwise modified by the API function. For safety,
in case a function is not supported or 386MAX is not present, SP
should be saved and restored around the API call.
Windows 3.1 Standard mode, LAN Manager, and Windows for Workgroups all
use the 386MAX API; LAN Manager and Windows for Workgroups reportedly
make some calls incorrectly
SeeAlso: AX=4403h/SF=03h"386MAX",INT 67/AH=3Fh
Format of 386MAX v6.01+ state:
Offset Size Description (Table 1154)
-1 BYTE (call) 03h
00h 6 BYTEs signature "386MAX"
06h 4 BYTEs version string "N;NN" or "N.NN" (i.e. "6;01" for v6.01)
(';' by default; apparently changed to a period when 386MAX
has linked high RAM into DOS's memory chain)
0Ah WORD segment of low-memory portion of 386MAX.SYS
0Ch 2 BYTEs ???
0Eh WORD segment of ??? memory block or 0000h
10h WORD bit flags 1 (see #1155)
12h WORD starting address of video memory in KB
14h 2 BYTEs ???
16h WORD total high DOS memory in KB
18h 2 BYTEs ???
1Ah WORD available shared memory in KB
1Ch WORD KBytes extended memory used by 386MAX
1Eh 2 BYTEs ???
20h WORD total extended memory in KB
22h WORD IO port to write (OUT DX,AL) to invoke 386MAX INT 15 functions
24h WORD IO port to write (OUT DX,AL) to invoke 386MAX API functions
(see #1168)
26h WORD ??? (depends on DOS version)
28h WORD size of ??? in paragraphs
2Ah DWORD machine type (see #1163)
2Eh DWORD -> first DOS memory control block
32h WORD system configuration flags (see #1156)
34h WORD debugging flags 1 (see #1157)
36h WORD debugging flags 2 (see #1158)
38h 2 BYTEs ???
3Ah WORD segment of first MCB in high memory chain
3Ch WORD feature flags 1 (see #1160)
3Eh WORD feature flags 2 (see #1161)
40h WORD feature flags 3 (see #1162)
42h WORD segment of first 386MAX control block??? (see #1164)
44h WORD amount of memory to report available on INT 15/AH=88h
46h 4 BYTEs ???
4Ah WORD number of K at start of address space swapped with fast
extended memory (SWAP= parameter)
4Ch 2 BYTEs ???
4Eh WORD segment address of ???
50h WORD debugging flags 3 (see #1159)
52h DWORD old INT 21h
56h DWORD pointer to 386MAX's EMS (INT 67h) handler
---386MAX v7.00---
5Ah DWORD KB of extended memory managed by 386MAX
5Eh DWORD bytes of extended memory (EXT= parameter)
62h 4 BYTEs ???
Bitfields for 386MAX bit flags 1:
Bit(s) Description (Table 1155)
1 ???
2 allow A20 to be enabled/disabled???
3 ??? (cleared by calling INT 67 functions or starting MSWindows)
4 high RAM present???
5 386MAX in AUTO mode
6 386MAX enabled
7 386MAX is providing EMS services
8 ??? (affects API function 08h)
9 A20 gate closed (A20 disabled) (see INT 15/AX=2402h)
10 Weitek support enabled
11 ???
12 ROMs not shadowed???
13 QPMS has been used
14 ???
15 ???
Bitfields for 386MAX system configuration flags:
Bit(s) Description (Table 1156)
1 ROM compressed???
3 ???
5 386MAX loaded into high memory
6 Microchannel bus
7 Weitek math coprocessor detected
9 ??? (also generates INT 01 on ??? and INT 03 on ???)
11 PC/XT (thus only single 8259 interrupt controller present, DMA only
in 1st megabyte, etc)
13 LMLTOP= specified
14 enable A20 control???
15 ???
Bitfields for 386MAX debugging flags 1:
Bit(s) Description (Table 1157)
0 DEBUG=LED
1 DEBUG=X67
2 DEBUG=INV
3 DEBUG=EMSPTED
4 DEBUG=JMP
5 DEBUG=CALL
6 DEBUG=HLT
7 DEBUG=PMR
8 DEBUG=CR3
9 DEBUG=CAPS or DEBUG=INT
10 DEBUG=RC
11 DEBUG=ROM
12 DEBUG=XM
13 DEBUG=SOR
14 DEBUG=XR
15 DEBUG=EMSERR (generate INT 01 on returning error from EMS call)
Bitfields for 386MAX debugging flags 2:
Bit(s) Description (Table 1158)
0 DEBUG=ROMSWAP
1 DEBUG=UNSHADOWROM
2 DEBUG=COMPROM
3 DEBUG=DPMIPHYS
4 DEBUG=ALLROM
5 DEBUG=VMS
6 DEBUG=XMS (generate INT 01 on XMS calls)
7 DEBUG=I06
8 DEBUG=VCPI
9 DEBUG=XDMA
10 DEBUG=X09
13 DEBUG=I67 (generate INT 01 on every INT 67 call)
14 DEBUG=EVM (generate INT 01 on entering V86 mode)
15 DEBUG=EMSSAVE or DEBUG=VDS
Bitfields for 386MAX debugging flags 3:
Bit(s) Description (Table 1159)
10 DEBUG=EPM
12 DEBUG=ABIOS
13 DEBUG=XMSPTED
14 DEBUG=TIME
15 DEBUG=SCRUB
Bitfields for 386MAX feature flags 1:
Bit(s) Description (Table 1160)
1 Weitek present
2 no DPMI services
3 NODMA
4 TERSE
5 NOROM
6 NOPARITY
8 NOFLEX (IGNOREFLEXFRAME)
11 don't create UMBs
12 don't backfill below video memory (NOLOW)
13 FRAME= specified
14 EXT= specified
15 NOEMS, allow prior expanded memory manager to provide EMS
Bitfields for 386MAX feature flags 2:
Bit(s) Description (Table 1161)
0 UNSHIFT specified (FORCEA20 disabled)
1 NOXRAM
2 NOSCSI specified
3 SCREEN specified
4 enabled EISADMA
5 slow DMA
6 RESETKEYB specified
7 ???
9 TOP384
10 ???
11 NOWARMBOOT
12 USE= specified
13 ROM= specified
Bitfields for 386MAX feature flags 3:
Bit(s) Description (Table 1162)
0 Windows3 support enabled
1 SHADOWROM
2 don't compress ROM (NOCOMPROM)
3 ??? (related to PRGREG=)
4 ??? (related to PRGREG=)
5 SHADOWRAM
6 DOS4 specified
7 NOLOADHIGH
8 NOPULSE
11 FORCEA20
12 DMA buffer enabled
13 NOSCRUB
15 NOFRAME
Bitfields for 386MAX machine type:
Bit(s) Description (Table 1163)
12 Amstrad
13 Epson
14 Zenith Data Systems
15 "ASEM"
16 NEC
17 "HPRS" model codes 69h and 6Ah
18 Dell
19 "CA"
20 ITT (Xtra Business Systems/Alcatel)
21 Toshiba 5100
22 Olivetti
23 Quadram Quad386 (BIOS model FEh, submodel A6h)
24 Tandy???
25 AST 386
26 INBOARD, ??? version
27 INBOARD, ??? version
28 INBOARD, ??? version
29 "HPRS"
30 Compaq 386
31 JET386
Format of 386MAX control block:
Offset Size Description (Table 1164)
00h WORD segment of next block (FFFFh if last)
02h WORD segment of previous block (FFFFh if first)
04h 12 BYTEs filename
10h WORD resident size in paragraphs
12h WORD environment size???
14h WORD real prsent environment size + 1 (0000h if ENVSAVE used)
16h 2 BYTEs ???
18h DWORD initial size or SIZE=n in 386LOAD commandline
1Ch DWORD SIZE=-1 ???
20h DWORD SIZE= ???
24h BYTE PRGREG= if specified, else FFh
25h BYTE ENVREG= if specified, else FFh
26h BYTE FlexFrame (00h not present, 01h present)
27h 3 BYTEs ???
2Ah BYTE GROUP= or 00h if not present
2Bh BYTE ???
2Ch WORD PSP
Format of 386MAX high memory info record:
Offset Size Description (Table 1165)
00h WORD segment address of memory region
02h WORD size of memory region in paragraphs
04h BYTE type or flags???
00h if locked out
02h if EMS page frame
04h if high RAM
42h if ROM
05h BYTE ???
Format of 386MAX ROM shadowing record:
Offset Size Description (Table 1166)
00h WORD logical start segment of ROM??? (may be used by BlueMAX when it
squeezes together the ROMs to make room)
02h WORD physical start segment of ROM
04h 2 BYTEs ???
06h WORD size of shadowed ROM in paragraphs
08h 2 BYTEs ???
0Ah WORD flags
bit 15: shadowing enabled for this ROM???
bit 14: ???
bit 13: ???
bit 12: ???
bit 10: ???
(Table 1167)
Values for 386MAX memory type:
00h unused by EMS
01h DOS
04h page frame overlapping ROM???
80h high memory
84h page frame???
87h video ROM???
Note: the type may be 00h (unused) if the 16K page is split among different
uses (such as ROM and high RAM)
(Table 1168)
Call 386MAX API (via OUT DX,AL) with:
STACK: WORD value for DX
AH = 00h unused
Return: AH = 84h (unsupported function)
AH = 01h get high memory information
ES:DI -> buffer for array of high memory info records
(see #1165)
Return: CX = number of records placed in buffer
AH = 02h get shadowed ROM info
ES:DI -> buffer for array of ROM shadowing records (see #1166)
Return: CX = number of records placed in buffer
AH = 03h get 386MAX state
ES:DI -> 90-byte buffer for state (see #1154)
Return: AH = 00h (successful)
buffer filled
AH = 04h get memory types???
ES:DI -> buffer for memory type info (array of bytes, one per
16K page) (see #1167)
Return: CX = number of bytes placed in buffer
AH = 05h get page table entries
AL = A20 control (00h enable A20 first, 01h leave unchanged)
CX = buffer size in bytes (0000h = enough for all memory from
given start to end of memory managed by 386MAX)
SI = first K to report (rounded down to 4K page)
ES:DI -> buffer for returned page table entries
Return: CX = number of bytes returned (four per 4K page)
ES:DI buffer filled
AH = 06h get memory speed info
ES:DI -> buffer for memory speed records (see #1169)
Return: AH = 00h (successful)
CX = number of bytes placed in buffer
Note: this function can take over a second to execute
AH = 07h map/unmap multiple handle pages
DX = EMS handle (on stack)
STACK: DWORD -> EMS mapping record
Return: AH = status (00h,80h,83h,8Ah,8Bh)
Format of EMS mapping record:
Offset Size Description
00h WORD function
0000h use physical page numbers
0001h use segment addresses
02h WORD EMS handle
04h WORD number of mapping entries following
06h 2N WORDs logical page number and physical page/segment
logical page FFFFh means unmap physical page
SeeAlso: INT 67/AH=50h
AH = 08h "EMM2_GOREAL" check whether possible to disable 386MAX
AL = ??? (00h or nonzero)
Return: AH = status (00h OK, A4h not possible at this time)
Note: if AL=00h, this function always returns success
AH = 09h toggle Bit Flags 1 flags
BX = bitmask of bit flags 1's flags to toggle (see #1155)
Return: AH = 00h (successful)
Note: enables A20 first
AH = 0Ah toggle Debugging Flags 1 flags
BX = bitmask of Debugging Flags 1's bits to toggle (see #1157)
Return: AH = 00h (successful)
Notes: enables A20 first
does ??? if bit 3 on after specified bits are toggled
AH = 0Bh toggle Debugging Flags 2 flags
BX = bitmask of Debugging Flags 2's bits to toggle (see #1158)
Return: AH = 00h (successful)
Note: enables A20 first
AH = 0Ch toggle feature flags 3
BX = bitmask of feature flags 3's bits to toggle (see #1162)
Return: AH = 00h (successful)
Note: enables A20 first
AH = 0Dh specify 386MAX high-memory location
BX = segment address of high-memory real-mode portion of 386MAX
CX = current segment of real-mode stub???
Return: AH = status (00h successful)
???
AH = 0Eh CRT controller register virtualization
AL = subfunction
00h allow access to CRTC I/O ports 03B4h/03B5h, 03D4h/03D5h
01h trap accesses to CRTC I/O ports
AH = 0Fh reboot system
Return: never
AH = 10h unused
Return: AH = 84h (unsupported function)
AH = 11h get high memory information
ES:DI -> 96-byte buffer for high memory info
Return: AH = 00h (successful)
ES:DI buffer filled
Notes: each byte in buffer contains bit flags for a 4K page in
the A000h-FFFFh region
bit 0: page is writeable
bit 1: physical address same as linear address
bit 2: EMS page frame
bit 6: page is part of the QPMS window
this function can take over a second to execute,
because it does a 128K read for each page in an
attempt to flush any RAM cache the system may have
AH = 12h shadow RAM mapping
AL = subfunction
00h unshadow ROMs (except page FFh if NOWARMBOOT set)
01h map shadow RAM into ROM regions???
Return: AH = 00h (successful) if AL=00h or 01h
AH = 8Fh otherwise
AH = 13h shadow RAM page protection
AL = subfunction
00h set all shadowed ROM 4K pages to read-only
01h set all shadowed ROM 4K pages to read-write
Return: AH = 00h (successful) if AL=00h or 01h
AH = 8Fh otherwise
AH = 14h get Programmable Option Select info???
ES:DI -> 54-byte buffer for POS data???
Return: AH = 00h if successful
AH = A4h on error
Note: the buffer consists of nine 6-byte fields; the first
eight for slots 1-8, the last for the system board
AH = 15h ???
???
Return: ???
AH = 16h get 386MAX memory usage screen
ES:DI -> buffer for memory info display
CX = size of buffer in bytes
Return: ES:DI buffer filled with '$'-terminated string (if
large enough to hold entire usage screen)
Note: the screen is 0303h bytes in v7.00
AH = 17h Windows 3 startup/termination
AL = subfunction
00h Windows3 initializing
DX (on stack) = Windows startup flags
DI = Windows version number (major in upper byte)
ES:BX = 0000h:0000h
DS:SI = 0000h:0000h
Return: CX = 0000h if OK for Windows to load
<> 0 if Windows should not load
ES:BX -> startup info structure
DS:SI -> Virtual86 mode enable/disable callback
01h Windows3 terminating
ES:BX -> ???
DX (on stack) = Windows exit flags
Return: ???
AH = 18h QPMS (Qualitas Protected Memory Services)
AL = subfunction
00h get QPMS configuration
Return: BX = starting segment of QPMS memory window
CX = number of 4K pages reserved for QPMS???
DX = number of 4K pages in QPMS window???
01h map QPMS memory page???
BX = 4K page number within memory reserved for QPMS???
CL = 4K page number within QPMS memory window???
02h mark all QPMS memory read-only
03h mark all QPMS memory read-write
Return: AH = status (00h,8Ah,8Bh,8Fh)
AH = 19h get linear address for physical address
EDX = physical address (low word on stack)
Return: AH = status
00h successful
EDX = linear address at which physical address
may be accessed
8Bh physical address currently not addressable
Note: enables A20 first
AH = 1Ah set page table entry
EDX = new page table entry (low word on stack)
ESI = linear address of page to map (bits 0-11 clear)
Return: AH = status (00h,8Bh)
Note: enables A20 first
AH = 1Bh get ???
Return: AH = status
BX = ???
CX = number of ???
EDX = physical address of ???
AH = 1Ch get original interrupt vector
AL = interrupt vector (00h-7Fh)
Return: AH = 00h (successful)
EDX = original vector before 386MAX loaded (segment in
high word, offset in low word)
Note: no range checking is performed; requests for INTs 80h-
FFh will return random values
AH = 1Dh display string???
SI = ???
Return: AH = 00h (successful)
???
Note: this function appears to be broken in v7.00
AH = 1Eh get memory info
ES:DI -> memory info (see #1170)
Return: ???
AH = 1Fh get DPMI host information
Return: AX = 0000h if successful
BX = DPMI flags (see #2823 at INT 31/AX=0400h)
CL = CPU type (02h = 80286, 03h = 80386, etc.)
DX = DPMI ver supported (DH=major, DL=2-digit minor)
SI = ???
ES???:DI -> ???
Note: NOP if NODPMI switch specified
AH = 20h (v7.00) get ???
AL = index of ???
Return: EDX = ??? for specified ???
AH = 21h (v7.00) STACKS support
AL = 00h get STACKS parameters
Return: BX = ??? (0060h for v7.00)
CX = number of stacks for hardware interrupts
DX = size of each stack in bytes
SI = ??? (low and high bytes are separate values)
DI = ??? (low and high bytes are separate values)
low byte = logical page number set by subfn 02h
ES = ???
AL = 01h set ??? "EMM2_DSTKS"
EBX = ???
ECX = ???
AL = 02h set ???
BL = logical page number for ??? (00h-03h)
Return: AH = status (00h,8Ah)
AH = 22h (v7.00) call ??? for every load module
AL = which function to call
00h call ???
else call ????
Return: AH = 00h
Note: if AL=00h, calls the protected-mode function pointed at by
the DWORD at offset 22h from the start of each module installed
by a LOAD= directive; if AL<>00h, it calls the function
pointed at by the DWORD at offset 28h of the load module
AH = 23h (v7.00) ???
AL = 00h set ???
BL = ???
Return: AH = 00h or unchanged (depending on ???)
AL = 01h set ???
BL = ???
BH = ???
CX = ???
DX = ??? (on top of stack)
Return: AH = status (00h if successful, 8Fh once table full)
Note: this call adds one entry to an internal table on each
call, until the table is full
AL = 02h get ???
CX = size of buffer
ES:DI -> buffer for ??? (60 bytes total data)
Return: CX = number of bytes actually returned
Note: returns the array storing the values set with AX=2301h
Format of one entry in array:
Offset Size Description
00h BYTE ??? (BL from subfn 01h)
01h WORD ??? (CX from subfn 01h)
03h BYTE ??? (BH from subfn 01h)
04h WORD ??? (DX from subfn 01h)
AL = 03h set ??? name/path
ES:DI -> buffer containing ASCIZ ???
AL = 04h get ???
ES:DI -> buffer for ASCIZ ???
Note: the ASCIZ string for subfunctions 03h and 04h does not appear
to be used by 386MAX, and may serve merely for communication
between two other Qualitas programs
AH = 24h (v7.00) high memory control
AL = 00h get high memory state
Return: BX = current state
00h high memory removed from DOS memory chain
01h high memory included in DOS memory chain
AL = 01h set high memory state
BX = new state
00h high memory removed from DOS memory chain
01h high memory included in DOS memory chain
else
Return: ??? (error, but return varies according to ???)
AH = 25h (v7.00) remove high RAM from DOS memory chain
AH = 26h (v7.00) ???
BX = ???
CX = ???
SI = ???
DI = ???
Return: AH = status
BX = ???
CX = ???
AH = 27h (v7.00) ???
AL = 00h get ???
Return: BX = number of paragraphs for ???
AL = 01h ???
BX = ???
ES??? = ???
AL = 02h ???
???
AL = 03h ???
CX = ???
DX = ???
ES??? = ???
Return: ???
AH = 28h (v7.00) get ???
Return: AH = status (00h,8Fh) (see #3319 at INT 67/AH=40h)
if AH=00h,
CX = ???
DX = ???
AH = 29h (v7.00) get ???
Return: AX = ???
AH = 40h-5Dh EMS services (see INT 67/AH=40h, etc.)
AH = DEh VCPI services (see INT 67/AX=DE00h, etc.)
Return: AH = status (as for EMS INT 67 calls)
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function
8Ah invalid logical page nuber
8Bh illegal physical page number
8Fh undefined subfunction
A4h access denied
etc.
STACK popped (value placed in DX if no specific return value for DX)
Format of 386MAX memory speed record:
Offset Size Description (Table 1169)
00h DWORD page table entry for 4K page
04h WORD number of microticks (840ns units) required for REP LODSD of
entire 4K page
Format of 386MAX memory info [array]:
Offset Size Description (Table 1170)
00h DWORD linear start address
04h DWORD size in bytes
08h WORD XMS handle (if next byte = 04h)
??? (if next byte = 05h)
??? (if next byte = 06h)
??? (if next byte = 13h)
??? (if next byte = 14h)
??? (if next byte = 15h)
??? (if next byte = 23h)
??? (if next byte = 24h)
??? (if next byte = 26h)
else unused
0Ah BYTE type
00h = ???, 01h = VDISK,
02h = INT 15h extended memory, 03h = ??? extended,
04h = XMS handle's memory, 05h = ???, 06h = ???, 07h = ???,
08h = ???, 09h = ???, 0Ah = ???, 0Bh = ???,
11h = ???, 12h = ???, 14h = ???, 15h = ???,
19h = ???, 1Ah = ???, 1Bh = ???,
1Ch = ???, 1Dh = ???, 1Eh = ???, 1Fh = ???,
20h = ???, 21h = ???, 23h = ???, 24h = ???,
26h = ???
0Bh BYTE ??? (00h for types 00h-03h, 07h-0Bh, 19h-21h;
80h for types 04h/13h-15h/23h-26h;
??? for type 05h)
--------V-214402-----------------------------
INT 21 - PGS1600.DEV - IOCTL - GET CONFIGURATION INFO
AX = 4402h
BX = file handle for device "PGS1600$"
CX = 0018h (size of buffer)
DS:DX -> configuration buffer (see #1171)
Return: CF clear if successful
buffer filled
AX = number of bytes actually copied
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
display adapter, which provides a 1600x1200 monochrome display as
well as one of two emulations, MDA or CGA.
SeeAlso: AX=4403h"PGS1600"
Format of PGS1600.DEV configuration information:
Offset Size Description (Table 1171)
00h WORD version (high byte = major, low byte = minor)
02h WORD board initialisation mode
04h WORD board I/O address
03D0h CGA emulation
03B0h MDA emulation
0390h no emulation
0350h no emulation, alternate
06h WORD emulation buffer segment
B800h CGA emulation
B000h MDA emulation
0000h no emulation
08h WORD PG1600 graphics buffer segment
0Ah WORD number of bytes between consecutive graphic rows
0Ch WORD horizontal pixel size
0Eh WORD vertical pixel size
10h WORD horizontal dots per inch
12h WORD vertical dots per inch
14h WORD graphics buffer bits per pixel
16h WORD monitor bits per pixel
--------N-214402-----------------------------
INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
AX = 4402h
BX = file handle referencing device "$IPCUST"
CX, DS:DX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: there are a total of 378h bytes of configuration data for IPCUST.SYS
version 2.05. If less than the entire data is read or written,
the next read/write continues where the previous one ended; this
call and AX=4403h both reset the location at which the next
operation starts to zero
v2.1+ uses a new configuration method, but allows the installation
of IPCUST.SYS for backward compatibility with other software which
must read the PC/TCP configuration
SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4403h"IPCUST"
--------N-214402-----------------------------
INT 21 - WORKGRP.SYS - GET API ENTRY POINT
AX = 4402h
BX = file handle for device "NET$HLP$"
CX = 0008h
DS:DX -> buffer for entry point record (see #1172)
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code
Program: WORKGRP.SYS is the portion of Microsoft's Workgroup Connection which
permits communication with PCs running Windows for Workgroups or
LAN Manager
SeeAlso: AH=3Fh"WORKGRP.SYS"
Format of WORKGRP.SYS entry point record:
Offset Size Description (Table 1172)
00h WORD 3633h \ signature???
02h WORD EF6Fh /
04h DWORD address of entry point (see #1173)
Note: first four bytes of buffer must be 6Fh E9h 33h 36h on entry when using
IOCTL rather than READ to get the entry point record
(Table 1173)
Call WORKGRP entry point with:
STACK: WORD function number (0000h-0009h)
Return: STACK unchanged
SeeAlso: #1174,#1175,#1176,#1177,#1178,#1179,#1180,#1181
(Table 1174)
Call WORKGRP function 00h with:
STACK: WORD 0000h (function "get ???")
Return: DX:AX -> data table
(Table 1175)
Call WORKGRP function 01h with:
STACK: WORD 0001h (function "hook ???")
Return: STACK: DWORD pointer to ???
WORD 0001h (function number)
(Table 1176)
Call WORKGRP function 02h with:
STACK: WORD 0002h (function "unhook ???")
???
Return: ???
(Table 1177)
Call WORKGRP function 03h with:
STACK: WORD 0003h (function "reenable printer port")
WORD LPT port number
Return: ???
(Table 1178)
Call WORKGRP function 04h with:
STACK: WORD 0004h (function "disable printer port")
WORD LPT port number
Return: ???
(Table 1179)
Call WORKGRP function 05h with:
STACK: WORD 0005h (function "???")
???
Return: ???
(Table 1180)
Call WORKGRP function 06h with:
STACK: WORD 0006h (function "???")
Return: STACK unchanged
AX = 0000h
DX = 0000h
(Table 1181)
Call WORKGRP functions 07h-09h with:
STACK: WORD 0007h-0009h (NOP functions)
Return: STACK unchanged
AX = 0001h
DX = 0000h
--------N-214402-----------------------------
INT 21 - 10NET v5.0 - 10BEUI.DOS - API
AX = 4402h
BX = file handle referencing device "10BEUI$"
DS:DX -> parameter record (see #1182)
CX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4402h"10MEMMGR",INT 6F/AH=00h"10NET"
Format of 10NET 10BEUI.DOS parameter record:
Offset Size Description (Table 1182)
00h WORD 000Ah (function number???)
02h WORD ???
04h DWORD pointer to buffer for ???
08h 4 BYTEs ???
0Ch WORD transfer size
--------N-214402-----------------------------
INT 21 - 10NET v5.0 - 10MEMMGR.SYS - API
AX = 4402h
BX = file handle referencing device "MEMMGR0$"
DS:DX -> 6-byte buffer for interface info (see #1183)
CX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4402h"10BEUI",INT 6F/AH=00h"10NET"
Format of 10NET 10MEMMGR.SYS interface info:
Offset Size Description (Table 1183)
00h DWORD address of entry point (see #1184)
04h WORD version (0500h for v5.00)
(Table 1184)
Call 10NET 10MEMMGR.SYS entry point with:
AL = 01h ???
BX = ???
Return: CF clear if successful
CF set on error
AX = error code
AL = 02h ???
???
AL = 03h ???
???
AL = 04h set/restore memory allocation strategy
BX = subfunction
0000h set strategy
0001h restore strategy
Return: CF clear if successful
CF set on error (if function disabled)
various registers destroyed
AL = other
Return: CF set
AX = 0000h
BL = 01h
--------V-214402-----------------------------
INT 21 - Compaq AG1024.SYS - RGDI - GET DRIVER LOCATION
AX = 4402h
BX = file handle for device "$$$$RGDI"
CX = 0006h (size of returned data)
DS:DX -> location record (see #1185)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
SeeAlso: AX=4403h"RGDI"
Format of Compaq AG1024.SYS location record:
Offset Size Description (Table 1185)
00h WORD signature 55AAh
02h WORD segment of ???
04h WORD segment of device driver's code
--------N-214402-----------------------------
INT 21 - FTPSOFT.DOS v3.1 - GET ???
AX = 4402h
BX = file handle for device "FTPSOFT$"
CX = size of buffer
DS:DX -> buffer for data (see #1186)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: FTPSOFT.DOS is a device driver for Protocol Manager support from
FTP Software, Inc.
SeeAlso: AH=3Fh"PC/TCP",AX=4402h"NDIS"
Format of FTPSOFT.DOS data:
Offset Size Description (Table 1186)
00h WORD (call) BA98h (if different, no data returned)
02h DWORD -> NDIS common characteristics table
(see #1122 at AX=4402h"NDIS")
06h DWORD (call) -> new dispatch table (see #1124 at AX=4402h"NDIS")
0Ah DWORD -> 28-byte buffer for ??? data
0Eh DWORD ???
12h DWORD -> FAR function to reset dispatch jump table to defaults
16h BYTE ???
Note: the addresses in the new dispatch table are copied into an internal
jump table which may be reset by calling the function pointed at by
offset 12h
--------n-214402-----------------------------
INT 21 U - PenDOS PENDEV.SYS - GET ENTRY POINTS
AX = 4402h
BX = file handle for device "$$PENDOS" or "$$PD_REG"
CX = size of buffer (4 for $$PENDOS and a 4,8,12, or 16 for $$PD_REG)
DS:DX -> buffer for entry point record (see #1187)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: A limited version of PenDOS by Communication Intelligence Corporation,
which provides pen capability to keyboard-based programs, is bundled
with IBM DOS 6.1
SeeAlso: AX=4403h"PENDEV.SYS"
Format of PENDEV.SYS entry point record:
Offset Size Description (Table 1187)
00h DWORD -> array of jumps
04h WORD offset of function to retrieve entry point (see #1188)
06h 2 BYTEs signature "Pe"
08h WORD offset of function to set entry point (see #1189)
0Ah 2 BYTEs signature "nD"
0Ch WORD offset of function to clear entry point (see #1190)
0Eh WORD signature "OS"
(Table 1188)
Call PENDEV.SYS function to retrieve entry point with:
AX = index of entry point (0-9)
Return: CF clear if successful
DX:AX -> desired entry point
CF set on error (AX out of range)
(Table 1189)
Call PENDEV.SYS function to set entry point with:
AX = index of entry point (0-9)
DX:SI -> new handler
Return: CF clear if successful
CF set on error (AX out of range)
(Table 1190)
Call PENDEV.SYS function to clear entry point with:
AX = index of entry point (0-9)
Return: CF clear if successful
CF set on error (AX out of range)
Note: resets the jump at the specified entry point to its default target,
which simply returns
--------N-214402-----------------------------
INT 21 U - LAN Manager - TCPDRV.DOS - API
AX = 4402h
BX = file handle referencing device "TCPDRV$"
CX = 0019h
DS:DX -> buffer containing request block (see #1191)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: TCPDRV.DOS is the low-level device driver supporting LAN Manager's
TCP/IP protocol stack
Format of TCPDRV.DOS request block:
Offset Size Description (Table 1191)
00h BYTE (call) function number
00h initialize ???
06h get ???
07h get ???
01h BYTE (call) 00h
(ret) error code if error, unchanged if successful
02h WORD signature 4354h ('CT')
---function 00h---
04h DWORD (call) pointer to ??? FAR function
function is called with ES:BX -> device driver request used to
invoke this function
08h 4 BYTEs ???
0Ch DWORD (call) pointer to ??? record, WORD at offset 22h is read
10h DWORD (ret) -> ??? buffer if 0000h:0000h on call
---function 06h---
04h 4 BYTEs ???
08h DWORD (ret) pointer to ???
---function 07h---
04h DWORD (ret) pointer to ??? record
--------y-214402-----------------------------
INT 21 U - PC Tools 9 CPRLOW.EXE - GET CODE AND DATA ADDRESSES
AX = 4402h
BX = file handle referencing device "RECLOWLD"
DS:DX -> buffer for address list (see #1192)
CX ignored
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Format of CPRLOW address list:
Offset Size Description (Table 1192)
00h WORD segment of CPRLOW code
02h WORD offset in code segment of ??? entry point
(switches into protected mode)
04h WORD offset in code segment of jump array (see #1193)
06h WORD segment of copy of interrupt vector table at CPRLOW load time
Note: neither the entry point nor the jump array is valid until after a
CPR /LOAD, because CPR.EXE installs the code into CPRLOW at runtime.
Format of CPRLOW jump array:
Offset Size Description (Table 1193)
00h 3 BYTEs initialize CPRLOW interrupt hooks
03h 3 BYTEs reset timers and enable CPR (hotkey enable)
06h 3 BYTEs disable CPR (hotkey disable)
09h 3 BYTEs clear ??? flag, hotkey disable, and ???
0Ch 3 BYTEs initialize delay loop counter (destroys AX,BX,CX,DX)
0Fh 3 BYTEs disable CPR completely (commandline /DISABLE)
12h 3 BYTEs enable ??? if CPR enabled by both cmdline and hotkey
15h 3 BYTEs enable CPR (commandline /ENABLE)
--------s-214402-----------------------------
INT 21 U - Creative Technology CTMMSYS.SYS v1.00.01 - API
AX = 4402h
BX = file handle for device "CTMMSYS$"
CX = 0004h (size of data)
DS:DX -> buffer for entry point (see #1194)
Return: CF clear if successful
buffer updated
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: CTMMSYS.SYS is the Creative DOS Multimedia Architecture Integration
driver
SeeAlso: AX=4402h"CTSB2",INT 80/BX=0000h"SBFM"
Format of CTMMSYS.SYS entry point record:
Offset Size Description (Table 1194)
00h DWORD (call) signature 4D6D7443h (ASCII "CtmM")
(ret) pointer to CTMMSYS entry point (see #1195)
SeeAlso: #1196
(Table 1195)
Call CTMMSYS.SYS entry point with:
AX = ???
STACK: WORD ???
WORD ???
WORD ??? (0001h,0002h,0005h,0006h)
WORD ???
DWORD -> ???
WORD ???
WORD ???
Return: DX:AX = ??? or error code
0000h:000Bh invalid value for ???
0000h:000Fh API call already in progress
SeeAlso: #1194
--------s-214402-----------------------------
INT 21 U - Creative Technology CTSB2.SYS v1.01.01 - API
AX = 4402h
BX = file handle for device "CTSOUND0"
CX = 0004h (size of data)
DS:DX -> buffer for entry point (see #1196)
Return: CF clear if successful
buffer updated
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: CTMMSYS.SYS is the Creative DOS Multimedia Architecture Integration
driver
SeeAlso: AX=4402h"CTMMSYS",INT 80/BX=0000h"SBFM"
Format of CTSB2.SYS entry point record:
Offset Size Description (Table 1196)
00h DWORD (call) signature 4D6D7443h (ASCII "CtmM")
(ret) pointer to CTSB2 entry point (see #1197)
SeeAlso: #1194
(Table 1197)
Call CTSB2.SYS entry point with:
AX = ???
STACK: DWORD -> ???
WORD function number
(0100h,0200h,0300h,0400h,0500h,0600h,0701h)
DWORD -> ???
WORD ???
WORD ???
Return: DX:AX = ??? or error code
0000h:0004h invalid subfunction???
0000h:000Bh invalid value for ???
0000h:000Fh API call already in progress
SeeAlso: #1196
--------m-214402-----------------------------
INT 21 U - Novell DOS 7 EMM386.EXE - GET STATE RECORD???
AX = 4402h
BX = file handle for device "EMMXXXX0"
CX = 003Eh (size of state record)
DS:DX -> buffer for state record (see #1198)
Return: CF clear if successful
buffer filled (see #3274 at INT 67/AH=3Fh)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Format of Novell DOS 7 EMM386.EXE state record:
Offset Size Description (Table 1198)
00h WORD signature EDC0h
02h 60 BYTEs ???
--------m-214402SF00-------------------------
INT 21 U - Memory Managers - GET API ENTRY POINT
AX = 4402h subfn 00h
BX = file handle for device "EMMXXXX0"
CX = 0006h (size of buffer in bytes)
DS:DX -> buffer for API entry point record (see #1199)
first byte must be 00h on entry
Return: CF clear if successful
buffer filled (see #3274 at INT 67/AH=3Fh)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: this function is supported by Microsoft EMM386.EXE v4.45+ and
CEMM v5.10+, and is intended for use by MS Windows as it starts up
if no other program has hooked INT 67, an alternate installation
check for CEMM is testing for the string
"COMPAQ EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
handler's segment; if present, the word at offset 12h contains the
offset of the API entry point
SeeAlso: AX=4402h/SF=01h,AX=4402h/SF=02h,AX=4402h"EMM386",INT 67/AH=3Fh
Format of memory manager API entry point record:
Offset Size Description (Table 1199)
00h WORD ??? (0022h for CEMM 5.11, 0025h for MS EMM386 v4.45)
02h DWORD manager's private API entry point
(see #1200,#3337 at INT 67/AX=FFA5h)
(Table 1200)
Call CEMM v5.10+ entry point with:
AH = 00h get memory manager's state
Return: AH = state
bit 0: turned OFF
bit 1: AUTO mode enabled
AH = 01h set memory manager's state
AL = new state (00h ON, 01h OFF, 02h AUTO)
Return: CF clear if successful
CF set on error
AH = 02h Weitek coprocessor support
AL = subfunction
00h get Weitek support state
Return: AL = status
bit 0: Weitek coprocessor is present
bit 1: Weitek support is enabled
01h turn on Weitek support
02h turn off Weitek support
Return: CF clear if successful
CF set on error
AH = error code (01h invalid subfunc, 02h no Weitek)
AH = 05h get statistics
???
AH > 06h
Return: CF set
AH = 01h (invalid function)
Notes: AH=03h,04h,06h are NOPs which return CF clear, presumably for backwards
compatibility with earlier versions of CEMM
in v5.11, AH=05h merely prints an error message (using INT 21/AH=09h)
stating that a different version of CEMM is installed and it is
therefore not possible to display the statistics
--------m-214402SF01-------------------------
INT 21 U - Memory Managers - GET EMM IMPORT STRUCTURE ADDRESS
AX = 4402h subfn 01h
BX = file handle for device "EMMXXXX0"
CX = 0006h (size of buffer in bytes)
DS:DX -> buffer for EMM import structure record (see #1201)
first byte must be 01h on entry
Return: CF clear if successful
buffer filled (see also #3274 at INT 67/AH=3Fh)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: this function is supported by Microsoft EMM386.EXE v4.45+,
QEMM-386 v6+, and CEMM v5.10+, and is intended for use by MS Windows
as it starts up
for QEMM-386, this call always returns an error if Windows3 support
has been disabled with the NW3 switch
SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 2F/AX=D201h/BX=5145h
SeeAlso: INT 67/AH=3Fh
Format of EMM import structure record:
Offset Size Description (Table 1201)
00h DWORD physical address of EMM import structure (see #1202)
04h BYTE EMM import structure major version
05h BYTE EMM import structure minor version
Note: version 1.00 contains only EMS information (Windows 3.0+)
version 1.10 contains UMB/XMS/HMA/EMS information (Windows 3.1)
version 1.11 is version 1.10 plus memory manager maker/product name
SeeAlso: #3314
Format of Global EMM Import record:
Offset Size Description (Table 1202)
00h BYTE bit flags
bit 2: ???
bit 3: free EMM386 virtual HMA only if hma_page_table_paddr!=0
bit 4: no UMB???
01h BYTE reserved (0)
02h WORD size of structure in bytes
04h WORD structure version
06h DWORD reserved
0Ah 384 BYTEs 64 EMS frame status records (see #1203), one per 16K of
real-mode 1M address space
18Ah BYTE ??? (must be at least 3*number_of_EMS_frames+4)
18Bh BYTE number of UMB frame descriptors following
18Ch 4N DWORDs UMB frame descriptors
each is 4 DWORDs giving physical page numbers for the four
4K pages of a 16K EMS frame (00000000h if non-UMB page)
var BYTE number of EMS handle info records following
16N BYTEs EMS handle info records (see #1205)
---version 1.10+ ---
DWORD realmode INT 67 vector (used by Windows to set breakpoints)
DWORD physical address of HMA page table values
BYTE number of free page entries following
2N DWORDs free page entries
each is:
DWORD physical page number
DWORD number of consecutive physical pages
BYTE number of XMS handle info records following
00h if memory manager does not emulate XMS or has real mode
XMS code which can execute in the Windows environment
12N BYTEs XMS handle info records (see #1206)
BYTE number of free UMB info records following
2N WORDs free UMB info records
each is:
WORD real mode start segment
WORD size in paragraphs
---version 1.11---
20 BYTEs blank-padded maker name
20 BYTEs blank-padded product name
Format of EMS frame status record:
Offset Size Description (Table 1203)
00h BYTE frame type (see #1204)
01h BYTE owner handle (00h/FFh = none) from frame including UMB
index to UMB frame descriptors
02h WORD logical page for frame, 7FFFh if none, FFFFh if non-EMS frame
04h BYTE EMS physical page number (FFh for non-EMS = don't care???)
05h BYTE flags for non-EMS frames (00h for EMS frame)
bits 0,1 for first 4K, bits 2,3 for second 4K, etc:
10: direct mapping (linear address = physical address)
01: UMB mapping
Bitfields for EMS frame type:
Bit(s) Description (Table 1204)
0 EMS frame
1 (if EMS frame) in standard 64K page frame
2 first 4K of frame is UMB
3 second 4K of frame is UMB
4 third 4K of frame is UMB
5 last 4K of frame is UMB
Format of EMS handle info record:
Offset Size Description (Table 1205)
00h BYTE handle number (00h = system handle)
01h BYTE flags
bit 0: normal handle rather than system handle
bit 2: ??? (set by some EMS managers)
02h 8 BYTEs EMS handle's name
0Ah WORD number of 16K pages for handle
0Ch DWORD physical address of page table entries forming page map
Note: all values should be zero for the system handle if no large frame
support is present
Format of XMS handle info record:
Offset Size Description (Table 1206)
00h WORD handle
02h WORD flags
bit 0: handle usable by Windows
(already in use when Windows started if clear)
bit 1: reserved (0)
04h DWORD size in KB (may be zero, used only if flags bit 0 set)
08h DWORD physical address (only if flags bit 0 set)
--------m-214402SF02-------------------------
INT 21 U - Memory Managers - GET MEMORY MANAGER VERSION
AX = 4402h subfn 02h
BX = file handle for device "EMMXXXX0"
CX = 0002h (size of buffer in bytes)
DS:DX -> buffer for memory manager version (see #1207)
first byte must be 02h on entry
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: this function is supported by Microsoft EMM386.EXE v4.45+ and
CEMM v5.10+, and is intended for use by MS Windows as it starts up
SeeAlso: AX=4402h/SF=00h,AX=4402h"EMM386",INT 67/AH=3Fh
Format of memory manager version:
Offset Size Description (Table 1207)
00h BYTE major version
01h BYTE minor version (binary)
--------m-214402-----------------------------
INT 21 U - Microsoft EMM386.EXE v4.45 - GET MEMORY MANAGER INFORMATION
AX = 4402h
BX = file handle for device "EMMXXXX0"
CX = size of buffer in bytes (varies, see #1208)
DS:DX -> buffer for returned data (see #1208)
first byte must be set on entry to indicate desired data
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: an error is returned if the number of bytes to be read does not match
the number of bytes returned for the specified data item
this function is part of the interface which allows MS Windows to
cooperate with memory managers
SeeAlso: AX=4402h/SF=00h,AX=4402h/SF=01h,AX=4402h/SF=02h,INT 67/AX=FFA5h
Format of EMM386.EXE data buffer:
Offset Size Description (Table 1208)
00h BYTE (call) function
03h get ???
04h get ???
---function 03h---
00h WORD ???
02h WORD ???
---function 04h---
00h WORD segment of UMB containing EMM386 code/data
02h WORD number of paragraphs of EMM386 code/data in UMB
04h WORD ???
----------214402-----------------------------
INT 21 U - IFSHLP.SYS - GET ENTRY POINT
AX = 4402h
BX = file handle for device "IFS$HLP$"
CX = 0008h (size of buffer in bytes)
DS:DX -> buffer for entry point record (see #1102 at AH=3Fh"IFSHLP")
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AH=3Fh"IFSHLP"
--------D-214403-----------------------------
INT 21 - DOS 2+ - IOCTL - WRITE TO CHARACTER DEVICE CONTROL CHANNEL
AX = 4403h
BX = file handle referencing character device
CX = number of bytes to write
DS:DX -> data to write
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: format of data is driver-specific
(also see separate entries below for some specific cases)
if the file handle refers to "4DOSSTAK", the 4DOS (v2.x-3.03)
KEYSTACK.SYS driver will push the specified characters on the
keyboard stack; similarly for "NDOSSTAK", the NDOS KEYSTACK.SYS
driver will push the characters onto the keyboard stack
SeeAlso: AX=4400h,AX=4402h"DOS 2+",AX=4405h"DOS",INT 2F/AX=122Bh
SeeAlso: INT 2F/AX=D44Dh,INT 2F/AX=D44Fh
--------c-214403-----------------------------
INT 21 - SMARTDRV.SYS v3.x only - IOCTL - CACHE CONTROL
AX = 4403h
BX = handle for device "SMARTAAR"
CX = number of bytes to write
DS:DX -> SMARTDRV control block (see #1210)
Return: CF clear if successful
AX = number of bytes actually written
0000h if control block too small for given command
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: NCache2 (from the Norton Utilities v8.0) attempts to support this
interface, but does not do so correctly, often hanging the system;
one should use the SmartDrive v4.x or NCache private interfaces
(see INT 2F/AX=4A10h/BX=0000h,INT 2F/AX=FE00h/DI=4E55h)
SeeAlso: AX=4402h"SMARTDRV",INT 2F/AX=4A10h/BX=0000h
(Table 1209)
Values for SMARTDRV function code:
00h flush cache
01h flush and discard cache
02h disable caching (flushes and discards cache first)
03h enable caching
04h control write caching
05h set flushing tick count
06h lock cache contents
07h unlock cache contents
08h set flush-on-reboot flag
09h unused
0Ah control full-track caching
0Bh reduce cache size
0Ch increase cache size
0Dh set INT 13 chain address
Format of SMARTDRV control block:
Offset Size Description (Table 1210)
00h BYTE function code (see #1209)
---functions 00h-03h,06h,07h---
no additional fields
---function 04h---
01h BYTE write caching control action
00h turn off write-through
01h turn on write-through
02h turn off write buffering (also flushes cache)
03h turn on write buffering (also flushes cache)
---function 05h---
01h WORD number of timer ticks between cache flushes
---function 08h---
01h BYTE new flush-on-reboot flag (00h off, 01h on)
---function 0Ah---
01h BYTE full-track writes are
00h not cached
01h cached
---functions 0Bh,0Ch---
01h WORD number of 16K pages by which to increase/reduce cache size
---function 0Dh---
01h DWORD new address to which to chain on INT 13
Note: the previous address is not preserved
--------d-214403-----------------------------
INT 21 - CD-ROM device driver - IOCTL OUTPUT
AX = 4403h
BX = file handle referencing character device for CD-ROM driver
CX = number of bytes to write
DS:DX -> control block (see #1211)
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: some device drivers support several subunits (that is more than one
drive) but it is not possible to distinguish between them with this
function; use INT 2F/AX=1510h or INT 2F/AX=0802h instead
under Windows95, the "mscd$$$$" device cannot be opened so you cannot
obtain the handle required by this function: use INT 2F/AX=1510h
or INT 2F/AX=0802h instead
SeeAlso: AX=4402h"CD-ROM",INT 2F/AX=0802h,INT 2F/AX=1510h
Format of CR-ROM control block:
Offset Size Description (Table 1211)
00h BYTE function code
00h eject disk
01h lock/unlock door
02h reset drive
03h control audio channel
04h write device control string
05h close tray
---functions 00h,02h,05h---
no further fields
---function 01h---
01h BYTE lock function
00h unlock door
01h lock door
---function 03h---
01h BYTE input channel (0-3) for output channel 0
02h BYTE volume for output channel 0
03h BYTE input channel (0-3) for output channel 1
04h BYTE volume for output channel 1
05h BYTE input channel (0-3) for output channel 2
06h BYTE volume for output channel 2
07h BYTE input channel (0-3) for output channel 3
08h BYTE volume for output channel 3
Note: output channels 0 and 1 are left and right, 2 and 3 are left prime and
right prime; a volume of 00h is off
---function 04h---
01h N BYTEs bytes to send directly to the CD-ROM drive without
interpretation
--------D-214403-----------------------------
INT 21 U - MS-DOS 7.0 - CONFIG$ device - SET??? CONFIGURATION INFORMATION
AX = 4403h
BX = file handle for character device "CONFIG$"
CX = number of bytes to write
DS:DX -> buffer containing ???
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: IOCTL Output to CONFIG$ is only available while IO.SYS is booting
the system; once CONFIG.SYS has been processed, this call always
succeeds, ignoring any input
SeeAlso: AX=4403h"CONFIG$"
--------d-214403-----------------------------
INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
AX = 4403h
BX = handle for device "SCSITAPE"
CX = number of bytes to write
DS:DX -> SCSITAPE control block (see #1212)
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4405h"ST-01",INT 78/AH=10h
Format of SCSITAPE control block:
Offset Size Description (Table 1212)
00h WORD command type
'F' Format (argument 1 = interleave, argument 2 = format type)
'E' Erase
'R' Rewind
'L' Load
'N' No Load
'S' Space (argument 1 = count, argument 2 = type)
'M' File Mark (argument 1 = count)
'A' Reassign
02h WORD argument 1
04h WORD argument 2
06h WORD segment of command buffer
08h WORD offset of command buffer
0Ah WORD length of command buffer
--------E-214403-----------------------------
INT 21 U - AI Architects - OS/x86??? - API
AX = 4403h
BX = handle for device "AIA_OS"
CX = number of bytes to write (ignored)
DS:DX -> 12-byte buffer (see #1213), first byte is command:
81h installation check
82h get API entry point
84h uninstall
Return: CF clear if successful
AX = number of bytes actually written
DS:DX buffer filled
CF set on error
AX = error code (01h,05h,06h,0Ch,0Dh) (see #1366 at AH=59h)
Notes: these functions are only available if the DOS extender was loaded as a
device driver in CONFIG.SYS
called by TKERNEL (a licensed version of AI Architects/Ergo OS/x86)
SeeAlso: INT 2F/AX=FBA1h/BX=0081h,INT 2F/AX=FBA1h/BX=0082h
Index: installation check;OS/x86|entry point;OS/x86|uninstall;OS/x86
Format of buffer on return:
Offset Size Description (Table 1213)
00h 4 BYTEs signature "IABH"
---if function 81h---
(no additional fields)
---if function 82h---
04h DWORD pointer to API entry point (see INT 2F/AX=FBA1h/BX=0082h)
---if function 84h---
04h WORD success indicator
06h WORD segment of ???
08h WORD segment of ??? memory block to free if nonzero
0Ah WORD segment of ??? memory block to free if nonzero
--------V-214403-----------------------------
INT 21 - PGS1600.DEV - IOCTL - SET CONFIGURATION???
AX = 4403h
BX = file handle for device "PGS1600$"
CX = 0018h (size of buffer)
DS:DX -> configuration buffer (see #1171 at AX=4402h"PGS1600")
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: PGS1600.DEV is a device driver for the Cornerstone Technology PG1600
display adapter, which provides a 1600x1200 monochrome display as
well as one of two emulations, MDA or CGA.
SeeAlso: AX=4402h"PGS1600"
--------N-214403-----------------------------
INT 21 - PC/TCP IPCUST.SYS - RESET CONFIGURATION DATA READ POINTER
AX = 4403h
BX = file handle referencing device "$IPCUST"
CX, DS:DX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: there are a total of 378h bytes of configuration data for IPCUST.SYS
version 2.05. If less than the entire data is read or written,
the next read/write continues where the previous one ended; this
call and AX=4402h both reset the location at which the next
operation starts to zero
v2.1+ uses a new configuration method, but allows the installation
of IPCUST.SYS for backward compatibility with other software which
must read the PC/TCP configuration
SeeAlso: AH=3Fh"IPCUST",AH=40h"IPCUST",AX=4402h"IPCUST"
--------V-214403-----------------------------
INT 21 - Compaq AG1024.SYS - CPQ_MGES - IOCTL OUTPUT
AX = 4403h
BX = file handle referencing device "CPQ_MGES"
DS:DX -> request packet (see #1214)
CX ignored
Return: CF clear if successful
AX destroyed
data buffer filled (if applicable)
first word of request packet set to number of bytes of data
available (amount returned is smaller of this and requested
amount)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
SeeAlso: AX=4403h"RGDI"
Format of Compaq AG1024.SYS request packet:
Offset Size Description (Table 1214)
00h WORD function
0000h get ??? (26h bytes)
0001h get ??? (36h bytes)
0002h set ??? (same as returned by function 0001h)
0003h get ??? (6 bytes)
0004h get ???
0005h get ???
0006h get ??? (10h bytes)
0007h set ??? (same as returned by function 0006h)
---functions 00h-03h,06h,07h---
02h WORD size of data buffer
04h DWORD -> buffer for function's data
---functions 04h,05h---
02h WORD ???
04h WORD size of data buffer
06h DWORD -> buffer to receive data
--------V-214403-----------------------------
INT 21 - Compaq AG1024.SYS - RGDI - IOCTL OUTPUT
AX = 4403h
BX = file handle referencing device "$$$$RGDI"
DS:DX -> request packet (see #1215)
CX ignored
Return: CF clear if successful
AX destroyed
data buffer filled (if applicable)
first word of request packet set to number of bytes of data
available (amount returned is smaller of this and requested
amount)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: AG1024.SYS is a device driver for the Advanced Graphics 1024 adapter
SeeAlso: AX=4402h"RGDI",AX=4403h"CPQ_MGES"
Format of Compaq AG1024.SYS request packet:
Offset Size Description (Table 1215)
00h WORD function
0000h get entry points
0001h get ???
02h DWORD address of buffer for returned data
--------m-214403SF01-------------------------
INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX OFF
AX = 4403h subfn 01h
BX = handle for device "386MAX$$"
DS:DX -> BYTE 01h
CX ignored
Return: DS:DX -> BYTE status (00h = successful)
CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: this function will fail if any EMS or UMBs are in use
SeeAlso: AX=4403h/SF=02h,AX=4403h/SF=03h,AX=4403h/SF=05h
--------m-214403SF02-------------------------
INT 21 U - Qualitas 386MAX v6.01+ - TURN 386MAX ON
AX = 4403h subfn 02h
BX = handle for device "386MAX$$"
DS:DX -> BYTE 02h
CX ignored
Return: DS:DX -> BYTE status (00h = successful)
CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4403h/SF=01h,AX=4403h/SF=03h,AX=4403h/SF=05h
--------m-214403SF03-------------------------
INT 21 U - Qualitas 386MAX v6.01+ - SET STATE
AX = 4403h subfn 03h
BX = handle for device "386MAX$$"
CX = number of bytes to copy (up to size of state buffer)
DS:DX -> BYTE 03h followed by state buffer
(see #1154 at AX=4402h"386MAX")
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: the first byte of the buffer must be either 01h, 02h, or 03h
(specifying the version of the state record) and the buffer must
contain CX bytes AFTER the initial byte
SeeAlso: AX=4402h"386MAX"
--------m-214403SF05-------------------------
INT 21 U - Qualitas 386MAX v7.00+ - LIMIT AUTOMATIC ACTIVATION TO STD EMS CALLS
AX = 4403h subfn 05h
BX = handle for device "386MAX$$"
DS:DX -> BYTE 05h
CX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Desc: specifies that 386MAX will only shift from AUTO to ON mode on standard
EMS calls INT 67/AH=40h-5Dh
SeeAlso: AX=4403h/SF=02h,AX=4403h/SF=03h,AX=4403h/SF=06h
--------m-214403SF06-------------------------
INT 21 U - Qualitas 386MAX v7.00+ - ALLOW AUTOMATIC ACTIVATION ON ANY INT 67
AX = 4403h subfn 06h
BX = handle for device "386MAX$$"
DS:DX -> BYTE 06h
CX ignored
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Desc: specified that 386MAX should shift from AUTO to ON mode on any INT 67
call other than INT 67/AH=3Fh
SeeAlso: AX=4403h/SF=01h,AX=4403h/SF=03h,AX=4403h/SF=05h
--------n-214403-----------------------------
INT 21 U - PenDOS PENDEV.SYS - ???
AX = 4403h
BX = file handle for device "$$PENDOS" or "$$PD_REG"
CX = size of buffer
DS:DX -> buffer containing ???
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: A limited version of PenDOS by Communication Intelligence Corporation,
which provides pen capability to keyboard-based programs, is bundled
with IBM DOS 6.1
Note: this call sets the WORD at offset 1Ah into the device driver request
header used to call the driver to 0000h.
SeeAlso: AX=4402h"PENDEV.SYS"
--------D-214404-----------------------------
INT 21 - DOS 2+ - IOCTL - READ FROM BLOCK DEVICE CONTROL CHANNEL
AX = 4404h
BL = drive number (00h = default, 01h = A:, etc.)
CX = number of bytes to read
DS:DX -> buffer
Return: CF clear if successful
AX = number of bytes actually read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: format of data is driver-specific
SeeAlso: AX=4402h"DOS 2+",AX=4405h"DOS",INT 2F/AX=122Bh
--------k-214404-----------------------------
INT 21 - Stacker - GET DEVICE DRIVER ADDRESS AND SET VOLUME NUMBER
AX = 4404h
BL = drive number (00h = default, 01h = A:, etc.)
CX = 0004h
DS:DX -> DWORD buffer to receive device driver address
Return: buffer filled with pointer into Stacker device driver (see #2238):
driver + 19h if Stacker Anywhere controls this drive
driver + 1Ah if Stacker controls this drive
unchanged else
Notes: in addition to returning the address of the Stacker device driver,
this call also sets the volume number at offset 58h in the device
driver (see #2238 at INT 25/AX=CDCDh)
Stacker Anywhere does not link its built-in device driver into
the standard device driver chain, but it can be found via CDS/DPB
this call can be used as an installation check for all versions of
Stacker and Stacker Anywhere to avoid the INT 25 call
SeeAlso: AX=4408h,AX=440Eh,AH=52h,INT 25/AX=CDCDh
--------k-214404-----------------------------
INT 21 - Stacker - GET STACVOL FILE SECTORS
AX = 4404h
BL = drive number (0 is current drive)
CX = byte count (i.e., 200h = 1 sector)
DS:DX -> buffer (see #1216)
Return: Data Buffer contains the number of sectors requested from the
STACVOL physical file for the drive specified.
Format of Stacker buffer:
Offset Size Description (Table 1216)
00h WORD 01CDh
02h WORD sector count
04h DWORD number of starting sector
08h DWORD far pointer to Data Buffer
--------k-214404-----------------------------
INT 21 - DUBLDISK.SYS v2.6 - GET INFO
AX = 4404h
BL = drive number of DoubleDisk drive (00h = default, 01h = A:, etc.)
CX = number of bytes (000Ah-0014h, call ignored otherwise)
DS:DX -> data record (see #1217)
Return: CF clear if successful
AX = number of bytes read
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: DUBLDISK.SYS is the device driver portion of DoubleDisk, a disk
expander by Vertisoft Systems, Inc.
Note: the installation check for v2.6 consists of scanning memory for the
signature "FAT 2.6 byte:", which is immediately followed by a data
table (see #1218)
BUG: VOPT (a disk optimizer by Golden Bow Software) assumes that any driver
which returns the "correct" number of bytes when the first word of
the buffer for the data record contains the signature value 4444h is
DoubleDisk; a workaround is for the non-DoubleDisk driver to return
no data if the signature is present
SeeAlso: AX=440Dh"DOS 3.2+"
Index: installation check;DUBLDISK.SYS
Format of DUBLDISK data record:
Offset Size Description (Table 1217)
00h WORD (call) signature 4444h
02h BYTE (call) function
00h ???
01h ???
---function 00h---
02h BYTE (ret) ???
03h BYTE (ret) ???
---function 01h---
02h WORD (ret) 4444h
04h WORD allocation unit size???
06h WORD ???
08h WORD ???
0Ah BYTE ???
Format of DUBLDISK signature data table:
Offset Size Description (Table 1218)
00h 5 BYTEs ???
05h BYTE first drive number
06h BYTE number of drives
07h ???
--------k-214404-----------------------------
INT 21 - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
AX = 4404h
BL = drive number (00h = default, 01h = A:, etc)
CX = 000Ah (size of DSPACKET structure)
DS:DX -> DSPACKET structure (see #1219)
Return: CF clear if IOCTL successful -- check DSPACKET for actual status
AX = number of bytes actually transferred
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h
Format of DoubleSpace DSPACKET structure:
Offset Size Description (Table 1219)
00h WORD signature 444Dh ("DM")
02h BYTE command code
46h ('F') flush internal caches
49h ('I') flush and invalidate internal caches
03h WORD result code
(ret) 4F4Bh ("OK") if successful, else unchanged
05h 5 BYTEs padding
--------k-214404-----------------------------
INT 21 - DBLSPACE.BIN v6.2 - IOCTL - GET ??? FOR SPECIFIED DRIVE
AX = 4404h
BL = drive number (00h = default, 01h = A:, etc)
CX = size of DSPACKET structure (ignored in DOS 6.2)
DS:DX -> DSPACKET structure (see #1220)
Return: CF clear if IOCTL successful -- check DSPACKET for actual status
AX = number of bytes actually transferred
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4405h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h
Format of DoubleSpace DSPACKET structure:
Offset Size Description (Table 1220)
00h WORD signature 444Dh ("DM")
02h BYTE command code
53h ('S') get ??? for specified drive
03h WORD result code
(ret) 4F4Bh ("OK") if successful, else unchanged
05h DWORD (ret) pointer to 96-byte ??? data
09h DWORD (ret) pointer to ??? data
0Dh 3 BYTEs reserved
--------k-214404-----------------------------
INT 21 U - DoubleTools v1.0 - GET ???
AX = 4404h
BL = drive number (00h = default, 01h = A:, etc)
CX = 0006h
DS:DX -> DoubleTools structure (see #1221)
Return: CF clear if IOCTL successful -- check DSPACKET for actual status
AX = number of bytes actually transferred
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: the Transporter device driver has the signature 55h 61h 50h 74h
("DaPt") twelve bytes after it beginning
Format of DoubleTools structure:
Offset Size Description (Table 1221)
00h WORD (call) signature 55h AAh
(ret) signature 78h 70h ("xp")
02h WORD (call) signature 52h 16h
(ret) ???
04h WORD (ret) segment of driver's DS (same as its PSP)
--------d-214404-----------------------------
INT 21 U - xDISK v3.31 - CONFIGURE
AX = 4404h
BL = drive number (00h = default, 01h = A:, etc)
CX = 0047h (length of version string)
DS:DX -> 79-byte buffer for version string and ???
DS:0081h = commandline containing new switches for driver
Return: CF clear if successful
AX = number of bytes actually transferred
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
SeeAlso: AX=4405h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"
--------c-214404-----------------------------
INT 21 - COMBI-disk v1.13 - GET DATA RECORD
AX = 4404h
BL = drive number (00h = default, 01h = A:, etc)
CX = 0032h (length of data packet)
DS:DX -> buffer for data packet (see #1222)
Return: CF clear if successful
AX = number of bytes actually transferred
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: COMBI-disk is a shareware combination cache and RAMdisk sharing a
single pool of memory by Vadim V. Vlasov
Note: the installation check consists of scanning the valid drives for one
which returns a correctly-sized data packet with the proper
signature in the first field
SeeAlso: AX=4405h"COMBI"
Index: installation check;COMBI-disk
Format of COMBI-disk data packet:
Offset Size Description (Table 1222)
00h 6 BYTEs ASCIZ signature "COMBI"
06h WORD version (high byte = major, low = decimal minor version)
08h BYTE current options
09h BYTE sectors per allocation block
0Ah WORD maximum buffer in KB
0Ch WORD current buffer in KB (less than max if XMS memory being lent)
0Eh WORD total number of allocation blocks
10h WORD current number of allocation blocks
12h WORD number of blocks being used by RAM disk
14h WORD number of blocks being used by cache or unused
16h WORD number of dirty cache blocks
18h WORD number of blocks which could not be written out due to errors
1Ah WORD total number of read requests
1Ch WORD total number of sectors read
1Eh WORD number of BIOS read requests (cache misses)
20h WORD number of sectors read via BIOS (cache misses)
22h WORD total number of write requests
24h WORD total number of sectors written
26h WORD number of BIOS write requests
28h WORD number of sectors written via BIOS
2Ah WORD number of RAM disk read requests
2Ch WORD number of sectors read from RAM disk
2Eh WORD number of RAM disk write requests
30h WORD number of sectors written to RAM disk
--------d-214404-----------------------------
INT 21 - SFS v1.00 - GET CONFIGURATION INFORMATION
AX = 4404h
BL = drive number (00h = default, 01h = A:, etc)
CX = 001Ah (length of data packet)
DS:DX -> buffer for data packet (see #1223)
Return: CF clear if successful
AX = number of bytes actually transferred
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
Peter C. Gutmann
SeeAlso: AX=4405h"SFS"
Format of SFS data packet:
Offset Size Description (Table 1223)
00h 4 BYTEs signature string "SFS1"
04h WORD SFS unit number (0-based)
06h WORD drive on which the SFS volume is mounted
08h DWORD sector offset of logical volume from start of physical volume
0 if logical volume = physical volume
0Ch WORD flag: 00h = no disk mounted, 01h = disk mounted
0Eh WORD flag: 00h read/write, 01h read-only
10h WORD quick-unmount hotkey
(high byte = shift state, low = scan code) (see #0005)
12h WORD auto-unmount time in minutes, or 0000h if already expired, or
FFFFh if not set
14h WORD time in minutes remaining before auto-unmount
16h WORD internal driver check code
0000h no error
0001h driver consistency check failed
0002h unit consistency check failed
18h WORD disk access mode
0000h BIOS
0001h IDE direct access
0002h SCSI direct access
--------D-214405-----------------------------
INT 21 - DOS 2+ - IOCTL - WRITE TO BLOCK DEVICE CONTROL CHANNEL
AX = 4405h
BL = drive number (00h = default, 01h = A:, etc)
CX = number of bytes to write
DS:DX -> data to write
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: format of data is driver-specific
SeeAlso: AX=4403h"DOS",AX=4404h"DOS",INT 2F/AX=122Bh
--------d-214405-----------------------------
INT 21 - Brian Antoine Seagate ST-01 SCSI.SYS - IOCTL - EXECUTE COMMANDS
AX = 4405h
BX = drive number (00h = default, 01h = A:, etc)
CX = number of bytes to write
DS:DX -> SCSIDISK control block (see also #1212 at AX=4403h"ST-01")
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4403h"ST-01"
--------k-214405-----------------------------
INT 21 U - DBLSPACE.BIN - IOCTL - FLUSH OR INVALIDATE INTERNAL CACHES
AX = 4405h
BL = drive number (00h = default, 01h = A:, etc)
CX = 000Ah (size of DSPACKET structure)
DS:DX -> DSPACKET structure (see #1224)
Return: CF clear if IOCTL successful -- check DSPACKET for actual status
AX = number of bytes actually transferred
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: this call is identical to the documented AX=4404h
SeeAlso: AX=4404h"DBLSPACE",INT 2F/AX=4A11h/BX=0000h
Format of DoubleSpace DSPACKET structure:
Offset Size Description (Table 1224)
00h WORD signature 444Dh ("DM")
02h BYTE command code
46h ('F') flush internal caches
49h ('I') flush and invalidate internal caches
03h WORD result code
(ret) 4F4Bh ("OK") if successful, else unchanged
05h 5 BYTEs padding
--------d-214405-----------------------------
INT 21 U - xDISK v3.31 - ???
AX = 4405h
BL = drive number (00h = default, 01h = A:, etc)
CX = number of bytes to write
DS:DX -> buffer containing version string
???
Return: CF clear if successful
AX = number of bytes actually transferred
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: xDISK is a shareware resizeable EMS RAMdisk by FM de Monasterio
SeeAlso: AX=4404h"xDISK",INT 2F/AH=DDh/BX=7844h"xDISK"
--------d-214405-----------------------------
INT 21 - COMBI-disk v1.13 - CONTROL COMBI-disk
AX = 4405h
BL = drive number (00h = default, 01h = A:, etc) for RAM disk
CX = number of bytes to write
DS:DX -> buffer containing command packet (see #1226)
Return: CF clear if successful
AX = number of bytes actually transferred
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=4404h"COMBI"
(Table 1225)
Values for COMBI-disk command code:
80h flush cache
81h change options byte
82h shrink memory
83h expand memory
84h get dirty block information
85h reset write errors
86h reset counters
Format of COMBI-disk command packet:
Offset Size Description (Table 1226)
00h WORD version
02h BYTE command code (see #1225)
---command code 80h---
no additional fields
---command code 81h---
03h BYTE new options byte (see #1227)
---command code 82h---
03h WORD number of KB to release
---command code 83h---
03h WORD number of KB to expand
---command code 84h---
03h DWORD -> buffer for block info (see #1228)
---command code 85h---
03h DWORD block ID
---command code 86h---
03h BYTE which counters to reset
bit 0: hard disk read counts
bit 1: hard disk write counts
bit 2: RAM disk read/write counts
Note: multiple commands may be placed in a single packet by stringing
together as many command/argument pairs as desired
Bitfields for COMBI-disk options byte:
Bit(s) Description (Table 1227)
0 cache off
1 cache frozen
2 write caching enabled
3 delayed writing disabled
5 fix memory allocation (no XMS lending)
6 no 'sector not found' error
Format of COMBI-disk block info:
Offset Size Description (Table 1228)
00h DWORD block ID
04h BYTE bitmask of valid sectors in block
05h BYTE bitmask of dirty sectors in block
06h BYTE last error returned by BIOS
07h BYTE number of errors
--------D-214405-----------------------------
INT 21 - SFS v1.00 - DRIVER CONTROL
AX = 4405h
BL = drive number (00h = default, 01h = A:, etc)
CX = number of bytes to write
DS:DX -> data to write (see #1230)
Return: CF clear if successful
AX = number of bytes actually written
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Program: SFS (Secure FileSystem) is a shareware encrypting disk driver by
Peter C. Gutmann
SeeAlso: AX=4404h"SFS"
(Table 1229)
Values for SFS control function:
00h "PACKET_SET_DISKINFO" set disk parameters
01h "PACKET_SET_KEYINFO" set keying information
02h "PACKET_SET_READONLY" select read/write or read-only
03h "PACKET_SET_DRIVENO" set drive number to mount
04h "PACKET_SET_MOUNTSTATUS" set mount status
05h "PACKET_SET_UNMOUNT" set/clear quick-unmount hotkey
06h "PACKET_SET_TIMEOUT" set/clear auto-unmount timeout
Format of SFS control data packet:
Offset Size Description (Table 1230)
00h WORD signature 4330h ('C0')
02h WORD function (see #1229)
---function 00h---
04h WORD sector size in bytes
06h BYTE sectors per cluster
07h WORD number of boot sectors
09h BYTE number of copies of FAT
0Ah WORD size of root directory in entries
0Ch WORD number of sectors on disk, 16-bit
0Eh BYTE media descriptor byte
0Fh WORD sectors per FAT
11h WORD sectors per track
13h WORD number of heads
15h DWORD number of hidden sectors
19h DWORD number of sectors on disk, 32-bit
---function 01h---
04h 20 BYTEs master IV for encrypted disk
18h 64 BYTEs NDC/SHS keying information
---function 02h---
04h WORD read-only state: 00h read-only, 01h read/write
---function 03h---
04h WORD drive number (see #1231)
06h DWORD sector offset of logical volume from start of physical volume
0 if logical volume = physical volume
---function 04h---
04h WORD mount status (00h unmounted, 01h mounted)
---function 05h---
04h WORD hotkey (high byte = shift state, low byte = scan code or 00h)
(see #0005)
0000h to disable hotkey
---function 06h---
04h WORD timeout in minutes before automatic unmount
0000h to disable auto-unmount
Notes: the data for function 00h corresponds to a DOS BPB (see AH=53h)
functions 00h, 01h, and 03h automatically unmount the encrypted drive
unmounting a drive with function 04h also destroys the encryption
information in the driver and forces all dirty buffers to be flushed
Bitfields for SFS drive number:
Bit(s) Description (Table 1231)
15-12 drive access mode
0000 BIOS access
0001 direct IDE access
0010 direct SCSI access
---if BIOS access---
11-8 unused (0)
7-0 BIOS drive number
---if IDE access---
11-8 unused (0)
7-0 IDE drive number
---if SCSI access---
11-8 SCSI host number
7-4 SCSI target ID
3-0 SCSI logical unit number
--------D-214406-----------------------------
INT 21 - DOS 2+ - IOCTL - GET INPUT STATUS
AX = 4406h
BX = file handle
Return: CF clear if successful
AL = input status
00h not ready (device) or at EOF (file)
FFh ready
AH may be destroyed (refer to note)
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Notes: files may not register as being at EOF if positioned there by AH=42h
under DOS 5.0, on a successful return, AH contains either the next
character which will be read or 1Ah if at EOF; under a Windows95
DOS box, AH seems to be either unchanged or 00h
SeeAlso: AX=4407h,INT 2F/AX=122Bh
--------D-214407-----------------------------
INT 21 - DOS 2+ - IOCTL - GET OUTPUT STATUS
AX = 4407h
BX = file handle
Return: CF clear if successful
AL = input status
00h not ready
FFh ready
CF set on error
AX = error code (01h,05h,06h,0Dh) (see #1366 at AH=59h/BX=0000h)
Note: for DOS 2+, files are always ready for output, even if the disk is
full or no media is in the drive
SeeAlso: AX=4406h,INT 2F/AX=122Bh
--------D-214408-----------------------------
INT 21 - DOS 3.0+ - IOCTL - CHECK IF BLOCK DEVICE REMOVABLE
AX = 4408h
BL = drive number (00h = default, 01h = A:, etc)
Return: CF clear if successful
AX = media type (0000h removable, 0001h fixed)
CF set on error
AX = error code (01h,0Fh) (see #1366 at AH=59h/BX=0000h)
Note: in addition to the normal operation, if Stacker is installed, this
call also sets the volume number at offset 58h in the Stacker
device driver (except under DR DOS 3.41-5.0, which do not pass
through this call to the driver; use AX=440Eh instead)
(see AX=4404h"Stacker",AX=440Eh,INT 25/AX=CDCDh)
SeeAlso: AX=4400h,AX=4404h"Stacker",AX=4409h,INT 2F/AX=122Bh
--------D-214409-----------------------------
INT 21 - DOS 3.1+ - IOCTL - CHECK IF BLOCK DEVICE REMOTE
AX = 4409h
BL = drive number (00h = default, 01h = A:, etc)
Return: CF clear if successful
DX = device attribute word
bit 15: drive is SUBSTituted
bit 12: drive is remote
bit 9: direct I/O not allowed
CF set on error
AX = error code (01h,0Fh) (see #1366 at AH=59h/BX=0000h)
Note: on local drives, DX bits not listed above are the attribute word from
the device driver header (see #1332 at AH=52h); for remote drives,
the other bits appear to be undefined for DOS versions prior to 5.0
(they are all cleared in DOS 5+)
checking whether DX=0800h on return appears to be a fairly reliable
method for detecting Microsoft's RAMDRIVE, though not for other
ramdisks (there appears to be no simple yet foolproof method for
detecting ramdisks, although the presence of only a single copy of
the FAT and only a single head on non-removable devices is a fairly
good indicator); for Windows95, RAMDRIVE returns DX=4800h
SeeAlso: AX=4400h,AX=4408h,AX=440Ah,INT 2F/AX=122Bh
--------D-21440A-----------------------------
INT 21 - DOS 3.1+ - IOCTL - CHECK IF HANDLE IS REMOTE
AX = 440Ah
BX = handle
Return: CF clear if successful
DX = attribute word (as stored in SFT)
bit 15: set if remote
bit 14: date/time not set on close
CF set on error
AX = error code (01h,06h) (see #1366 at AH=59h/BX=0000h)
Notes: if file is remote, Novell Advanced NetWare 2.0 returns the number of
the file server on which the handle is located in CX
DR DOS 3.41 and 5.0 clear all bits of DX except bit 15
SeeAlso: AX=4400h,AX=4409h,AH=52h,INT 2F/AX=122Bh
--------D-21440B-----------------------------
INT 21 - DOS 3.1+ - IOCTL - SET SHARING RETRY COUNT
AX = 440Bh
CX = pause between retries (default 1)
DX = number of retries (default 3)
Return: CF clear if successful
CF set on error
AX = error code (01h) (see #1366 at AH=59h/BX=0000h)
Notes: delay is dependent on processor speed (value in CX specifies number of
64K-iteration empty loops to execute)
if DX=0000h on entry, the retry count is left unchanged
SeeAlso: AH=52h,INT 2F/AX=1224h,INT 2F/AX=122Bh
--------D-21440C-----------------------------
INT 21 - DOS 3.2+ - IOCTL - GENERIC CHARACTER DEVICE REQUEST
AX = 440Ch
BX = device handle
CH = category code (see #1232)
CL = function number (see #1233)
DS:DX -> parameter block (see #1234,#1235,#1236,#1237,#1238,#1239)
SI = parameter to pass to driver (European MS-DOS 4.0, OS/2 comp box)
DI = parameter to pass to driver (European MS-DOS 4.0, OS/2 comp box)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
DS:DX -> iteration count if CL=65h
SI = returned value (European MS-DOS 4.0, OS/2 comp box)
DI = returned value (European MS-DOS 4.0, OS/2 comp box)
Note: DR DOS 3.41 and 5.0 return error code 16h on CL=45h,65h if the device
does not support a retry counter
SeeAlso: AX=440Dh"DOS 3.2+",INT 2F/AX=0802h,INT 2F/AX=122Bh,INT 2F/AX=14FFh
SeeAlso: INT 2F/AX=1A01h
(Table 1232)
Values for IOCTL category code:
00h unknown (DOS 3.3+)
01h COMn: (DOS 3.3+)
03h CON (DOS 3.3+)
05h LPTn:
9Eh Media Access Control driver (STARLITE)
00h-7Fh reserved for Microsoft
80h-FFh reserved for OEM/user-defined
(Table 1233)
Values for generic character IOCTL function:
00h MAC driver Bind (STARLITE) (see #1234)
45h set iteration (retry) count (see #1235)
4Ah select code page (see #1236)
4Ch start code-page preparation (see #1237)
4Dh end code-page preparation (see #1238)
5Fh set display information (DOS 4.0+) (see #1239)
65h get iteration (retry) count
6Ah query selected code page (see #1236)
6Bh query prepare list (see #1240)
7Fh get display information (DOS 4.0+) (see #1239)
Note: bit assignments for function code:
bit 7: set to ignore if unsupported, clear to return error
bit 6: set if passed to driver, clear if intercepted by DOS
bit 5: set if queries data from device, clear if sends command
bits 4-0: subfunction
Format of parameter block for function 00h:
Offset Size Description (Table 1234)
00h 8 BYTEs ASCIZ signature "STARMAC"
08h WORD version
0Ah WORD flags
bit 0: media requires connect or listen request before use
bit 1: network is a LAN (broadcast/multicast supported)
bit 2: point-to-point network
0Ch WORD handle for use with MAC driver's private interface (filled in
by MAC driver)
0Eh WORD context
10h WORD approximate speed in KB/sec (filled in by MAC driver)
12h WORD approximate cost in cents per hour (filled in by MAC driver)
14h WORD maximum packet size in bytes (filled in by MAC driver)
16h WORD addressing format (filled in by MAC driver)
0000h general addressing
0001h Ethernet addressing
0002h Token Ring addressing
0003h Token Bus addressing
18h DWORD Send entry point (filled in by MAC driver)
1Ch DWORD RegisterEventHandler entry point (filled in by MAC driver)
20h DWORD SetPacketFilter entry point (filled in by MAC driver)
24h DWORD UnBind entry point (filled in by MAC driver)
Format of parameter block for function 45h:
Offset Size Description (Table 1235)
00h WORD number of times output is attempted before driver assumes
device is busy
Format of parameter block for functions 4Ah and 6Ah:
Offset Size Description (Table 1236)
00h WORD length of data
02h WORD code page ID (see #1446 at INT 21/AX=6602h)
04h 2N BYTEs DCBS (double byte character set) lead byte range
start/end for each of N ranges (DOS 4.0)
WORD 0000h end of data (DOS 4.0)
Format of parameter block for function 4Ch:
Offset Size Description (Table 1237)
00h WORD flags
DISPLAY.SYS = 0000h
PRINTER.SYS bit 0 clear to prepare downloaded font, set to
prepare cartridge selection
02h WORD length of remainder of parameter block
04h WORD number of code pages following
06h N WORDs code page 1,...,N
Format of parameter block for function 4Dh:
Offset Size Description (Table 1238)
00h WORD length of data
02h WORD code page ID (see #1446 at INT 21/AX=6602h)
Format of parameter block for functions 5Fh and 7Fh:
Offset Size Description (Table 1239)
00h BYTE level (0 for DOS 4.x-6.0)
01h BYTE reserved (0)
02h WORD length of following data (14)
04h WORD control flags
bit 0 set for blink, clear for intensity
bits 1-15 reserved
06h BYTE mode type (1=text, 2=graphics)
07h BYTE reserved (0)
08h WORD colors
0000h = monochrome
else N bits per pixel
0Ah WORD pixel columns
0Ch WORD pixel rows
0Eh WORD character columns
10h WORD character rows
Format of parameter block for function 6Bh:
Offset Size Description (Table 1240)
00h WORD length of following data
02h WORD number of hardware code pages
04h N WORDs hardware code pages 1,...,N
WORD number of prepared code pages
N WORDs prepared code pages 1,...,N
--------d-21440C-----------------------------
INT 21 - Greg Shenaut ASPITAPE.SYS - INTERFACE
AX = 440Ch
BX = device handle
CH = category code
07h tape (ASPITAPE.SYS)
CL = function
01h "mtop" - perform tape operation
02h "mtget" - get tape status
03h ignore end-of-tape errors
04h enable end-of-tape errors
DS:DX -> parameter block (see #1241,#1242)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
DS:DX -> data block
Notes: This device driver is a simple DOS interface to the Adaptec Advanced
SCSI Programming Interface (ASPI). It provides the following device
names as access to the SCSI tape, 'RMTx' (rewind on close) and
'NRMTx' (NO rewind on close) where x can go from 0 to 3. There may
also be the following names 'MTx' and 'NMTx' which default to 1024
byte blocks. The names may also have a '$' appended to try and make
them unique from file names of 'RMT0' etc.
once opend these devices must be put into RAW mode
SeeAlso: AX=4402h"ASPI"
Format of ASPITAPE.SYS mtop parameter block:
Offset Size Description (Table 1241)
00h WORD operation code
00h "MTWEOF" - write an end-of-file record
01h "MTFSF" - forward space file
02h "MTBSF" - backward space file
03h "MTFSR" - forward space record
04h "MTBSR" - backward space record
05h "MTREW" - rewind
06h "MTOFFL" - rewind and unload
07h "MTNOP" - perform TEST UNIT READY
02h DWORD repetition count
Format of ASPITAPE.SYS mtget parameter block:
Offset Size Description (Table 1242)
00h BYTE ASPI host ID
01h BYTE SCSI target ID
02h BYTE SCSI logical unit number
03h BYTE device parameters
bit 0: drive must use fixed-block read and write
bit 7: drive is an ASPI device
04h BYTE current device state (see #1243)
05h BYTE unit number within driver
06h WORD fixed block blocksize
08h BYTE last SCSI status
09h BYTE last SCSI sense key
0Ah WORD last SCSI opcode (packed) (see #1244)
0Ch WORD residual bytes from SCSI opcode
Bitfields for ASPITAPE.SYS current device state:
Bit(s) Description (Table 1243)
0 device currently opened in buffered mode
1 drive currently opened in nonbuffered mode
2 rewind drive on last close
3 drive has been written on
4 drive has been read from
5 next read will return 0 bytes
6 EOM will resemble EOF
7 drive may be busy rewinding
Bitfields for SCSI opcode:
Bit(s) Description (Table 1244)
0-7 SCSI operation (SCSI packet byte 0)
8-10 SCSI flags (SCSI packet byte 1)
11-12 ASPI "Direction Bits" (ASPI SRB byte 3)
--------D-21440D-----------------------------
INT 21 - DOS 3.2+ - IOCTL - GENERIC BLOCK DEVICE REQUEST
AX = 440Dh
BL = drive number (00h=default,01h=A:,etc)
CH = category code (see #1245)
CL = minor code (function) (see #1246)
DS:DX -> (DOS) parameter block (see #1247,#1249,#1250,#1251,#1252)
SI:DI -> (OS/2 comp box) parameter block (see #1253,#1255,#1256,#1259)
Return: CF set on error
AX = error code (01h,02h,etc.) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
DS:DX -> data block if CL=60h or CL=61h
Notes: DOS 4.01 seems to ignore the high byte of the number of directory
entries in the BPB for diskettes.
functions 46h and 66h undocumented in DOS 4.x, documented for DOS 5+
the DUBLDISK.SYS v2.6 driver only supports minor codes 60h and 67h
DR DOS 3.41-6.0 only support minor codes 40h-42h and 60h-62h; all
other minor codes return error code 16h
some PCMCIA calls reportedly appear to be dangerous for MS-DOS versions
prior to 5.0
minor code 60h normally produces no I/O except with AutoMount=1 for
DBLSPACE/DRVSPACE
SeeAlso: AX=440Ch,AX=440Dh/CX=084Ah,AX=440Dh/CX=0871h,AH=69h,INT 2F/AX=0802h
SeeAlso: INT 2F/AX=122Bh
(Table 1245)
Values for block device IOCTL category code:
08h disk drive
48h FAT32 disk drive
00h-7Fh reserved for Microsoft
80h-FFh reserved for OEM/user-defined
(Table 1246)
Values for generic block IOCTL minor code:
00h (OS/2) \ used to lock/unlock a drive
01h (OS/2) /
40h set device parameters (see #1247)
41h write logical device track (see #1249)
42h format and verify logical device track (see #1250)
46h (DOS 4.0+) set volume serial number (see #1252,AH=69h)
47h (DOS 4.0+) set access flag (see #1253)
48h (Enh. Disk Drive Spec) set media lock state (see #1254,INT 13/AH=45h)
49h (Enh. Disk Drive Spec) eject media in drive (see INT 13/AH=49h)
no parameter block required
4Ah (MS-DOS 7.0) lock logical volume (see AX=440Dh/CX=084Ah)
4Bh (MS-DOS 7.0) lock physical volume (see AX=440Dh/CX=084Bh)
50h (PCMCIA) attribute memory write
51h (PCMCIA) common memory write
52h (PCMCIA) force media change (DOS 5+ ???) (see #1255)
53h (PCMCIA) erase drive
54h (PCMCIA) erase media
56h (PCMCIA) set erase status callback
57h (PCMCIA) append Card Information Structure (CIS) tuple
58h (PCMCIA) erase CIS tuples
60h get device parameters (see #1247)
61h read logical device track (see #1249)
62h verify logical device track (see #1251)
66h (DOS 4.0+) get volume serial number (see #1252,AH=69h)
67h (DOS 4.0+) get access flag (see #1253)
68h (DOS 5.0+) sense media type (see #1256)
6Ah (MS-DOS 7.0) unlock logical volume (see AX=440Dh/CX=086Ah)
no parameter block required
6Bh (MS-DOS 7.0) unlock physical volume (see AX=440Dh/CX=086Bh)
no parameter block required
6Ch (MS-DOS 7.0) get lock flag (see AX=440Dh/CX=086Ch)
no parameter block required
6Dh (MS-DOS 7.0) enumerate open files (see AX=440Dh/CX=086Dh)
6Eh (MS-DOS 7.0) find swap file (see AX=440Dh/CX=086Eh)
6Fh (MS-DOS 7.0) get drive map information (see #1257)
70h (PCMCIA) attribute memory read
70h (MS-DOS 7.0) get current lock state (see AX=440Dh/CX=0870h)
no parameter block required
71h (MS-DOS 7.0) get first cluster (see AX=440Dh/CX=0871h)
73h (PCMCIA) get memory media information (DOS 5+ ???) (see #1259)
76h (PCMCIA) get erase status callback
77h (PCMCIA) get first Card Information Structure (CIS) tuple
78h (PCMCIA) get next CIS tuple
7Fh (PCMCIA) get ??? information (see #1260,#1261)
Format of parameter block for functions 40h, 60h:
Offset Size Description (Table 1247)
00h BYTE special functions
bit 0 set if function to use current BPB, clear if Device
BIOS Parameter Block field contains new default BPB
bit 1 set if function to use track layout fields only
must be clear if CL=60h
bit 2 set if all sectors in track same size (should be set)
bits 3-7 reserved (MS-DOS, Novell DOS 7)
bit 5: skip head settling time (WinDOS 2.11)
bit 6: format access flag (WinDOS 2.11)
01h BYTE device type (see #1248)
02h WORD device attributes
bit 0 set if nonremovable medium
bit 1 set if door lock ("changeline") supported
bits 2-15 reserved
04h WORD number of cylinders
06h BYTE media type
for 1.2M drive
00h 1.2M disk (default)
01h 320K/360K disk
F8h for DUBLDISK.SYS v2.6 expanded drives
always 00h for other drive types
07h 31 BYTEs device BPB (see #1349 at AH=53h), bytes after BPB offset 1Eh
omitted; final six bytes only transferred on function 40h
with BYTE 00h bit 0 set for MS-DOS 5.0
---function 40h only---
26h WORD number of sectors per track (start of track layout field)
(maximum 63)
28h N word pairs: number,size of each sector in track
---category code 48h (FAT32), function 40h---
07h 53 BYTEs extended BPB (see #1350)
3Ch 32 BYTEs reserved
5Ch WORD number of track table entries
5Eh 2N WORDs sector table (word pairs: number/size of each sector in track)
---category code 48h (FAT32), function 60h---
07h 53 BYTEs extended BPB (see #1350)
3Ch 32 BYTEs reserved
(Table 1248)
Values for device type:
00h 320K/360K disk
01h 1.2M disk
02h 720K disk
03h single-density 8-inch disk
04h double-density 8-inch disk
05h fixed disk
06h tape drive
07h (DOS 3.3+) other type of block device, normally 1.44M floppy
08h read/write optical disk
09h (DOS 5+) 2.88M floppy
Format of parameter block for functions 41h, 61h:
Offset Size Description (Table 1249)
00h BYTE special functions (reserved, must be zero)
01h WORD number of disk head
03h WORD number of disk cylinder
05h WORD number of first sector to read/write
07h WORD number of sectors
09h DWORD transfer address
Note: under Windows95, a volume must be locked (see AX=440Dh/CX=084Bh) in
order to perform direct accesses such as track reads and writes
with this IOCTL function
Format of parameter block for function 42h:
Offset Size Description (Table 1250)
00h BYTE reserved, must be zero (DOS <3.2)
bit 0=0: format/verify track
1: format status call (DOS 3.2+), don't actually format
bit 1: format multiple tracks, require additional WORD
(hard disks only)
bits 2-7 reserved, must be zero
value on return (DOS 3.3+):
00h specified tracks, sectors/track supported by BIOS
01h function not supported by BIOS
02h specified tracks, sectors/track not allowed for drive
03h no disk in drive
01h WORD number of disk head
03h WORD number of disk cylinder
---BYTE 00h bit 1 set---
05h WORD number of tracks to format
Format of parameter block for function 62h:
Offset Size Description (Table 1251)
00h BYTE reserved, must be zero (DOS <3.2)
bit 0=0: verify single track
1: verify multiple tracks
bits 1-7 reserved, must be zero
value on return (DOS 3.3+):
00h specified tracks, sectors/track supported by BIOS
01h function not supported by BIOS
02h specified tracks, sectors/track not allowed for drive
03h no disk in drive
01h WORD number of disk head
03h WORD number of disk cylinder
05h WORD number of tracks to verify (equivalent to 255 or fewer sectors)
Format of parameter block for functions 46h, 66h:
Offset Size Description (Table 1252)
00h WORD (call) info level (should be 0000h)
02h DWORD disk serial number (binary)
06h 11 BYTEs volume label or "NO NAME "
11h 8 BYTEs filesystem type "FAT12 " or "FAT16 "
(generally CL=66h only, but MS-DOS 5.0 will write the
given filesystem type to the disk)
Note: under MS-DOS 7.0 or a Windows95 DOS box, the volume label field can
return as all blanks even when a volume label has been set (the Win95
installation seems to blank the volume label field in the partition
boot sector; once LABEL has been run, the volume label is reported
correctly)
SeeAlso: AH=69h
Format of parameter block for functions 47h, 67h:
Offset Size Description (Table 1253)
00h BYTE special-function field (must be zero)
01h BYTE disk-access flag, nonzero if access allowed by driver
Format of parameter block for function 48h:
Offset Size Description (Table 1254)
00h BYTE (call) locking operation
00h lock media in drive
01h unlock media
02h get locking status
01h BYTE (ret) drive's lock status (number of pending locks on drive)
Note: also supported by MS-DOS 7.0
Format of parameter block for function 52h:
00h BYTE (call) unused??? (Table 1255)
(ret) 00h if flash/ATA drive but no card inserted
unchanged otherwise
Notes: the absense of a flash card should be tested by checking the DOS error
code rather than the returned byte
the parameter byte is cleared to 00h erroneously by the Award
PCDISK.EXE v1.02c PCMCIA/ATA driver if no ATA card is inserted
(bug corrected in PCDISK.EXE v1.02h and later)
not supported by the SystemSoft ATADRV.EXE and the Phoenix PCMATA.SYS
PCMCIA/ATA drivers
Format of parameter block for function 68h:
Offset Size Description (Table 1256)
00h BYTE 01h for default media type, 00h for any other media type
(see also INT 13/AH=20h"Compaq")
01h BYTE 02h for 720K, 07h for 1.44M, 09h for 2.88M
Format of parameter block for function 6Fh:
Offset Size Description (Table 1257)
00h BYTE (call) length of this buffer (in bytes)
01h BYTE (ret) number of bytes in parameter block actually used
02h BYTE (ret) drive flags (see #1258)
03h BYTE (ret) physical drive number
00h-7Fh floppy
80h-FEh hard
FFh no physical drive
04h DWORD (ret) bitmap of logical drives associated with physical drive
bit 0 = drive A:, etc.
08h QWORD (ret) relative block address of partition start
Bitfields for Get Drive Map Information drive flags:
Bit(s) Description (Table 1258)
0 protected-mode driver for logical drive
1 protected-mode driver in use for physical drive corresponding to the
logical drive
2 drive available only in protected mode
3 protected-mode drive supports media ejection
4 drive issues media insertion and removal notifications
SeeAlso: #1257
Format of parameter block for function 73h:
Offset Size Description (Table 1259)
00h BYTE ???
00h ATA card inserted ???
80h ATA card not inserted ???
01h BYTE length of parameter block ???
apparently always 40h
02h BYTE ???
00h ATA card not inserted ???
0Dh ATA card inserted ???
03h 2 BYTEs ??? (apparently always 00h)
05h BYTE drive number (0=first) ???
06h BYTE total number of drives ???
07h BYTE ???
00h ATA card not inserted ???
01h ATA card inserted ???
08h 17 BYTEs ???
19h BYTE ???
00h ATA card not inserted ???
01h ATA card inserted ???
1Ah BYTE ??? (apparently always 01h)
1Bh BYTE ???
00h ATA card not inserted ???
01h ATA card inserted ???
1Ch 2 BYTEs ??? (apparently always 0015h)
1Eh 2 BYTEs ???
20h 2 BYTEs ??? (apparently always 0110h)
22h 15 BYTEs ???
31h 2 BYTEs ??? (apparently always 7000h)
33h 11 BYTEs driver signature
"AWARD PDISK" for Award PCDISK.EXE PCMCIA/ATA driver
"MS-BIOS " for HP 200LX generic ATA driver
3Eh 2 BYTEs ???
Notes: parameter structure possibly depends on driver
this function is not supported by the SystemSoft ATADRV.EXE and the
Phoenix PCMATA.SYS PCMCIA/ATA drivers
Format of parameter block for function 7Fh for SystemSoft ATADRV.EXE:
Offset Size Description (Table 1260)
00h DWORD -> unknown location within driver
Note: function supported by the SystemSoft ATADRV.EXE PCMCIA/ATA driver
but not by the Award PCDISK.EXE PCMCIA/ATA driver
SeeAlso: #1261
Format of parameter block for function 7Fh for Phoenix PCMATA.SYS:
Offset Size Description (Table 1261)
00h 8 BYTEs ???
Note: this function supported by the Phoenix PCMATA.SYS PCMCIA/ATA driver
but not by the Award PCDISK.EXE PCMCIA/ATA driver
SeeAlso: #1260
--------D-21440DCX084A-----------------------
INT 21 - MS-DOS 7.0 - GENERIC IOCTL - LOCK LOGICAL VOLUME
AX = 440Dh
CX = 084Ah (category code 08h, minor code 4Ah)
BL = drive number (00h=default,01h=A:,etc)
BH = lock level (00h-04h)
DX = drive permissions (see #1262) for Level 1 lock or second
Level 0 lock when formatting
Return: CF set on error
AX = error code (01h,02h,etc.) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Notes: the logical volume must be locked before direct disk accesses are
permitted by Windows95
the commandline LOCK issues a level 4 lock
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Bh,AX=440Dh/CX=086Ah
SeeAlso: AX=440Dh/CX=086Ch
Bitfields for drive permissions:
Bit(s) Description (Table 1262)
0 allow writes
1 disallow new file mappings
2 volume locked for formatting
--------D-21440DCX084B-----------------------
INT 21 - MS-DOS 7.0 - GENERIC IOCTL - LOCK PHYSICAL VOLUME
AX = 440Dh
CX = 084Bh (category code 08h, minor code 4Bh)
BL = physical drive number (00h-7Fh = floppy, 80h-FFh = hard disk)
BH = lock level (00h-03h)
DX = drive permissions (see #1262) for Level 1 lock or second
Level 0 lock when formatting
Return: CF set on error
AX = error code (01h,02h,etc.) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Note: the physical volume must be locked before direct disk writes via
INT 13 are permitted by Windows95
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Bh
SeeAlso: AX=440Dh/CX=086Ch
--------D-21440DCX086A-----------------------
INT 21 - MS-DOS 7.0 - GENERIC IOCTL - UNLOCK LOGICAL VOLUME
AX = 440Dh
CX = 086Ah (category code 08h, minor code 6Ah)
BL = drive number (00h=default,01h=A:,etc)
Return: CF set on error
AX = error code (01h,02h,etc.) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Note: the logical volume must be locked before direct disk accesses via
INT 13 are permitted by Windows95
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Bh
--------D-21440DCX086B-----------------------
INT 21 - MS-DOS 7.0 - GENERIC IOCTL - UNLOCK PHYSICAL VOLUME
AX = 440Dh
CX = 086Bh (category code 08h, minor code 6Bh)
BL = physical drive number (00h-7Fh = floppy, 80h-FFh = hard disk)
Return: CF set on error
AX = error code (01h,02h,etc.) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Bh,AX=440Dh/CX=086Ah
--------D-21440DCX086C-----------------------
INT 21 - MS-DOS 7.0 - GENERIC IOCTL - GET LOCK FLAG STATE
AX = 440Dh
CX = 086Ch (category code 08h, minor code 6Ch)
BL = drive number (00h=default,01h=A:,etc)
Return: CF set on error
AX = error code (01h,02h,etc.) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = access flag (see #1263)
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=084Bh
SeeAlso: AX=440Dh/CX=0870h
(Table 1263)
Values for drive access flag:
0000h no writes/file mappings since last call
0001h write operation has occurred since last call
0002h file mapping has occurred since last call
Note: function 6Ch resets the access flag every time it is called
--------D-21440DCX086D-----------------------
INT 21 - MS-DOS 7.0 - GENERIC IOCTL - ENUMERATE OPEN FILES
AX = 440Dh
CX = 086Dh (category code 08h, minor code 6Dh)
BL = drive number (00h=default,01h=A:,etc)
DS:DX -> buffer for ASCIZ pathname
SI = file index (0000h to number of open files-1)
DI = enumeration type (0000h all files, 0001h unmovable files)
Return: CF set on error
AX = error code (01h,02h,12h,etc.) (see #1366 at AH=59h/BX=0000h)
0012h if file index is out of range
CF clear if successful
AX = file open mode (BX from AX=6C00h or AX=716Ch)
CX = file type (see #1264)
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=084Ah,AX=440Dh/CX=086Ch
SeeAlso: AX=440Dh/CX=086Eh,AX=6C00h,AX=716Ch
(Table 1264)
Values for file type:
0000h normal file
0001h memory-mapped file (unmovable)
0002h unmovable file
0004h swap file
--------D-21440DCX086E-----------------------
INT 21 - MS-DOS 7.0 - GENERIC IOCTL - FIND SWAP FILE
AX = 440Dh
CX = 086Eh (category code 08h, minor code 6Eh)
BL = drive number (00h=default,01h=A:,etc)
DS:DX -> buffer for ASCIZ pathname
SI = file index
DI = enumeration type
Return: CF set on error
AX = error code (01h,02h,etc.) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = pager type
0001h no pager
0002h paging through MS-DOS
0003h protected-mode pager
CX:BX = swap file size in 4K pages
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=086Dh
--------D-21440DCX0870-----------------------
INT 21 - MS-DOS 7.0 - GENERIC IOCTL - GET CURRENT LOCK STATE
AX = 440Dh
CX = 0870h (category code 08h, minor code 70h)
BL = drive number (00h=default,01h=A:,etc)
Return: CF set on error
AX = error code (01h,02h,etc.) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = current lock level (0-3) or FFFFh if not locked
CX = lock permissions if AX<>FFFFh (see #1262)
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=086Ch
--------D-21440DCX0871-----------------------
INT 21 - MS-DOS 7.0 - GENERIC IOCTL - GET FIRST CLUSTER
AX = 440Dh
CX = 0871h (category code 08h, minor code 71h)
BX = filename character set (see #1265)
DS:DX -> ASCIZ pathname for file or directory
Return: CF set on error
AX = error code (01h,02h,etc.) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
DX:AX = first cluster number
Note: this function finds any file or directory regardless of attributes,
except that it will not find volume labels
SeeAlso: AX=440Dh"DOS 3.2+",AX=440Dh/CX=086Ch,#1041
(Table 1265)
Values for character set:
00h Windows ANSI
01h current OEM character set
02h Unicode
--------D-21440E-----------------------------
INT 21 - DOS 3.2+ - IOCTL - GET LOGICAL DRIVE MAP
AX = 440Eh
BL = drive number (00h=default,01h=A:,etc)
Return: CF set on error
AX = error code (01h,0Fh) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AL = 00h block device has only one logical drive assigned
1..26 the last letter used to reference the drive (1=A:,etc)
Notes: DR DOS 3.41-5.0 DRIVER.SYS does not support drive mapping and thus
always returns AL=00h
in addition to the normal operation, if Stacker is installed, this
call also sets the volume number at offset 58h in the Stacker
device driver (DR DOS 3.41-5.0 only; use AX=4408h otherwise)
(see AX=4404h"Stacker",INT 25/AX=CDCDh)
SeeAlso: AX=4408h,AX=440Fh,INT 2F/AX=122Bh
--------D-21440F-----------------------------
INT 21 - DOS 3.2+ - IOCTL - SET LOGICAL DRIVE MAP
AX = 440Fh
BL = physical drive number (00h=default,01h=A:,etc))
Return: CF set on error
AX = error code (01h,0Fh) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
drive now responds to next logical drive number
Notes: maps logical drives to physical drives, similar to DOS's treatment of
a single physical floppy drive as both A: and B:
DR DOS 3.41-5.0 DRIVER.SYS does not support drive mapping and thus
always returns an error on this function
SeeAlso: AX=440Eh,INT 2F/AX=122Bh
--------D-214410-----------------------------
INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (HANDLE)
AX = 4410h
BX = handle for device
CH = category code (see #1232)
CL = function code (see #1233)
Return: CF clear if successful
AX = 0000h specified IOCTL function is supported
CF set on error
AL = 01h IOCTL capability not available
Note: a program which wishes to use Generic IOCTL calls beyond those in the
standard DOS 3.2 set may use this call first to see whether a
particular call is supported
SeeAlso: AX=440Ch,AX=440Dh"DOS 3.2+",AX=4411h
--------d-214410BXFFFF-----------------------
INT 21 U - NewSpace - ENABLE DRIVER
AX = 4410h
BX = FFFFh
Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
all files as they are written and decompresses them as they are read
Note: compressed files are not accessible unless the driver is enabled
SeeAlso: AX=4411h/BX=FFFFh
--------D-214411-----------------------------
INT 21 - DOS 5+ - IOCTL - QUERY GENERIC IOCTL CAPABILITY (DRIVE)
AX = 4411h
BL = drive number
CH = category code (see #1245)
CL = function code (see #1246)
Return: CF clear if successful
AX = 0000h specified IOCTL function is supported
CF set on error
AL = 01h IOCTL capability not available
Note: a program which wishes to use Generic IOCTL calls beyond those in the
standard DOS 3.2 set may use this call first to see whether a
particular call is supported
SeeAlso: AX=440Ch,AX=440Dh"DOS 3.2+",AX=4410h
--------d-214411BXFFFF-----------------------
INT 21 U - NewSpace - DISABLE DRIVER
AX = 4411h
BX = FFFFh
Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
all files as they are written and decompresses them as they are read
Note: compressed files are not accessible unless the driver is enabled
SeeAlso: AX=4410h/BX=FFFFh
--------O-214412-----------------------------
INT 21 O - DR DOS 5.0-6.0 - DETERMINE DOS TYPE
AX = 4412h
CF set
Return: CF set if not DR DOS
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if DR DOS
DX = AX = version code (see #1267)
Note: this obsolete call, which is no longer supported in Novell DOS 7, is
identical to AX=4452h
SeeAlso: AX=4452h
--------d-214412BXFFFF-----------------------
INT 21 U - NewSpace - INSTALLATION CHECK???
AX = 4412h
BX = FFFFh
Return: AX = PSP segment of NewRes (resident driver for NewSpace)
BX:DX -> ???
CX = ???
SeeAlso: AX=4411h/BX=FFFFh
--------d-214413BXFFFF-----------------------
INT 21 U - NewSpace - GET ???
AX = 4413h
BX = FFFFh
Return: AX = code segment of NewRes (resident driver for NewSpace)
BX = offset of ???
SeeAlso: AX=4412h/BX=FFFFh
--------O-214414-----------------------------
INT 21 OU - DR DOS 5.0-6.0 - SET GLOBAL PASSWORD
AX = 4414h
DS:DX -> password string (blank-padded to 8 characters)
Desc: Specify the master password for accessing files.
Note: this obsolete call, which is no longer supported in Novell DOS 7, is
identical to AX=4454h
SeeAlso: AX=4454h
--------d-214414BXFFFF-----------------------
INT 21 U - NewSpace - DEBUGGING DUMP
AX = 4414h
BX = FFFFh
Return: debugging dump written to X:\NEWSPACE.SMP
SeeAlso: AX=4413h/BX=FFFFh,AX=44FFh/BX=FFFFh
--------O-2144-------------------------------
INT 21 OU - DR DOS 5.0-6.0 - HISTORY BUFFER, SHARE, AND HILOAD CONTROL
AH = 44h
AL = 16h to 18h
Note: these obsolete subfunctions (which are no longer supported in Novell
DOS 7) are identical to AX=4456h through 4458h
SeeAlso: AX=4456h,AX=4457h,AX=4458h
--------O-214451-----------------------------
INT 21 - Concurrent DOS v3.2+ - INSTALLATION CHECK
AX = 4451h
Return: CF set if not Concurrent DOS
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AH = single-user/multiuser nature
10h single-user
AL = operating system version ID (see #1267)
14h multiuser
AL = operating system version ID (see #1266)
Notes: as of Concurrent DOS/XM 5.0 (possibly earlier), the version is stored
in the environment variable VER
use this function if you are looking for multiuser capabilities,
AX=4452h for single-user
this function should never return the single-user values
SeeAlso: AX=4452h,AX=4459h
(Table 1266)
Values for Digital Research operating system version ID:
32h Concurrent PC DOS 3.2
41h Concurrent DOS 4.1
50h Concurrent DOS/XM 5.0 or Concurrent DOS/386 1.1
60h Concurrent DOS/XM 6.0 or Concurrent DOS/386 2.0
62h Concurrent DOS/XM 6.2 or Concurrent DOS/386 3.0
66h DR Multiuser DOS 5.1
67h Concurrent DOS 5.1
--------O-214452-----------------------------
INT 21 - DR DOS 3.41+ - DETERMINE DOS TYPE/GET DR DOS VERSION
AX = 4452h ("DR")
CF set
Return: CF set if not DR DOS
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if DR DOS
AX = version code
AH = single-user/multiuser nature
10h single-user
AL = operating system version ID (see #1267)
14h multiuser
AL = operating system version ID (see #1266)
DX modified (refer to note below)
Notes: the DR DOS version is stored in the environment variable VER
use this function if looking for single-user capabilities, AX=4451h
if looking for multiuser; this call should never return multiuser
values
in DR DOS 3.41-6.0, DX=AX on return; for Novell DOS 7, DH=AH but DL=00h
(reportedly, DH=00h when booting NWDOS7 from installation disks)
Novell DOS 7 returns error code 0001h if SETVER 255.x is in effect for
the calling program
SeeAlso: AX=4412h,AX=4451h,AX=4459h
(Table 1267)
Values for Digital Research operating system version ID:
60h DOS Plus
63h DR DOS 3.41
64h DR DOS 3.42
65h DR DOS 5.00
67h DR DOS 6.00
70h PalmDOS
71h DR DOS 6.0 March 1993 "business update"
72h Novell DOS 7.0
--------O-214454-----------------------------
INT 21 U - DR DOS 3.41+ - SET GLOBAL PASSWORD
AX = 4454h
DS:DX -> password string (blank-padded to 8 characters)
Desc: Specify the master password for accessing files.
SeeAlso: AX=4303h,AX=4414h
--------O-214456-----------------------------
INT 21 U - DR DOS 5.0+ - HISTORY BUFFER CONTROL
AX = 4456h
DL = control flags (see #1268)
Return: AL = previous value of state flags (see #1269)
Note: DR DOS 6.0 only checks bit 0 and ignores the rest of DL
SeeAlso: #1270
Bitfields for control flags:
Bit(s) Description (Table 1268)
0 whose buffer: 0=application, 1=COMMAND.COM
---Novell DOS 7---
1 toggle HISTORY usage
2 toggle INSERT state
Note: only one bit at a time may be used
Bitfields for state flags:
Bit(s) Description (Table 1269)
0 HISTORY buffer enabled
1 INSERT enabled
2-5 unused
7 whose buffer: 0=application, 1=COMMAND.COM
--------O-214457-----------------------------
INT 21 U - DR DOS 5.0-6.0 - SHARE/HILOAD CONTROL
AX = 4457h
DH = subfunction
00h enable/disable SHARE
DL = 00h disable
= 01h enable
else Return: AX = ???
01h get HILOAD status
Return: AX = status
0000h off
0001h on
02h set HILOAD status
DL = new state (00h off, 01h on)
Return: AX = ???
other
Return: AX = ???
Note: This was seen called by COMMAND.COM of DR DOS 6.0; it does not seem
to be supported by Novell DOS 7
SeeAlso: AX=4457h/DX=FFFFh
--------O-214457DXFFFF-----------------------
INT 21 U - DR DOS 6.0 - GET SHARE STATUS
AX = 4457h
DX = FFFFh
Return: AX = SHARE status
SeeAlso: INT 2F/AX=1000h
--------O-214458-----------------------------
INT 21 U - DR DOS 5.0+ internal - GET POINTER TO INTERNAL VARIABLE TABLE
AX = 4458h
Return: ES:BX -> internal variable table (see #1270,#1271)
AX = ??? (0B50h for DR DOS 5.0, 0A56h for DR DOS 6.0, 0FE4h for
Novell DOS 7)
SeeAlso: AX=4452h
Format of DR DOS 5.0-6.0 internal variable table:
Offset Size Description (Table 1270)
00h WORD ???
02h WORD segment of ???
04h WORD offset within DOS data segment of history control structure
for COMMAND.COM history buffer (see #1272)
06h WORD offset within DOS data segment of history control structure
for application history buffer (see #1272)
08h BYTE initial history state flags (see #1269)
09h 2 BYTEs ???
0Bh WORD KB of extended memory at startup
0Dh BYTE number of far jump entry points
0Eh WORD segment containing far jumps to DR DOS entry points (see #1273)
10h WORD (only if kernel loaded in HMA) offset in HMA of first free HMA
memory block (see #1274) or 0000h if none; segment is FFFFh
12h WORD pointer to segment of environment variables set in CONFIG,
or 0000h if already used
---DR DOS 6.0---
14h WORD (only if kernel loaded in HMA) offset in HMA of first used HMA
memory block (see #1274) or 0000h if none; segment is FFFFh
16h 8 BYTEs ???
1Eh WORD offset in DOS data segment of full COUNTRY.SYS filename
20h 8 BYTEs ???
28h WORD offset in DOS data segment of SHARE hook table
2Ah 2 BYTEs ???
2Ch WORD offset in DOS data segment of far pointer to INT 2F/AX=1000h
handler
Note: the segment used for the DR DOS 6.0 CONFIG environment variables
(excluding COMSPEC, VER and OS) is only useful for programs/drivers
called from CONFIG.SYS. The word is set to zero later when the area
is copied to the COMMAND.COM environment space. This allows
CONFIG.SYS to pass information to AUTOEXEC.BAT.
Format of Novell DOS 7 internal variable table:
Offset Size Description (Table 1271)
00h ???
1Eh WORD offset of COUNTRY.SYS filename
42h 16 DWORDs pointers to ??? entry points
???
Format of history control structure:
Offset Size Description (Table 1272)
00h WORD segment of buffer
02h WORD size of buffer in bytes
04h WORD ???
Format of kernel entry jump table for DR DOS 5.0-6.0:
Offset Size Description (Table 1273)
00h 5 BYTEs far jump to kernel entry point for CP/M CALL 5
05h 5 BYTEs far jump to kernel entry point for INT 20
0Ah 5 BYTEs far jump to kernel entry point for INT 21
0Fh 5 BYTEs far jump to kernel entry point for INT 22 (RETF)
14h 5 BYTEs far jump to kernel entry point for INT 23 (RETF)
19h 5 BYTEs far jump to kernel entry point for INT 24
1Eh 5 BYTEs far jump to kernel entry point for INT 25
23h 5 BYTEs far jump to kernel entry point for INT 26
28h 5 BYTEs far jump to kernel entry point for INT 27
2Dh 5 BYTEs far jump to kernel entry point for INT 28
32h 5 BYTEs far jump to kernel entry point for INT 2A (IRET)
37h 5 BYTEs far jump to kernel entry point for INT 2B (IRET)
3Ch 5 BYTEs far jump to kernel entry point for INT 2C (IRET)
41h 5 BYTEs far jump to kernel entry point for INT 2D (IRET)
46h 5 BYTEs far jump to kernel entry point for INT 2E (IRET)
4Bh 5 BYTEs far jump to kernel entry point for INT 2F
Notes: all of these entry points are indirected through this jump table
to allow the kernel to be relocated into high memory while leaving
the actual entry addresses in low memory for maximum compatibility
some of these entry points (22h,23h,24h,2Eh,2Fh) are replaced as soon
as COMMAND.COM is loaded, and return immediately to the caller, some
returning an error code (the original handler for INT 2F returns
AL=03h [fail]).
Format of HMA Memory Block (DR DOS 6.0 kernel loaded in HMA):
Offset Size Description (Table 1274)
00h WORD offset of next HMA Memory Block (0000h if last block)
02h WORD size of this block in bytes (at least 10h)
04h BYTE type of HMA Memory Block (interpreted by MEM)
00h system
01h KEYB
02h NLSFUNC
03h SHARE
04h TaskMAX
05h COMMAND
05h var TSR (or system) code and data. DR DOS TSR's, such as KEYB,
hooks interrupts using segment FFFEh instead FFFFh.
--------O-214459-----------------------------
INT 21 - DR MultiUser DOS 5.0 - API
AX = 4459h
CL = function (see #3690 at INT E0"CP/M-86")
DS,DX = parameters
Notes: DR DOS 5.0 and Novell DOS 7 return CF set and AX=0001h
this API is also available on INT E0
SeeAlso: AX=4452h,INT E0"CP/M-86"
--------v-2144A0-----------------------------
INT 21 - VIRUS - "Horns" - INSTALLATION CHECK
AX = 44A0h
Return: AH = FFh if installed
SeeAlso: AX=4243h"VIRUS",AX=4B04h"VIRUS"
--------N-2144E0-----------------------------
INT 21 U - Sun PC-NFS - API???
AX = 44E0h
DS:DX -> ???
SS:BP -> stack frame (see #1275)
Return: ???
Note: this function is also supported by Beame&Whiteside's BWPCNFS shim; the
description presented here was derived from that shim
Format of PC-NFS stack frame:
Offset Size Description (Table 1275)
00h WORD -> previous stack frame
02h DWORD return address
--------d-2144FFBXFFFF-----------------------
INT 21 U - NewSpace - ???
AX = 44FFh
BX = FFFFh
DX = ???
Program: NewSpace is a TSR by Isogon Corporation which automatically compresses
all files as they are written and decompresses them as they are read
SeeAlso: AX=4414h/BX=FFFFh
--------D-2145-------------------------------
INT 21 - DOS 2+ - "DUP" - DUPLICATE FILE HANDLE
AH = 45h
BX = file handle
Return: CF clear if successful
AX = new handle
CF set on error
AX = error code (04h,06h) (see #1366 at AH=59h/BX=0000h)
Notes: moving file pointer for either handle will also move it for the other,
because both will refer to the same system file table
for DOS versions prior to 3.3, file writes may be forced to disk by
duplicating the file handle and closing the duplicate
SeeAlso: AH=3Dh,AH=46h
--------D-2146-------------------------------
INT 21 - DOS 2+ - "DUP2", "FORCEDUP" - FORCE DUPLICATE FILE HANDLE
AH = 46h
BX = file handle
CX = file handle to become duplicate of first handle
Return: CF clear if successful
CF set on error
AX = error code (04h,06h) (see #1366 at AH=59h/BX=0000h)
Notes: closes file with handle CX if it is still open
DOS 3.30 hangs if BX=CX on entry
moving file pointer for either handle will also move it for the other,
because both will refer to the same system file table
SeeAlso: AH=3Dh,AH=45h
--------D-2147-------------------------------
INT 21 - DOS 2+ - "CWD" - GET CURRENT DIRECTORY
AH = 47h
DL = drive number (00h = default, 01h = A:, etc)
DS:SI -> 64-byte buffer for ASCIZ pathname
Return: CF clear if successful
AX = 0100h (undocumented)
CF set on error
AX = error code (0Fh) (see #1366 at AH=59h/BX=0000h)
Notes: the returned path does not include a drive or the initial backslash
many Microsoft products for Windows rely on AX being 0100h on success
under the FlashTek X-32 DOS extender, the buffer pointer is in DS:ESI
SeeAlso: AH=19h,AH=3Bh,AH=71h,INT 15/AX=DE25h
--------D-2148-------------------------------
INT 21 - DOS 2+ - ALLOCATE MEMORY
AH = 48h
BX = number of paragraphs to allocate
Return: CF clear if successful
AX = segment of allocated block
CF set on error
AX = error code (07h,08h) (see #1366 at AH=59h/BX=0000h)
BX = size of largest available block
Notes: DOS 2.1-6.0 coalesces free blocks while scanning for a block to
allocate
.COM programs are initially allocated the largest available memory
block, and should free some memory with AH=49h before attempting any
allocations
under the FlashTek X-32 DOS extender, EBX contains a protected-mode
near pointer to the allocated block on a successful return
SeeAlso: AH=49h,AH=4Ah,AH=58h,AH=83h
--------D-2149-------------------------------
INT 21 - DOS 2+ - FREE MEMORY
AH = 49h
ES = segment of block to free
Return: CF clear if successful
CF set on error
AX = error code (07h,09h) (see #1366 at AH=59h/BX=0000h)
Notes: apparently never returns an error 07h, despite official docs; DOS 2.1+
code contains only an error 09h exit
DOS 2.1-6.0 does not coalesce adjacent free blocks when a block is
freed, only when a block is allocated or resized
the code for this function is identical in DOS 2.1-6.0 except for
calls to start/end a critical section in DOS 3.0+
SeeAlso: AH=48h,AH=4Ah
--------D-214A-------------------------------
INT 21 - DOS 2+ - RESIZE MEMORY BLOCK
AH = 4Ah
BX = new size in paragraphs
ES = segment of block to resize
Return: CF clear if successful
CF set on error
AX = error code (07h,08h,09h) (see #1366 at AH=59h/BX=0000h)
BX = maximum paragraphs available for specified memory block
Notes: under DOS 2.1-6.0, if there is insufficient memory to expand the block
as much as requested, the block will be made as large as possible
DOS 2.1-6.0 coalesces any free blocks immediately following the block
to be resized
SeeAlso: AH=48h,AH=49h,AH=83h
--------v-214A--BX00B6-----------------------
INT 21 - VIRUS???
AH = 4Ah
BX = 00B6h
ES = CX
Return: ???
Note: this call is intercepted by the Search&Destroy SDRes v27.03 bundled
with Novell DOS 7, and is presumably some virus's installation check
SeeAlso: AH=0Eh/DL=ADh,AH=4Ah/BX=FFFFh,AH=D2h"VIRUS"
--------v-214A--BXFFFF-----------------------
INT 21 - VIRUS???
AH = 4Ah
BX = FFFFh
CX = 0568h
SI = 0129h
DI = 0000h
ES = BP
Return: ???
Note: this call is intercepted by the Search&Destroy SDRes v27.03 bundled
with Novell DOS 7, and is presumably some virus's installation check
SeeAlso: AH=0Eh/DL=ADh,AH=4Ah/BX=00B6h
--------D-214B-------------------------------
INT 21 - DOS 2+ - "EXEC" - LOAD AND/OR EXECUTE PROGRAM
AH = 4Bh
AL = type of load
00h load and execute
01h load but do not execute
03h load overlay (see #1277)
04h load and execute in background (European MS-DOS 4.0 only)
"Exec & Go" (see also AH=80h)
DS:DX -> ASCIZ program name (must include extension)
ES:BX -> parameter block (see #1276,#1277,#1278)
CX = mode (subfunction 04h only)
0000h child placed in zombie mode after termination
0001h child's return code discarded on termination
Return: CF clear if successful
BX,DX destroyed
if subfunction 01h, process ID set to new program's PSP; get with
INT 21/AH=62h
CF set on error
AX = error code (01h,02h,05h,08h,0Ah,0Bh) (see #1366 at AH=59h)
Notes: DOS 2.x destroys all registers, including SS:SP
under ROM-based DOS, if no disk path characters (colons or slashes)
are included in the program name, the name is searched for in the
ROM module headers (see #1281) before searching on disk
for functions 00h and 01h, the calling process must ensure that there
is enough unallocated memory available; if necessary, by releasing
memory with AH=49h or AH=4Ah
for function 01h, the AX value to be passed to the child program is put
on top of the child's stack
for function 03h, DOS assumes that the overlay is being loaded into
memory allocated by the caller
function 01h was undocumented prior to the release of DOS 5.0
some versions (such as DR DOS 6.0) check the parameters and parameter
block and return an error if an invalid value (such as an offset of
FFFFh) is found
background programs under European MS-DOS 4.0 must use the new
executable format
this function ignores the filename extension, instead checking the
first two bytes of the file to determine whether there is a valid
.EXE header (see #1280); if not, the file is assumed to be in .COM
format. If present, the file may be in any of several formats which
are extensions of the original .EXE format (see #1279)
.COM-format executables begin running with the following register
values:
AL = 00h if first FCB has valid drive letter, FFh if not
AH = 00h if second FCB has valid drive letter, FFh if not
CS,DS,ES,SS = PSP segment
SP = offset of last word available in first 64K segment
(note: AX is always 0000h under DESQview)
old-format executables begin running with the following register
values:
AL = 00h if first FCB has valid drive letter, FFh if not
AH = 00h if second FCB has valid drive letter, FFh if not
DS,ES = PSP segment
SS:SP as defined in .EXE header
(note: AX is always 0000h under DESQview)
new executables begin running with the following register values
AX = environment segment
BX = offset of command tail in environment segment
CX = size of automatic data segment (0000h = 64K)
ES,BP = 0000h
DS = automatic data segment
SS:SP = initial stack
the command tail corresponds to an old executable's PSP:0081h and
following, except that the 0Dh is turned into a NUL (00h); new
format executables have no PSP
under the FlashTek X-32 DOS extender, only function 00h is supported
and the pointers are passed in DS:EDX and ES:EBX
DR DOS 6 always loads .EXE-format programs with no fixups and
.COM-format programs starting with 9Ch 55h (PUSHF/PUSH BP) above the
64K mark to avoid the EXEPACK bug, by extending the memory block
containing the program's environment; this code is disabled if the
name of the parent program as stored in the MCB is 'WIN'.
BUGS: DOS 2.00 assumes that DS points at the current program's PSP
Load Overlay (subfunction 03h) loads up to 512 bytes too many if the
file contains additional data after the actual overlay
SeeAlso: AX=4B05h,AH=4Ch,AH=4Dh,AH=64h/BX=0025h,AH=8Ah,INT 2E,INT 60/DI=0604h
Format of EXEC parameter block for AL=00h,01h,04h:
Offset Size Description (Table 1276)
00h WORD segment of environment to copy for child process (copy caller's
environment if 0000h)
02h DWORD pointer to command tail to be copied into child's PSP
06h DWORD pointer to first FCB to be copied into child's PSP
0Ah DWORD pointer to second FCB to be copied into child's PSP
0Eh DWORD (AL=01h) will hold subprogram's initial SS:SP on return
12h DWORD (AL=01h) will hold entry point (CS:IP) on return
SeeAlso: #1277,#1278
Format of EXEC parameter block for AL=03h:
Offset Size Description (Table 1277)
00h WORD segment at which to load overlay
02h WORD relocation factor to apply to overlay if in .EXE format
SeeAlso: #1276,#1278
Format of EXEC parameter block for FlashTek X-32:
Offset Size Description (Table 1278)
00h PWORD 48-bit far pointer to environment string
06h PWORD 48-bit far pointer to command tail string
SeeAlso: #1276,#1277
(Table 1279)
Values for the executable types understood by various environments:
MZ old-style DOS executable (see #1280)
NE Windows or OS/2 1.x segmented ("new") executable (see #1282)
LE Windows virtual device driver (VxD) linear executable (see #1295)
LX variant of LE used in OS/2 2.x (see #1295)
W3 Windows WIN386.EXE file; a collection of LE files
W4 Windows95 VMM32.VXD file
PE Win32 (Windows NT and Win32s) portable executable based on Unix COFF
DL HP 100LX/200LX system manager compliant executable (.EXM)
MP old PharLap .EXP (see #1305)
P2 PharLap 286 .EXP (see #1306)
P3 PharLap 386 .EXP (see #1306)
Format of .EXE file header:
Offset Size Description (Table 1280)
00h 2 BYTEs .EXE signature, either "MZ" or "ZM" (5A4Dh or 4D5Ah)
(see also #1279)
02h WORD number of bytes in last 512-byte page of executable
04h WORD total number of 512-byte pages in executable (includes any
partial last page)
06h WORD number of relocation entries
08h WORD header size in paragraphs
0Ah WORD minimum paragraphs of memory required to allocate in addition
to executable's size
0Ch WORD maximum paragraphs to allocate in addition to executable's size
0Eh WORD initial SS relative to start of executable
10h WORD initial SP
12h WORD checksum (one's complement of sum of all words in executable)
14h DWORD initial CS:IP relative to start of executable
18h WORD offset within header of relocation table
40h or greater for new-format (NE,LE,LX,W3,PE,etc.) executable
1Ah WORD overlay number (normally 0000h = main program)
---new executable---
1Ch 4 BYTEs ???
20h WORD behavior bits
22h 26 BYTEs reserved for additional behavior info
3Ch DWORD offset of new executable (NE,LE,etc) header within disk file,
or 00000000h if plain MZ executable
---Borland TLINK---
1Ch 2 BYTEs ??? (apparently always 01h 00h)
1Eh BYTE signature FBh
1Fh BYTE TLINK version (major in high nybble, minor in low nybble)
20h 2 BYTEs ??? (v2.0 apparently always 72h 6Ah, v3.0+ seems always 6Ah 72h)
---ARJ self-extracting archive---
1Ch 4 BYTEs signature "RJSX" (older versions, new signature is "aRJsfX" in
the first 1000 bytes of the file)
---LZEXE 0.90 compressed executable---
1Ch 4 BYTEs signature "LZ09"
---LZEXE 0.91 compressed executable---
1Ch 4 BYTEs signature "LZ91"
---PKLITE compressed executable---
1Ch BYTE minor version number
1Dh BYTE bits 0-3: major version
bit 4: extra compression
bit 5: huge (multi-segment) file
1Eh 6 BYTEs signature "PKLITE" (followed by copyright message)
---LHarc 1.x self-extracting archive---
1Ch 4 BYTEs unused???
20h 3 BYTEs jump to start of extraction code
23h 2 BYTEs ???
25h 12 BYTEs signature "LHarc's SFX "
---LHA 2.x self-extracting archive---
1Ch 8 BYTEs ???
24h 10 BYTEs signature "LHa's SFX " (v2.10) or "LHA's SFX " (v2.13)
---TopSpeed C 3.0 CRUNCH compressed file---
1Ch DWORD 018A0001h
20h WORD 1565h
---PKARCK 3.5 self-extracting archive---
1Ch DWORD 00020001h
20h WORD 0700h
---BSA (Soviet archiver) self-extracting archive---
1Ch WORD 000Fh
1Eh BYTE A7h
---LARC self-extracting archive---
1Ch 4 BYTEs ???
20h 11 BYTEs "SFX by LARC "
---LH self-extracting archive---
1Ch 8 BYTEs ???
24h 8 BYTEs "LH's SFX "
---RAR self-extracting archive---
1Ch 4 BYTEs signature "RSFX"
---other linkers---
1Ch var optional information
---
N N DWORDs relocation items
Notes: if word at offset 02h is 4, it should be treated as 00h, since pre-1.10
versions of the MS linker set it that way
if both minimum and maximum allocation (offset 0Ah/0Ch) are zero, the
program is loaded as high in memory as possible (DOS only checks
the maximum allocation, however)
the maximum allocation is set to FFFFh by default
additional data may be contained in the file beyond the end of the
load image described by the .EXE header; this data may be overlays,
the actual executable for newer-format executables, or debugging
information (see #1286,#1310)
SeeAlso: #1282
Format of ROM Module Header:
Offset Size Description (Table 1281)
00h 2 BYTEs ROM signature 55h, AAh
02h BYTE size of ROM in 512-byte blocks
03h 3 BYTEs POST initialization entry point (near JMP instruction)
06h ROM Program Name List [array]
Offset Size Description
00h BYTE length of ROM program's name (00h if end of name list)
01h N BYTEs program name
N+1 3 BYTEs program entry point (near JMP instruction)
Format of new executable header:
Offset Size Description (Table 1282)
00h 2 BYTEs "NE" (4Eh 45h) signature
02h 2 BYTEs linker version (major, then minor)
04h WORD offset from start of this header to entry table (see #1289)
06h WORD length of entry table in bytes
08h DWORD file load CRC (0 in Borland's TPW)
0Ch BYTE program flags (see #1283)
0Dh BYTE application flags (see #1284)
0Eh WORD auto data segment index
10h WORD initial local heap size
12h WORD initial stack size (added to data seg, 0000h if SS <> DS)
14h DWORD program entry point (CS:IP), "CS" is index into segment table
18h DWORD initial stack pointer (SS:SP), "SS" is segment index
if SS=automatic data segment and SP=0000h, the stack pointer is
set to the top of the automatic data segment, just below the
local heap
1Ch WORD segment count
1Eh WORD module reference count
20h WORD length of nonresident names table in bytes
22h WORD offset from start of this header to segment table (see #1287)
24h WORD offset from start of this header to resource table
26h WORD offset from start of this header to resident names table
28h WORD offset from start of this header to module reference table
2Ah WORD offset from start of this header to imported names table
(array of counted strings, terminated with a string of length
00h)
2Ch DWORD offset from start of file to nonresident names table
30h WORD count of moveable entry point listed in entry table
32h WORD file alignment size shift count
0 is equivalent to 9 (default 512-byte pages)
34h WORD number of resource table entries
36h BYTE target operating system
00h unknown
01h OS/2
02h Windows
03h European MS-DOS 4.x
04h Windows 386
05h BOSS (Borland Operating System Services)
81h PharLap 286|DOS-Extender, OS/2
82h PharLap 286|DOS-Extender, Windows
37h BYTE other EXE flags (see #1285)
38h WORD offset to return thunks or start of gangload area
3Ah WORD offset to segment reference thunks or length of gangload area
3Ch WORD minimum code swap area size
3Eh 2 BYTEs expected Windows version (minor version first)
Note: this header is documented in detail in the Windows 3.1 SDK Programmer's
Reference, Vol 4.
SeeAlso: #1280
Bitfields for new executable program flags:
Bit(s) Description (Table 1283)
0-1 DGROUP type
0 = none
1 = single shared
2 = multiple (unshared)
3 = (null)
2 global initialization
3 protected mode only
4 8086 instructions
5 80286 instructions
6 80386 instructions
7 80x87 instructions
Bitfields for new executable application flags:
Bit(s) Description (Table 1284)
0-2 application type
001 full screen (not aware of Windows/P.M. API)
010 compatible with Windows/P.M. API
011 uses Windows/P.M. API
3 is a Family Application (OS/2)
5 0=executable, 1=errors in image
6 non-conforming program (valid stack is not maintained)
7 DLL or driver rather than application
(SS:SP info invalid, CS:IP points at FAR init routine called with
AX=module handle which returns AX=0000h on failure, AX nonzero on
successful initialization)
Bitfields for other new .EXE flags:
Bit(s) Description (Table 1285)
0 supports long filenames
1 2.X protected mode
2 2.X proportional font
3 gangload area
Format of Codeview trailer (at end of executable):
Offset Size Description (Table 1286)
00h WORD signature 4E42h ('NB')
02h WORD Microsoft debug info version number
04h DWORD Codeview header offset
SeeAlso: #1310
Format of new executable segment table record:
Offset Size Description (Table 1287)
00h WORD offset in file (shift left by alignment shift to get byte offs)
02h WORD length of image in file (0000h = 64K)
04h WORD segment attributes (see #1288)
06h WORD number of bytes to allocate for segment (0000h = 64K)
Note: the first segment table entry is entry number 1
SeeAlso: #1290
Bitfields for segment attributes:
Bit(s) Description (Table 1288)
0 data segment rather than code segment
1 unused???
2 real mode
3 iterated
4 movable
5 sharable
6 preloaded rather than demand-loaded
7 execute-only (code) or read-only (data)
8 relocations (directly following code for this segment)
9 debug info present
10,11 80286 DPL bits
12 discardable
13-15 discard priority
Format of new executable entry table item (list):
Offset Size Description (Table 1289)
00h BYTE number of entry points (00h if end of entry table list)
01h BYTE segment number (00h if end of entry table list)
02h 3N BYTEs entry records
Offset Size Description
00h BYTE flags
bit 0: exported
bit 1: single data
bits 2-7: unused???
01h WORD offset within segment
Format of new executable relocation data (immediately follows segment image):
Offset Size Description (Table 1290)
00h WORD number of relocation items
02h 8N BYTEs relocation items
Offset Size Description
00h BYTE relocation type
00h LOBYTE
02h BASE
03h PTR
05h OFFS
0Bh PTR48
0Dh OFFS32
01h BYTE flags
bit 2: additive
02h WORD offset within segment
04h WORD target address segment
06h WORD target address offset
SeeAlso: #1287,#1291
Format of new executable resource data:
Offset Size Description (Table 1291)
00h WORD alignment shift count for resource data
02h N RECORDs resources
Format of resource record:
Offset Size Description
00h WORD type ID
0000h if end of resource records
>= 8000h if integer type
else offset from start of resource table to type string
02h WORD number of resources of this type
04h DWORD reserved for runtime use
08h N Resources (see #1292)
Note: resource type and name strings are stored immediately following the
resource table, and are not null-terminated
SeeAlso: #1292
Format of new executable resource entry:
Offset Size Description (Table 1292)
00h WORD offset in alignment units from start of file to contents of
the resource data
02h WORD length of resource image in bytes
04h WORD flags
bit 4: moveable
bit 5: shareable
bit 6: preloaded
06h WORD resource ID
>= 8000h if integer resource
else offset from start of resource table to resource string
08h DWORD reserved for runtime use
Notes: resource type and name strings are stored immediately following the
resource table, and are not null-terminated
strings are counted strings, with a string of length 0 indicating the
end of the resource table
SeeAlso: #1291,#1293
Format of new executable module reference table [one bundle of entries]:
Offset Size Description (Table 1293)
00h BYTE number of records in this bundle (00h if end of table)
01h BYTE segment indicator
00h unused
FFh movable segment, segment number is in entry
else segment number of fixed segment
02h N RECORDs
Format of segment record
Offset Size Description
00h BYTE flags
bit 0: entry is exported
bit 1: entry uses global (shared) data
bits 7-3: number of parameter words
---fixed segment---
01h WORD offset
---moveable segment---
01h 2 BYTEs INT 3F instruction (CDh 3Fh)
03h BYTE segment number
05h WORD offset
Note: table entries are numbered starting from 1
SeeAlso: #1294
Format of new executable resident/nonresident name table entry:
Offset Size Description (Table 1294)
00h BYTE length of string (00h if end of table)
01h N BYTEs ASCII text of string
N+1 WORD ordinal number (index into entry table)
Notes: the first string in the resident name table is the module name; the
first entry in the nonresident name table is the module description
the strings are case-sensitive; if the executable was linked with
/IGNORECASE, all strings are in uppercase
SeeAlso: #1293
Format of Linear Executable (enhanced mode executable) header:
Offset Size Description (Table 1295)
00h 2 BYTEs "LE" (4Ch 45h) signature (Windows)
"LX" (4Ch 58h) signature (OS/2)
02h BYTE byte order (00h = little-endian, nonzero = big-endian)
03h BYTE word order (00h = little-endian, nonzero = big-endian)
04h DWORD executable format level
08h WORD CPU type (see also INT 15/AH=C9h)
01h Intel 80286 or upwardly compatible
02h Intel 80386 or upwardly compatible
03h Intel 80486 or upwardly compatible
04h Intel Pentium (80586) or upwardly compatible
20h Intel i860 (N10) or compatible
21h Intel "N11" or compatible
40h MIPS Mark I (R2000, R3000) or compatible
41h MIPS Mark II (R6000) or compatible
42h MIPS Mark III (R4000) or compatible
0Ah WORD target operating system
01h OS/2
02h Windows
03h European DOS 4.0
04h Windows 386
0Ch DWORD module version
10h DWORD module type (see #1296)
14h DWORD number of memory pages
18h Initial CS:EIP
DWORD object number
DWORD offset
20h Initial SS:ESP
DWORD object number
DWORD offset
28h DWORD memory page size
2Ch DWORD (Windows LE) bytes on last page
(OS/2 LX) page offset shift count
30h DWORD fixup section size
34h DWORD fixup section checksum
38h DWORD loader section size
3Ch DWORD loader section checksum
40h DWORD offset of object table (see #1297)
44h DWORD object table entries
48h DWORD object page map table offset (see #1299)
4Ch DWORD object iterate data map offset
50h DWORD resource table offset
54h DWORD resource table entries
58h DWORD resident names table offset (see #1300)
5Ch DWORD entry table offset (see #1301,#1302)
60h DWORD module directives table offset
64h DWORD Module Directives entries
68h DWORD Fixup page table offset
6Ch DWORD Fixup record table offset (see #1304)
70h DWORD imported modules name table offset
74h DWORD imported modules count
78h DWORD imported procedures name table offset
7Ch DWORD per-page checksum table offset
80h DWORD data pages offset
84h DWORD preload page count
88h DWORD non-resident names table offset
8Ch DWORD non-resident names table length
90h DWORD non-resident names checksum
94h DWORD automatic data object
98h DWORD debug information offset
9Ch DWORD debug information length
A0h DWORD preload instance pages number
A4h DWORD demand instance pages number
A8h DWORD extra heap allocation
ACh 12 BYTEs reserved
B8h DWORD offset of VERSIONINFO resource (MS-Windows VxD only)
BCh DWORD pointer to ??? (dynamically-loadable VxDs only???)
C0h WORD device ID (MS-Windows VxD only)
C2h WORD DDK version (MS-Windows VxD only)
Note: used by EMM386.EXE, QEMM, and Windows 3.0 Enhanced Mode drivers
Bitfields for Linear Executable module type:
Bit(s) Description (Table 1296)
2 initialization (only for DLLs) 0 = global, 1 = per-process
4 no internal fixups in executable image
5 no external fixups in executable image
8-10 API compatibility
0 = unknown
1 = incompatible with PM windowing \
2 = compatible with PM windowing > (only for
3 = uses PM windowing API / programs)
13 module not loadable (only for programs)
15-17 module type
000 program
001 library (DLL)
011 protected memory library module
100 physical device driver
110 virtual device driver
30 per-process library termination
(requires valid CS:EIP, can't be set for .EXE)
Format of object table entry:
Offset Size Description (Table 1297)
00h DWORD virtual size in bytes
04h DWORD relocation base address
08h DWORD object flags (see #1298)
0Ch DWORD page map index
10h DWORD page map entries (see #1299)
14h 4 BYTEs reserved??? (apparently always zeros)
Bitfields for object flags:
Bit(s) Description (Table 1298)
0 readable
1 writable
2 executable
3 resource
4 discardable
5 shared
6 preloaded
7 invalid
8-9 type
00 normal
01 zero-filled
10 resident
11 resident and contiguous
10 resident and long-lockable
11 reserved
12 16:16 alias required
13 "BIG" (Huge: 32-bit)
14 conforming
15 "OBJECT_I/O_PRIVILEGE_LEVEL"
16-31 reserved
Format of object page map table entry:
Offset Size Description (Table 1299)
00h BYTE ??? (usually 00h)
01h WORD (big-endian) index to fixup table
0000h if no relocation info
03h BYTE type (00h hard copy in file, 03h some relocation needed)
Format of resident names table entry:
Offset Size Description (Table 1300)
00h BYTE length of name
01h N BYTEs name
N+1 3 BYTEs ???
Format of LE linear executable entry table:
Offset Size Description (Table 1301)
00h BYTE number of entries in table
01h 10 BYTEs per entry
Offset Size Description
00h BYTE bit flags
bit 0: non-empty bundle
bit 1: 32-bit entry
01h WORD object number
03h BYTE entry type flags
bit 0: exported
bit 1: uses single data rather than instance
bit 2: reserved
bits 3-7: number of stack parameters
04h DWORD offset of entry point
08h 2 BYTEs ???
Note: empty bundles (bit flags at 00h = 00h) are used to skip unused indices,
and do not contain the remaining nine bytes
Format of LX linear executable entry table [array]:
Offset Size Description (Table 1302)
00h BYTE number of bundles following (00h = end of entry table)
01h BYTE bundle type
00h empty
01h 16-bit entry
02h 286 callgate entry
03h 32-bit entry
04h forwarder entry
bit 7 set if additional parameter typing information is present
---bundle type 00h---
no additional fields
---bundle type 01h---
02h WORD object number
04h BYTE entry flags
bit 0: exported
bits 7-3: number of stack parameters
05h WORD offset of entry point in object (shifted by page size shift)
---bundle type 02h---
02h WORD object number
04h BYTE entry flags
bit 0: exported
bits 7-3: number of stack parameters
05h WORD offset of entry point in object
07h WORD reserved for callgate selector (used by loader)
---bundle type 03h---
02h WORD object number
04h BYTE entry flags
bit 0: exported
bits 7-3: number of stack parameters
05h DWORD offset of entry point in object
---bundle type 04h---
02h WORD reserved
04h BYTE forwarder flags
bit 0: import by ordinal
bits 7-1 reserved
05h WORD module ordinal
(forwarder's index into Import Module Name table)
07h DWORD procedure name offset or import ordinal number
Note: all fields after the first two bytes are repeated N times
Bitfields for linear executable fixup type:
Bit(s) Description (Table 1303)
7 ordinal is BYTE rather than WORD
6 16-rather than 8-object number/module ordinal
5 addition with DWORD rather than WORD
4 relocation info has size with new two bytes at end
3 reserved (0)
2 set if add to destination, clear to replace destination
1-0 type
00 internal fixup
01 external fixup, imported by ordinal
10 external fixup, imported by name
11 internal fixup via entry table
Format of linear executable fixup record:
Offset Size Description (Table 1304)
00h BYTE type
bits 7-4: modifier (0001 single, 0011 multiple)
bits 3-0: type
0000 byte offset
0010 word segment
0011 16-bit far pointer (DWORD)
0101 16-bit offset
0110 32-bit far pointer (PWORD)
0111 32-bit offset
1000 near call or jump, WORD/DWORD based on seg attrib
01h BYTE linear executable fixup type (see #1303)
---if single type---
02h WORD offset within page
04h relocation information
---internal fixup---
BYTE object number
---external,ordinal---
BYTE one-based module number in Import Module table
BYTE/WORD ordinal number
WORD/DWORD value to add (only present if modifier bit 4 set)
---external,name---
BYTE one-based module number in Import Module table
WORD offset in Import Procedure names
WORD/DWORD value to add (only present if modifier bit 4 set)
---if multiple type---
02h BYTE number of items
03h var relocation info as for "single" type (above)
N WORDs offsets of items to relocate
Format of old Phar Lap .EXP file header:
Offset Size Description (Table 1305)
00h 2 BYTEs "MP" (4Dh 50h) signature
02h WORD remainder of image size / page size (page size = 512h)
04h WORD size of image in pages
06h WORD number of relocation items
08h WORD header size in paragraphs
0Ah WORD minimum number of extra 4K pages to be allocated at the end
of program, when it is loaded
0Ch WORD maximum number of extra 4K pages to be allocated at the end
of program, when it is loaded
0Eh DWORD initial ESP
12h WORD word checksum of file
14h DWORD initial EIP
18h WORD offset of first relocation item
1Ah WORD overlay number
1Ch WORD ??? (wants to be 1)
SeeAlso: #1306
Format of new Phar Lap .EXP file header:
Offset Size Description (Table 1306)
00h 2 BYTEs signature ("P2" for 286 .EXP executable, "P3" for 386 .EXP)
02h WORD level (01h flat-model file, 02h multisegmented file)
04h WORD header size
06h DWORD file size in bytes
0Ah WORD checksum
0Ch DWORD offset of run-time parameters within file (see #1308)
10h DWORD size of run-time parameters in bytes
14h DWORD offset of relocation table within file
18h DWORD size of relocation table in bytes
1Ch DWORD offset of segment information table within file (see #1307)
20h DWORD size of segment information table in bytes
24h WORD size of segment information table entry in bytes
26h DWORD offset of load image within file
2Ah DWORD size of load image on disk
2Eh DWORD offset of symbol table within file or 00000000h
32h DWORD size of symbol table in bytes
36h DWORD offset of GDT within load image
3Ah DWORD size of GDT in bytes
3Eh DWORD offset of LDT within load image
42h DWORD size of LDT in bytes
46h DWORD offset of IDT within load image
4Ah DWORD size of IDT in bytes
4Eh DWORD offset of TSS within load image
52h DWORD size of TSS in bytes
56h DWORD minimum number of extra bytes to be allocated at end of program
(level 1 executables only)
5Ah DWORD maximum number of extra bytes to be allocated at end of program
(level 1 executables only)
5Eh DWORD base load offset (level 1 executables only)
62h DWORD initial ESP
66h WORD initial SS
68h DWORD initial EIP
6Ch WORD initial CS
6Eh WORD initial LDT
70h WORD initial TSS
72h WORD flags
bit 0: load image is packed
bit 1: 32-bit checksum is present
bits 4-2: type of relocation table
74h DWORD memory requirements for load image
78h DWORD 32-bit checksum (optional)
7Ch DWORD size of stack segment in bytes
80h 256 BYTEs reserved (0)
SeeAlso: #1305,#1309
Format of Phar Lap segment information table entry:
Offset Size Description (Table 1307)
00h WORD selector number
02h WORD flags
04h DWORD base offset of selector
08h DWORD minimum number of extra bytes to be allocated to the segment
Format of 386|DOS-Extender run-time parameters:
Offset Size Description (Table 1308)
00h 2 BYTEs signature "DX" (44h 58h)
02h WORD minimum number of real-mode params to leave free at run time
04h WORD maximum number of real-mode params to leave free at run time
06h WORD minimum interrupt buffer size in KB
08h WORD maximum interrupt buffer size in KB
0Ah WORD number of interrupt stacks
0Ch WORD size in KB of each interrupt stack
0Eh DWORD offset of byte past end of real-mode code and data
12h WORD size in KB of call buffers
14h WORD flags
bit 0: file is virtual memory manager
bit 1: file is a debugger
16h WORD unprivileged flag (if nonzero, executes at ring 1, 2, or 3)
18h 104 BYTEs reserved (0)
Format of Phar Lap repeat block header:
Offset Size Description (Table 1309)
00h WORD byte count
02h BYTE repeat string length
Format of Borland debugging information header (following load image):
Offset Size Description (Table 1310)
00h WORD signature 52FBh
02h WORD version ID
04h DWORD size of name pool in bytes
08h WORD number of names in name pool
0Ah WORD number of type entries
0Ch WORD number of structure members
0Eh WORD number of symbols
10h WORD number of global symbols
12h WORD number of modules
14h WORD number of locals (optional)
16h WORD number of scopes in table
18h WORD number of line-number entries
1Ah WORD number of include files
1Ch WORD number of segment records
1Eh WORD number of segment/file correlations
20h DWORD size of load image after removing uninitialized data and debug
information
24h DWORD debugger hook; pointer into debugged program whose meaning
depends on program flags
28h BYTE program flags
bit 0: case-sensitive link
bit 1: pascal overlay program
29h WORD no longer used
2Bh WORD size of data pool in bytes
2Dh BYTE padding
2Eh WORD size of following header extension (currently 00h, 10h, or 20h)
30h WORD number of classes
32h WORD number of parents
34h WORD number of global classes (currently unused)
36h WORD number of overloads (currently unused)
38h WORD number of scope classes
3Ah WORD number of module classes
3Ch WORD number of coverage offsets
3Eh DWORD offset relative to symbol base of name pool
42h WORD number of browser information records
44h WORD number of optimized symbol records
46h WORD debugging flags
48h 8 BYTEs padding
Note: additional information on the Borland debugging info may be found in
Borland's Open Architecture Handbook
SeeAlso: #1286
--------U-214B-------------------------------
INT 21 - ELRES v1.0 only - INSTALLATION CHECK
AH = 4Bh
DS:DX = 0000h:0000h
Return: ES:BX -> ELRES history structure (see #1069 at AH=2Bh/CX=454Ch)
DX = DABEh (signature, DAve BEnnett)
Program: ELRES is an MS-DOS return code (errorlevel) recorder by David H.
Bennett
SeeAlso: AH=2Bh/CX=454Ch
--------v-214B04-----------------------------
INT 21 - VIRUS - "MG", "699"/"Thirteen Minutes" - INSTALLATION CHECK
AX = 4B04h
Return: CF clear if "MG" resident
AX = 044Bh if "699"/"Thirteen Minutes" resident
SeeAlso: AX=4243h,AH=4Ah/BX=FFFFh,AX=4B21h
--------D-214B05-----------------------------
INT 21 - DOS 5+ - SET EXECUTION STATE
AX = 4B05h
DS:DX -> execution state structure (see #1311)
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
Note: used by programs which intercept AX=4B00h to prepare new programs for
execution (including setting the DOS version number). No DOS, BIOS
or other software interrupt may be called after return from this call
before commencement of the child process. If DOS is running in the
HMA, A20 is turned off on return from this call.
SeeAlso: AH=4Bh
Format of execution state structure:
Offset Size Description (Table 1311)
00h WORD reserved (00h)
02h WORD type flags
bit 0: program is an .EXE
bit 1: program is an overlay
04h DWORD pointer to ASCIZ name of program file
08h WORD PSP segment of new program
0Ah DWORD starting CS:IP of new program
0Eh DWORD program size including PSP
----------214B18DX0010-----------------------
INT 21 U - FBOOT v2.13 - PERFORM FAST BOOTSTRAP
AX = 4B18h
DX = 0010h
BX = disk selector
0000h boot from floppy
0080h boot from hard disk
Return: never if FastBoot installed
Program: CyberWare FastBoot allows fast warm boots by skipping CMOS
checking, ROM scan, RAM & peripheral components test
Note: the only installation check is a search for a character device
driver called FBOOT$$$
--------v-214B20-----------------------------
INT 21 - VIRUS - "Holocaust"/"Telefonica" - ???
AX = 4B20h
SeeAlso: AX=4B04h,AX=4B21h
--------v-214B21-----------------------------
INT 21 C - VIRUS - "Holocaust"/"Telefonica" - ???
AX = 4B21h
Note: called at completion of virus installation
SeeAlso: AX=4B04h,AX=4B20h,AX=4B25h
--------v-214B25-----------------------------
INT 21 - VIRUS - "1063"/"Mono" - INSTALLATION CHECK
AX = 4B25h
Return: DI = 1234h if resident
SeeAlso: AX=4B21h,AX=4B40h
--------v-214B40-----------------------------
INT 21 - VIRUS - "Plastique"/"AntiCad" - INSTALLATION CHECK
AX = 4B40h
Return: AX = 5678h if resident
SeeAlso: AX=4B25h,AX=4B41h,AX=4B4Ah
--------v-214B41-----------------------------
INT 21 - VIRUS - "Plastique"/"AntiCad" - ???
AX = 4B41h
???
Return: ???
SeeAlso: AX=4B40h
--------v-214B4A-----------------------------
INT 21 - VIRUS - "Jabberwocky" - INSTALLATION CHECK
AX = 4B4Ah
Return: AL = 57h if resident
SeeAlso: AX=4B40h,AX=4B4Bh
--------v-214B4B-----------------------------
INT 21 - VIRUS - "Horse-2" - INSTALLATION CHECK
AX = 4B4Bh
Return: CF clear if resident
SeeAlso: AX=4B4Ah,AX=4B4Dh
--------v-214B4D-----------------------------
INT 21 - VIRUS - "Murphy-2", "Patricia"/"Smack" - INSTALLATION CHECK
AX = 4B4Dh
Return: CF clear if resident
SeeAlso: AX=4B4Ah,AX=4B50h
--------v-214B50-----------------------------
INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - INSTALLATION CHECK
AX = 4B50h
Return: AX = 1234h if resident
SeeAlso: AX=4B4Dh,AX=4B53h,AX=4B60h
--------v-214B53-----------------------------
INT 21 - VIRUS - "Horse" - INSTALLATION CHECK
AX = 4B53h
Return: CF clear if resident
SeeAlso: AX=4B50h,AX=4B53h/BX=2121h,AX=4B55h
--------v-214B53BX2121-----------------------
INT 21 - VIRUS - "One Half" - INSTALLATION CHECK
AX = 4B53h
BX = 2121h
CX = 1212h
DX = 0236h
Return: AX = 454Bh if installed
SeeAlso: AX=4B50h,AX=4B53h,AX=4B55h
--------v-214B55-----------------------------
INT 21 - VIRUS - "Sparse" - INSTALLATION CHECK
AX = 4B55h
Return: AX = 1231h if resident
SeeAlso: AX=4B53h,AX=4B59h
--------v-214B59-----------------------------
INT 21 - VIRUS - "Murphy-1", "Murphy-4" - INSTALLATION CHECK
AX = 4B59h
Return: CF clear if resident
SeeAlso: AX=4B50h,AX=4B5Eh
--------v-214B5E-----------------------------
INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
AX = 4B5Eh
Return: CF clear if resident
SeeAlso: AX=4B59h,AX=4B87h
--------v-214B60-----------------------------
INT 21 - VIRUS - "Plastique-2576"/"AntiCad-2576" - ???
AX = 4B60h
???
Return: ???
SeeAlso: AX=4B50h
--------O-214B80-----------------------------
INT 21 - DR-DOS v3.41 - RUN ALREADY-LOADED KERNEL FILE
AX = 4B80h
DS:DX -> ASCIZ name of program to EXEC
ES = segment of PSP for kernel file
Return: only if call failed
Note: DR-DOS uses this call after an AX=4B01h to load the kernel file into
memory and patching the program's parent-PSP field to point at itself
SeeAlso: AH=4Bh"EXEC"
--------v-214B87-----------------------------
INT 21 - VIRUS - "Shirley" - INSTALLATION CHECK
AX = 4B87h
Return: AX = 6663h if resident
SeeAlso: AX=4B5Eh,AX=4B95h
--------v-214B95-----------------------------
INT 21 - VIRUS - "Zherkov-1882" - INSTALLATION CHECK
AX = 4B95h
Return: AX = 1973h if resident
SeeAlso: AX=4B87h,AX=4BA7h
--------v-214BA7-----------------------------
INT 21 - VIRUS - "1876"/"Dash-em" - INSTALLATION CHECK
AX = 4BA7h
Return: AX = B459h if resident
SeeAlso: AX=4B95h,AX=4BAAh
--------v-214BAA-----------------------------
INT 21 - VIRUS - "Nomenklatura" - INSTALLATION CHECK
AX = 4BAAh
Return: CF clear if resident
SeeAlso: AX=4BA7h,AX=4BAFh
--------v-214BAF-----------------------------
INT 21 - VIRUS - "948"/"Screenplus1", "Magnitogorsk" - INSTALLATION CHECK
AX = 4BAFh
Return: AL = AFh if "Magnitogorsk" resident
AL = FAh if "948"/"Screenplus1" resident
SeeAlso: AX=4BAAh,AX=4BB1h"VIRUS"
--------v-214BB1-----------------------------
INT 21 - VIRUS - "UZZY" -INSTALLATION CHECK
AX = 4BB1h
Return: CL = 04h if resident
SeeAlso: AX=4BAFh"VIRUS",AX=4BDDh"VIRUS"
--------v-214BDD-----------------------------
INT 21 - VIRUS - "Lozinsky"/"Zherkov" - INSTALLATION CHECK
AX = 4BDDh
Return: AX = 1234h
SeeAlso: AX=4BB1h"VIRUS",AX=4BFEh
--------v-214BEE-----------------------------
INT 21 - F-DRIVER.SYS v1.14+ - GRAB INT 21
AX = 4BEEh
Return: AX = status
1234h grab was successful
2345h failed (INT 21 grabbed previously)
Program: F-DRIVER.SYS is part of the shareware F-PROT virus/trojan protection
package by Fridrik Skulason
Note: when called the first time, this function moves the INT 21 monitoring
code from its original location in the INT 21 chain to be the first
thing called by INT 21. This is the mechanism used by F-NET.
SeeAlso: INT 2F/AX=4653h/CX=0002h,INT 2F/AX=4653h/CX=0007h
--------k-214BF0-----------------------------
INT 21 - DIET v1.10+ (Overlay Mode) - INSTALLATION CHECK
AX = 4BF0h
Return: CF clear if installed
AX = 899Dh
Program: DIET is an executable-compression program by Teddy Matsumoto
SeeAlso: AX=37D0h,AX=4BF1h
--------k-214BF1-----------------------------
INT 21 - DIET v1.10+ (Overlay Mode) - EXPAND PROGRAM???
AX = 4BF1h
Return: ???
SeeAlso: AX=37D0h,AX=4BF0h
--------v-214BF1-----------------------------
INT 21 - VIRUS - "Jerusalem 2" - INSTALLATION CHECK
AX = 4BF1h
Return: AX = 1FB4h if resident
SeeAlso: AH=3Fh/BX=FEB0h"VIRUS",AX=4BDDh"VIRUS",AX=4BFEh"VIRUS"
--------v-214BFE-----------------------------
INT 21 - VIRUS - "Hitchcock", "Dark Avenger-1028", "1193" - INSTALLATION CHECK
AX = 4BFEh
Return: AX = 1234h if "Hitchcock" or "Storm" resident
AX = ABCDh if "1193"/"Copyright" resident
DI = 55BBh if "Dark Avenger-1028" resident
SeeAlso: AX=4BDDh,AX=4BF1h"VIRUS",AX=4BFFh"Justice"
--------v-214BFF-----------------------------
INT 21 - VIRUS - "USSR-707", "Justice", "Europe 92" - INSTALLATION CHECK
AX = 4BFFh
Return: BL = FFh if "USSR-707" resident
DI = 55AAh if "Justice" resident
AX = 1234h if "Hitchcock.1238" resident
CF clear if "Europe 92" resident
SeeAlso: AX=4BFEh,AX=4BFFh"Cascade",AX=5252h
--------v-214BFFSI0000-----------------------
INT 21 - VIRUS - "Cascade" - INSTALLATION CHECK
AX = 4BFFh
SI = 0000h
DI = 0000h
Return: DI = 55AAh if installed
SeeAlso: AX=4BFFh"Justice",AX=5252h
--------D-214C-------------------------------
INT 21 - DOS 2+ - "EXIT" - TERMINATE WITH RETURN CODE
AH = 4Ch
AL = return code
Return: never returns
Notes: unless the process is its own parent
(see #1066 [offset 16h] at AH=26h), all open files are closed and
all memory belonging to the process is freed
all network file locks should be removed before calling this function
SeeAlso: AH=00h,AH=26h,AH=4Bh,AH=4Dh,INT 15/AH=12h/BH=02h,INT 20,INT 22
SeeAlso: INT 60/DI=0601h
--------m-214C57-----------------------------
INT 21 - Headroom - ???
AX = 4C57h
DS:DX -> target address
Note: jumps to target address instead of terminating program
SeeAlso: AX=5758h
--------D-214D-------------------------------
INT 21 - DOS 2+ - GET RETURN CODE (ERRORLEVEL)
AH = 4Dh
Return: AH = termination type
00h normal (INT 20,INT 21/AH=00h, or INT 21/AH=4Ch)
01h control-C abort
02h critical error abort
03h terminate and stay resident (INT 21/AH=31h or INT 27)
AL = return code
Notes: the word in which DOS stores the return code is cleared after being
read by this function, so the return code can only be retrieved once
COMMAND.COM stores the return code of the last external command it
executed as ERRORLEVEL
this call should not be used if the child was started with AX=4B04h;
use AH=8Ah instead
the following sequence will close a Virtual DOS Machine under OS/2 2.0
through OS/2 Merlin (but may change in the future):
MOV AH,4Dh
INT 21h
HLT
DB 02h,0FDh
This sequence is the only way to close a specific VDM which was
booted from floppy or a disk image.
SeeAlso: AH=4Bh,AH=4Ch,AH=8Ah
--------D-214E-------------------------------
INT 21 - DOS 2+ - "FINDFIRST" - FIND FIRST MATCHING FILE
AH = 4Eh
AL = special flag for use by APPEND (refer to note below)
CX = file attribute mask (see #1107 at AX=4301h) (bits 0 and 5 ignored)
0088h (Novell DOS 7) find first deleted file
DS:DX -> ASCIZ file specification (may include path and wildcards)
Return: CF clear if successful
Disk Transfer Area filled with FindFirst data block (see #1312)
CF set on error
AX = error code (02h,03h,12h) (see #1366 at AH=59h/BX=0000h)
Notes: for search attributes other than 08h, all files with at MOST the
specified combination of hidden, system, and directory attributes
will be returned. Under DOS 2.x, searching for attribute 08h
(volume label) will also return normal files, while under DOS 3.0+
only the volume label (if any) will be returned.
this call also returns successfully if given the name of a character
device without wildcards. DOS 2.x returns attribute 00h, size 0,
and the current date and time. DOS 3.0+ returns attribute 40h and
the current date and time.
immediately after an INT 2F/AX=B711h (APPEND return found name), the
name at DS:DX will be overwritten; if AL=00h on entry, the actual
found pathname will be stored, otherwise, the actual found path
will be prepended to the original filespec without a path.
under LANtastic, this call may be used to obtain a list of a server's
shared resources by searching for "\\SERVER\*.*"; a list of printer
resources may be obtained by searching for "\\SERVER\@*.*"
under the FlashTek X-32 DOS extender, the filespec pointer is in DS:EDX
BUGS: under DOS 3.x and 4.x, the second and subsequent calls to this function
with a character device name (no wildcards) and search attributes
which include the volume-label bit (08h) will fail unless there is
an intervening DOS call which implicitly or explicity performs a
directory search without the volume-label bit. Such implicit
searches are performed by CREATE (AH=3Ch), OPEN (AH=3Dh), UNLINK
(AH=41h), and RENAME (AH=56h)
DR DOS 3.41 and 5.0 return the Directory attribute for the volume label
SeeAlso: AH=11h,AH=4Fh,AX=4301h,AX=714Eh,AX=71A1h,AX=F257h/SF=02h
SeeAlso: INT 2F/AX=111Bh,INT 2F/AX=B711h
Format of FindFirst data block:
Offset Size Description (Table 1312)
---PC-DOS 3.10, PC-DOS 4.01, MS-DOS 3.2/3.3/5.0---
00h BYTE drive letter (bits 0-6), remote if bit 7 set
01h 11 BYTEs search template
0Ch BYTE search attributes
---DOS 2.x (and some DOS 3.x???)---
00h BYTE search attributes
01h BYTE drive letter
02h 11 BYTEs search template
---WILDUNIX.COM---
00h 12 BYTEs 15-character wildcard search pattern and drive letter (packed)
0Ch BYTE search attributes
---DOS 2.x and most 3.x---
0Dh WORD entry count within directory
0Fh DWORD pointer to DTA???
13h WORD cluster number of start of parent directory
---PC-DOS 4.01, MS-DOS 3.2/3.3/5.0---
0Dh WORD entry count within directory
0Fh WORD cluster number of start of parent directory
11h 4 BYTEs reserved
---OS/2 MVDM---
00h WORD "OS2_BMP_handle"
02h WORD "OS2_LastEnt"
04h DWORD "OS2_Checksum"
08h BYTE "OS2_usi_flag"
09h DWORD used by DOS emulator for second pass for volume-label searches
0Dh WORD (ret) "DOS_LastEnt" entry count within directory
0Fh BYTE OS/2 Processed-FindFirst flag
00h FindFirst processed by DOS
42h FindFirst processed by OS/2
10h 5 BYTEs reserved for future use
---all versions, documented fields---
15h BYTE attribute of file found
16h WORD file time (see #1351 at AX=5700h)
18h WORD file date (see #1352 at AX=5700h)
1Ah DWORD file size
1Eh 13 BYTEs ASCIZ filename+extension
--------f-214E-------------------------------
INT 21 - WILDUNIX.COM internal - INSTALLATION CHECK
AH = 4Eh
DS:DX = 0000h:0000h
Return: AH = 99h if installed
Program: WILDUNIX.COM is a resident Unix-style wildcard expander by Steve
Hosgood and Terry Barnaby
--------D-214F-------------------------------
INT 21 - DOS 2+ - "FINDNEXT" - FIND NEXT MATCHING FILE
AH = 4Fh
Disk Transfer Area contains data block from previous FindFirst or
FindNext call
Return: CF clear if successful
Disk Transfer Area updated
CF set on error
AX = error code (12h) (see #1366 at AH=59h/BX=0000h)
Notes: under Novell DOS 7, if the FindFirst call (AH=4Eh) had CX=0088h, then
the next matching deleted file will be returned
since the entire state of a FindFirst/FindNext sequence is contained
in the data block in the DTA, other disk operations such as renaming,
moving, deleting, or creating files can cause inaccurate directory
searches, such as finding the same file twice
BUG: DR DOS 3.41 and 5.0 return the Directory attribute for the volume label
SeeAlso: AH=12h,AH=4Eh,AX=714Fh,AX=71A1h
--------D-2150-------------------------------
INT 21 - DOS 2+ internal - SET CURRENT PROCESS ID (SET PSP ADDRESS)
AH = 50h
BX = segment of PSP for new process
Notes: DOS uses the current PSP address to determine which processes own files
and memory; it corresponds to process identifiers used by other OSs
under DOS 2.x, this function cannot be invoked inside an INT 28h
handler without setting the Critical Error flag
under MS-DOS 3.0+ and DR DOS 3.41+, this function does not use any of
the DOS-internal stacks and may thus be called at any time, even
during another INT 21h call
some Microsoft applications such as Quick C 2.51 use segments of 0000h
and FFFFh and direct access to the SDA (see #1373 at AX=5D06h) to
test whether they are running under MS-DOS rather than a compatible
OS; although one should only call this function with valid PSP
addresses, any program hooking it should be prepared to handle
invalid addresses
this function is supported by the OS/2 compatibility box
this call was undocumented prior to the release of DOS 5.0
SeeAlso: AH=26h,AH=51h,AH=62h
--------v-2150FD-----------------------------
INT 21 - VIRUS - "Predator 2" - INSTALLATION CHECK
AX = 50FDh
Return: AX = FD50h if resident
SeeAlso: AX=4BFFh"VIRUS",AX=5454h"VIRUS"
--------D-2151-------------------------------
INT 21 - DOS 2+ internal - GET CURRENT PROCESS ID (GET PSP ADDRESS)
AH = 51h
Return: BX = segment of PSP for current process
Notes: DOS uses the current PSP address to determine which processes own files
and memory; it corresponds to process identifiers used by other OSs
under DOS 2.x, this function cannot be invoked inside an INT 28h
handler without setting the Critical Error flag
under DOS 3.0+, this function does not use any of the DOS-internal
stacks and may thus be called at any time, even during another
INT 21h call
supported by OS/2 compatibility box
identical to the documented AH=62h
this call was undocumented prior to the release of DOS 5.0
SeeAlso: AH=26h,AH=50h,AH=62h
--------D-2152-------------------------------
INT 21 U - DOS 2+ internal - "SYSVARS" - GET LIST OF LISTS
AH = 52h
Return: ES:BX -> DOS list of lists (see #1313)
Notes: partially supported by OS/2 v1.1 compatibility box (however, most
pointers are FFFFh:FFFFh, LASTDRIVE is FFh, and the NUL header "next"
pointer is FFFFh:FFFFh).
partially supported by the Windows NT DOS box; contains only a
rudimentary Current Directory Structure (see #1331)
on return, ES points at the DOS data segment (see also INT 2F/AX=1203h)
Quarterdeck's suggested check for the use of its DOSDATA.SYS or
DOS-UP.SYS is to test whether the list-of-lists segment is greater
than the segment of the first memory block; a better check for
DOS-UP.SYS is INT 21/AX=2B01h/CX=444Dh
because not all DOS workalikes support all fields in the List of Lists,
applications should ensure that pointers are neither 0000h:0000h
nor FFFFh:FFFFh before using them
Windows for Workgroups 3.11 network and Windows95 set the path to
the local drive and directory even for network drives; in that
case the UNC form \\SERVER\SHARE can be obtained with
INT 21/AX=5F02h or INT 21/AX=5F46h. LapLink RemoteAccess does the
same even for INT 21/AX=5F02h
Windows95 GUI no longer returns the true path for a SUBSTed drive,
but MS-DOS 7.00 does; use INT 21/AH=60h to obtain the true name
SeeAlso: INT 2F/AX=1203h
Format of List of Lists:
Offset Size Description (Table 1313)
-24 WORD (DOS 3.1+) contents of CX from INT 21/AX=5E01h
-22 WORD (DOS ???+) LRU counter for FCB caching
-20 WORD (DOS ???+) LRU counter for FCB opens
-18 DWORD (DOS ???+) address of OEM function handler (see INT 21/AH=F8h)
FFFFh:FFFFh if not installed or not available
-14 WORD (DOS ???+) offset in DOS CS of code to return from INT 21 call
-12 WORD (DOS 3.1+) sharing retry count (see AX=440Bh)
-10 WORD (DOS 3.1+) sharing retry delay (see AX=440Bh)
-8 DWORD (DOS 3.0+) pointer to current disk buffer
-4 WORD (DOS 3.0+) pointer in DOS data segment of unread CON input
when CON is read via a handle, DOS reads an entire line,
and returns the requested portion, buffering the rest
for the next read. 0000h indicates no unread input
-2 WORD segment of first memory control block (see #1314)
00h DWORD pointer to first Drive Parameter Block (see #1083 at AH=32h)
04h DWORD -> first System File Table (see #1325,#1326,#1327,#1328)
08h DWORD pointer to active CLOCK$ device's header (most recently loaded
driver with CLOCK bit set)
0Ch DWORD pointer to active CON device's header (most recently loaded
driver with STDIN bit set)
---DOS 2.x---
10h BYTE number of logical drives in system
11h WORD maximum bytes/block of any block device
13h DWORD pointer to first disk buffer (see #1335,#1336)
17h 18 BYTEs actual NUL device driver header (not a pointer!)
NUL is always the first device on DOS's linked list of device
drivers. (see #1332)
---DOS 3.0---
10h BYTE number of block devices
11h WORD maximum bytes/block of any block device
13h DWORD pointer to first disk buffer (see #1336,#1338)
17h DWORD pointer to array of current directory structures (see #1329)
1Bh BYTE value of LASTDRIVE command in CONFIG.SYS (default 5)
1Ch DWORD pointer to STRING= workspace area
20h WORD size of STRING area (the x in STRING=x from CONFIG.SYS)
22h DWORD pointer to FCB table
26h WORD the y in FCBS=x,y from CONFIG.SYS
28h 18 BYTEs actual NUL device driver header (not a pointer!)
NUL is always the first device on DOS's linked list of device
drivers. (see #1332)
---DOS 3.1-3.3---
10h WORD maximum bytes per sector of any block device
12h DWORD pointer to first disk buffer in buffer chain (see #1336)
16h DWORD pointer to array of current directory structures (see #1329)
1Ah DWORD pointer to system FCB tables (see #1326,#1327,#1328)
1Eh WORD number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
20h BYTE number of block devices installed
21h BYTE number of available drive letters (largest of 5, installed
block devices, and CONFIG.SYS LASTDRIVE=). Also size of
current directory structure array.
22h 18 BYTEs actual NUL device driver header (not a pointer!)
NUL is always the first device on DOS's linked list of device
drivers. (see #1332)
34h BYTE number of JOIN'ed drives
---DOS 4.x---
10h WORD maximum bytes per sector of any block device
12h DWORD pointer to disk buffer info record (see #1338,#1339)
Note: although the initialization code in IO.SYS uses this
pointer, MSDOS.SYS does not, instead using the hardcoded
address of the info record
16h DWORD pointer to array of current directory structures
(see #1329,#1330)
1Ah DWORD pointer to system FCB tables (see #1326,#1327,#1328)
1Eh WORD number of protected FCBs (the y in the CONFIG.SYS FCBS=x,y)
(always 00h for DOS 5.0)
20h BYTE number of block devices installed
21h BYTE number of available drive letters (largest of 5, installed
block devices, and CONFIG.SYS LASTDRIVE=). Also size of
current directory structure array.
22h 18 BYTEs actual NUL device driver header (not a pointer!)
NUL is always the first device on DOS's linked list of device
drivers. (see #1332)
34h BYTE number of JOIN'ed drives
35h WORD pointer within IBMDOS code segment to list of special program
names (see #1348)
(always 0000h for DOS 5.0)
37h DWORD pointer to FAR routine for resident IFS utility functions
(see #1344)
may be called by any IFS driver which does not wish to
service functions 20h or 24h-28h itself
3Bh DWORD pointer to chain of IFS (installable file system) drivers
3Fh WORD the x in BUFFERS x,y (rounded up to multiple of 30 if in EMS)
41h WORD number of lookahead buffers (the y in BUFFERS x,y)
43h BYTE boot drive (1=A:)
44h BYTE flag: 01h to use DWORD moves (80386+), 00h otherwise
45h WORD extended memory size in KB
---DOS 5.0-6.0---
10h 39 BYTEs as for DOS 4.x (above)
37h DWORD pointer to SETVER program list or 0000h:0000h
3Bh WORD (DOS=HIGH) offset in DOS CS of function to fix A20 control
when executing special .COM format
3Dh WORD PSP of most-recently EXECed program if DOS in HMA, 0000h if low
used for maintaining count of INT 21 calls which disable A20
on return
3Fh 8 BYTEs as for DOS 4.x (above)
---Windows NT DOS Box---
10h 6 BYTEs ???
16h DWORD pointer to array of current directory structures (see #1331)
1Ah 6 BYTEs ???
20h BYTE number of block devices installed
21h BYTE number of local drive letters (= installed block devices)
Also size of current directory structure array.
22h 18 BYTEs actual NUL device driver header (not a pointer!)
NUL is always the first device on DOS's linked list of device
drivers. (see #1332)
Format of DOS memory control block:
Offset Size Description (Table 1314)
00h BYTE block type: 5Ah if last block in chain, otherwise 4Dh
01h WORD PSP segment of owner or special flag value (see #1315)
03h WORD size of memory block in paragraphs
05h 3 BYTEs unused by MS-DOS
(386MAX) if locked-out block, region start/prev region end
---DOS 2.x,3.x---
08h 8 BYTEs unused
---DOS 4.0+ ---
08h 8 BYTEs ASCII program name if PSP memory block or DR DOS UMB,
else garbage
null-terminated if less than 8 characters
Notes: the next MCB is at segment (current + size + 1)
under DOS 3.1+, the first memory block is the DOS data segment,
containing installable drivers, buffers, etc. Under DOS 4.0+ it is
divided into subsegments, each with its own memory control block
(see #1319), the first of which is at offset 0000h.
for DOS 5+, blocks owned by DOS may have either "SC" or "SD" in bytes
08h and 09h. "SC" is system code or locked-out inter-UMB memory,
"SD" is system data, device drivers, etc.
Some versions of DR DOS use only seven characters of the program name,
placing a NUL in the eighth byte.
SeeAlso: #1316,#1318,#1319
(Table 1315)
Values for special flag PSP segments:
0000h free
0006h DR DOS XMS UMB
0007h DR DOS excluded upper memory ("hole")
0008h belongs to DOS
FFF7h 386MAX v6.01+ ???
FFFAh 386MAX UMB control block (see #1164 at AX=4402h"386MAX")
FFFDh 386MAX locked-out memory
FFFEh 386MAX UMB (normally immediately follows its control block)
FFFFh 386MAX v6.01+ device driver
Format of MS-DOS 5+ UMB control block:
Offset Size Description (Table 1316)
00h BYTE type: 5Ah if last block in chain, 4Dh otherwise
01h WORD first available paragraph in UMB if control block at start
of UMB, 000Ah if control block at end of UMB
03h WORD length in paragraphs of following UMB or locked-out region
05h 3 BYTEs unused
08h 8 BYTEs block type name: "UMB" if start block, "SM" if end block in UMB
SeeAlso: #1314,#1317
Format of MS-DOS 7.0 HMA memory control block:
Offset Size Description (Table 1317)
00h WORD signature "MS" (4Dh 53h)
02h WORD usage flag???
0000h free
else ???
04h WORD size of memory block in bytes (not counting MCB)
06h WORD offset of next memory block in HMA or 0000h
08h 8 BYTEs unused (0)
SeeAlso: #1314,#1316,#1318
Format of STARLITE (General Software's Embedded DOS) memory control block:
Offset Size Description (Table 1318)
00h BYTE block type: 5Ah if last block in chain, otherwise 4Dh
01h WORD PSP segment of owner, 0000h if free, 0008h if belongs to DOS
03h WORD size of memory block in paragraphs
05h BYTE unused
06h WORD segment address of next memory control block (0000h if last)
08h WORD segment address of previous memory control block or 0000h
0Ah 6 BYTEs reserved
Format of DOS 4.0+ data segment subsegment control blocks:
Offset Size Description (Table 1319)
00h BYTE subsegment type (blocks typically appear in this order)
"D" device driver
"E" device driver appendage
"I" IFS (Installable File System) driver
(MS-DOS 7) high-loaded drive data table array (see #2290)
"F" FILES= control block storage area (for FILES>5)
"X" FCBS= control block storage area, if present
"C" BUFFERS EMS workspace area (if BUFFERS /X option used)
"B" BUFFERS= storage area
"L" LASTDRIVE= current directory structure array storage area
"S" STACKS= code and data area, if present (see #1320,#1321)
"T" INSTALL= transient code
01h WORD paragraph of subsegment start (usually the next paragraph)
03h WORD size of subsegment in paragraphs
05h 3 BYTEs unused
08h 8 BYTEs for types "D" and "I", base name of file from which the driver
was loaded (unused for other types)
Format of data at start of STACKS code segment (if present):
Offset Size Description (Table 1320)
00h WORD ???
02h WORD number of stacks (the x in STACKS=x,y)
04h WORD size of stack control block array (should be 8*x)
06h WORD size of each stack (the y in STACKS=x,y)
08h DWORD pointer to STACKS data segment
0Ch WORD offset in STACKS data segment of stack control block array
0Eh WORD offset in STACKS data segment of last element of that array
10h WORD offset in STACKS data segment of the entry in that array for
the next stack to be allocated (initially same as value in
0Eh and works its way down in steps of 8 to the value in
0Ch as hardware interrupts pre-empt each other)
Note: the STACKS code segment data may, if present, be located as follows:
DOS 3.2: The code segment data is at a paragraph boundary fairly early
in the IBMBIO segment (seen at 0070:0190h)
DOS 3.3: The code segment is at a paragraph boundary in the DOS data
segment, which may be determined by inspecting the segment
pointers of the vectors for those of interrupts 02h, 08h-0Eh,
70h, 72-77h which have not been redirected by device drivers
or TSRs.
DOS 4.0+ Identified by sub-segment control block type "S" within the DOS
data segment.
SeeAlso: #1322,INT B4"STACKMAN"
Format of array elements in STACKS data segment:
Offset Size Description (Table 1321)
00h BYTE status: 00h=free, 01h=in use, 03h=corrupted by overflow of
higher stack.
01h BYTE not used
02h WORD previous SP
04h WORD previous SS
06h WORD ptr to word at top of stack (new value for SP). The word at the
top of the stack is preset to point back to this control
block.
Format of SHARE.EXE hooks (DOS 3.1-6.00):
Offset Size Description (Table 1322)
(offsets from first system file table--pointed at by ListOfLists+04h)
-3Ch DWORD pointer to FAR routine for ???
Note: not called by MS-DOS 3.3, set to 0000h:0000h by
SHARE 3.3+
-38h DWORD pointer to FAR routine called on opening file
on call, internal DOS location points at filename
(see #1373 at AX=5D06h)
Return: CF clear if successful
CF set on error
AX = DOS error code (24h)
(see #1366 at AH=59h/BX=0000h)
Note: SHARE directly accesses DOS-internal data to get name of
file just opened
-34h DWORD pointer to FAR routine called on closing file
ES:DI -> system file table
Note: does something to every Record Lock Record for file
-30h DWORD pointer to FAR routine to close all files for given computer
(called by AX=5D03h)
-2Ch DWORD pointer to FAR routine to close all files for given process
(called by AX=5D04h)
-28h DWORD pointer to FAR routine to close file by name
(called by AX=5D02h)
DS:SI -> DOS parameter list (see #1372 at AX=5D00h)
DPL's DS:DX -> name of file to close
Return: CF clear if successful
CF set on error
AX = DOS error code (03h)
(see #1366 at AH=59h/BX=0000h)
-24h DWORD pointer to FAR routine to lock region of file
call with BX = file handle
---DOS 3.x---
CX:DX = starting offset
SI:AX = size
---DOS 4.0+ ---
DS:DX -> lock range
DWORD start offset
DWORD size in bytes
Return: CF set on error
AL = DOS error code (21h) (see #1366 at AH=59h)
Note: not called if file is marked as remote
-20h DWORD pointer to FAR routine to unlock region of file
call with BX = file handle
---DOS 3.x---
CX:DX = starting offset
SI:AX = size
---DOS 4.0+ ---
DS:DX -> lock range
DWORD start offset
DWORD size in bytes
Return: CF set on error
AL = DOS error code (21h) (see #1366 at AH=59h)
Note: not called if file is marked as remote
-1Ch DWORD pointer to FAR routine to check if file region is locked
call with ES:DI -> system file table entry for file
CX = length of region from current position in file
Return: CF set if any portion of region locked
AX = 0021h
-18h DWORD pointer to FAR routine to get open file list entry
(called by AX=5D05h)
call with DS:SI -> DOS parameter list (see #1372 at AX=5D00h)
DPL's BX = index of sharing record
DPL's CX = index of SFT in SFT chain of sharing rec
Return: CF set on error or not loaded
AX = DOS error code (12h) (see #1366 at AH=59h)
CF clear if successful
ES:DI -> filename
CX = number of locks owned by specified SFT
BX = network machine number
DX destroyed
-14h DWORD pointer to FAR routine for updating FCB from SFT???
call with DS:SI -> unopened FCB
ES:DI -> system file table entry
Return: BL = C0h???
Note: copies following fields from SFT to FCB:
starting cluster of file 0Bh 1Ah
sharing record offset 33h 1Ch
file attribute 04h 1Eh
-10h DWORD pointer to FAR routine to get first cluster of FCB file ???
call with ES:DI -> system file table entry
DS:SI -> FCB
Return: CF set if SFT closed or sharing record offsets
mismatched
CF clear if successful
BX = starting cluster number from FCB
-0Ch DWORD pointer to FAR routine to close file if duplicate for process
DS:SI -> system file table
Return: AX = number of handle in JFT which already uses SFT
Note: called during open/create of a file
Note: if SFT was opened with inheritance enabled and sharing
mode 111, does something to all other SFTs owned by
same process which have the same file open mode and
sharing record
-08h DWORD pointer to FAR routine for closing file
Note: closes various handles referring to file most-recently
opened
-04h DWORD pointer to FAR routine to update directory info in related SFT
entries
call with ES:DI -> system file table entry for file (see #1327)
AX = subfunction (apply to each related SFT)
00h: update time stamp (offset 0Dh) and date
stamp (offset 0Fh)
01h: update file size (offset 11h) and starting
cluster (offset 0Bh). Sets last-accessed
cluster fields to start of file if file
never accessed
02h: as function 01h, but last-accessed fields
always changed
03h: do both functions 00h and 02h
Note: follows ptr at offset 2Bh in system file table entries
Note: NOP if opened with no-inherit or via FCB
Notes: most of the above hooks (except -04h, -14h, -18h, and -3Ch) assume
either that SS=DOS DS or SS=DS=DOS DS and directly access
DOS-internal data
sharing hooks are not supported by DR DOS 5-6; they appear to be
supported by Novell DOS 7, with a segment of 0000h indicating the
DOS data segment
SeeAlso: #1323,#1324
Format of sharing record:
Offset Size Description (Table 1323)
00h BYTE flag
00h free block
01h allocated block
FFh end marker
01h WORD size of block
03h BYTE checksum of pathname (including NUL)
if sum of ASCII values is N, checksum is (N/256 + N%256)
04h WORD offset in SHARE's DS of first Record Lock Record (see #1324)
06h DWORD pointer to start of system file table chain for file
0Ah WORD unique sequence number
0Ch var ASCIZ full pathname
Note: not supported by DR DOS SHARE 1.1 and 2.0; will reportedly be
supported by Novell DOS 7
SeeAlso: #1322,#1324
Format of SHARE.EXE Record Lock Record:
Offset Size Description (Table 1324)
00h WORD offset in SHARE's DS of next lock table in list or 0000h
02h DWORD offset in file of start of locked region
06h DWORD offset in file of end of locked region
0Ah DWORD pointer to System File Table entry for this file
0Eh WORD PSP segment of lock's owner
---DOS 5+ ---
10h WORD lock type: (00h lock all, 01h lock writes only)
SeeAlso: #1322,#1323,#1325,#1328
Format of DOS 2.x system file tables:
Offset Size Description (Table 1325)
00h DWORD pointer to next file table (offset FFFFh if last)
04h WORD number of files in this table
06h 28h bytes per file
Offset Size Description
00h BYTE number of file handles referring to this file
01h BYTE file open mode (see #1090 at AH=3Dh)
02h BYTE file attribute
03h BYTE drive (0 = character device, 1 = A, 2 = B, etc)
04h 11 BYTEs filename in FCB format (no path,no period,blank-padded)
0Fh WORD ???
11h WORD ???
13h DWORD file size???
17h WORD file date in packed format (see #1352 at AX=5700h)
19h WORD file time in packed format (see #1351 at AX=5700h)
1Bh BYTE device attribute (see #1110 at AX=4400h)
---character device---
1Ch DWORD pointer to device driver
---block device---
1Ch WORD starting cluster of file
1Eh WORD relative cluster in file of last cluster accessed
------
20h WORD absolute cluster number of current cluster
22h WORD ???
24h DWORD current file position???
SeeAlso: #1326,#1327,#1328
Format of DOS 3.0 system file tables and FCB tables:
Offset Size Description (Table 1326)
00h DWORD pointer to next file table (offset FFFFh if last)
04h WORD number of files in this table
06h 38h bytes per file
Offset Size Description
00h-1Eh as for DOS 3.1+ (see #1327)
1Fh WORD byte offset of directory entry within sector
21h 11 BYTEs filename in FCB format (no path/period, blank-padded)
2Ch DWORD (SHARE.EXE) pointer to previous SFT sharing same file
30h WORD (SHARE.EXE) network machine number which opened file
(Windows Enhanced mode DOSMGR uses the virtual machine
ID as the machine number; see INT 2F/AX=1683h)
32h WORD PSP segment of file's owner (first three entries for
AUX/CON/PRN contain segment of IO.SYS startup code)
34h WORD (SHARE.EXE) offset in SHARE code seg of share record
36h WORD ??? apparently always 0000h
SeeAlso: #1325,#1327,#1328
Format of DOS 3.1-3.3x, DR DOS 5.0-6.0 system file tables and FCB tables:
Offset Size Description (Table 1327)
00h DWORD pointer to next file table (offset FFFFh if last)
04h WORD number of files in this table
06h 35h bytes per file
Offset Size Description
00h WORD number of file handles referring to this file
02h WORD file open mode (see AX=6C00h, #1090 at AH=3Dh)
bit 15 set if this file opened via FCB
04h BYTE file attribute (see #1107 at AX=4301h)
05h WORD device info word (see #1110 at AX=4400h)
bit 15 set if remote file
bit 14 set means do not set file date/time on closing
bit 12 set means don't inherit on EXEC
bits 5-0 drive number for disk files
07h DWORD pointer to device driver header if character device
else pointer to DOS Drive Parameter Block
(see #1083 at AH=32h)
0Bh WORD starting cluster of file
0Dh WORD file time in packed format (see #1351 at AX=5700h)
not used for character devices in DR DOS
0Fh WORD file date in packed format (see #1352 at AX=5700h)
not used for character devices in DR DOS
11h DWORD file size
---system file table---
15h DWORD current offset in file (may be larger than size of
file; INT 21/AH=42h does not check new position)
---FCB table---
15h WORD counter for last I/O to FCB
17h WORD counter for last open of FCB
(these are separate to determine the times of the
latest I/O and open)
---
19h WORD relative cluster within file of last cluster accessed
1Bh WORD absolute cluster number of last cluster accessed
0000h if file never read or written???
1Dh WORD number of sector containing directory entry
(see #1041)
1Fh BYTE number of dir entry within sector (byte offset/32)
20h 11 BYTEs filename in FCB format (no path/period, blank-padded)
2Bh DWORD (SHARE.EXE) pointer to previous SFT sharing same file
2Fh WORD (SHARE.EXE) network machine number which opened file
(Windows Enhanced mode DOSMGR uses the virtual machine
ID as the machine number; see INT 2F/AX=1683h)
31h WORD PSP segment of file's owner (see #1066 at AH=26h)
(first three entries for AUX/CON/PRN contain segment
of IO.SYS startup code)
33h WORD offset within SHARE.EXE code segment of
sharing record (see #1323) 0000h = none
SeeAlso: #1325,#1326,#1328
Format of DOS 4.0-6.0 system file tables and FCB tables:
Offset Size Description (Table 1328)
00h DWORD pointer to next file table (offset FFFFh if last)
04h WORD number of files in this table
06h 3Bh bytes per file
Offset Size Description
00h WORD number of file handles referring to this file
FFFFh if in use but not referenced
02h WORD file open mode (see AX=6C00h,#1090 at AH=3Dh)
bit 15 set if this file opened via FCB
04h BYTE file attribute (see #1107 at AX=4301h)
05h WORD device info word (see also #1110 at AX=4400h)
bit 15 set if remote file
bit 14 set means do not set file date/time on closing
bit 13 set if named pipe
bit 12 set if no inherit
bit 11 set if network spooler
bit 7 set if device, clear if file (only if local)
bits 6-0 as for AX=4400h
07h DWORD pointer to device driver header if character device
else pointer to DOS Drive Parameter Block
(see #1083 at AH=32h) or REDIR data
0Bh WORD starting cluster of file (local files only)
0Dh WORD file time in packed format (see #1351)
0Fh WORD file date in packed format (see #1352)
11h DWORD file size
15h DWORD current offset in file (SFT)
LRU counters (FCB table, two WORDs)
---local file---
19h WORD relative cluster within file of last cluster accessed
1Bh DWORD number of sector containing directory entry
1Fh BYTE number of dir entry within sector (byte offset/32)
---network redirector---
19h DWORD pointer to REDIRIFS record
1Dh 3 BYTEs ???
------
20h 11 BYTEs filename in FCB format (no path/period, blank-padded)
2Bh DWORD (SHARE.EXE) pointer to previous SFT sharing same file
2Fh WORD (SHARE.EXE) network machine number which opened file
(Windows Enhanced mode DOSMGR uses the virtual machine
ID as the machine number; see INT 2F/AX=1683h)
31h WORD PSP segment of file's owner (see #1066 at AH=26h)
(first three entries for AUX/CON/PRN contain segment
of IO.SYS startup code)
33h WORD offset within SHARE.EXE code segment of
sharing record (see #1281) 0000h = none
35h WORD (local) absolute cluster number of last clustr accessed
(redirector) ???
37h DWORD pointer to IFS driver for file, 0000000h if native DOS
Note: the OS/2 2.0 DOS Boot Session does not properly fill in the filename
field due to incomplete support for SFTs; the OS/2 2.0 DOS Window
does not appear to support SFTs at all
SeeAlso: #1325,#1326,#1327
Format of current directory structure (CDS) (array, LASTDRIVE entries):
Offset Size Description (Table 1329)
00h 67 BYTEs ASCIZ path in form X:\PATH (local) or UNC form
\\SERVER\PATH (network, see notes below)
43h WORD drive attributes (also see note below) (see also AX=5F07h)
bit 15: uses network redirector \ invalid if 00, installable
bit 14: physical drive / file system if 11
bit 13: JOIN'ed \ path above is true path that would be
bit 12: SUBST'ed / needed if not under SUBST or JOIN
bit 7: remote drive hidden from redirector's assign-list and
exempt from network connection make/break commands;
set for CD-ROM drives by MSCDEX (not supported by
CORELCDX)
45h DWORD pointer to Drive Parameter Block for drive
(see #1083 at AH=32h)
---local drives---
49h WORD starting cluster of current directory
0000h = root, FFFFh = never accessed
4Bh WORD ??? seems to be FFFFh always
4Dh WORD ??? seems to be FFFFh always
---network drives---
49h DWORD pointer to redirector or REDIRIFS record, or FFFFh:FFFFh
(DOS 4 only) available for use by IFS driver
4Dh WORD stored user data from INT 21/AX=5F03h
------
4Fh WORD offset in current directory path of backslash corresponding to
root directory for drive
this value specifies how many characters to hide from the
"CHDIR" and "GETDIR" calls; normally set to 2 to hide the
drive letter and colon, SUBST, JOIN, and networks change it
so that only the appropriate portion of the true path is
visible to the user
---DOS 4.0+ ---
51h BYTE (DOS 4 only, remote drives) device type
04h network drive
52h DWORD pointer to IFS driver (DOS 4) or redirector block (DOS 5+) for
this drive, 00000000h if native DOS
56h WORD available for use by IFS driver
Notes: the path for invalid drives is normally set to X:\, but may be empty
after JOIN x: /D in DR DOS 5.0 or NET USE x: /D in older LAN versions
normally, only one of bits 13&12 may be set together with bit 14, but
DR DOS 5.0 uses other combinations for bits 15-12: 0111 JOIN,
0001 SUBST, 0101 ASSIGN (see #1330)
Windows for Workgroups 3.11 network sets the path to the local
drive and directory even for network drives; in that case the
UNC form \\SERVER\SHARE can be obtained with INT 21/AX=5F02h
or INT 21/AX=5F46h. LapLink RemoteAccess does the same even for
INT 21/AX=5F02h
SoftWindows on the Macintosh PowerPC sets \\E for the host drive
SeeAlso: #1330,INT 21/AX=71AAh/BL=00h
Format of DR DOS 5.0-6.0 current directory structure entry (array):
Offset Size Description (Table 1330)
00h 67 BYTEs ASCIZ pathname of actual root directory for this logical drive
43h WORD drive attributes
1000h SUBSTed drive
3000h??? JOINed drive
4000h physical drive
5000h ASSIGNed drive
7000h JOINed drive
8000h network drive
45h BYTE physical drive number (0=A:) if this logical drive is valid
46h BYTE ??? apparently flags for JOIN and ASSIGN
47h WORD cluster number of start of parent directory (0000h = root)
49h WORD entry number of current directory in parent directory
4Bh WORD cluster number of start of current directory
4Dh WORD used for media change detection (details not available)
4Fh WORD cluster number of SUBST/JOIN "root" directory
0000h if physical root directory
SeeAlso: #1329
Format of Windows NT Current Directory Structure (CDS) (array):
Offset Size Description (Table 1331)
00h 67 BYTEs ASCIZ path in form X:\ (does not show either current directory
or network path)
43h 4 BYTEs ???
Note: the WinNT CDS contains only as many entries as there are local drives,
not LASTDRIVE entries.
Format of DOS device driver header:
Offset Size Description (Table 1332)
00h DWORD pointer to next driver, offset=FFFFh if last driver
04h WORD device attributes (see #1333,#1334)
06h WORD device strategy entry point
call with ES:BX -> request header
(see #2284 at INT 2F/AX=0802h)
08h WORD device interrupt entry point
---character device---
0Ah 8 BYTEs blank-padded character device name
---block device---
0Ah BYTE number of subunits (drives) supported by driver
0Bh 7 BYTEs normally unused; sometimes contains signature to indicate
specific drivers:
"$PCMATA" PCMCIA driver PCMATA.SYS (see AX=440Dh"DOS 3.2+")
"AHADDVR" Adaptec SCSI disk driver ASPIDISK.SYS
"DBLSPAC" MS DoubleSpace or DriveSpace
"DSKREET" NortonUtils v5+ Diskreet (see INT 2F/AX=FE00h)
"GFS " LapLink III device driver DD.BIN
"SIDExxx" PCMCIA driver ATADRV.EXE (see AX=440Dh"DOS 3.2+")
"STAC-CD" Stacker/Stacker Anywhere (see AX=4404h"Stacker")
---DoubleSpace/DriveSpace---
12h 2 BYTEs signature ",." (2Ch 2Eh)
14h var preloading API entry point
---CD-ROM---
12h WORD reserved, must be 0000h
appears to be another device chain
14h BYTE drive letter, 01h=A:, etc. (must initially be 00h; this byte
is set by MSCDEX when it loads)
15h BYTE number of units
16h 6 BYTEs signature 'MSCDnn' where 'nn' is version (currently '00')
(this field does not exist in most drivers)
SeeAlso: #2238 at INT 25/AX=CDCDh,#2531 at INT 2F/AX=5600h
Bitfields for device attributes (character device):
Bit(s) Description (Table 1333)
15 set (indicates character device)
14 IOCTL supported (see AH=44h)
13 (DOS 3.0+) output until busy supported
12 reserved
11 (DOS 3.0+) OPEN/CLOSE/RemMedia calls supported
10-8 reserved
7 (DOS 5.0+) Generic IOCTL check call supported (driver command 19h)
(see AX=4410h,AX=4411h)
6 (DOS 3.2+) Generic IOCTL call supported (driver command 13h)
(see AX=440Ch,AX=440Dh"DOS 3.2+")
5 reserved
4 device is special (use INT 29 "fast console output")
3 device is CLOCK$ (all reads/writes use transfer record described
below)
2 device is NUL
1 device is standard output
0 device is standard input
Note: for European MS-DOS 4.0, bit 11 also indicates that bits 8-6 contain a
version code (000 = DOS 3.0,3.1; 001 = DOS 3.2;
010 = European DOS 4.0)
SeeAlso: #1334,#1332
Bitfields for device attributes (block device):
Bit(s) Description (Table 1334)
15 clear (indicates block device)
14 IOCTL supported
13 non-IBM format
12 network device (device is remote)
11 (DOS 3.0+) OPEN/CLOSE/RemMedia calls supported
10 reserved
9 direct I/O not allowed??? (set by DOS 3.3 DRIVER.SYS for "new" drives)
8 ??? set by DOS 3.3 DRIVER.SYS for "new" drives
7 (DOS 5.0+) Generic IOCTL check call supported (driver command 19h)
(see AX=4410h,AX=4411h)
6 (DOS 3.2+) Generic IOCTL call supported (driver command 13h)
implies support for commands 17h and 18h
(see AX=440Ch,AX=440Dh"DOS 3.2+",AX=440Eh,AX=440Fh)
5-2 reserved
1 driver supports 32-bit sector addressing (DOS 3.31+)
0 reserved
Note: for European MS-DOS 4.0, bit 11 also indicates that bits 8-6 contain a
version code (000 = DOS 3.0,3.1; 001 = DOS 3.2;
010 = European DOS 4.0)
SeeAlso: #1333,#1332
Format of DOS 2.x disk buffer:
Offset Size Description (Table 1335)
00h DWORD pointer to next disk buffer, offset = FFFFh if last
least-recently used buffer is first in chain
04h BYTE drive (0=A, 1=B, etc), FFh if not in use
05h 3 BYTEs unused??? (seems always to be 00h 00h 01h)
08h WORD logical sector number
0Ah BYTE number of copies to write (1 for non-FAT sectors)
0Bh BYTE sector offset between copies if multiple copies to be written
0Ch DWORD pointer to DOS Drive Parameter Block (see #1083 at AH=32h)
10h buffered data
SeeAlso: #1336,#1338,#1339,#1341
Format of DOS 3.x disk buffer:
Offset Size Description (Table 1336)
00h DWORD pointer to next disk buffer, offset = FFFFh if last
least-recently used buffer is first in chain
04h BYTE drive (0=A,1=B, etc), FFh if not in use
05h BYTE buffer flags (see #1337)
06h WORD logical sector number
08h BYTE number of copies to write (1 for non-FAT sectors)
09h BYTE sector offset between copies if multiple copies to be written
0Ah DWORD pointer to DOS Drive Parameter Block (see #1083 at AH=32h)
0Eh WORD unused??? (almost always 0)
10h buffered data
SeeAlso: #1335,#1338,#1339,#1341
Bitfields for DOS 3.x disk buffer flags:
Bit(s) Description (Table 1337)
7 ???
6 buffer dirty
5 buffer has been referenced
4 ???
3 sector in data area
2 sector in a directory, either root or subdirectory
1 sector in FAT
0 boot sector??? (guess)
SeeAlso: #1342
Format of DOS 4.00 (pre UR 25066) disk buffer info:
Offset Size Description (Table 1338)
00h DWORD pointer to array of disk buffer hash chain heads (see #1340)
04h WORD number of disk buffer hash chains (referred to as NDBCH below)
06h DWORD pointer to lookahead buffer, zero if not present
0Ah WORD number of lookahead sectors, else zero (the y in BUFFERS=x,y)
0Ch BYTE 00h if buffers in EMS (/X), FFh if not
0Dh WORD EMS handle for buffers, zero if not in EMS
0Fh WORD EMS physical page number used for buffers (usually 255)
11h WORD ??? seems always to be 0001h
13h WORD segment of EMS physical page frame
15h WORD ??? seems always to be zero
17h 4 WORDs EMS partial page mapping information???
SeeAlso: #1335,#1336,#1339,#1343
Format of DOS 4.01 (from UR 25066 Corrctive Services Disk on) disk buffer info:
Offset Size Description (Table 1339)
00h DWORD pointer to array of disk buffer hash chain heads (see #1340)
04h WORD number of disk buffer hash chains (referred to as NDBCH below)
06h DWORD pointer to lookahead buffer, zero if not present
0Ah WORD number of lookahead sectors, else zero (the y in BUFFERS=x,y)
0Ch BYTE 01h, possibly to distinguish from pre-UR 25066 format
0Dh WORD ??? EMS segment for BUFFERS (only with /XD)
0Fh WORD ??? EMS physical page number of EMS seg above (only with /XD)
11h WORD ??? EMS segment for ??? (only with /XD)
13h WORD ??? EMS physical page number of above (only with /XD)
15h BYTE ??? number of EMS page frames present (only with /XD)
16h WORD segment of one-sector workspace buffer allocated in main memory
if BUFFERS/XS or /XD options in effect, possibly to avoid DMA
into EMS
18h WORD EMS handle for buffers, zero if not in EMS
1Ah WORD EMS physical page number used for buffers (usually 255)
1Ch WORD ??? appears always to be 0001h
1Eh WORD segment of EMS physical page frame
20h WORD ??? appears always to be zero
22h BYTE 00h if /XS, 01h if /XD, FFh if BUFFERS not in EMS
SeeAlso: #1335,#1336,#1338,#1343
Format of DOS 4.x disk buffer hash chain head (array, one entry per chain):
Offset Size Description (Table 1340)
00h WORD EMS logical page number in which chain is resident, -1 if not
in EMS
02h DWORD pointer to least recently used buffer header. All buffers on
this chain are in the same segment.
06h BYTE number of dirty buffers on this chain
07h BYTE reserved (00h)
Notes: buffered disk sectors are assigned to chain N where N is the sector's
address modulo NDBCH, 0 <= N <= NDBCH-1
each chain resides completely within one EMS page
this structure is in main memory even if buffers are in EMS
Format of DOS 4.0-6.0 disk buffer:
Offset Size Description (Table 1341)
00h WORD forward ptr, offset only, to next least recently used buffer
02h WORD backward pointer, offset only
04h BYTE drive (0=A,1=B, etc) if bit 7 clear
SFT index if bit 7 set
FFh if not in use
05h BYTE buffer flags (see #1342)
06h DWORD logical sector number (local buffers only)
0Ah BYTE number of copies to write
for FAT sectors, same as number of FATs
for data and directory sectors, usually 1
0Bh WORD offset in sectors between copies to write for FAT sectors
0Dh DWORD pointer to DOS Drive Parameter Block (see #1083 at AH=32h)
11h WORD size of data in buffer if remote buffer (see also #1342)
13h BYTE reserved (padding)
14h buffered data
Note: for DOS 4.x, all buffered sectors which have the same hash value
(computed as the sum of high and low words of the logical sector
number divided by the number of disk buffer chains) are on the same
doubly-linked circular chain; for DOS 5+, only a single circular
chain exists.
the links consist of offset addresses only, the segment being the same
for all buffers in the chain.
SeeAlso: #1335,#1336,#1338
Bitfields for DOS 4.0-6.0 disk buffer flags:
Bit(s) Description (Table 1342)
7 remote buffer
6 buffer dirty
5 buffer has been referenced (reserved in DOS 5+)
4 search data buffer (only valid if remote buffer)
3 sector in data area
2 sector in a directory, either root or subdirectory
1 sector in FAT
0 reserved
SeeAlso: #1337
Format of DOS 5.0-6.0 disk buffer info:
Offset Size Description (Table 1343)
00h DWORD pointer to least-recently-used buffer header (may be in HMA)
(see #1341)
04h WORD number of dirty disk buffers
06h DWORD pointer to lookahead buffer, zero if not present
0Ah WORD number of lookahead sectors, else zero (the y in BUFFERS=x,y)
0Ch BYTE buffer location
00h base memory, no workspace buffer
01h HMA, workspace buffer in base memory
0Dh DWORD pointer to one-segment workspace buffer in base memory
11h 3 BYTEs unused
14h WORD ???
16h BYTE flag: INT 24 fail while making an I/O status call
17h BYTE temp storage for user memory allocation strategy during EXEC
18h BYTE counter: number of INT 21 calls for which A20 is off
19h BYTE bit flags
bit 0: ???
bit 1: SWITCHES=/W specified in CONFIG.SYS (don't load
WINA20.SYS when MS Windows 3.0 starts)
bit 2: in EXEC state (INT 21/AX=4B05h)
1Ah WORD offset of unpack code start (used only during INT 21/AX=4B05h)
1Ch BYTE bit 0 set iff UMB MCB chain linked to normal MCB chain
1Dh WORD minimum paragraphs of memory required by program being EXECed
1Fh WORD segment of first MCB in upper memory blocks or FFFFh if DOS
memory chain in base 640K only (first UMB MCB usually at
9FFFh, locking out video memory with a DOS-owned memory
block)
the MCB this word points at contains a valid link into high
memory even if it is marked with a 'Z' indicating the last
memory block
21h WORD paragraph from which to start scanning during memory allocation
SeeAlso: #1338,#1339
(Table 1344)
Call IFS utility function entry point with:
AH = 20h miscellaneous functions
AL = 00h get date
Return: CX = year
DH = month
DL = day
AL = 01h get process ID and computer ID
Return: BX = current PSP segment
DX = active network machine number
AL = 05h get file system info
ES:DI -> 16-byte info buffer
Return: buffer filled
Offset Size Description
00h 2 BYTEs unused
02h WORD number of SFTs (actually counts only
the first two file table arrays)
04h WORD number of FCB table entries
06h WORD number of proctected FCBs
08h 6 BYTEs unused
0Eh WORD largest sector size supported
AL = 06h get machine name
ES:DI -> 18-byte buffer for name
Return: buffer filled with name starting at offset 02h
AL = 08h get sharing retry count
Return: BX = sharing retry count
AL = other
Return: CF set
AH = 21h get redirection state
BH = type (03h disk, 04h printer)
Return: BH = state (00h off, 01h on)
AH = 22h ??? some sort of time calculation
AL = 00h ???
nonzero ???
AH = 23h ??? some sort of time calculation
AH = 24h compare filenames
DS:SI -> first ASCIZ filename
ES:DI -> second ASCIZ filename
Return: ZF set if files are same ignoring case and / vs \
AH = 25h normalize filename
DS:SI -> ASCIZ filename
ES:DI -> buffer for result
Return: filename uppercased, forward slashes changed to backslashes
AH = 26h get DOS stack
Return: DS:SI -> top of stack
CX = size of stack in bytes
AH = 27h increment InDOS flag
AH = 28h decrement InDOS flag
Note: IFS drivers which do not wish to implement functions 20h or 24h-28h may
pass them on to the default handler pointed at by [LoL+37h]
SeeAlso: #1345,#1346
Format of IFS driver list:
Offset Size Description (Table 1345)
00h DWORD pointer to next driver header
04h 8 BYTEs IFS driver name (blank padded), as used by FILESYS command
0Ch 4 BYTEs ???
10h DWORD pointer to IFS utility function entry point (see #1344)
call with ES:BX -> IFS request (see #1346)
14h WORD offset in header's segment of driver entry point
???
SeeAlso: #1344,#1346
Format of IFS request block:
Offset Size Description (Table 1346)
00h WORD total size in bytes of request
02h BYTE class of request
02h ???
03h redirection
04h ???
05h file access
06h convert error code to string
07h ???
03h WORD returned DOS error code
05h BYTE IFS driver exit status
00h success
01h ???
02h ???
03h ???
04h ???
FFh internal failure
06h 16 BYTEs ???
---request class 02h---
16h BYTE function code
04h ???
17h BYTE unused???
18h DWORD pointer to ???
1Ch DWORD pointer to ???
20h 2 BYTEs ???
---request class 03h---
16h BYTE function code
17h BYTE ???
18h DWORD pointer to ???
1Ch DWORD pointer to ???
22h WORD returned ???
24h WORD returned ???
26h WORD returned ???
28h BYTE returned ???
29h BYTE unused???
---request class 04h---
16h DWORD pointer to ???
1Ah DWORD pointer to ???
---request class 05h---
16h BYTE function code
01h flush disk buffers
02h get disk space
03h MKDIR
04h RMDIR
05h CHDIR
06h delete file
07h rename file
08h search directory
09h file open/create
0Ah LSEEK
0Bh read from file
0Ch write to file
0Dh lock region of file
0Eh commit/close file
0Fh get/set file attributes
10h printer control
11h ???
12h process termination
13h ???
---class 05h function 01h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h BYTE ???
27h BYTE ???
---class 05h function 02h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h WORD returned total clusters
28h WORD returned sectors per cluster
2Ah WORD returned bytes per sector
2Ch WORD returned available clusters
2Eh BYTE returned ???
2Fh BYTE ???
---class 05h functions 03h,04h,05h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h DWORD pointer to directory name
---class 05h function 06h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h WORD attribute mask
28h DWORD pointer to filename
---class 05h function 07h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h WORD attribute mask
28h DWORD pointer to source filespec
2Ch DWORD pointer to destination filespec
---class 05h function 08h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h BYTE 00h FINDFIRST
01h FINDNEXT
28h DWORD pointer to FindFirst search data + 01h if FINDNEXT
2Ch WORD search attribute if FINDFIRST
2Eh DWORD pointer to filespec if FINDFIRST
---class 05h function 09h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see #1347)
26h WORD ??? \ together, specify open vs. create, whether or
28h WORD ??? / not to truncate
2Ah 4 BYTEs ???
2Eh DWORD pointer to filename
32h 4 BYTEs ???
36h WORD file attributes on call
returned ???
38h WORD returned ???
---class 05h function 0Ah---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see #1347)
26h BYTE seek type (02h = from end)
28h DWORD offset on call
returned new absolute position
---class 05h functions 0Bh,0Ch---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see #1347)
28h WORD number of bytes to transfer
returned bytes actually transferred
2Ah DWORD transfer address
---class 05h function 0Dh---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see #1347)
26h BYTE file handle???
27h BYTE unused???
28h WORD ???
2Ah WORD ???
2Ch WORD ???
2Eh WORD ???
---class 05h function 0Eh---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see #1347)
26h BYTE 00h commit file
01h close file
27h BYTE unused???
---class 05h function 0Fh---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h 4 BYTEs ???
26h BYTE 02h GET attributes
03h PUT attributes
27h BYTE unused???
28h 12 BYTEs ???
34h WORD search attributes???
36h DWORD pointer to filename
3Ah WORD (GET) returned ???
3Ch WORD (GET) returned ???
3Eh WORD (GET) returned ???
40h WORD (GET) returned ???
42h WORD (PUT) new attributes
(GET) returned attributes
---class 05h function 10h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see #1347)
26h WORD ???
28h DWORD pointer to ???
2Ch WORD ???
2Eh BYTE ???
2Fh BYTE subfunction
01h get printer setup
03h ???
04h ???
05h ???
06h ???
07h ???
21h set printer setup
---class 05h function 11h---
17h 7 BYTEs ???
1Eh DWORD pointer to ???
22h DWORD pointer to IFS open file structure (see #1347)
26h BYTE subfunction
27h BYTE unused???
28h WORD ???
2Ah WORD ???
2Ch WORD ???
2Eh BYTE ???
2Fh BYTE ???
---class 05h function 12h---
17h 15 BYTEs unused???
26h WORD PSP segment
28h BYTE type of process termination
29h BYTE unused???
---class 05h function 13h---
17h 15 BYTEs unused???
26h WORD PSP segment
---request class 06h---
16h DWORD returned pointer to string corresponding to error code at 03h
1Ah BYTE returned ???
1Bh BYTE unused
---request class 07h---
16h DWORD pointer to IFS open file structure (see #1347)
1Ah BYTE ???
1Bh BYTE unused???
SeeAlso: #1345,#1344,#1347
Format of IFS open file structure:
Offset Size Description (Table 1347)
00h WORD ???
02h WORD device info word
04h WORD file open mode
06h WORD ???
08h WORD file attributes
0Ah WORD owner's network machine number
0Ch WORD owner's PSP segment
0Eh DWORD file size
12h DWORD current offset in file
16h WORD file time
18h WORD file date
1Ah 11 BYTEs filename in FCB format
25h WORD ???
27h WORD hash value of SFT address
(low word of linear address + segment&F000h)
29h 3 WORDs network info from SFT
2Fh WORD ???
Format of one item in DOS 4.0+ list of special program names:
Offset Size Description (Table 1348)
00h BYTE length of name (00h = end of list)
01h N BYTEs name in format name.ext
N 2 BYTEs DOS version to return for program (major,minor)
(see AH=30h,INT 2F/AX=122Fh)
---DOS 4 only---
N+2 BYTE number of times to return fake version number (FFh = always)
Note: if the name of the executable for the program making the DOS "get
version" call matches one of the names in this list, DOS returns the
specified version rather than the true version number
--------v-215252-----------------------------
INT 21 - VIRUS - "516"/"Leapfrog" - INSTALLATION CHECK
AX = 5252h
Return: BX = FFEEh if resident
SeeAlso: AX=4BFFh"Cascade",AX=58CCh
--------D-2153-------------------------------
INT 21 - DOS 2+ internal - TRANSLATE BIOS PARAMETER BLOCK TO DRIVE PARAM BLOCK
AH = 53h
DS:SI -> BIOS Parameter Block (see #1349)
ES:BP -> buffer for Drive Parameter Block (see #1083 at AH=32h)
Return: ES:BP buffer filled
Notes: for DOS 3.0+, the cluster at which to start searching is set to 0000h
and the number of free clusters is set to FFFFh (unknown)
if the number of sectors per cluster is set to zero, MS-DOS will hang
at startup because it computes the internally-used shift count by
shifting this value right until the carry flag is set; since this
will never happen when the field is zero, MS-DOS hangs
not supported by Windows NT 3.1
Format of BIOS Parameter Block:
Offset Size Description (Table 1349)
00h WORD number of bytes per sector
02h BYTE number of sectors per cluster
03h WORD number of reserved sectors at start of disk
05h BYTE number of FATs
06h WORD number of entries in root directory
08h WORD total number of sectors
for DOS 4.0+, set to zero if partition >32M, then set DWORD at
15h to actual number of sectors
0Ah BYTE media ID byte (see #1044)
0Bh WORD number of sectors per FAT
---DOS 2.13---
0Dh WORD number of sectors per track
0Fh WORD number of heads
11h WORD number of hidden sectors
---DOS 3.0+ ---
0Dh WORD number of sectors per track
0Fh WORD number of heads
11h DWORD number of hidden sectors
15h 11 BYTEs reserved
---DOS 4.0+ ---
15h DWORD total number of sectors if word at 08h contains zero
19h 6 BYTEs ???
1Fh WORD number of cylinders
21h BYTE device type
22h WORD device attributes (removable or not, etc)
---DR DOS 5+ ---
15h DWORD total number of sectors if word at 08h contains zero
19h 6 BYTEs reserved
---European MS-DOS 4.00---
15h DWORD total number of sectors if word at 08h contains zero
(however, this DOS does not actually implement >32M partitions)
SeeAlso: #1083,#1350
Format of Extended BIOS Parameter Block:
Offset Size Description (Table 1350)
00h 25 BYTEs same as standard DOS 4-6 BPB (see #1349)
19h DWORD sectors per FAT if WORD at 0Bh is 0000h
1Dh WORD extended flags
bits 3-0: the 0-based FAT number of the active FAT
bits 6-4: reserved (0)
bit 7: do not mirror active FAT to inactive FATs
1Fh WORD file system version (high byte=major, low byte=minor)
21h DWORD starting cluster number of root directory
25h WORD file system information sector number (see also #1476)
29h 6 WORDs reserved
SeeAlso: #1247
--------D-2154-------------------------------
INT 21 - DOS 2+ - GET VERIFY FLAG
AH = 54h
Return: AL = verify flag
00h off
01h on (all disk writes verified after writing)
SeeAlso: AH=2Eh
--------v-2154--BX4475-----------------------
INT 21 - VIRUS - "Dual_GtM"/"Ganeu" - INSTALLATION CHECK
AH = 54h
BX = 4475h ("Du")
CX = 616Ch ("al")
Return: BX = 4774h ("Gt") and CX = 4D21h ("M!") if resident
SeeAlso: AX=50FDh"VIRUS",AX=5454h"VIRUS"
--------v-215454-----------------------------
INT 21 - VIRUS - "Dudley" - INSTALLATION CHECK
AX = 5454h
Return: AX = 0000h if resident
SeeAlso: AX=50FDh"VIRUS",AH=54h/BX=4475h"VIRUS",AX=7BCEh"VIRUS"
--------D-2155-------------------------------
INT 21 - DOS 2+ internal - CREATE CHILD PSP
AH = 55h
DX = segment at which to create new PSP
SI = (DOS 3.0+) value to place in memory size field at DX:[0002h]
Return: AL destroyed
Notes: creates a "child" PSP rather than making an exact copy of the current
PSP; the new PSP's parent pointer is set to the current PSP and the
reference count for each inherited file is incremented
(DOS 2.0+) sets current PSP to DX
(DOS 3.0+) marks "no inherit" file handles as closed in child PSP
this function is implemented using the same code as AH=26h, so unlike
other DOS 2+ functions, it does not return status in CF, instead
returning status in AL as DOS 1.x functions do (but it never puts an
explicit return value in AL)
SeeAlso: AH=26h,AH=50h
--------D-2156-------------------------------
INT 21 - DOS 2+ - "RENAME" - RENAME FILE
AH = 56h
DS:DX -> ASCIZ filename of existing file (no wildcards, but see below)
ES:DI -> ASCIZ new filename (no wildcards)
CL = attribute mask (server call only, see below)
Return: CF clear if successful
CF set on error
AX = error code (02h,03h,05h,11h) (see #1366)
Notes: allows move between directories on same logical volume
this function does not set the archive attribute
(see #1107 at AX=4301h), which results in incremental backups not
backing up the file under its new name
open files should not be renamed
(DOS 2.x only) this function renames file by creating a new directory
entry with the new name,then marking the old entry deleted
(DOS 3.0+) allows renaming of directories
(DOS 3.1+) wildcards are allowed if invoked via AX=5D00h, in which case
error 12h (no more files) is returned on success, and both source and
destination specs must be canonical (as returned by AH=60h).
Wildcards in the destination are replaced by the corresponding char
of each source file being renamed. Under DOS 3.x, the call will fail
if the destination wildcard is *.* or equivalent; under DR DOS 5.0,
the call will fail if any wildcards are used. When invoked via
AX=5D00h, only those files matching the attribute mask in CL are
renamed.
under the FlashTek X-32 DOS extender, the old-name pointer is in DS:EDX
and the new-name pointer is in ES:EDI (DS must equal ES)
BUG: (DR DOS 3.41) when invoked via AX=5D00h, this function will generate
a new directory entry with the new name (including any wildcards)
which can only be removed with a sector editor
SeeAlso: AH=17h,AX=4301h,AX=5D00h,AH=60h,AH=71h,AX=F257h/SF=04h
--------v-215643------------------------
INT 21 - VIRUS - "PS-MPC.Gold" - INSTALLATION CHECK
AX = 5643h ('VC')
Return: AX = 5053h ('PS') if resident
SeeAlso: AX=33E0h"VIRUS",AX=5741h"VIRUS",AX=6303h"VIRUS"
--------!---Section--------------------------
Interrupt List, part 7 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------D-215700-----------------------------
INT 21 - DOS 2+ - GET FILE'S LAST-WRITTEN DATE AND TIME
AX = 5700h
BX = file handle
Return: CF clear if successful
CX = file's time (see #1351)
DX = file's date (see #1352)
CF set on error
AX = error code (01h,06h) (see #1366)
Note: under DR DOS 3.41 and 5.0, this function returns 0 (no date/time) for
character devices; MS-DOS returns date and time of opening
SeeAlso: AX=5701h,AX=5704h"Windows95"
Bitfields for file time:
Bit(s) Description (Table 1351)
15-11 hours (0-23)
10-5 minutes
4-0 seconds/2
Bitfields for file date:
Bit(s) Description (Table 1352)
15-9 year - 1980
8-5 month
4-0 day
--------D-215701-----------------------------
INT 21 - DOS 2+ - SET FILE'S LAST-WRITTEN DATE AND TIME
AX = 5701h
BX = file handle
CX = new time (see #1351)
DX = new date (see #1352)
Return: CF clear if successful
CF set on error
AX = error code (01h,06h) (see #1366)
SeeAlso: AX=5700h,AX=5705h"Windows95",AX=5707h"Windows95"
--------D-215702-----------------------------
INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTES FOR FILE
AX = 5702h
BX = file handle
CX = size of result buffer or 0000h
DS:SI -> EAP list (see #1353)
ES:DI -> buffer for returned EAV list (see #1356)
Return: CF clear if successful
CX = size of returned data
CF set on error
AX = error code (see #1366)
Desc: get the current value of one or more extended attributes
Notes: if CX=0000h on entry, ES:DI is ignored and no data is actually
returned, only the amount of data which is available
the default DOS 4 behavior is to return a single word of 0000h (no
structures) in the result buffer if CX>=0002h on entry; this
functionality was apparently never released to the public
SeeAlso: AX=5703h,AX=5704h,AH=6Eh,INT 2F/AX=112Dh
Format of EAP (extended attribute properties) list:
Offset Size Description (Table 1353)
00h WORD number of EAP structures following
02h var array of EAP structures (see #1354)
SeeAlso: #1356
Format of EAP (extended attribute property) structure:
Offset Size Description (Table 1354)
00h BYTE attribute type
01h boolean (either 00h or 01h)
02h number (BYTE, WORD, or DWORD)
03h string
04h date stamp
05h time stamp
01h WORD EAP flags (see #1355)
03h BYTE size of reference string (name)
04h N BYTEs reference string
Bitfields for EAP flags:
Bit(s) Description (Table 1355)
12 unchangeable
13 ignore
14 unchangeable
15 used by COMMAND.COM for code page, but not understood by ATTRIB
Format of EAV (extended attribute value) list:
Offset Size Description (Table 1356)
00h WORD number of EAV structures following
02h var array of Extended Attribute Value structures (see #1357)
SeeAlso: #1353
Format of Extended Attribute Value structures:
Offset Size Description (Table 1357)
00h 4 BYTEs ???
04h BYTE size of reference string
05h WORD size of value
07h var reference string
var value
--------O-215702-----------------------------
INT 21 - OS/2 v1.1+ Family API - DosQFileInfo
AX = 5702h
BX = file handle
CX = size of buffer for information
DX = level of information
0001h standard file information (see #1358)
0002h Query EA Size (see #1358)
0003h Query EAs from List (see #1359)
0004h Query All EAs (see #1359)
ES:DI -> buffer for information (see #1358,#1359)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5702h/BX=FFFFh,AX=5703h"OS/2",AH=6Dh"OS/2"
Format of OS/2 DosQFileInfo:
Offset Size Description (Table 1358)
00h WORD creation date
02h WORD creation time
04h WORD last access date
06h WORD last access time
08h WORD last write date
0Ah WORD last write time
0Ch DWORD file size in bytes
10h DWORD allocated space in bytes
14h WORD file attributes
---level 2 only---
16h DWORD size of Extended Attributes in byte
SeeAlso: #1359,#1362
Format of OS/2 DosQFileInfo, EAOP structure:
Offset Size Description (Table 1359)
00h DWORD pointer to general EA list (see #1360)
04h DWORD pointer to buffer for full EA list, with length field set
08h DWORD (ret) error
Note: for info level 3, the first pointer must contain the address of a
list of the Extended Attributes to be retrieved; for info level 4,
it should be 0000h:0000h
SeeAlso: #1358,#1362
Format of OS/2 DosQFileInfo, General EA List:
Offset Size Description (Table 1360)
00h DWORD (call) total size of list in bytes (including this field)
(ret) number of bytes actually used (including this field)
04h var Extended Attribute entries (see #1361) [packed arrray]
Format of OS/2 DosQFileInfo, General EA entry:
Offset Size Description (Table 1361)
00h BYTE length of Extended Attribute name (excluding terminating NUL)
01h N BYTEs EA name
BYTE 00h
SeeAlso: #1360
Format of OS/2 DosQFileInfo, Full EA List:
Offset Size Description (Table 1362)
00h DWORD (call) total size of list in bytes (including this field)
(ret) number of bytes actually used (including this field)
04h var Extended Attribute data (see #1363) [packed array]
SeeAlso: #1358,#1359
Format of OS/2 Extended Attribute data (struct FEA):
Offset Size Description (Table 1363)
00h BYTE flags
bit 7: critical EA
01h BYTE length of Extended Attribute name (excluding terminating NUL)
02h WORD length of Extended Attribute value
04h N BYTEs EA name
BYTE 00h
M BYTEs EA value
--------O-215702BXFFFF-----------------------
INT 21 - OS/2 v1.1+ Compatibility Box Family API - DosQPathInfo
AX = 5702h
BX = FFFFh
CX = size of buffer for information
DX = level of information (0002h)
DS:SI -> filename
ES:DI -> buffer for FAPI path information (see #1364)
Return: CF clear if successful
AL = 00h
CF set on error
AX = error code
SeeAlso: AX=5702h"OS/2",AX=5703h/BX=FFFFh
Format of FAPI path information:
Offset Size Description (Table 1364)
00h 22 BYTEs ???
16h DWORD extended attribute size (none present if less than 5)
--------D-215703-----------------------------
INT 21 - DOS 4.x only - GET EXTENDED ATTRIBUTE PROPERTIES
AX = 5703h
BX = file handle
CX = size of result buffer or 0000h
ES:DI -> result buffer
Return: CF clear if successful
CX = size of returned data
CF set on error
AX = error code (see #1366)
ES:DI -> zero word (DOS 4.0) if CX >= 2 on entry
Desc: get a list of the extended attributes which are defined for the
specified file
Notes: if CX=0000h on entry, ES:DI is ignored and no data is actually
returned, only the amount of data which is available
the default DOS 4 behavior is to return a trivial EAP list consisting
of the single word 0000h (no EAP structures) if CX>=0002h on entry;
this functionality was apparently never released to the public
SeeAlso: AX=5702h,AX=5704h,AH=6Eh,INT 2F/AX=112Dh
--------O-215703-----------------------------
INT 21 - OS/2 v1.1+ Family API - DosSetFileInfo
AX = 5703h
BX = file handle
CX = size of information buffer
DX = level of information
ES:DI -> information buffer
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5702h"OS/2",AX=5703h/BX=FFFFh
--------O-215703BXFFFF-----------------------
INT 21 - OS/2 v1.1+ Family API - DosSetPathInfo
AX = 5703h
BX = FFFFh
CX = size of information buffer
DX = level of information
DS:SI -> filename
ES:DI -> information buffer
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5702h/BX=FFFFh,AX=5703h"OS/2"
--------D-215704-----------------------------
INT 21 - DOS 4.x only - SET EXTENDED ATTRIBUTES
AX = 5704h
BX = file handle
ES:DI -> EAV list (see #1356)
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
Note: the default DOS 4 behavior is to do nothing and return successfully;
this functionality was apparently never released to the public
SeeAlso: AX=5702h,AX=5703h,INT 2F/AX=112Dh
--------D-215704-----------------------------
INT 21 - MS-DOS 7/Windows95 - GET LAST ACCESS DATE AND TIME
AX = 5704h
BX = file handle
Return: CF clear if successful
DX = last access date (see #1352)
CX = last access time (currently always 0000h)
CF set on error
AX = error code
SeeAlso: AX=5701h,AX=5705h,AX=5706h
--------D-215705-----------------------------
INT 21 - MS-DOS 7/Windows95 - SET LAST ACCESS DATE AND TIME
AX = 5705h
BX = file handle
CX = new last-access time (currently not supported, must be 0000h)
DX = new last-access date (see #1352)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5700h,AX=5704h"Windows95",AX=5707h
--------D-215706-----------------------------
INT 21 - MS-DOS 7/Windows95 - GET CREATION DATE AND TIME
AX = 5706h
BX = file handle
Return: CF clear if successful
CX = creation time (see #1351)
DX = creation date (see #1352)
SI = number of 10-millisecond units past time in CX (0-199)
CF set on error
AX = error code
SeeAlso: AX=5701h,AX=5704h"Windows95",AX=5707h
--------D-215707-----------------------------
INT 21 - MS-DOS 7/Windows95 - SET CREATION DATE AND TIME
AX = 5707h
BX = file handle
CX = new creation time (see #1351)
DX = new creation date (see #1352)
SI = new creation time: 10-millisecond units past time in CX (0-199)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5700h,AX=5705h,AX=5706h
--------v-215741-----------------------------
INT 21 - VIRUS - "WARP" -INSTALLATION CHECK
AX = 5741h
Return: AX = 5250h if resident
SeeAlso: AX=5643h"VIRUS",AX=58CCh"VIRUS"
--------U-215757BX5757-----------------------
INT 21 U - IBM Genie - Resident Manager - INSTALLATION CHECK
AX = 5757h
BX = 5757h
Return: AX = 0000h if installed
BX = ???
DX = ???
DS:SI -> list of 27 DWORD entry point addresses
Program: IBM Genie is a set of utility TSRs by Helix Software
Note: other functions possible if BX <> 5757h, but details not yet available
----------215758-----------------------------
INT 21 U - Headroom - API
AX = 5758h
BL = function
00h ???
01h get Headroom location
Return: CF clear if installed
AX = PSP segment of Headroom TSR
BX = paragraphs of memory used by Headroom
CF set if not (normal DOS return)
Note: this function is also used as an installation check
02h get INT 21 handler
Return: CF clear
ES:BX -> Headroom's INT 21 handler
Note: also sets unknown flag
03h launch application???
DS:SI -> 233-byte application record
Return: ???
04h ???
???
Return: CF clear
05h get swap directory
Return: CF clear
DX:AX -> ASCIZ swap directory name
06h ???
DX = ???
Return: CF clear
07h ???
08h ???
09h get current application
Return: BX = application number
0Ah ???
DX = application number
DS:SI = ???
Return: ???
0Bh ???
0Ch ???
DX = application number
???
Return: ???
0Dh ???
DX = application number
???
Return: ???
0Eh get ???
Return: CF clear
AX = ???
0Fh set ??? flag
10h clear ??? flag
11h find application by name
DS:SI -> ASCIZ application name
Return: CF clear
AX = application number or FFFFh if not loaded
12h ???
DX = application number
Return: CF clear
???
13h ???
Return: CF clear
14h ???
same as function 13h
15h set ???
DX = ???
16h get ???
Return: AX = ??? set by function 15h
17h get ???
Return: BX = ???
CX = ??? (may be pointer in BX:CX)
18h BUG: branches incorrectly due to fencepost error
Program: Headroom is a TSR/task switcher by Helix Software
SeeAlso: AX=4C57h,AX=5757h,INT 2F/AX=5758h
--------D-2158-------------------------------
INT 21 - DOS 2.11+ - GET OR SET MEMORY ALLOCATION STRATEGY
AH = 58h
AL = subfunction
00h get allocation strategy
Return: AX = current strategy (see #1365)
01h set allocation strategy
BL = new allocation strategy (see #1365)
BH = 00h (DOS 5+)
Return: CF clear if successful
CF set on error
AX = error code (01h) (see #1366)
Notes: the Set subfunction accepts any value in BL for DOS 3.x and 4.x;
2 or greater means last fit
the Get subfunction returns the last value set
setting an allocation strategy involving high memory does not
automatically link in the UMB memory chain; this must be done
explicitly with AX=5803h in order to actually allocate high memory
a program which changes the allocation strategy should restore it
before terminating
Toshiba MS-DOS v2.11 supports subfunctions 00h and 01h, as does the
TI Professional MS-DOS v2.13
DR DOS 3.41 reportedly reverses subfunctions 00h and 01h
SeeAlso: AH=48h,AH=49h,AH=4Ah,INT 2F/AX=4310h"XMS",INT 67/AH=3Fh
(Table 1365)
Values for DOS memory allocation strategy:
00h low memory first fit
01h low memory best fit
02h low memory last fit
---DOS 5+ ---
40h high memory first fit
41h high memory best fit
42h high memory last fit
80h first fit, try high then low memory
81h best fit, try high then low memory
82h last fit, try high then low memory
--------D-2158-------------------------------
INT 21 - DOS 5+ - GET OR SET UMB LINK STATE
AH = 58h
AL = subfunction
02h get UMB link state
Return: AL = current link state
00h UMBs not part of DOS memory chain
01h UMBs in DOS memory chain
03h set UMB link state
BX = new link state
0000h remove UMBs from DOS memory chain
0001h add UMBs to DOS memory chain
Return: CF clear if successful
CF set on error
AX = error code (01h) (see #1366)
Notes: a program which changes the UMB link state should restore it before
terminating
UMBs will only be available if CONFIG.SYS contains the line DOS=UMB,
the UMBs have been linked into the memory chain with AX=5803h, and
the allocation strategy has been set to include high memory with
AX=5801h
SeeAlso: #1373,#2453 at INT 2F/AX=4310h
--------v-2158CC-----------------------------
INT 21 - VIRUS - "1067"/"Headcrash" - INSTALLATION CHECK
AX = 58CCh
Return: CF clear if resident
SeeAlso: AX=5741h"VIRUS",AX=5643h,AX=5252h,AX=58DDh,AX=6303h"VIRUS",AX=6969h
--------v-2158DD-----------------------------
INT 21 - VIRUS - "1067"/"Headcrash" - GET ORIGINAL INT 21h VECTOR
AX = 58DDh
Return: CX = code segment of virus
ES:BX = old INT 21h vector
SeeAlso: AX=5252h,AX=58CCh,AX=6969h
--------D-2159--BX0000-----------------------
INT 21 - DOS 3.0+ - GET EXTENDED ERROR INFORMATION
AH = 59h
BX = 0000h
Return: AX = extended error code (see #1366)
BH = error class (see #1368)
BL = recommended action (see #1369)
CH = error locus (see #1370)
ES:DI may be pointer (see #1367, #1366)
CL, DX, SI, BP, and DS destroyed
Notes: functions available under DOS 2.x map the true DOS 3.0+ error code into
one supported under DOS 2.x
you should call this function to retrieve the true error code when an
FCB or DOS 2.x call returns an error
under DR DOS 5.0, this function does not use any of the DOS-internal
stacks and may thus be called at any time
SeeAlso: AH=59h/BX=0001h,AX=5D0Ah,INT 2F/AX=122Dh
(Table 1366)
Values for DOS extended error code:
00h (0) no error
01h (1) function number invalid
02h (2) file not found
03h (3) path not found
04h (4) too many open files (no handles available)
05h (5) access denied
06h (6) invalid handle
07h (7) memory control block destroyed
08h (8) insufficient memory
09h (9) memory block address invalid
0Ah (10) environment invalid (usually >32K in length)
0Bh (11) format invalid
0Ch (12) access code invalid
0Dh (13) data invalid
0Eh (14) reserved
0Fh (15) invalid drive
10h (16) attempted to remove current directory
11h (17) not same device
12h (18) no more files
---DOS 3.0+ ---
13h (19) disk write-protected
14h (20) unknown unit
15h (21) drive not ready
16h (22) unknown command
17h (23) data error (CRC)
18h (24) bad request structure length
19h (25) seek error
1Ah (26) unknown media type (non-DOS disk)
1Bh (27) sector not found
1Ch (28) printer out of paper
1Dh (29) write fault
1Eh (30) read fault
1Fh (31) general failure
20h (32) sharing violation
21h (33) lock violation
22h (34) disk change invalid (ES:DI -> media ID structure)(see #1367)
23h (35) FCB unavailable
24h (36) sharing buffer overflow
25h (37) (DOS 4.0+) code page mismatch
26h (38) (DOS 4.0+) cannot complete file operation (out of input)
27h (39) (DOS 4.0+) insufficient disk space
28h-31h reserved
32h (50) network request not supported
33h (51) remote computer not listening
34h (52) duplicate name on network
35h (53) network name not found
36h (54) network busy
37h (55) network device no longer exists
38h (56) network BIOS command limit exceeded
39h (57) network adapter hardware error
3Ah (58) incorrect response from network
3Bh (59) unexpected network error
3Ch (60) incompatible remote adapter
3Dh (61) print queue full
3Eh (62) queue not full
3Fh (63) not enough space to print file
40h (64) network name was deleted
41h (65) network: Access denied
42h (66) network device type incorrect
43h (67) network name not found
44h (68) network name limit exceeded
45h (69) network BIOS session limit exceeded
46h (70) temporarily paused
47h (71) network request not accepted
48h (72) network print/disk redirection paused
49h (73) network software not installed
(LANtastic) invalid network version
4Ah (74) unexpected adapter close
(LANtastic) account expired
4Bh (75) (LANtastic) password expired
4Ch (76) (LANtastic) login attempt invalid at this time
4Dh (77) (LANtastic v3+) disk limit exceeded on network node
4Eh (78) (LANtastic v3+) not logged in to network node
4Fh (79) reserved
50h (80) file exists
51h (81) reserved
52h (82) cannot make directory
53h (83) fail on INT 24h
54h (84) (DOS 3.3+) too many redirections
55h (85) (DOS 3.3+) duplicate redirection
56h (86) (DOS 3.3+) invalid password
57h (87) (DOS 3.3+) invalid parameter
58h (88) (DOS 3.3+) network write fault
59h (89) (DOS 4.0+) function not supported on network
5Ah (90) (DOS 4.0+) required system component not installed
5Bh (91) (NetWare4) timer server table overflowed
5Ch (92) (NetWare4) duplicate in timer service table
5Dh (93) (NetWare4) no items to work on
5Fh (95) (NetWare4) invalid interrupt
64h (100) (MSCDEX) unknown error
64h (100) (NetWare4) open semaphore limit exceeded
65h (101) (MSCDEX) not ready
65h (101) (NetWare4) exclusive semaphore is already owned
66h (102) (MSCDEX) EMS memory no longer valid
66h (102) (NetWare4) semaphore was set when close attempted
67h (103) (MSCDEX) not High Sierra or ISO-9660 format
67h (103) (NetWare4) too many exclusive semaphore requests
68h (104) (MSCDEX) door open
68h (104) (NetWare4) operation invalid from interrupt handler
69h (105) (NetWare4) semaphore owner died
6Ah (106) (NetWare4) semaphore limit exceeded
6Bh (107) (NetWare4) insert drive B: disk into drive A:
6Ch (108) (NetWare4) drive locked by another process
6Dh (109) (NetWare4) broken pipe
6Eh (110) (NetWare4) pipe open/create failed
6Fh (111) (NetWare4) pipe buffer overflowed
70h (112) (NetWare4) disk full
71h (113) (NetWare4) no more search handles
72h (114) (NetWare4) invalid target handle for dup2
73h (115) (NetWare4) bad user virtual address
74h (116) (NetWare4) error on console I/O
75h (117) (NetWare4) unknown category code for IOCTL
76h (118) (NetWare4) invalid value for verify flag
77h (119) (NetWare4) level four driver not found
78h (120) (NetWare4) invalid function number
79h (121) (NetWare4) semaphore timeout
7Ah (122) (NetWare4) buffer too small
7Bh (123) (NetWare4) invalid character or bad file-system name
7Ch (124) (NetWare4) unimplemented information level
7Dh (125) (NetWare4) no volume label found
7Eh (126) (NetWare4) module handle not found
7Fh (127) (NetWare4) procedure address not found
80h (128) (NetWare4) CWait found no children
81h (129) (NetWare4) CWait children still running
82h (130) (NetWare4) invalid operation for direct disk-access handle
83h (131) (NetWare4) attempted seek to negative offset
84h (132) (NetWare4) attempted to seek on device or pipe
85h (133) (NetWare4) drive already has JOINed drives
86h (134) (NetWare4) drive is already JOINed
87h (135) (NetWare4) drive is already SUBSTed
88h (136) (NetWare4) can not delete drive which is not JOINed
89h (137) (NetWare4) can not delete drive which is not SUBSTed
8Ah (138) (NetWare4) can not JOIN to a JOINed drive
8Bh (139) (NetWare4) can not SUBST to a SUBSTed drive
8Ch (140) (NetWare4) can not JOIN to a SUBSTed drive
8Dh (141) (NetWare4) can not SUBST to a JOINed drive
8Eh (142) (NetWare4) drive is busy
8Fh (143) (NetWare4) can not JOIN/SUBST to same drive
90h (144) (NetWare4) directory must not be root directory
91h (145) (NetWare4) can only JOIN to empty directory
92h (146) (NetWare4) path is already in use for SUBST
93h (147) (NetWare4) path is already in use for JOIN
94h (148) (NetWare4) path is in use by another process
95h (149) (NetWare4) directory previously SUBSTituted
96h (150) (NetWare4) system trace error
97h (151) (NetWare4) invalid event count for DosMuxSemWait
98h (152) (NetWare4) too many waiting on mutex
99h (153) (NetWare4) invalid list format
9Ah (154) (NetWare4) volume label too large
9Bh (155) (NetWare4) unable to create another TCB
9Ch (156) (NetWare4) signal refused
9Dh (157) (NetWare4) segment discarded
9Eh (158) (NetWare4) segment not locked
9Fh (159) (NetWare4) invalid thread-ID address
A0h (160) (NetWare4) bad environment pointer
A1h (161) (NetWare4) invalid name passed to EXEC
A2h (162) (NetWare4) signal already pending
A3h (163) (NetWare4) ERROR_124 mapping
A4h (164) (NetWare4) no more process slots
A5h (165) (NetWare4) ERROR_124 mapping
B0h (176) (MS-DOS 7.0) volume is not locked
B1h (177) (MS-DOS 7.0) volume is locked in drive
B2h (178) (MS-DOS 7.0) volume is not removable
B4h (180) (MS-DOS 7.0) lock count has been exceeded
B4h (180) (NetWare4) invalid segment number
B5h (181) (MS-DOS 7.0) a valid eject request failed
B5h (181) (NetWare4) invalid call gate
B6h (182) (NetWare4) invalid ordinal
B7h (183) (NetWare4) shared segment already exists
B8h (184) (NetWare4) no child process to wait for
B9h (185) (NetWare4) NoWait specified and child still running
BAh (186) (NetWare4) invalid flag number
BBh (187) (NetWare4) semaphore does not exist
BCh (188) (NetWare4) invalid starting code segment
BDh (189) (NetWare4) invalid stack segment
BEh (190) (NetWare4) invalid module type (DLL can not be used as application)
BFh (191) (NetWare4) invalid EXE signature
C0h (192) (NetWare4) EXE marked invalid
C1h (193) (NetWare4) bad EXE format (e.g. DOS-mode program)
C2h (194) (NetWare4) iterated data exceeds 64K
C3h (195) (NetWare4) invalid minimum allocation size
C4h (196) (NetWare4) dynamic link from invalid Ring
C5h (197) (NetWare4) IOPL not enabled
C6h (198) (NetWare4) invalid segment descriptor privilege level
C7h (199) (NetWare4) automatic data segment exceeds 64K
C8h (200) (NetWare4) Ring2 segment must be moveable
C9h (201) (NetWare4) relocation chain exceeds segment limit
CAh (202) (NetWare4) infinite loop in relocation chain
CBh (203) (NetWare4) environment variable not found
CCh (204) (NetWare4) not current country
CDh (205) (NetWare4) no signal sent
CEh (206) (NetWare4) file name not 8.3
CFh (207) (NetWare4) Ring2 stack in use
D0h (208) (NetWare4) meta expansion is too long
D1h (209) (NetWare4) invalid signal number
D2h (210) (NetWare4) inactive thread
D3h (211) (NetWare4) file system information not available
D4h (212) (NetWare4) locked error
D5h (213) (NetWare4) attempted to execute non-family API call in DOS mode
D6h (214) (NetWare4) too many modules
D7h (215) (NetWare4) nesting not allowed
E6h (230) (NetWare4) non-existent pipe, or bad operation
E7h (231) (NetWare4) pipe is busy
E8h (232) (NetWare4) no data available for nonblocking read
E9h (233) (NetWare4) pipe disconnected by server
EAh (234) (NetWare4) more data available
FFh (255) (NetWare4) invalid drive
SeeAlso: #1368,#1369,#1370,#1649
Format of media ID structure:
Offset Size Description (Table 1367)
00h 12 BYTEs ASCIZ volume label of required disk
0Ch DWORD serial number (DOS 4.0+)
(Table 1368)
Values for DOS Error Class:
01h (1) out of resource (storage space or I/O channels)
02h (2) temporary situation (file or record lock)
03h (3) authorization (denied access)
04h (4) internal (system software bug)
05h (5) hardware failure
06h (6) system failure (configuration file missing or incorrect)
07h (7) application program error
08h (8) not found
09h (9) bad format
0Ah (10) locked
0Bh (11) media error
0Ch (12) already exists
0Dh (13) unknown
SeeAlso: #1366,#1369,#1370
(Table 1369)
Values for DOS Suggested Action:
01h retry
02h delayed retry
03h prompt user to reenter input
04h abort after cleanup
05h immediate abort
06h ignore
07h retry after user intervention
SeeAlso: #1366,#1368,#1370
(Table 1370)
Values for DOS Error Locus:
01h unknown or not appropriate
02h block device (disk error)
03h network related
04h serial device (timeout)
05h memory related
SeeAlso: #1366,#1368,#1369
--------D-2159--BX0001-----------------------
INT 21 - European MS-DOS 4.0 - GET HARD ERROR INFORMATION
AH = 59h
BX = 0001h
Return: ES:DI -> hard error information packet (see #1371) for most recent
hard (critical) error
SeeAlso: AH=59h/BX=0000h,AH=95h,INT 24
Format of European MS-DOS 4.0 hard error information packet:
Offset Size Description (Table 1371)
00h WORD contents of AX at system entry
02h WORD Process ID which encountered error
04h WORD contents of AX at time of error
06h BYTE error type
00h physical I/O error
01h disk change request
02h file sharing violation
03h FCB problem
04h file locking violation
05h bad FAT
06h network detected error
07h BYTE INT 24 error code
08h WORD extended error code (see #1366)
0Ah DWORD pointer to associated device
--------D-215A-------------------------------
INT 21 - DOS 3.0+ - CREATE TEMPORARY FILE
AH = 5Ah
CX = file attribute (see #1107 at AX=4301h)
DS:DX -> ASCIZ path ending with a '\' + 13 zero bytes to receive the
generated filename
Return: CF clear if successful
AX = file handle opened for read/write in compatibility mode
DS:DX pathname extended with generated name for temporary file
CF set on error
AX = error code (03h,04h,05h) (see #1366)
Desc: creates a file with a unique name which must be explicitly deleted
BUGS: COMPAQ DOS 3.31 hangs if the pathname is at XXXXh:0000h; it apparently
wraps around to the end of the segment
MS-DOS 5.00 revisions A and B and PC-DOS 5.00 revision A reportedly
hang the system if the specified path is the root directory and the
root directory is full (no free directory entries)
Mark Incley <mincley@krisalis.demon.co.uk> reports that this function
hangs in DOS 6.2x if the name includes two consecutive path
separators (e.g. C:\\ )
Notes: under the FlashTek X-32 DOS extender, the path pointer is in DS:EDX
MS-DOS 3.0-4.0 and DR-DOS 3.4-5.0 generate the filename as a sequence
of hex digits based on the current date and time; MS-DOS 6+,
DR-DOS 6, and Novell DOS 7 use letters A-P in place of hex digits
SeeAlso: AH=3Ch,AH=5Bh
--------D-215B-------------------------------
INT 21 - DOS 3.0+ - CREATE NEW FILE
AH = 5Bh
CX = file attribute (see #1107 at AX=4301h)
DS:DX -> ASCIZ filename
Return: CF clear if successful
AX = file handle opened for read/write in compatibility mode
CF set on error
AX = error code (03h,04h,05h,50h) (see #1366)
Notes: unlike AH=3Ch, this function will fail if the specified file exists
rather than truncating it; this permits its use in creating semaphore
files because it is an atomic "test and set" operation
under the FlashTek X-32 DOS extender, the filename pointer is in DS:EDX
SeeAlso: AH=3Ch,AH=5Ah
--------D-215C-------------------------------
INT 21 - DOS 3.0+ - "FLOCK" - RECORD LOCKING
AH = 5Ch
AL = subfunction
00h lock region of file
01h unlock region of file
BX = file handle
CX:DX = start offset of region within file
SI:DI = length of region in bytes
Return: CF clear if successful
CF set on error
AX = error code (01h,06h,21h,24h) (see #1366)
Notes: error returned unless SHARE or network installed
an unlock call must specify the same region as some prior lock call
locked regions become entirely inaccessible to other processes
duplicate handles created with AH=45h or AH=46h inherit locks, but
handles inherited by child processes (see AH=4Bh) do not
under DR DOS 3.41 and 5.0, if a process opens a file without the no-
inherit flag and then starts a child, any locks set by the parent
are ignored, and the child will only get an error if it tries to
lock an area previously locked by the parent process
SeeAlso: AX=440Bh,AH=BCh,AH=BEh,INT 2F/AX=110Ah,INT 2F/AX=110Bh
--------D-215D00-----------------------------
INT 21 U - DOS 3.1+ internal - SERVER FUNCTION CALL
AX = 5D00h
DS:DX -> DOS parameter list (see #1372)
DPL contains all register values for a call to INT 21h
Return: as appropriate for function being called
Notes: does not check AH. Out of range values will crash the system
executes using specified computer ID and process ID
sharing delay loops skipped
a special sharing mode is enabled to handle FCBs opened across network
wildcards are enabled for DELETE (AH=41h) and RENAME (AH=56h) under
MS-DOS; under DR DOS 3.41, wildcards corrupt the filesystem; and
under DR DOS 5.0-6.0, the call returns error code 03h due to improper
support for the server function call (refer to BUGS: section below)
an extra file attribute parameter is enabled for OPEN (AH=3Dh),
DELETE (AH=41h), and RENAME (AH=56h)
functions which take filenames require canonical names (as returned
by AH=60h); this is apparently to prevent multi-hop file forwarding
BUGS: the OS/2 2.0 DOS Boot Session incorrectly maps DOS drive letters,
seemingly ignoring HPFS drives
DR DOS 5.0-6.0 merely recursively call INT 21 after loading the
registers from the DPL, leading to problems for peer-to-peer
networks
SeeAlso: AH=3Dh,AH=41h,AH=56h,AH=60h
Format of DOS parameter list:
Offset Size Description (Table 1372)
00h WORD AX
02h WORD BX
04h WORD CX
06h WORD DX
08h WORD SI
0Ah WORD DI
0Ch WORD DS
0Eh WORD ES
10h WORD reserved (0)
12h WORD computer ID (0 = current system)
14h WORD process ID (PSP segment on specified computer)
Note: under Windows Enhanced mode, the computer ID is normally the virtual
machine ID (see INT 2F/AX=1683h), though this can reportedly be
changed by setting UniqueDOSPSP= in SYSTEM.INI
--------D-215D01-----------------------------
INT 21 U - DOS 3.1+ internal - COMMIT ALL FILES FOR SPECIFIED COMPUTER/PROCESS
AX = 5D01h
DS:DX -> DOS parameter list (see #1372), only computer ID and
process ID fields used
Return: CF set on error
AX = error code (see #1366)
CF clear if successful
Notes: flushes buffers and updates directory entries for each file which has
been written to; if remote file, calls INT 2F/AX=1107h
the computer ID and process ID are stored but ignored under DOS 3.3
not supported by DR DOS 3.41 and 5.0; returns error code 01h
SeeAlso: AH=0Dh,AH=68h,INT 2F/AX=1107h
--------D-215D02-----------------------------
INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE FILE BY NAME
AX = 5D02h
DS:DX -> DOS parameter list (see #1372), only fields DX, DS,
computer ID, and process ID used
DPL's DS:DX -> ASCIZ name of file to close
Return: CF set on error
AX = error code (see #1366)
CF clear if successful
Notes: error unless SHARE is loaded (calls [SysFileTable-28h])
(see #1322 at AH=52h)
name must be canonical fully-qualified, such as returned by AH=60h
not supported by DR DOS 3.41 and 5.0; returns error code 01h
not supported by Novell DOS 7
SeeAlso: AX=5D03h,AX=5D04h,AH=3Eh,AH=60h
--------D-215D03-----------------------------
INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN COMPUTER
AX = 5D03h
DS:DX -> DOS parameter list (see #1372), only computer ID used
Return: CF set on error
AX = error code (see #1366)
CF clear if successful
Notes: error unless SHARE is loaded (calls [SysFileTable-30h])
(see #1322 at AH=52h)
not supported by DR DOS 3.41 and 5.0; returns error code 01h
not supported by Novell DOS 7
SeeAlso: AX=5D02h,AX=5D04h
--------D-215D04-----------------------------
INT 21 U - DOS 3.1+ internal - SHARE.EXE - CLOSE ALL FILES FOR GIVEN PROCESS
AX = 5D04h
DS:DX -> DOS parameter list (see #1372), only computer ID and
process ID fields used
Return: CF set on error
AX = error code (see #1366)
CF clear if successful
Notes: error unless SHARE is loaded (calls [SysFileTable-2Ch])
(see #1322 at AH=52h)
not supported by DR DOS 3.41 and 5.0; returns error code 01h
not supported by Novell DOS 7
SeeAlso: AX=5D02h,AX=5D03h,INT 2F/AX=111Dh
--------D-215D05-----------------------------
INT 21 U - DOS 3.1+ internal - SHARE.EXE - GET OPEN FILE LIST ENTRY
AX = 5D05h
DS:DX -> DOS parameter list (see #1372)
DPL's BX = index of sharing record (see #1323 at AH=52h)
DPL's CX = index of SFT in sharing record's SFT list
Return: CF clear if successful
ES:DI -> ASCIZ filename
BX = network machine number of SFT's owner
CX = number of locks held by SFT's owner
CF set if either index out of range
AX = 0012h (no more files)
Notes: error unless SHARE is loaded (calls [SysFileTable-18h])
(see #1322 at AH=52h)
names are always canonical fully-qualified, such as returned by AH=60h
not supported by DR DOS 3.41 and 5.0 and Novell DOS 7, but does not
return an error, instead destroying AX
SeeAlso: AH=5Ch,AH=60h
--------D-215D06-----------------------------
INT 21 U - DOS 3.0+ internal - GET ADDRESS OF DOS SWAPPABLE DATA AREA
AX = 5D06h
Return: CF set on error
AX = error code (see #1366)
CF clear if successful
DS:SI -> nonreentrant data area (includes all three DOS stacks)
(critical error flag is first byte) (see #1373)
CX = size in bytes of area which must be swapped while in DOS
DX = size in bytes of area which must always be swapped
Notes: the Critical Error flag is used in conjunction with the InDOS flag
(see AH=34h) to determine when it is safe to enter DOS from a TSR
setting CritErr flag allows use of functions 50h/51h from INT 28h under
DOS 2.x by forcing use of correct stack
swapping the data area allows reentering DOS unless DOS is in a
critical section delimited by INT 2A/AH=80h and INT 2A/AH=81h,82h
under DOS 4.0, AX=5D0Bh should be used instead of this function
SHARE and other DOS utilities consult the byte at offset 04h in the
DOS data segment (see INT 2F/AX=1203h) to determine the SDA format
in use: 00h = DOS 3.x, 01h = DOS 4.0-6.0, other = error.
DR DOS 3.41+ supports this function, but the SDA format beyond the
first 18h bytes is completely different from MS-DOS
SeeAlso: AX=5D0Bh,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h
Format of DOS 3.10-3.30 Swappable Data Area:
Offset Size Description (Table 1373)
-34 BYTE (DOS 3.10+) printer echo flag (00h off, FFh active)
-31 BYTE (DOS 3.30) current switch character
-30 BYTE current memory allocation strategy (see AH=58h)
-28 BYTE (DOS 3.30) incremented on each INT 21/AX=5E01h call
-27 16 BYTEs (DOS 3.30) machine name set by INT 21/AX=5E01h
-11 5 WORDs zero-terminated list of offsets which need to be patched to
enable critical-section calls (see INT 2A/AH=80h)
-1 BYTE unused padding
---start of actual SDA---
00h BYTE critical error flag ("ErrorMode")
01h BYTE InDOS flag (count of active INT 21 calls)
02h BYTE drive on which current critical error occurred, or FFh
(DR DOS sets to drive number during INT 24, 00h otherwise)
03h BYTE locus of last error
04h WORD extended error code of last error
06h BYTE suggested action for last error
07h BYTE class of last error
08h DWORD ES:DI pointer for last error
0Ch DWORD current DTA (Disk Transfer Address)
note: may point into SDA during the DOS EXEC function
(see AH=4Bh), so programs which swap the SDA must be
prepared to move the DTA to a private buffer if they
might be invoked during an EXEC
10h WORD current PSP
12h WORD stores SP across an INT 23
14h WORD return code from last process termination (zerod after reading
with AH=4Dh)
16h BYTE current drive
17h BYTE extended break flag
---remainder need only be swapped if in DOS---
18h WORD value of AX on call to INT 21
1Ah WORD PSP segment for sharing/network
1Ch WORD network machine number for sharing/network (0000h = us)
1Eh WORD first usable memory block found when allocating memory
20h WORD best usable memory block found when allocating memory
22h WORD last usable memory block found when allocating memory
24h WORD memory size in paragraphs (used only during initialization)
26h WORD last entry checked during directory search
28h BYTE flag: INT 24 returned Fail
29h BYTE flags: allowable INT 24 actions (passed to INT 24 in AH)
2Ah BYTE directory flag (00h directory, 01h file)
2Bh BYTE flag: FFh if Ctrl-Break termination, 00h otherwise
2Ch BYTE flag: allow embedded blanks in FCB
2Dh BYTE padding (unused)
2Eh BYTE day of month
2Fh BYTE month
30h WORD year - 1980
32h WORD number of days since 1-1-1980
34h BYTE day of week (0 = Sunday)
35h BYTE flag: console swapped during read from device
36h BYTE flag: safe to call INT 28 if nonzero
37h BYTE flag: if nonzero, INT 24 Abort turned into INT 24 Fail
(set only during process termination)
38h 26 BYTEs device driver request header (see #2284 at INT 2F/AX=0802h)
52h DWORD pointer to device driver entry point (used in calling driver)
56h 22 BYTEs device driver request header for I/O calls
6Ch 14 BYTEs device driver request header for disk status check
7Ah DWORD pointer to device I/O buffer???
7Eh WORD ???
80h WORD ???
82h BYTE type of PSP copy (00h=simple for INT 21/AH=26h, FFh=make child)
83h BYTE padding (unused)
84h 3 BYTEs 24-bit user number (see AH=30h)
87h BYTE OEM number (see #1082 at AH=30h)
88h WORD offset to error code conversion table for INT 25/INT 26
8Ah 6 BYTEs CLOCK$ transfer record (see #1374)
90h BYTE device I/O buffer for single-byte I/O functions
91h BYTE padding??? (unused)
92h 128 BYTEs buffer for filename
112h 128 BYTEs buffer for filename
192h 21 BYTEs findfirst/findnext search data block (see #1312 at AH=4Eh)
1A7h 32 BYTEs directory entry for found file (see #1041 at AH=11h)
1C7h 81 BYTEs copy of current directory structure for drive being accessed
218h 11 BYTEs FCB-format filename for device name comparison
223h BYTE terminating NUL for above filename
224h 11 BYTEs wildcard destination specification for rename (FCB format)
22Fh BYTE terminating NUL for above spec
230h BYTE ???
231h WORD destination file/directory starting sector
233h 5 BYTEs ???
238h BYTE extended FCB file attribute
239h BYTE type of FCB (00h regular, FFh extended)
23Ah BYTE directory search attributes
23Bh BYTE file open/access mode
23Ch BYTE file found/delete flag
bit 0: file found
bit 4: file deleted
23Dh BYTE flag: device name found on rename, or file not found
23Eh BYTE splice flag (file name and directory name together)
23Fh BYTE flag indicating how DOS function was invoked
(00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
240h BYTE sector position within cluster
241h BYTE flag: translate sector/cluster (00h no, 01h yes)
242h BYTE flag: 00h if read, 01h if write
243h BYTE current working drive number
244h BYTE cluster factor
245h BYTE flag: cluster split mode
246h BYTE line edit (AH=0Ah) insert mode flag (nonzero = on)
247h BYTE canonicalized filename referred to existing file/dir if FFh
248h BYTE volume ID flag
249h BYTE type of process termination (00h-03h) (see AH=4Dh)
24Ah BYTE file create flag (00h = no, search only)
24Bh BYTE value with which to replace first byte of deleted file's name
(normally E5h, but 00h as described under INT 21/AH=13h)
24Ch DWORD pointer to Drive Parameter Block for critical error invocation
temp: used during process termination
250h DWORD pointer to stack frame containing user registers on INT 21
254h WORD stores SP across INT 24
256h DWORD pointer to DOS Drive Parameter Block for ???
25Ah WORD saving partial cluster number
25Ch WORD temp: sector of work current cluster
25Eh WORD high part of cluster number (only low byte referenced)
260h WORD ??? temp
262h BYTE Media ID byte returned by AH=1Bh,1Ch
263h BYTE padding (unused)
264h DWORD pointer to device header when filename is character device
268h DWORD pointer to current SFT
26Ch DWORD pointer to current directory structure for drive being accessed
270h DWORD pointer to caller's FCB
274h WORD number of SFT to which file being opened will refer
276h WORD temporary storage for file handle
278h DWORD pointer to a JFT entry in process handle table
(see #1066 at AH=26h)
27Ch WORD offset in DOS DS of first filename argument
27Eh WORD offset in DOS DS of second filename argument
280h WORD offset of last component in pathname or FFFFh
282h WORD offset of transfer address to add
284h WORD last relative cluster within file being accessed
286h WORD temp: absolute cluster number being accessed
288h WORD directory sector number
28Ah WORD ??? current cluster number
28Ch WORD current relative sector number within file
28Eh WORD current sector number
290h WORD current byte offset within sector
292h DWORD current offset in file
296h DWORD temp: file byte count
29Ah WORD temp: file byte count
29Ch WORD free file cluster entry
29Eh WORD last file cluster entry
2A0h WORD next file cluster number
2A2h DWORD number of bytes appended to file
2A6h DWORD pointer to current work disk buffer
2AAh DWORD pointer to working SFT
2AEh WORD used by INT 21 dispatcher to store caller's BX
2B0h WORD used by INT 21 dispatcher to store caller's DS
2B2h WORD temporary storage while saving/restoring caller's registers
2B4h DWORD pointer to prev call frame (offset 250h) if INT 21 reentered
also switched to for duration of INT 24
2B8h 21 BYTEs FindFirst search data for source file(s) of a rename operation
(see #1312 at AH=4Eh)
2CDh 32 BYTEs directory entry for file being renamed (see #1041 at AH=11h)
2EDh 331 BYTEs critical error stack
403h 35 BYTEs scratch SFT
438h 384 BYTEs disk stack (functions greater than 0Ch, INT 25,INT 26)
5B8h 384 BYTEs character I/O stack (functions 01h through 0Ch)
---DOS 3.2,3.3x only---
738h BYTE device driver lookahead flag (usually printer)
(see AH=64h"DOS 3.2+")
739h BYTE volume change flag
73Ah BYTE flag: virtual open
73Bh BYTE ???
SeeAlso: #1376
Format of CLOCK$ transfer record:
Offset Size Description (Table 1374)
00h WORD number of days since 1-Jan-1980
02h BYTE minutes
03h BYTE hours
04h BYTE hundredths of second
05h BYTE seconds
--------D-215D07-----------------------------
INT 21 U - DOS 3.1+ network - GET REDIRECTED PRINTER MODE
AX = 5D07h
Return: DL = mode
00h redirected output is combined
01h redirected output in separate print jobs
SeeAlso: AX=5D08h,AX=5D09h,INT 2F/AX=1125h
--------D-215D08-----------------------------
INT 21 U - DOS 3.1+ network - SET REDIRECTED PRINTER MODE
AX = 5D08h
DL = mode
00h redirected output is combined
01h redirected output placed in separate jobs, start new print job
now
SeeAlso: AX=5D07h,AX=5D09h,INT 2F/AX=1125h
--------D-215D09-----------------------------
INT 21 U - DOS 3.1+ network - FLUSH REDIRECTED PRINTER OUTPUT
AX = 5D09h
Notes: forces redirected printer output to be printed, and starts a new print
job
this function is also supported by 10Net, which calls it Terminate All
Spool Jobs, and does not flush if in "combine" mode
SeeAlso: AX=5D07h,AX=5D08h,INT 2F/AX=1125h
--------D-215D0A-----------------------------
INT 21 - DOS 3.1+ - SET EXTENDED ERROR INFORMATION
AX = 5D0Ah
DS:DX -> 11-word DOS parameter list (see #1372)
Return: nothing. next call to AH=59h will return values from fields AX,BX,CX,
DX,DI, and ES in corresponding registers
Notes: documented for DOS 5+, but undocumented in earlier versions
the MS-DOS Programmer's Reference incorrectly states that this call was
introduced in DOS 4, and fails to mention that the ERROR structure
passed to this function is a DOS parameter list.
BUGS: DR DOS 3.41 and 5.0 read the value for ES from the DS field of the
DPL; fortunately, MS-DOS ignores the DS field, allowing a generic
routine which sets both DS and ES fields to the same value
Novell DOS 7 does not save the pointer, which is always reported as
0000h:0000h by AH=59h
SeeAlso: AH=59h/BX=0000h
--------D-215D0B-----------------------------
INT 21 OU - DOS 4.x only internal - GET DOS SWAPPABLE DATA AREAS
AX = 5D0Bh
Return: CF set on error
AX = error code (see #1366)
CF clear if successful
DS:SI -> swappable data area list (see #1375)
Notes: copying and restoring the swappable data areas allows DOS to be
reentered unless it is in a critical section delimited by calls to
INT 2A/AH=80h and INT 2A/AH=81h,82h
SHARE and other DOS utilities consult the byte at offset 04h in the
DOS data segment (see INT 2F/AX=1203h) to determine the SDA format
in use: 00h = DOS 3.x, 01h = DOS 4.0-6.0, other = error.
DOS 5+ use the SDA format listed below, but revert back to the DOS 3.x
call for finding the SDA (see #1373)
SeeAlso: AX=5D06h,INT 2A/AH=80h,INT 2A/AH=81h,INT 2A/AH=82h,INT 2F/AX=1203h
Format of DOS 4.x swappable data area list:
Offset Size Description (Table 1375)
00h WORD count of data areas
02h N BYTEs "count" copies of data area record
Offset Size Description
00h DWORD address
04h WORD length and type
bit 15 set if swap always, clear if swap in DOS
bits 14-0: length in bytes
SeeAlso: #1376
Format of DOS 4.0-6.0 swappable data area:
Offset Size Description (Table 1376)
-34 BYTE printer echo flag (00h off, FFh active)
-31 BYTE current switch character (ignored by DOS 5+)
-30 BYTE current memory allocation strategy (see AH=58h)
-28 BYTE incremented on each INT 21/AX=5E01h call
-27 16 BYTEs machine name set by INT 21/AX=5E01h
-11 5 WORDs zero-terminated list of offsets which need to be patched to
enable critical-section calls (see INT 2A/AH=80h)
(all offsets are 0D0Ch, but this list is still present for
DOS 3.x compatibility)
-1 BYTE unused padding
---start of actual SDA---
00h BYTE critical error flag ("ErrorMode")
01h BYTE InDOS flag (count of active INT 21 calls)
02h BYTE drive on which current critical error occurred or FFh
03h BYTE locus of last error
04h WORD extended error code of last error
06h BYTE suggested action for last error
07h BYTE class of last error
08h DWORD ES:DI pointer for last error
0Ch DWORD current DTA (Disk Transfer Address)
note: may point into SDA during the DOS EXEC function
(see AH=4Bh), so programs which swap the SDA must be
prepared to move the DTA to a private buffer if they
might be invoked during an EXEC
10h WORD current PSP
12h WORD stores SP across an INT 23
14h WORD return code from last process termination (zerod after reading
with AH=4Dh)
16h BYTE current drive
17h BYTE extended break flag
18h BYTE flag: code page switching
19h BYTE flag: copy of previous byte in case of INT 24 Abort
---remainder need only be swapped if in DOS---
1Ah WORD value of AX on call to INT 21
1Ch WORD PSP segment for sharing/network
1Eh WORD network machine number for sharing/network (0000h = us)
20h WORD first usable memory block found when allocating memory
22h WORD best usable memory block found when allocating memory
24h WORD last usable memory block found when allocating memory
26h WORD memory size in paragraphs (used only during initialization)
28h WORD last entry checked during directory search
2Ah BYTE flag: nonzero if INT 24 Fail
2Bh BYTE flags: allowable INT 24 responses (passed to INT 24 in AH)
2Ch BYTE flag: do not set directory if nonzero
2Dh BYTE flag: program aborted by ^C
2Eh BYTE flag: allow embedded blanks in FCB
may also allow use of "*" wildcard in FCBs
2Fh BYTE padding (unused)
30h BYTE day of month
31h BYTE month
32h WORD year - 1980
34h WORD number of days since 1-1-1980
36h BYTE day of week (0 = Sunday)
37h BYTE flag: console swapped during read from device
38h BYTE flag: safe to call INT 28 if nonzero
39h BYTE flag: abort currently in progress, turn INT 24 Abort into Fail
3Ah 30 BYTEs device driver request header (see #2284 at INT 2F/AX=0802h) for
device calls
58h DWORD pointer to device driver entry point (used in calling driver)
5Ch 22 BYTEs device driver request header for I/O calls
72h 14 BYTEs device driver request header for disk status check
80h DWORD pointer to device I/O buffer
84h WORD ???
86h WORD ??? (0)
88h BYTE type of PSP copy (00h=simple for INT 21/AH=26h, FFh=make child)
89h DWORD start offset of file region to lock/unlock
8Dh DWORD length of file region to lock/unlock
91h BYTE padding (unused)
92h 3 BYTEs 24-bit user number (see AH=30h)
95h BYTE OEM number (see #1082 at AH=30h)
96h 6 BYTEs CLOCK$ transfer record (see #1374 at AX=5D06h)
9Ch BYTE device I/O buffer for single-byte I/O functions
9Dh BYTE padding???
9Eh 128 BYTEs buffer for filename
11Eh 128 BYTEs buffer for filename
19Eh 21 BYTEs findfirst/findnext search data block (see #1312 at AH=4Eh)
1B3h 32 BYTEs directory entry for found file (see #1082 at AH=11h)
1D3h 88 BYTEs copy of current directory structure for drive being accessed
22Bh 11 BYTEs FCB-format filename for device name comparison
236h BYTE terminating NUL for above filename
237h 11 BYTEs wildcard destination specification for rename (FCB format)
242h BYTE terminating NUL for above filespec
243h BYTE ???
244h WORD ???
246h 5 BYTEs ???
24Bh BYTE extended FCB file attributes
24Ch BYTE type of FCB (00h regular, FFh extended)
24Dh BYTE directory search attributes
24Eh BYTE file open/access mode
24Fh BYTE ??? flag bits
reportedly 00h when deleting a file under MSDOS 5.0
250h BYTE flag: device name found on rename, or file not found
251h BYTE splice flag??? (file name and directory name together)
252h BYTE flag indicating how DOS function was invoked
(00h = direct INT 20/INT 21, FFh = server call AX=5D00h)
253h BYTE sector position within cluster
254h BYTE ??? (flag: translate sector/cluster)
255h BYTE ??? (flag: 00h if read, 01h if write)
256h BYTE current working drive number
257h BYTE cluster factor
258h BYTE ???
259h BYTE line edit (AH=0Ah) insert mode flag (nonzero = on)
25Ah BYTE canonicalized filename referred to existing file/dir if FFh
25Bh BYTE volume ID flag
25Ch BYTE type of process termination (00h-03h) (see AH=4Dh)
25Dh BYTE ???
25Eh BYTE ??? file create flag (00h = no, search only)
25Fh BYTE ??? (value for deleted file's first byte)
260h DWORD pointer to Drive Parameter Block for critical error invocation
264h DWORD pointer to stack frame containing user registers on INT 21
268h WORD stores SP across INT 24
26Ah DWORD pointer to DOS Drive Parameter Block for ???
26Eh WORD segment of disk buffer
270h WORD ??? (saving partial cluster number)
272h WORD ??? (temp: sector of work current cluster)
274h WORD ??? (high part of cluster number)
276h WORD ??? (temp)
278h BYTE Media ID byte returned by AH=1Bh,1Ch
279h BYTE ??? (doesn't seem to be referenced)
27Ah DWORD pointer to device header if filename is character device
27Eh DWORD pointer to current SFT
282h DWORD pointer to current directory structure for drive being accessed
286h DWORD pointer to caller's FCB
28Ah WORD SFT index to which file being opened will refer
28Ch WORD temporary storage for file handle
28Eh DWORD pointer to a JFT entry in process handle table
(see #1066 at AH=26h)
292h WORD offset in DOS DS of first filename argument
294h WORD offset in DOS DS of second filename argument
296h WORD ??? (offset of last component in pathname or FFFFh)
298h WORD offset of transfer address to add
29Ah WORD last relative cluster within file being accessed
29Ch WORD temp: absolute cluster number being accessed
29Eh WORD directory sector number
2A0h WORD ???
2A2h WORD ??? directory cluster number
2A4h DWORD current relative sector number within file
2A8h DWORD ??? (current sector number)
2ACh WORD ??? (current byte offset within sector)
2AEh DWORD current offset in file
2B2h WORD ???
2B4h WORD bytes in partial sector
2B6h WORD number of sectors
2B8h WORD ??? (free file cluster entry)
2BAh WORD ??? (last file cluster entry)
2BCh WORD ??? (next file cluster number)
2BEh DWORD number of bytes appended to file
2C2h DWORD pointer to current work disk buffer
2C6h DWORD pointer to working SFT
2CAh WORD used by INT 21 dispatcher to store caller's BX
2CCh WORD used by INT 21 dispatcher to store caller's DS
2CEh WORD temporary storage while saving/restoring caller's registers
2D0h DWORD pointer to prev call frame (offset 264h) if INT 21 reentered
also switched to for duration of INT 24
2D4h WORD open mode/action for INT 21/AX=6C00h
2D6h BYTE ??? (set to 00h by INT 21h dispatcher, 02h when a read is
performed, and 01h or 03h by INT 21/AX=6C00h)
2D7h WORD ??? apparently unused
2D9h DWORD stored ES:DI for AX=6C00h
2DDh WORD extended file open action code (see #1459 at AX=6C00h)
2DFh WORD extended file open attributes (see #1458 at AX=6C00h)
2E1h WORD extended file open file mode (see AX=6C00h)
2E3h DWORD pointer to filename to open (see AX=6C00h)
2E7h WORD ??? temp DX storage or 0000h or temp data buffer size from
disk buffer
2E9h WORD ???
2EBh BYTE ???
2ECh WORD stores DS during call to [List-of-Lists + 37h]
2EEh WORD ???
2F0h BYTE ???
2F1h WORD ??? bit flags
2F3h DWORD pointer to user-supplied filename
2F7h DWORD pointer to ???
2FBh WORD stores SS during call to [List-of-Lists + 37h]
2FDh WORD stores SP during call to [List-of-Lists + 37h]
2FFh BYTE flag, nonzero if stack switched in calling [List-of-Lists+37h]
300h 21 BYTEs FindFirst search data for source file(s) of a rename operation
(see #1312 at AH=4Eh)
315h 32 BYTEs directory entry for file being renamed (see #1041 at AH=11h)
335h 331 BYTEs critical error stack
480h 384 BYTEs disk stack (functions greater than 0Ch, INT 25,INT 26)
600h 384 BYTEs character I/O stack (functions 01h through 0Ch)
780h BYTE device driver lookahead flag (usually printer)
(see AH=64h"DOS 3.2+")
781h BYTE volume change flag
782h BYTE flag: virtual open
783h BYTE ???
784h WORD ???
786h WORD ???
788h WORD ???
78Ah WORD ???
SeeAlso: #1373,#1375
--------D-215E00-----------------------------
INT 21 - DOS 3.1+ network - GET MACHINE NAME
AX = 5E00h
DS:DX -> 16-byte buffer for ASCII machine name
Return: CF clear if successful
CH = validity
00h name invalid
nonzero valid
CL = NetBIOS number for machine name
DS:DX buffer filled with blank-paded name
CF set on error
AX = error code (01h) (see #1366 at AH=59h)
Note: supported by OS/2 v1.3+ compatibility box, PC-NFS
SeeAlso: AX=5E01h
--------N-215E00-----------------------------
INT 21 - 10NET v5.0 - GET MACHINE NAME
AX = 5E00h
Return: CL = redirector's NetBIOS name number
ES:DI -> network node ID
SeeAlso: AX=5E01h"10NET"
--------D-215E01CH00-------------------------
INT 21 - DOS 3.1+ network - SET MACHINE NAME
AX = 5E01h
CH = 00h undefine name (make it invalid)
<> 0 define name
CL = name number
DS:DX -> 15-character blank-padded ASCIZ name
SeeAlso: AX=5E00h
--------N-215E01-----------------------------
INT 21 - 10NET v5.0 - GET LOCAL 10NET CONFIGURATION TABLE
AX = 5E01h
CX = length of buffer
DS:DX -> buffer for 10Net configuration table (see #1377)
Return: DS:DX buffer filled
SeeAlso: AX=5E00h"10NET",INT 6F/AH=02h,INT 6F/AH=03h
Format of 10Net Configuration Table:
Offset Size Description (Table 1377)
00h 8 BYTEs user name
08h 15 BYTEs node ID
17h 3 BYTEs unique portion of Ethernet address
1Ah BYTE Who group number
1Bh WORD services mask (see #1379)
1Dh DWORD serial number
21h BYTE maximum concurrent users with same serial number allowed on net
22h BYTE chat mask (see #1380)
23h BYTE internal system bits (see #1381)
24h 9 BYTEs version number in format MM.mm.xxx
2Dh BYTE flag: 01h if machine is a PS/2
2Eh BYTE flag: 03h if 80386
2Fh BYTE spool termination mode: 01h concatenate, 02h truncate
(see AX=5D09h)
30h WORD autospool timeout in clock ticks
32h WORD monitor timeout in clock ticks
34h WORD unused
36h WORD chat timeout in clock ticks
38h WORD netBIOS session timeout in half-seconds
3Ah WORD datagram send timeout in seconds
3Ch WORD keyboard value for initiating chat mode
3Eh WORD Who timeout in clock ticks
40h BYTE flag: 01h if server should process rom NetBIOS Post return
41h BYTE flag: 01h if FCBs should be recycled
42h 3 BYTEs signature "DBG"
45h BYTE last interrupt (21h or 6Fh)
46h BYTE last INT 21 AH value
47h BYTE last INT 6F AH value
48h WORD last item posted
4Ah WORD last item free-posted
4Ch WORD last item handled by server
4Eh WORD last redirector send NCB
50h WORD last redirector receive NCB
52h 4 BYTEs signature "TABL"
56h WORD offset of datagram buffer table header (see #1378)
58h WORD offset of chat buffer table header (see #1378)
5Ah WORD offset of Raw buffer table header (see #1378)
5Ch WORD offset of Workstation buffer table header (see #1378)
5Eh WORD offset of server receive-any table header (see #1378)
60h WORD offset of Tiny buffer table header (see #1378)
62h WORD offset of zero-length buffer table (NCBs) (see #1378)
64h WORD offset of Rdr (Redirector Mount) table header (see #1378)
66h WORD offset of Ntab (Redirector Session) table header (see #1378)
68h WORD offset of FCB table header (see #1378)
6Ah WORD offset of user file handle table header (see #1378)
6Ch WORD offset of workstation printer RDR extension table header
6Eh WORD offset of server shared device table header (see #1378)
70h WORD offset of server connection table header (see #1378)
72h WORD offset of server login table header (see #1378)
74h WORD offset of server file table header (see #1378)
76h WORD offset of server shared file table header (see #1378)
78h WORD offset of server record lock table header (see #1378)
7Ah WORD offset of remote printer claim table header (see #1378)
7Ch WORD offset of remote printer device table header (see #1378)
7Eh WORD offset of print server mount table header (see #1378)
80h WORD offset of print server sessions table header (see #1378)
82h WORD offset of print server print job structure table header
84h WORD offset of print server pooled device table header (see #1378)
86h WORD size of workstation buffer
88h WORD size of server receive-any buffer
8Ah WORD size of server raw I/O buffer
8Ch 6 BYTEs reserved
92h DWORD pointer to profile pathname
96h BYTE datagram retry count
97h BYTE NetBIOS LAN adapter number
98h 6 BYTEs physical Ethernet address
9Eh BYTE NetBIOS server name number
9Fh BYTE NetBIOS redirector name number
A0h BYTE 10Net interrupt number
A1h BYTE flag: chat is loaded
A2h BYTE flag: INT 6F APIs permanently loaded
A3h BYTE flag: file security present
A4h WORD reserved
A6h BYTE fixed mount bitmask for drives A:-H:
A7h BYTE reserved
A8h WORD 10Net system flags (see #1382)
AAh BYTE monitor flags (see #1383)
ABh 5 BYTEs reserved
B0h WORD offset of monitor timer block
B2h WORD offset of server timer block
B4h WORD offset of chat timer block
B6h WORD timer chain
B8h 4 BYTEs signature "TALS"
BCh WORD number of 10Net sends
BEh WORD number of 10Net receives
C0h WORD number of no-buffer conditions
C2h WORD number of dropped posted messages
C4h WORD number of server NCB errors
C6h WORD number of redirector NCB errors
C8h WORD number of datagram send/receive errors
CAh WORD number of dropped Whos
CCh WORD number of dropped submits
CEh WORD number of session aborts
D0h BYTE number of NetBIOS interface-busy errors
D1h BYTE last NetBIOS bad post command
D2h BYTE last NetBIOS bad redirector command
D3h BYTE do send datagram send/receive error command
D4h DWORD -> DOS system parameter table
D8h WORD number of DOS physical drives
DAh WORD offset of DOS PSP field in DOS data segment
DCh WORD offset of in-DOS flag in DOS data segment
DEh WORD DOS data segment
E0h WORD offset of DOS SFT in DOS data segment
E2h WORD offset of number-of-physical-units field in DOS data segment
E4h WORD 10Net code segment
E6h WORD 10Net data segment
E8h WORD 10Net common server segment
EAh WORD 10Net file server segment
ECh WORD 10Net print server segment
EEh WORD 10Net remote printer segment
Note: documentation lists field at offset D0h as a WORD, but all following
offsets are as though it were a BYTE; if it is indeed a WORD, all
offsets after D0h must be increased by one byte
Format of 10Net Table Header:
Offset Size Description (Table 1378)
-16 4 BYTEs table identifier
-12 WORD peak number of tables allocated
-10 WORD number of tables currently in use
-8 WORD total number of tables
-6 WORD size of each table
-4 WORD offset of first allocated table
-2 WORD offset of first free table
Bitfields for 10NET services mask:
Bit(s) Description (Table 1379)
0 workstation
1 file server
2 print queue server
3 de-spool server
Bitfields for 10NET chat mask:
Bit(s) Description (Table 1380)
0 chat permitted
1 bell enabled
2 chat keyboard initiated
3 in INT 16 handler
4 in Get Input
5 display has timed out
6 chat is idle
Bitfields for 10NET internal system bits:
Bit(s) Description (Table 1381)
0 submit permitted
1 submit initiated
2 submit executing
3 internal client call/chat/spool/autospool
4 in spool termination
5 print permitted
6 waiting for keyboard input
Bitfields for 10NET System Flags:
Bit(s) Description (Table 1382)
0 in NetBIOS
1 processing INT 28
2 is server
3 in net user-DOS function
4 in DOS user-DOS function
5 in net for user non-DOS function
6 in server DOS function
7 in server non-DOS function
8 in terminate
10 in user on server request
13 in DOS for user on server
14 disable critical error handler
Bitfields for Monitor Flags:
Bit(s) Description (Table 1383)
0 waiting for monitor response
4 in monitor get-input routine
5 monitor display timeout
6 sensing for escape key
--------D-215E02-----------------------------
INT 21 - DOS 3.1+ network - SET NETWORK PRINTER SETUP STRING
AX = 5E02h
BX = redirection list index (see AX=5F02h)
CX = length of setup string
DS:SI -> setup string
Return: CF clear if successful
CF set on error
AX = error code (01h) (see #1366 at AH=59h/BX=0000h)
Note: also supported by 10NET v5.0
SeeAlso: AX=5E03h,INT 2F/AX=111Fh
--------D-215E03-----------------------------
INT 21 - DOS 3.1+ network - GET NETWORK PRINTER SETUP STRING
AX = 5E03h
BX = redirection list index (see AX=5F02h)
ES:DI -> 64-byte buffer for setup string
Return: CF clear if successful
CX = length of setup string
ES:DI buffer filled
CF set on error
AX = error code (01h) (see #1366 at AH=59h/BX=0000h)
Note: also supported by 10NET v5.0, but 10NET is documented as using DS:SI
instead of ES:DI
SeeAlso: AX=5E02h,INT 2F/AX=111Fh
--------D-215E04-----------------------------
INT 21 - DOS 3.1+ network - SET PRINTER MODE
AX = 5E04h
BX = redirection list index (see AX=5F02h)
DX = mode
bit 0: set if binary, clear if text (tabs expanded to blanks)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Note: calls INT 2F/AX=111Fh with 5E04h on stack
SeeAlso: AX=5E05h"DOS",INT 2F/AX=111Fh
--------N-215E04-----------------------------
INT 21 - 10NET v5.0 - INITIATE PRINT JOB
AX = 5E04h
BX = zero-based redirection list index (see AX=5F02h)
DS:DX -> extended workstation printer setup structure (see #1384)
Return: CF clear if successful
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=5E05h"10NET",AX=5E06h"10NET"
Format of 10NET extended workstation printer setup structure:
Offset Size Description (Table 1384)
00h BYTE notification flags (see #1385)
01h BYTE job control mask (see #1386)
02h WORD days to retain file
04h WORD test print length
06h BYTE number of copies to print
07h BYTE compression algorithm
08h BYTE tab width (00h = don't expand)
09h BYTE initiation type (00h normal, 01h non-spooled)
0Ah 38 BYTEs job start operation notification instructions
30h 32 BYTEs comment for job
50h 64 BYTEs output filename or non-spooled file
Bitfields for 10NET notification flags:
Bit(s) Description (Table 1385)
0 user at print start
1 operator at start, with reply
2 user at print completion
3 operator at completion, with reply
4 user on queue switch
5 operator on queue switch, with reply
6 user on print error
Bitfields for 10NET job control mask:
Bit(s) Description (Table 1386)
0 print banner page
1 eject page at end of job
2 mark as "held" (queue but don't print)
3 rush job (queue at top)
4 overwrite file with zeros before deletion
5 hyperspool if possible
--------D-215E05-----------------------------
INT 21 - DOS 3.1+ network - GET PRINTER MODE
AX = 5E05h
BX = redirection list index (see AX=5F02h)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
DX = printer mode (see AX=5E04h)
Note: calls INT 2F/AX=111Fh with 5E05h on stack
SeeAlso: AX=5E04h"DOS",INT 2F/AX=111Fh
--------N-215E05-----------------------------
INT 21 - 10NET v5.0 - TERMINATE PRINT JOB
AX = 5E05h
BX = zero-based redirection list index (see AX=5F02h)
Return: CF clear if successful
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
Note: this call resets the spool termination mode to "truncate"
(see AX=5D08h)
SeeAlso: AX=5E04h"10NET",AX=5E06h
--------N-215E06-----------------------------
INT 21 - 10NET v5.0 - GET/SET 10NET WORKSTATION PRINTER SETUP STRUCTURE
AX = 5E06h
BX = zero-based redirection list index (see AX=5F02h)
CX = operation (06h set, 07h get)
DS:DX -> buffer for setup structure (same as first nine bytes of
workstation printer setup) (see #1384)
Return: CF clear if successful
DS:DX buffer updated on get
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=5E04h"10NET",AX=5E05h"10NET"
--------D-215F00-----------------------------
INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
AX = 5F00h
BL = redirection type
03h printer
04h disk drive
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
BH = redirection state
00h off
01h on
Note: calls INT 2F/AX=111Eh with AX on top of the stack
SeeAlso: AX=5F01h,INT 2F/AX=111Eh
--------D-215F01-----------------------------
INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
AX = 5F01h
BL = redirection type
03h printer
04h disk drive
BH = redirection state
00h off
01h on
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Notes: when redirection is off, the local device (if any) rather than the
remote device is used
calls INT 2F/AX=111Eh with AX on top of the stack
SeeAlso: AX=5F00h,INT 2F/AX=111Eh,INT 60/AX=0002h
--------D-215F02-----------------------------
INT 21 - DOS 3.1+ network - GET REDIRECTION LIST ENTRY
AX = 5F02h
BX = zero-based redirection list index
CX = driver signature
0000h LANtastic
4E57h ('NW') NetWare
DS:SI -> 16-byte buffer for ASCIZ local device name or drive letter
followed by colon
ES:DI -> 128-byte buffer for ASCIZ network name
Return: CF clear if successful
BH = device status
00h valid
01h invalid
02h valid (connected from inside Windows for Workgroups v3.11)
BL = device type
03h printer
04h disk drive
CX = user data previously set with AX=5F03h
DS:SI and ES:DI buffers filled
DX,BP destroyed
CF set on error
AX = error code (01h,12h) (see #1366 at AH=59h/BX=0000h)
Notes: this function is passed through to INT 2F/AX=111Eh by the DOS kernel
error code 12h is returned if BX is greater than the size of the list
also supported by Banyan VINES, PC-NFS, LANtastic, and 10NET
supported by LapLink RemoteAccess but returns the local drive letter;
the remote drive letter can be obtained with INT 2F/AX=Cxxxh
(see INT 2F/AX=C000h"LapLink")
the returned device name may or may not include a colon, depending on
the network software
SeeAlso: AX=5F03h,AX=5F46h,INT 2F/AX=111Eh,INT 2F/AX=C000h"LapLink"
--------D-215F03-----------------------------
INT 21 - DOS 3.1+ network - REDIRECT DEVICE
AX = 5F03h
BL = device type
03h printer
04h disk drive
CX = user data to save
0000h for LANtastic
4E57h ("NW") for NetWare 4.0 requester
DS:SI -> ASCIZ local device name (16 bytes max)
ES:DI -> ASCIZ network name + ASCIZ password (128 bytes max total)
Return: CF clear if successful
CF set on error
AX = error code (01h,03h,05h,08h,0Fh,12h) (see #1366 at AH=59h)
Notes: if device type is disk drive, DS:SI must point at either a null string
or a string consisting the drive letter followed by a colon; if a
null string, the network attempts to access the destination without
redirecting a local drive
the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
also supported by Banyan VINES, LANtastic, and 10NET
SeeAlso: AX=5F02h,AX=5F04h,INT 2F/AX=111Eh,INT 60/AX=0002h
--------D-215F04-----------------------------
INT 21 - DOS 3.1+ network - CANCEL REDIRECTION
AX = 5F04h
DS:SI -> ASCIZ local device name or path
CX = 4E57h ("NW") for NetWare 4.0 requester
Return: CF clear if successful
CF set on error
AX = error code (01h,03h,05h,08h,0Fh,12h) (see #1366 at AH=59h)
Notes: the DS:SI string must be either a local device name, a drive letter
followed by a colon, or a network directory beginning with two
backslashes
the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
also supported by Banyan VINES, LANtastic, and 10NET
for NetWare, if only a server name is specified (i.e. "\\SERVER"),
the connection to that server will be closed
SeeAlso: AX=5F03h,INT 2F/AX=111Eh,INT 60/AX=0003h
--------D-215F05-----------------------------
INT 21 - DOS 4.0+ network - GET EXTENDED REDIRECTION LIST ENTRY
AX = 5F05h
BX = redirection list index
DS:SI -> buffer for ASCIZ source device name
ES:DI -> buffer for destination ASCIZ network path
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = server's network process ID handle (10NET)
BH = device status flag (bit 0 clear if valid)
BL = device type (03h if printer, 04h if drive)
CX = stored parameter value (user data) from AX=5F03h
BP = NETBIOS local session number
DS:SI buffer filled
ES:DI buffer filled
Notes: the local session number allows sharing the redirector's session number
if an error is caused on the NETBIOS LSN, the redirector may be unable
to correctly recover from errors
the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
supported by DR DOS 5.0
also supported by 10NET v5.0
SeeAlso: AX=5F06h"Network",INT 2F/AX=111Eh
--------O-215F05-----------------------------
INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
AX = 5F05h
DL = drive number (0=A:)
DS:SI -> ASCIZ name of the object to map the drive to
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
SeeAlso: AX=5F06h"STARLITE",INT 60/AX=0002h
--------N-215F06-----------------------------
INT 21 U - Network - GET FULL REDIRECTION LIST
AX = 5F06h
???
Return: ???
Notes: similar to AX=5F02h and AX=5F05h, but also returns redirections
excluded from those calls for various reasons
calls INT 2F/AX=111Eh with AX on top of the stack
SeeAlso: AX=5F05h"DOS",INT 2F/AX=111Eh
--------O-215F06-----------------------------
INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
AX = 5F06h
DL = drive to be unmapped (0=A:)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
SeeAlso: AX=5F05h"STARLITE",INT 60/AX=0003h
--------D-215F07-----------------------------
INT 21 - DOS 5+ - ENABLE DRIVE
AX = 5F07h
DL = drive number (0=A:)
Return: CF clear if successful
CF set on error
AX = error code (0Fh) (see #1366 at AH=59h/BX=0000h)
Notes: simply sets the "valid" bit in the drive's CDS
this function is not supported by Novell DOS 7 through at least
Update 4, but support was added by Update 13
SeeAlso: AH=52h,AX=5F08h"DOS"
--------O-215F07-----------------------------
INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
AX = 5F07h
DS:SI -> ASCIZ name of object to offer to network
ES:DI -> ASCIZ name under which object will be known on the network
MUST begin with three slashes
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
SeeAlso: AX=5F08h"STARLITE"
--------D-215F08-----------------------------
INT 21 - DOS 5+ - DISABLE DRIVE
AX = 5F08h
DL = drive number (0=A:)
Return: CF clear if successful
CF set on error
AX = error code (0Fh) (see #1366 at AH=59h/BX=0000h)
Notes: simply clears the "valid" bit in the drive's CDS
this function is not supported by Novell DOS 7 through at least
Update 4, but support was added by Update 13
SeeAlso: AH=52h,AX=5F07h"DOS"
--------O-215F08-----------------------------
INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
AX = 5F08h
DS:SI -> ASCIZ network name (not local name) of object to unshare
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
SeeAlso: AX=5F07h"STARLITE"
--------O-215F09-----------------------------
INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
AX = 5F09h
DS:DX -> ASCIZ name of the device driver to attach to
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Note: the STARLITE distributed file system can attach to multiple networks
simultaneously
SeeAlso: AX=5F0Ah
--------O-215F0A-----------------------------
INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
AX = 5F0Ah
DS:DX -> ASCIZ name of device driver to detach from
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
SeeAlso: AX=5F09h
--------N-215F30-----------------------------
INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
AX = 5F30h
Return: AX = version (AH=major,AL=minor)
--------N-215F32-----------------------------
INT 21 u - Named Pipes - LOCAL DosQNmPipeInfo
AX = 5F32h
BX = handle
CX = size of _PIPEINFO structure
DX = level (must be 0001h)
DS:SI -> _PIPEINFO structure (see #1387)
Return: CF clear if successful
_PIPEINFO structure filled in
CF set on error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAlso: AX=5F33h,AX=5F34h
Format of Named Pipes _PIPEINFO structure:
Offset Size Description (Table 1387)
00h WORD size of outgoing buffer
02h WORD size of incoming buffer
04h BYTE maximum number of instances allowed
05h BYTE current number of instances
06h BYTE length of the name (including terminating NUL)
07h N BYTEs name
--------N-215F33-----------------------------
INT 21 u - Named Pipes - LOCAL DosQNmPHandState
AX = 5F33h
BX = handle
Return: CF clear if successful
AH = pipe mode bit mask (see #1388)
AL = maximum number of instances
CF set on error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAlso: AX=5F32h,AX=5F34h
Bitfields for Named Pipes pipe mode:
Bit(s) Description (Table 1388)
7 set if nonblocking, clear if blocking
6 set if server end, clear if client end
2 set if write in message mode, clear if write in byte mode
0 set if read in message mode, clear if read in byte mode
--------N-215F34-----------------------------
INT 21 u - Named Pipes - LOCAL DosSetNmPHandState
AX = 5F34h
BX = handle
CX = pipe mode bit mask
bit 15: set if nonblocking, clear if blocking
bit 8: set if read in message mode, clear if read in byte mode
Return: CF clear if successful
CF set if error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAlso: AX=5F32h,AX=5F33h,AX=5F36h
--------N-215F35-----------------------------
INT 21 u - Named Pipes - LOCAL DosPeekNmPipe
AX = 5F35h
BX = handle
CX = buffer length
DS:SI -> buffer
Return: CF set on error
AX = error code
CF clear if successful (LAN Manager v1-v2)
AX = 0000h if successful (LAN Manager 3.x)
---if successful---
CX = bytes read
SI = bytes left in the pipe
DX = bytes left in the current message
AX = pipe status (v1-v2) (see #1389)
DI = pipe status (v3.x)
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAlso: AX=5F38h,AX=5F39h,AX=5F51h
(Table 1389)
Values for pipe status:
0001h disconnected
0002h listening
0003h connected
0004h closing
--------N-215F36-----------------------------
INT 21 u - Named Pipes - LOCAL DosTransactNmPipe
AX = 5F36h
BX = handle
CX = in buffer length
DS:SI -> in buffer
DX = out buffer length
ES:DI -> out buffer
Return: CF clear if successful
CX = bytes read
CF set on error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAlso: AX=5F34h,AX=5F37h
--------N-215F37-----------------------------
INT 21 u - Named Pipes - DosCallNmPipe
AX = 5F37h
DS:SI -> DosCallNmPipe stack frame (see #1390)
Return: CF clear if successful
CX = bytes read
CF set on error
AX = error code
Note: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAlso: AX=5F36h,AX=5F38h
Format of Named Pipes DosCallNmPipe stack frame:
Offset Size Description (Table 1390)
00h DWORD timeout
04h DWORD -> bytes read WORD (not used!)
08h WORD out buffer length
0Ah DWORD address of out buffer
0Eh WORD in buffer length
10h DWORD address of in buffer
14h DWORD address of pipe name
--------N-215F38-----------------------------
INT 21 u - Named Pipes - LOCAL DosWaitNmPipe - AWAIT AVAIL. OF PIPE INSTANCE
AX = 5F38h
DS:DX -> pipe name
BX:CX = timeout value
Return: CF clear if successful
CF set if error
AX = error code
Notes: when a client gets a return code of ERROR_PIPE_BUSY on attempting to
open a pipe, it should issue this call to wait until the pipe
instance becomes available again; on return from this call, the
client must attempt to open the pipe once again
this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
SeeAlso: AX=5F37h,AX=5F39h
--------N-215F39-----------------------------
INT 21 U - Named Pipes - LOCAL DosRawReadNmPipe
AX = 5F39h
BX = handle
CX = buffer length
DS:DX -> buffer
Return: CF clear if successful
CX = bytes read
CF set if error
AX = error code
Notes: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
not documented in the LAN Manager Toolkit
SeeAlso: AX=5F35h,AX=5F3Ah,INT 2F/AX=1186h
--------N-215F3A-----------------------------
INT 21 U - Named Pipes - LOCAL DosRawWriteNmPipe
AX = 5F3Ah
BX = handle
CX = buffer length
DS:DX -> buffer
Return: CF clear if successful
CX = bytes written
CF set if error
AX = error code
Notes: this function was introduced by LAN Manager but is also supported by
the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
Machines, and others
not documented in the LAN Manager Toolkit
SeeAlso: AX=5F39h,AX=5F3Bh,INT 2F/AX=118Fh
--------N-215F3B-----------------------------
INT 21 u - LAN Manager Enhanced DOS - NetHandleSetInfo
AX = 5F3Bh
BX = handle
CX = handle_info_1 structure length or sizeof DWORD
DI = parameter number to set
0000h all
0001h number of milliseconds
0002h number of characters
DS:DX -> handle_info_1 structure (DI=0000h) (see #1391)
or DWORD (DI=0001h or 0002h)
SI = level of information (0001h)
Return: CF clear if successful
CX = total bytes available
CF set if error
AX = error code
SeeAlso: AX=5F3Ch
Format of LAN Manager handle_info_1 structure:
Offset Size Description (Table 1391)
00h DWORD number of milliseconds which workstation collects data before
it sends the data to the named pipe
04h DWORD number of characters which workstation collects before it
sends the data to the named pipe
--------N-215F3C-----------------------------
INT 21 u - LAN Manager Enhanced DOS - NetHandleGetInfo
AX = 5F3Ch
BX = handle
CX = length of handle_info_1 structure
DS:DX -> handle_info_1 structure (see #1391)
SI = level of information (must be 0001h)
Return: CF clear if successful
CX = total bytes available
CF set if error
AX = error code
SeeAlso: AX=5F3Bh
--------N-215F3D-----------------------------
INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
AX = 5F3Dh
???
Return: ???
--------N-215F3E-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetSpecialSMB
AX = 5F3Eh
???
Return: ???
Note: This function is not documented anywhere in the LAN Manager 2.x Toolkit
but was documented in LAN Manager 1.x manuals.
--------N-215F3F-----------------------------
INT 21 U - LAN Manager Enhanced DOS - REMOTE API CALL
AX = 5F3Fh
CX = api number
ES:DI -> data descriptor
ES:SI -> parameter descriptor
ES:DX -> auxiliary descriptor (if DX <> 0)
???
Return: ???
--------N-215F40-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetMessageBufferSend
AX = 5F40h
DS:DX -> NetMessageBufferSend parameter structure (see #1392)
Return: AX = error code
Format of LAN Manager NetMessageBufferSend parameter structure:
Offset Size Description (Table 1392)
00h DWORD -> recipient name (name for specific user, name* for domain
wide name, * for broadcast)
04h DWORD -> buffer
08h WORD length of buffer
--------N-215F41-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceEnum
AX = 5F41h
BL = level of detail (0000h, 0001h or 0002h)
CX = buffer length
ES:DI -> buffer of service_info_0, service_info_1, or service_info_2
(see #1393,#1394,#1395)
Return: CF clear if successful
CX = entries read
DX = total available
CF set on error
AX = error code
Format of LAN Manager service_info_0 structure:
Offset Size Description (Table 1393)
00h 16 BYTEs name
SeeAlso: #1394,#1395
Format of service_info_1 structure:
Offset Size Description (Table 1394)
00h 16 BYTEs name
10h WORD status bitmask (see #1396)
12h DWORD status code (see #1397)
(also see Microsoft LAN Manager Programmer's Reference)
16h WORD process id
SeeAlso: #1393,#1395
Format of service_info_2 structure:
Offset Size Description (Table 1395)
00h 16 BYTEs name
10h WORD status bitmask (see #1396)
12h DWORD status code (see #1397)
16h WORD process id
18h 64 BYTEs text
SeeAlso: #1393,#1394
Bitfields for LAN Manager status bitmask:
Bit(s) Description (Table 1396)
0,1 00 uninstall
01 install pending
10 uninstall pending
11 installed
2,3 00 active
01 Continue pending
10 Pause pending
11 paused
4 uninstallable
5 pausable
8 disk redirector paused
9 spooled device redirector paused (printing)
10 communication device redirector paused
(Table 1397)
Values for LAN Manager status code:
high word
3051 Bad parameter value
3052 A parameter is missing
3053 An unknown parameter was specified
3054 The resource is insufficient
3055 Configuration is faulty
3056 An MS-DOS or MS OS/2 error occured
3057 An internal error occured
3058 An ambiguous parameter name was given
3059 A duplicate parameter exists
3060 The service was terminated by NetSeviceControl when it did not respond
3061 The service program file could not be executed
3062 The subservice failed to start
3063 There is a conflict in the value or use of these parameters
3064 There is a problem with the file
low word
3070 There is insufficient memory
3071 There is insufficeient disk space
3072 Unable to create thread
3073 Unable to create process
3074 A security failure occured
3075 There is bad or missing default path
3076 Network software is not installed
3077 Server software is not installed
3078 The server could not access the UAS database
3079 The action requires user-level security
3080 The log directory is invalid
3081 The LAN group specificed could not be used
3082 The computername is being used as a message alias on another computer
3083 The workstation failed to announce the servername
3084 The user accounts system is not configured properly
--------N-215F42-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceControl
AX = 5F42h
DH = opcode
00h interrogate status
01h pause
02h continue
03h uninstall
DL = argument
01h disk resource
02h print resource
04h communications resource (not implemented for DOS)
ES:BX -> NetServiceControl parameter structure (see #1398)
Return: CF clear if successful
CF set on error
AX = error code
Format of LAN Manager NetServiceControl parameter structure:
Offset Size Description (Table 1398)
00h DWORD -> service name
04h WORD result buffer size
06h DWORD -> result buffer as service_info_2 structure
--------N-215F43-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL DosPrintJobGetId
AX = 5F43h
BX = handle of remote print job
CX = size of PRIDINFO struture
ES:DI -> PRIDINFO structure (see #1399)
Return: CF clear if successful
PRIDINFO filled in
CF set on error
AX = error code
Format of LAN Manager PRIDINFO structure:
Offset Size Description (Table 1399)
00h WORD job id
02h 16 BYTEs server name
12h 13 BYTEs queue name
1Fh 1 BYTE pad
--------N-215F44-----------------------------
INT 21 - LAN Manager Enhanced DOS - LOCAL NetWkstaGetInfo
AX = 5F44h
BX = information level (00h, 01h, or 0Ah)
CX = buffer size
DX = 0000h
ES:DI -> buffer in which to store info (see #1400,#1401,#1402),
including any returned strings
Return: AX = error code
DX = amount of buffer required, unchanged if supplied buffer large
enough to hold data
SeeAlso: AX=5F45h,AX=5F49h
Format of LAN Manager wksta_info_0 structure:
Offset Size Description (Table 1400)
00h WORD reserved (0)
02h DWORD reserved (0)
06h DWORD -> path to computer's LANMAN directory
0Ah DWORD -> computername of the workstation
0Eh DWORD -> username of user logged onto workstation
12h DWORD -> domain to which workstation belongs
16h WORD LAN Manager version number (2 bytes, Major, Minor)
18h DWORD reserved (0)
1Ch WORD number of seconds workstation waits for resource availability
1Eh DWORD delay (in millsecs) before sending data to resource
22h WORD reserved (0)
24h WORD reserved (0)
26h WORD ???
28h WORD number of seconds to maintain an inactive connection
2Ah WORD number of seconds an inactive search continues
2Ch WORD threads to dedicate to network (not supported in MSDOS)
2Eh WORD number of simultaneous commands sent to network
30h WORD reserved6 (must be 0)
32h WORD number of internal buffers
34h WORD size (in bytes) of each internal buffer
36h WORD max size (in bytes) of an internal cache buffer (not MSDOS)
38h WORD seconds before disconnecting inactive session (not MSDOS)
3Ah WORD size (in bytes) of an internal error buffer (not MSDOS)
3Ch WORD number of clients that can receive alert messages (not MSDOS)
3Eh WORD number of services that can be started on workstation
40h WORD max size (in kilobytes) of error log (not MSDOS)
42h WORD number of secs before closing inactive print jobs (not MSDOS)
44h WORD number of character buffers for workstation
46h WORD max size (in bytes) of character buffer
48h DWORD -> name of server that validated logon
4Ch DWORD -> workstation heuristics
50h WORD number of mailslots allowed
Note: pointers to strings are set to 0000h:0000h if there is insufficient
space in the buffer to hold them
SeeAlso: #1401,#1402
Format of LAN Manager wksta_info_1 structure:
Offset Size Description (Table 1401)
00h 82 BYTEs wksta_info_0 structure (see #1400)
52h DWORD -> name of domain which user is logged on to
56h DWORD -> all domains in which computer is enlisted
5Ah WORD number of buffers to allocate for receiving datagrams
SeeAlso: #1402
Format of LAN Manager wksta_info_10 structure:
Offset Size Description (Table 1402)
00h DWORD -> computername of the workstation
04h DWORD -> username of user logged onto workstation
08h DWORD -> domain to which workstation belongs
0Ch WORD LAN Manager version number (2 bytes, Major, Minor)
0Eh DWORD -> name of domain which user is loggod on to
12h DWORD -> all domains in which computer is enlisted
Note: pointers to strings are set to 0000h:0000h if there is insufficient
space in the buffer to hold them
SeeAlso: #1400,#1401
--------N-215F45-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaSetInfo
AX = 5F45h
BX = level (0000h or 0001h)
CX = buffer size
DX = parameter to set
ES:DI -> buffer
Return: CF clear if successful
CF set if error
AX = error code
SeeAlso: AX=5F44h
--------N-215F46-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseEnum
AX = 5F46h
BX = level (0000h or 0001h)
CX = size of buffer
ES:DI -> buffer of use_info_0 or use_info_1 structures
(see #1403,#1404)
Return: CF clear if successful
CX = entries read
DX = total available entries
CF set if error
AX = error code
SeeAlso: AX=5F47h,AX=5F48h,AX=5F4Ch
Format of LAN Manager use_info_0 structure:
Offset Size Description (Table 1403)
00h 9 BYTEs local device name
09h BYTE padding
0Ah DWORD -> remote device name in UNC form \\server\share
SeeAlso: #1404
Format of LAN Manager use_info_1 structure:
Offset Size Description (Table 1404)
00h 9 BYTEs Local device name
09h BYTE padding
0Ah DWORD -> remote device name in UNC form \\server\share
0Eh DWORD -> password
12h WORD network link status
(00h OK, 02h disconnected, else unsure)
14h WORD use type (-1 wildcard, 0 disk, 1 print, 2 com, 3 ipc)
16h WORD ignored
18h WORD ignored
SeeAlso: #1403
--------N-215F47-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseAdd
AX = 5F47h
BX = level (0001h)
CX = size of use_info_1 structure
ES:DI -> use_info_1 structure (see #1404)
Return: CF clear on success
CF set on error
AX = error code
SeeAlso: AX=5F46h,AX=5F48h
--------N-215F48-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseDel
AX = 5F48h
BX = force level
0000h no force
0001h force
0002h lots of force
ES:DI -> buffer as either the local device name or UNC remote name
Return: CF clear on success
CF set on error
AX = error code
SeeAlso: AX=5F46h,AX=5F48h,AX=5F49h
--------N-215F49-----------------------------
INT 21 u - LAN Manager Enhanced DOS - NetUseGetInfo
AX = 5F49h
DS:DX -> NetUseGetInfo parameter structure (see #1405)
Return: CF clear on success
DX = total available
CF set on error
AX = error code
SeeAlso: AX=5F44h,AX=5F47h
Format of LAN Manager NetUseGetInfo parameter structure:
Offset Size Description (Table 1405)
00h DWORD pointer to either the local device name or UNC remote name
04h WORD level of information (0000h or 0001h)
06h DWORD pointer to buffer of use_info_0 or use_info_1 structures
0Ah WORD length of buffer
--------N-215F4A-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteCopy
AX = 5F4Ah
DS:DX -> NetRemoteCopy parameter structure (see #1406)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F4Bh
Format of LAN Manager NetRemoteCopy parameter structure:
Offset Size Description (Table 1406)
00h DWORD -> source name as UNC
04h DWORD -> destination name as UNC
08h DWORD -> source password
0Ch DWORD -> destination password
10h WORD destination open bitmap
if destination path exists
0000h open fails
0001h file is appended
0002h file is overwritten
if destination path doesn't exist
0000h open fails
0010h file is created
12h WORD copy control bitmap (see #1407)
14h DWORD -> copy_info buffer
18h WORD length of copy_info buffer
Bitfields for LAN Manager copy control:
Bit(s) Description (Table 1407)
0 destination must be a file
1 destination must be a directory
2 destination is opened in ascii mode instead of binary
3 source is opened in ascii mode instead of binary
4 verify all write operations
--------N-215F4B-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteMove
AX = 5F4Bh
DS:DX -> NetRemoteMove parameter structure (see #1408)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F4Ah
Format of LAN Manager NetRemoteMove parameter structure:
Offset Size Description (Table 1408)
00h DWORD -> source name as UNC
04h DWORD -> destination name as UNC
08h DWORD -> source password
0Ch DWORD -> destination password
10h WORD destination open bitmap
if destination path exists
0000h open fails
0001h file is appended
0002h file is overwritten
if destination path doesn't exist
0000h open fails
0010h file is created
12h WORD move control bitmap
0001h destination must be a file
0002h destination must be a directory
14h DWORD -> move_info buffer
18h WORD length of move_info buffer
--------N-215F4C-----------------------------
INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServerEnum
AX = 5F4Ch
BX = level (0000h or 0001h)
CX = buffer length
ES:DI -> buffer in which to store information
Return: CF clear if successful
ES:DI -> server_info_X structures (depending on level)
(see #1409,#1410)
BX = entries read
CX = total entries available
CF set on error
AX = error code
Notes: this function is also supported by the Novell DOS Named Pipe Extender
this function has been obseleted by NetServerEnum2
SeeAlso: AX=5F53h
Format of LAN Manager server_info_0 structure:
Offset Size Description (Table 1409)
00h 16 BYTEs name
SeeAlso: #1410
Format of LAN Manager server_info_1 structure:
Offset Size Description (Table 1410)
00h 16 BYTEs name
10h BYTE major version in lower nibble
11h BYTE minor version
12h DWORD server type bitmask (see #1411)
16h DWORD -> comment string
SeeAlso: #1409
Bitfields for LAN Manager server type:
Bit(s) Description (Table 1411)
0 workstation
1 server
2 SQL server
3 primary domain controller
4 backup domain controller
5 time server
6 Apple File Protocol (AFP) server
7 Novell server
8 Domain Member (v2.1+)
9 Print Queue server (v2.1+)
10 Dialin server (v2.1+)
11 Unix server (v2.1+)
--------N-215F4D-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosMakeMailslot
AX = 5F4Dh
BX = message size
CX = mailslot size (must be bigger than message size by at least 1)
(minimum 1000h, maximum FFF6h)
(buffer must be 9 bytes bigger than this)
DS:SI -> name
ES:DI -> memory buffer
Return: CF clear if successful
AX = handle
CF set on error
AX = error code
SeeAlso: AX=5F4Eh,AX=5F4Fh,AX=5F50h,AX=5F51h
--------N-215F4E-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosDeleteMailslot
AX = 5F4Eh
BX = handle
Return: CF clear if successful
ES:DI -> memory to be freed (allocated during DosMakeMailslot)
CF set on error
AX = error code
SeeAlso: AX=5F4Dh,AX=5F4Fh
--------N-215F4F-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosMailslotInfo
AX = 5F4Fh
BX = handle
Return: CF clear if successful
AX = max message size
BX = mailslot size
CX = next message size
DX = next message priority
SI = number of messages waiting
CF set on error
AX = error code
SeeAlso: AX=5F4Dh,AX=5F4Eh,AX=5F50h
--------N-215F50-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosReadMailslot
AX = 5F50h
BX = handle
DX:CX = timeout
ES:DI -> buffer
Return: CF clear if successful
AX = bytes read
CX = next item's size
DX = next item's priority
CF set on error
AX = error code
SeeAlso: AX=5F4Dh,AX=5F4Fh,AX=5F51h,AX=5F52h
--------N-215F51-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosPeekMailslot
AX = 5F51h
BX = handle
ES:DI -> buffer
Return: CF clear if successful
AX = bytes read
CX = next item's size
DX = next item's priority
CF set on error
AX = error code
SeeAlso: AX=5F35h,AX=5F4Fh,AX=5F50h,AX=5F52h
--------N-215F52-----------------------------
INT 21 u - LAN Manager Enhanced DOS - DosWriteMailslot
AX = 5F52h
BX = class
CX = length of buffer
DX = priority
ES:DI -> DosWriteMailslot parameter structure (see #1412)
DS:SI -> mailslot name
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F4Fh,AX=5F50h,AX=5F51h
Format of LAN Manager DosWriteMailslot parameter structure:
Offset Size Description (Table 1412)
00h DWORD timeout
04h DWORD -> buffer
--------N-215F53-----------------------------
INT 21 u - LAN Manager Enhanced DOS - NetServerEnum2
AX = 5F53h
DS:SI -> NetServerEnum2 parameter structure (see #1413)
Return: CF clear if successful
BX = entries read
CX = total entries available
CF set on error
AX = error code
SeeAlso: AX=5F4Ch
Format of LAN Manager NetServerEnum2 parameter structure:
Offset Size Description (Table 1413)
00h WORD level (0000h or 0001h)
02h DWORD -> buffer as array of server_info_??? structures (see #1415)
06h WORD length of buffer
08h DWORD server type bitmask (see #1414)
0Ch DWORD -> Domain name (may be 0000h:0000h for all local domains)
Bitfields for LAN Manager server type:
Bit(s) Description (Table 1414)
0 workstation
1 server
2 SQL server
3 primary domain controller
4 backup domain controller
5 time server
6 Apple File Protocol (AFP) server
7 Novell server
8 Domain Member (v2.1+)
9 Print Queue server (v2.1+)
10 Dialin server (v2.1+)
11 Unix server (v2.1+)
Note: set all (FFFFFFFFh) for All Types
Format of LAN Manager server_info_0 structure:
Offset Size Description (Table 1415)
00h 16 BYTEs name
SeeAlso: #1416
Format of LAN Manager server_info_1 structure:
Offset Size Description (Table 1416)
00h 16 BYTEs name
10h BYTE major version in lower nibble
11h BYTE minor version
12h DWORD server type (bits 0-11) (see #1414)
16h DWORD -> comment string
SeeAlso: #1415
--------N-215F55----------------------------
INT 21 U - LAN Manager Enhanced DOS - KILL ALL CONNECTIONS???
AX = 5F55h
BX = ???
Return: CF clear if successful
CF set on error
AX = error code
--------N-215F80-----------------------------
INT 21 - LANtastic - GET LOGIN ENTRY
AX = 5F80h
BX = login entry index (0-based)
ES:DI -> 16-byte buffer for machine name
Return: CF clear if successful
buffer filled with machine name ("\\" prefix removed)
DL = adapter number (v3+)
CF set on error
AX = error code
Note: the login entry index corresponds to the value BX used in AX=5F83h
SeeAlso: AX=5F83h
--------N-215F81-----------------------------
INT 21 - LANtastic - LOGIN TO SERVER
AX = 5F81h
ES:DI -> ASCIZ login path followed immediately by ASCIZ password
BL = adapter number
FFh try all valid adapters
00h-07h try only specified adapter
Return: CF clear if successful
CF set on error
AX = error code
Notes: login path is of form "\\machine\username"
if no password is used, the string at ES:DI must be terminated with
three NULs for compatibility with LANtastic v3.0.
SeeAlso: AX=5F82h,AX=5F84h
--------N-215F82-----------------------------
INT 21 - LANtastic - LOGOUT FROM SERVER
AX = 5F82h
ES:DI -> ASCIZ server name (in form "\\machine")
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F81h,AX=5F88h,AX=5FCBh
--------N-215F83-----------------------------
INT 21 - LANtastic - GET USERNAME ENTRY
AX = 5F83h
BX = login entry index (0-based)
ES:DI -> 16-byte buffer for username currently logged into
Return: CF clear if successful
DL = adapter number (v3+)
CF set on error
AX = error code
Note: the login entry index corresponds to the value BX used in AX=5F80h
SeeAlso: AX=5F80h
--------N-215F84-----------------------------
INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
AX = 5F84h
BX = server index not currently logged into
ES:DI -> 16-byte buffer for server name which is available for logging
in to ("\\" prefix omitted)
Return: CF clear if successful
DL = adapter number to non-logged in server is on
CF set on error
AX = error code
SeeAlso: AX=5F81h
--------N-215F85-----------------------------
INT 21 - LANtastic - CHANGE PASSWORD
AX = 5F85h
ES:DI -> buffer containing "\\machine\oldpassword" 00h "newpassword"00h
Return: CF clear if successful
CF set on error
AX = error code
Notes: must be logged into the named machine
this function is illegal for group accounts
--------N-215F86-----------------------------
INT 21 - LANtastic - DISABLE ACCOUNT
AX = 5F86h
ES:DI -> ASCIZ machine name and password in form "\\machine\password"
Return: CF clear if successful
CF set on error
AX = error code
Note: must be logged into the named machine and concurrent logins set to 1
by NET_MGR. Requires system manager to re-enable account.
--------N-215F87-----------------------------
INT 21 - LANtastic v3+ - GET ACCOUNT
AX = 5F87h
DS:SI -> 128-byte buffer for account information (see #1417)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX destroyed
Note: must be logged into the specified machine
Format of LANtastic user account structure:
Offset Size Description (Table 1417)
00h 16 BYTEs blank-padded username (zero-padded for v4.x)
10h 16 BYTEs reserved (00h)
20h 32 BYTEs user description
40h BYTE privilege bits (see #1418)
41h BYTE maximum concurrent users
42h 42 BYTEs bit map for disallowed half hours, beginning on Sunday
(bit set if half-hour not an allowed time)
6Ch WORD internal (0002h)
6Eh 2 WORDs last login time
72h 2 WORDs account expiration date (MS-DOS-format year/month:day)
76h 2 WORDs password expiration date (0 = none)
7Ah BYTE number of days to extend password after change (1-31)
00h if no extension required
---v3.x---
7Bh 5 BYTEs reserved
---v4.x---
7Bh BYTE storage for first letter of user name when deleted (first
character is changed to 00h when deleting account)
7Ch BYTE extended privileges
7Dh 3 BYTEs reserved
Bitfields for LANtastic privilege bits:
Bit(s) Description (Table 1418)
7 bypass access control lists
6 bypass queue protection
5 treat as local process
4 bypass mail protection
3 allow audit entry creation
2 system manager
0 user cannot change password
--------N-215F88-----------------------------
INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
AX = 5F88h
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F82h
--------N-215F97-----------------------------
INT 21 - LANtastic - COPY FILE
AX = 5F97h
CX:DX = number of bytes to copy (FFFFFFFFh = entire file)
SI = source file handle
DI = destination file handle
Return: CF clear if successful
DX:AX = number of bytes copied
CF set on error
AX = error code
Note: copy is performed by server
--------N-215F98-----------------------------
INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
AX = 5F98h
DS:SI -> message buffer (see #1419)
Return: CF clear if successful
CF set on error
AX = error code
Note: v4.1- return no errors
SeeAlso: AX=5F99h
Format of LANtastic message buffer:
Offset Size Description (Table 1419)
00h BYTE reserved
01h BYTE message type
00h general
01h server warning
02h-7Fh reserved
80h-FFh user-defined
02h 16 BYTEs ASCIZ destination machine name
12h 16 BYTEs ASCIZ server name which user must be logged into
22h 16 BYTEs ASCIZ user name
32h 16 BYTEs ASCIZ originating machine name (filled in when received)
42h 80 BYTEs message text
--------N-215F99-----------------------------
INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
AX = 5F99h
ES:DI -> messsage buffer (see #1419)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F98h
--------N-215F9A-----------------------------
INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
AX = 5F9Ah
Return: CF clear if successful
DL = bits describing processing of received messages (see #1420)
CF set on error
AX = error code
SeeAlso: AX=5F9Bh,AX=5F9Ch,AX=5F9Dh
Bitfields for unsolicited message processing flags:
Bit(s) Description (Table 1420)
0 beep before message is delivered
1 deliver message to message service
2 pop up message automatically (v3+)
--------N-215F9B-----------------------------
INT 21 - LANtastic - SET MESSAGE PROCESSING FLAGS
AX = 5F9Bh
DL = bits describing processing for received unsolicited messages
(see #1420)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5F9Ah,AX=5F9Eh
--------N-215F9C-----------------------------
INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
AX = 5F9Ch
CX = time to leave on screen in clock ticks
DH = 0-based screen line on which to place message
Return: CF clear if successful
CF set on error
AX = error code (0Bh)
Notes: the original screen contents are restored when the message is removed
the message will not appear, and an error will be returned, if the
screen is in a graphics mode
SeeAlso: AX=5F9Ah
--------N-215F9D-----------------------------
INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
AX = 5F9Dh
Return: DL = redirector control bits
bit 7: set to notify on print job completion
SeeAlso: AX=5F9Ah,AX=5F9Eh
--------N-215F9E-----------------------------
INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
AX = 5F9Eh
DL = redirector control bits (see AX=5F9Dh)
Return: nothing
SeeAlso: AX=5F9Bh,AX=5F9Dh
--------N-215FA0-----------------------------
INT 21 - LANtastic - GET QUEUE ENTRY
AX = 5FA0h
BX = queue entry index (0000h is first entry)
DS:SI -> buffer for queue entry (see #1421)
ES:DI -> ASCIZ server name in form "\\name"
Return: CF clear if successful
CF set on error
AX = error code
BX = entry index for next queue entry (BX-1 is current index)
SeeAlso: AX=5FA1h,AX=5FA2h
Format of LANtastic queue entry:
Offset Size Description (Table 1421)
00h BYTE status of entry (see #1422)
01h DWORD size of spooled file
05h BYTE type of entry (see #1423)
06h BYTE output control (see #1424)
07h WORD number of copies
09h DWORD sequence number of queue entry
0Dh 48 BYTEs pathname of spooled file
3Dh 16 BYTEs user who spooled file
4Dh 16 BYTEs name of machine from which file was spooled
5Dh WORD date file was spooled (see #1352 at AX=5700h)
5Fh WORD time file was spooled (see #1351 at AX=5700h)
61h 17 BYTEs ASCIZ destination device or user name
72h 48 BYTEs comment field
(Table 1422)
Values for status of LANtastic queue entry:
00h empty
01h being updated
02h being held
03h waiting for despool
04h being despooled
05h canceled
06h spooled file could not be accessed
07h destination could not be accessed
08h rush job
(Table 1423)
Values for type of LANtastic queue entry:
00h printer queue file
01h message
02h local file
03h remote file
04h to remote modem
05h batch processor file
Bitfields for output control:
Bit(s) Description (Table 1424)
6 don't delete (for mail)
5 mail file contains voice mail (v3+)
4 mail message has been read
3 response has been requested for this mail
--------N-215FA1-----------------------------
INT 21 - LANtastic - SET QUEUE ENTRY
AX = 5FA1h
BX = handle of opened queue entry
DS:SI -> queue entry (see #1421)
Return: CF clear if successful
CF set on error
AX = error code
Notes: the only queue entry fields which may be changed are output control,
number of copies, destination device, and comment
the handle in BX is that from a create or open (INT 21/AH=3Ch,3Dh)
call on the file "\\server\\@MAIL" or "\\server\@name" (for
printer queue entries)
SeeAlso: AX=5FA0h,AX=5FA2h,AX=5FA9h
--------N-215FA2-----------------------------
INT 21 - LANtastic - CONTROL QUEUE
AX = 5FA2h
BL = control command
00h start despooling (privileged)
01h halt despooling (privileged)
02h halt despooling at end of job (privileged)
03h pause despooler at end of job (privileged)
04h print single job (privileged)
05h restart current job (privileged)
06h cancel the current job
07h hold queue entry
08h release a held queue entry
09h make queue entry a rushed job (privileged)
CX:DX = sequence number to control (commands 06h-09h)
DX = physical printer number (commands 00h-05h)
00h-02h LPT1-LPT3
03h,04h COM1,COM2
other all printers
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
--------N-215FA3-----------------------------
INT 21 - LANtastic v3+ - GET PRINTER STATUS
AX = 5FA3h
BX = physical printer number (00h-02h = LPT1-LPT3, 03h-04h = COM1-COM2)
DS:SI -> buffer for printer status (see #1425)
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX = next physical printer number
Note: you must be logged in to the specified server
Format of LANtastic printer status:
Offset Size Description (Table 1425)
00h BYTE printer state (see #1426)
01h WORD queue index of print job being despooled
FFFFh if not despooling--ignore all following fields
03h WORD actual characters per second being output
05h DWORD number of characters actually output so far
09h DWORD number of bytes read from spooled file so far
0Dh WORD copies remaining to print
Bitfields for LANtastic printer state:
Bit(s) Description (Table 1426)
7 printer paused
0-6 0 printer disabled
1 will stop at end of job
2 print multiple jobs
--------N-215FA4-----------------------------
INT 21 - LANtastic v3+ - GET STREAM INFO
AX = 5FA4h
BX = 0-based stream index number
DS:SI -> buffer for stream information (see #1427)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX = next stream number
SeeAlso: AX=5FA5h
Format of LANtastic stream information:
Offset Size Description (Table 1427)
00h BYTE queueing of jobs for logical printer (0=disabled,other=enabled)
01h 11 BYTEs logical printer resource template (may contain ? wildcards)
--------N-215FA5-----------------------------
INT 21 - LANtastic v3+ - SET STREAM INFO
AX = 5FA5h
BX = 0-based stream index number
DS:SI -> buffer containing stream information (see #1427)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5FA4h
--------N-215FA7-----------------------------
INT 21 - LANtastic - CREATE USER AUDIT ENTRY
AX = 5FA7h
DS:DX -> ASCIZ reason code (max 8 bytes)
DS:SI -> ASCIZ variable reason string (max 128 bytes)
ES:DI -> ASCIZ machine name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
Note: you must be logged in to the specified server and have the "U"
privilege to execute this call
--------N-215FA9-----------------------------
INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
AX = 5FA9h
BX = handle of opened queue entry
DS:SI -> queue entry (see #1421)
Return: CF clear if successful
CF set on error
AX = error code
Note: functions exactly the same as AX=5FA1h except the spooled filename is
also set. This call supports direct despooling.
SeeAlso: AX=5FA1h
--------N-215FB0-----------------------------
INT 21 - LANtastic - GET ACTIVE USER INFORMATION
AX = 5FB0h
BX = server login entry index
DS:SI -> buffer for active user entry (see #1428)
ES:DI -> ASCIZ machine name in form "\\server"
Return: CF clear if successful
CF set on error
AX = error code
BX = next login index
SeeAlso: AX=5FB2h
Format of LANtastic active user entry:
Offset Size Description (Table 1428)
00h WORD virtual circuit number
02h BYTE login state (see #1429)
03h BYTE last command issued (see #1430)
04h 5 BYTEs number of I/O bytes (40-bit unsigned number)
09h 3 BYTEs number of server requests (24-bit unsigned)
0Ch 16 BYTEs name of user who is logged in
1Ch 16 BYTEs name of remote logged in machine
2Ch BYTE extended privileges (v4+???)
bit 0: user cannot change his password
2Dh WORD time left in minutes (0000h = unlimited) (v4+???)
Bitfields for login state:
Bit(s) Description (Table 1429)
0 fully logged in
1 remote program load login
2 user has system manager privileges
3 user can create audit entries
4 bypass mail protection
5 treat as local process
6 bypass queue protection
7 bypass access control lists
(Table 1430)
Values for last LANtastic command:
00h login
01h process termination
02h open file
03h close file
04h create file
05h create new file
06h create unique file
07h commit data to disk
08h read file
09h write file
0Ah delete file
0Bh set file attributes
0Ch lock byte range
0Dh unlock byte range
0Eh create subdirectory
0Fh remove subdirectory
10h rename file
11h find first matching file
12h find next matching file
13h get disk free space
14h get a queue entry
15h set a queue entry
16h control the queue
17h return login information
18h return link description
19h seek on file
1Ah get server's time
1Bh create audit entry
1Ch open file in multitude of modes
1Dh change password
1Eh disable account
1Fh local server file copy
---v3+---
20h get username from account file
21h translate server's logical path
22h make indirect file
23h get indirect file contents
24h get physical printer status
25h get logical print stream info
26h set logical print stream info
27h get user's account record
---v4+---
28h request server shutdown
29h cancel server shutdown
2Ah stuff server's keyboard
2Bh write then commit data to disk
2Ch set extended queue entry
2Dh terminate user from server
2Eh enable/disable logins
2Fh flush server caches
30h change username
31h get extended queue entry
(same as get queue, but can return named fields blanked)
--------N-215FB1-----------------------------
INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
AX = 5FB1h
DS:SI -> 64-byte buffer for link description
ES:DI -> ASCIZ machine and shared directory name in form
"\\machine\shared-resource"
Return: CF clear if successful
CX = access control list privileges for requesting user (see #1431)
CF set on error
AX = error code
Bitfields for LANtastic access control list:
Bit(s) Description (Table 1431)
4 (I) allow expansion of indirect files
5 (A) allow attribute changing
6 (P) allow physical access to device
7 (E) allow program execution
8 (N) allow file renaming
9 (K) allow directory deletion
10 (D) allow file deletion
11 (L) allow file/directory lookups
12 (M) allow directory creation
13 (C) allow file creation
14 (W) allow open for write and writing
15 (R) allow open for read and reading
--------N-215FB2-----------------------------
INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
AX = 5FB2h
BX = username entry index (0 for first)
DS:SI -> 16-byte buffer for username
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
BX = next queue entry index
SeeAlso: AX=5FB0h
--------N-215FB3-----------------------------
INT 21 - LANtastic v3+ - TRANSLATE PATH
AX = 5FB3h
DS:SI -> 128-byte buffer for ASCIZ result
ES:DI -> full ASCIZ path, including server name
DX = types of translation to be performed
bit 0: expand last component as indirect file
bit 1: return actual path relative to server's physical disk
Return: CF clear if successful
CF set on error
AX = error code
Note: always expands any indirect files along the path
SeeALso: AX=5FB4h,INT 21/AH=60h
--------N-215FB4-----------------------------
INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
AX = 5FB4h
DS:SI -> 128-byte buffer containing ASCIZ contents of indirect file
ES:DI -> full ASCIZ path of indirect file to create, incl machine name
Return: CF clear if successful
CF set on error
AX = error code
Note: the contents of the indirect file may be any valid server-relative path
SeeAlso: AX=5FB3h,AX=5FB5h
--------N-215FB5-----------------------------
INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
AX = 5FB5h
DS:SI -> 128-byte buffer for ASCIZ indirect file contents
ES:DI -> full ASCIZ path of indirect file
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5FB4h
--------N-215FB6-----------------------------
INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
AX = 5FB6h
ES:DI -> pointer to ASCIZ default user name, immediately followed by
ASCIZ password
BL = adapter number to use for default login attempt
FFh try all valid adapters
00h-05h try adapter 0-5 explicitly
Return: CF clear if successful
CF set on error
AX = error code
Notes: call with ES:DI -> two nulls to disable auto-login
SeeAlso: AX=5FB7h
--------N-215FB7-----------------------------
INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
AX = 5FB7h
ES:DI -> pointer to 16-byte buffer to store ASCIZ auto-login user name
Return: CF clear if successful
DL = adapter number used for default login attempt
FFh all valid adapters will be tried
00h-05h specified adapter will be tried explicitly
CF set on error
AX = error code
SeeAlso: AX=5F81h,AX=5FB6h
--------N-215FC0-----------------------------
INT 21 - LANtastic - GET TIME FROM SERVER
AX = 5FC0h
DS:SI -> time block (see #1432)
ES:DI -> ASCIZ server name to get time from
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AH=E7h"Novell"
Format of LANtastic time block:
Offset Size Description (Table 1432)
00h WORD year
02h BYTE day
03h BYTE month
04h BYTE minutes
05h BYTE hour
06h BYTE hundredths of second
07h BYTE second
--------N-215FC8-----------------------------
INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
AX = 5FC8h
ES:DI -> ASCIZ server name in form "\\machine"
DS:SI -> ASCIZ reason string (80 characters)
CX = number of minutes until shutdown (0 = immediate)
DX = option flags (see #1433)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5FC9h
Bitfields for LANtastic option flags:
Bit(s) Description (Table 1433)
0 auto reboot
1 do not notify users
2 halt after shutdown
3 shutdown due to power fail (used by UPS)
4-7 reserved
8-14 user definable
15 reserved
--------N-215FC9-----------------------------
INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
AX = 5FC9h
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call
SeeAlso: AX=5FC8h
--------N-215FCA-----------------------------
INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
AX = 5FCAh
ES:DI -> ASCIZ server name in form "\\machine"
DS:SI -> ASCIZ string to stuff (128 bytes)
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call
maximum number of characters that can be stuffed is determined by the
server's RUN BUFFER SIZE.
SeeAlso: INT 16/AH=05h
--------N-215FCB-----------------------------
INT 21 - LANtastic v4.1+ - TERMINATE USER
AX = 5FCBh
ES:DI -> ASCIZ server name in form "\\machine"
DS:SI -> blank-padded username. A null char = wildcard.
DS:DX -> blank-padded machine name. A null char = wildcard.
CX = minutes until termination (0 = immediate)
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call
you cannot log yourself out using this call
SeeAlso: AX=5F82h
--------N-215FCC-----------------------------
INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
AX = 5FCCh
ES:DI -> ASCIZ server name in form "\\machine"
CX = bit values (value of bits you want to set) (see #1434)
DX = bit mask (bits you are interested in, 0 = get only) (see #1434)
Return: CF clear if successful
CX = control bits after call (see #1434)
CF set on error
AX = error code
Note: you must have the "S" privilege to SET, anyone can GET.
Bitfields for control bits:
Bit(s) Description (Table 1434)
0 disable logins
--------N-215FCD-----------------------------
INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
AX = 5FCDh
ES:DI -> ASCIZ server name in form "\\machine"
Return: CF clear if successful
CF set on error
AX = error code
Note: you must have the "S" privilege to use this call.
--------N-215FD0-----------------------------
INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
AX = 5FD0h
Return: CF clear if successful
CX = redirected printer timeout in clock ticks of 55ms
0000h if timeout disabled
CF set on error
AX = error code
SeeAlso: AX=5FD1h
--------N-215FD1-----------------------------
INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
AX = 5FD1h
CX = printer timeout in clock ticks of 55ms, 0000h to disable timeouts
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=5FD0h
--------N-215FE0-----------------------------
INT 21 C - LANtastic - GET DOS SERVICE VECTOR
AX = 5FE0h
Return: CF clear if successful
ES:BX -> current FAR service routine
CF set on error
AX = error code
Note: the service routine is called by the LANtastic redirector whenever DOS
may safely be called, permitting external TSRs and drivers to hook
into LANtastic's DOS busy flag checking
SeeAlso: AX=5FE1h,INT 28,INT 2A/AH=84h
--------N-215FE1-----------------------------
INT 21 - LANtastic - SET DOS SERVICE VECTOR
AX = 5FE1h
ES:BX -> FAR routine to call when DOS services are available
Return: CF clear if successful
CF set on error
AX = error code
Note: new handler must chain to previous handler as its first action
SeeAlso: AX=5FE0h
--------N-215FE2-----------------------------
INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
AX = 5FE2h
Return: CF clear if successful
ES:BX -> current FAR message service routine
CF set on error
AX = error code
SeeAlso: AX=5FE0h,AX=5FE3h
--------N-215FE3-----------------------------
INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
AX = 5FE3h
ES:BX -> FAR routine for processing network messages
Return: CF clear if successful
CF set on error
AX = error code
Notes: handler must chain to previous handler as its first action
on invocation, ES:BX -> just-received message
SeeAlso: AX=5FE2h
--------D-2160-------------------------------
INT 21 - DOS 3.0+ - "TRUENAME" - CANONICALIZE FILENAME OR PATH
AH = 60h
DS:SI -> ASCIZ filename or path
ES:DI -> 128-byte buffer for canonicalized name
Return: CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
AH = 00h or 3Ah (DOS 6.1/6.2 for character device)
AL = destroyed (00h or 2Fh or 5Ch or last character of current
directory on drive)
buffer filled with qualified name of form D:\PATH\FILE.EXT or
\\MACHINE\PATH\FILE.EXT
Desc: determine the canonical name of the specified filename or path,
corresponding to the undocumented TRUENAME command in COMMAND.COM
Notes: the input path need not actually exist
letters are uppercased, forward slashes converted to backslashes,
asterisks converted to appropriate number of question marks, and
file and directory names are truncated to 8.3 if necessary. (DR DOS
3.41 and 5.0 do not expand asterisks)
'.' and '..' in the path are resolved
filespecs on local drives always start with "d:", those on network
drives always start with "\\"
if path string is on a JOINed drive, the returned name is the one that
would be needed if the drive were not JOINed; similarly for a
SUBSTed, ASSIGNed, or network drive letter. Because of this, it is
possible to get a qualified name that is not legal under the current
combination of SUBSTs, ASSIGNs, JOINs, and network redirections
under DOS 3.3 through 6.00, a device name is translated differently if
the device name does not have an explicit directory or the directory
is \DEV (relative directory DEV from the root directory works
correctly). In these cases, the returned string consists of the
unchanged device name and extension appended to the string X:/
(forward slash instead of backward slash as in all other cases) where
X is the default or explicit drive letter.
under MS-DOS 7.0, this call returns the short name for any
long-filename portions of the provided pathname or filename
functions which take pathnames require canonical paths if invoked via
INT 21/AX=5D00h
supported by OS/2 v1.1 compatibility box
NetWare 2.1x does not support characters with the high bit set; early
versions of NetWare 386 support such characters except in this call.
In addition, NetWare returns error code 3 for the path "X:\"; one
should use "X:\." instead.
Novell DOS 7 reportedly has difficulty with non-MS-DOS filenames on
network drives, and can return "D:" instead of "SERVER/VOLUME"
for DOS 3.3-6.0, the input and output buffers may be the same, as the
canonicalized name is built in an internal buffer and copied to the
specified output buffer as the very last step
for DR DOS 6.0, this function is not automatically called when on a
network. Device drivers reportedly cannot make this call from their
INIT function. Using the same pointer for both input and output
buffers is not supported in the April 1992 and earlier versions of
DR DOS
Windows for Workgroups 3.11, Windows95 and even MS-DOS 7.00 only
return the local drive path; to obtain network paths use
INT 21/AX=5F02h or INT 21/AX=5F46h instead
Corel's CORELCDX and MSCDEX without the /S switch return canonical
names of the form "\\D.\A.\path", where "D" is the CD-ROM drive
letter and "A" appears to indicate the first physical CD-ROM drive;
MSCDEX with the /S switch returns a canonical name with embedded
blanks. Novell DOS 7 NWCDEX as of the 11/16/94 update returns the
same canonical path as MSCDEX; earlier revisions returned
"Cdex. D:\path", where "D" is the CD-ROM drive letter
the Windows95 MSCDEX-replacement VxD returns "D:\path", even though the
MS-DOS 7.00 MSCDEX behaves identically to older versions (above)
SeeAlso: AX=5F02h,AX=5FB3h,AX=7160h/CL=00h,INT 2F/AX=1123h,INT 2F/AX=1221h
--------D-2161-------------------------------
INT 21 - DOS 3.0+ - UNUSED (RESERVED FOR NETWORK USE)
AH = 61h
Return: AL = 00h
Note: this function does nothing and returns immediately
--------O-2161--BP6467-----------------------
INT 21 U - OS/2 v1.x FAPI - OS/2 FILE SYSTEM JOIN/SUBST
AH = 61h
BP = 6467h ("dg")
AL = function
00h list (i.e. get)
01h add
02h delete
BX = drive number
CX = size of buffer
SI = type (0002h JOIN, 0003h SUBST)
ES:DI -> buffer
Return: CF clear if successful
AX = 0000h
ES:DI buffer filled, if appropriate
CF set on error
AX = error code
Notes: used by JOIN and SUBST to communicate with the OS/2 file system
for function 00h (list), the ES:DI buffer is filled with the ASCIZ
JOIN/SUBST path or an empty string if the drive is not JOINed/SUBSTed
also supported by OS/2 v2.0+ Virtual DOS Machines
--------D-2162-------------------------------
INT 21 - DOS 3.0+ - GET CURRENT PSP ADDRESS
AH = 62h
Return: BX = segment of PSP for current process
Notes: this function does not use any of the DOS-internal stacks and may
thus be called at any time, even during another INT 21h call
the current PSP is not necessarily the caller's PSP
identical to the undocumented AH=51h
SeeAlso: AH=50h,AH=51h
--------U-216262SI1994-----------------------
INT 21 - ENVLOCK - INSTALLATION CHECK
AX = 6262h
SI = 1994h
Return: AX = 1994h if installed
ES = ENVLOCK's resident segment
Notes: to deactivate ENVLOCK, zero out the byte at ES:[0102h]
Program: ENVLOCK is a TSR by Alexander Yanovsky (aka PC Hawk) that forces
other TSRs to deallocate their environment when they stay resident
--------D-216300-----------------------------
INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
AX = 6300h
Return: CF clear if successful
DS:SI -> lead byte table (see #1435)
CF set on error
AX = error code (01h) (see #1366 at AH=59h/BX=0000h)
Notes: does not preserve any registers other than SS:SP
the US version of MS-DOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately
SeeAlso: AX=6301h,AH=07h,AH=08h,AH=0Bh
Format of double-byte character set lead byte table entry:
Offset Size Description (Table 1435)
00h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
02h 2 BYTEs low/high ends of a range of leading byte of double-byte chars
...
N 2 BYTEs 00h,00h end flag
--------D-216300-----------------------------
INT 21 - DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE
AX = 6300h
Return: AL = error code
00h successful
DS:SI -> DBCS table (see #1435)
all other registers except CS:IP and SS:SP destroyed
FFh not supported
Notes: probably identical to AH=63h/AL=00h for DOS 2.25
the US version of MS-DOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately, WITHOUT setting DS:SI;
only the Far East versions of MS-DOS 3.2 and 3.3 supported this call
the US version of DOS 4.0+ accepts this function, but returns an empty
list
IBM DOS 6.1 SYS.COM assumes that CF is set on error
SeeAlso: AX=6300h"DOS 2.25"
--------D-216301-----------------------------
INT 21 - DOS 2.25, DOS 3.2+ - SET KOREAN (HANGEUL) INPUT MODE
AX = 6301h
DL = new mode
00h return only full characters on DOS keyboard input functions
01h return partially-formed (interim) characters also
Return: AL = status
00h successful
FFh invalid mode
Notes: Novell DOS 7 simply stores DL in the caller's PSP (see #1066 at AH=26h)
the US version of MS-DOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately; only the Far East versions
of MS-DOS 3.2 and 3.3 supported this call
SeeAlso: AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6302h
--------D-216302-----------------------------
INT 21 - DOS 2.25, DOS 3.2+ - GET KOREAN (HANGEUL) INPUT MODE
AX = 6302h
Return: AL = status
00h successful
DL = current input mode
00h return only full characters (clears interim flag)
01h return partial characters (sets interim flag)
FFh not supported
Notes: Novell DOS 7 simply reads the value out of the caller's PSP, so it
can return values other than 00h or 01h if the last call to AX=6301h
used another value
the US version of MS-DOS 3.30 treats this as an unused function,
setting AL=00h and returning immediately, WITHOUT setting DL; only
the Far East versions of MS-DOS 3.2 and 3.3 supported this call
SeeAlso: AH=07h,AH=08h,AH=0Bh,AX=6300h,AX=6301h
--------v-216303------------------------
INT 21 - VIRUS - "DOS IDLE" - INSTALLATION CHECK
AX = 6303h
Return: BX = 6303h if resident
SeeAlso: AX=5643h"VIRUS",AX=6304h"VIRUS",AX=9AD5h"VIRUS"
--------v-216304------------------------
INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK
AX = 6304h
Return: BX = 6304h if resident
SeeAlso: AX=6303h"VIRUS",AX=6969h"VIRUS"
--------D-2164-------------------------------
INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
AH = 64h
AL = flag
00h (default) call device driver function 5 (non-dest read)
before INT 21/AH=01h,08h,0Ah
nonzero don't call driver function 5
Return: nothing (MS-DOS)
CF set, AX=error code??? (DR DOS 5.0, which does not support this call)
Notes: this function is called by the DOS 3.3+ PRINT.COM
under MS-DOS, this function does not use any of the DOS-internal stacks
and may thus be called at any time, even during another DOS call
SeeAlso: AH=01h,AH=08h,AH=0Ah,AX=5D06h
--------O-2164--DX0000-----------------------
INT 21 U - OS/2 v2.0+ Virtual DOS Machine - ENABLE AUTOMATIC TITLE SWITCH
AH = 64h
DX = 0000h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Note: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
SeeAlso: AH=64h/DX=0001h,INT 21/AH=4Bh
--------O-2164--DX0001-----------------------
INT 21 U - OS/2 v2.0+ Virtual DOS Machine - SET SESSION TITLE
AH = 64h
DX = 0001h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
ES:DI -> new ASCIZ title (max 12 char) or "" to restore default title
Note: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0002h,INT 15/AH=12h/BH=05h
--------O-2164--DX0002-----------------------
INT 21 U - OS/2 v2.0+ Virtual DOS Machine - GET SESSION TITLE
AH = 64h
DX = 0002h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
ES:DI -> 13-byte buffer for current title
Return: buffer filled (single 00h if title never changed)
Note: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0001h,INT 15/AH=12h/BH=05h
--------O-2164--DX0003-----------------------
INT 21 U - OS/2 v2.1 Virtual DOS Machine - GET LASTDRIVE
AH = 64h
DX = 0003h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Return: AL = highest drive supported
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
used by WinOS2
not supported by OS/2 Warp 3.0, check list of lists instead (see #1313)
SeeAlso: AH=52h
--------O-2164--DX0004-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SIZE OF PTDA JFT
AH = 64h
DX = 0004h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Return: AX = number of entries in OS/2 JFT for VDM
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
in an OS/2 VDM, the DOS Job File Table in the PSP contains an index
into the OS/2 JFT in the Per-Task Data Area rather than an SFT index
because the OS/2 SFT can contain more than 255 entries
--------O-2164--DX0005-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SECOND SFT FLAGS WORD
AH = 64h
DX = 0005h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
DI = DOS file handle
Return: AX = value of second flags word from OS/2 SFT entry for file
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
the OS/2 SFT has two flags words rather than DOS's one word, and this
function provides access to the word which is not present in DOS
--------O-2164--DX0006-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - UNLOAD DOSKRNL SYMBOLS & LOAD PROGR
AH = 64h
DX = 0006h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
ES:DI -> ASCIZ filespec
DS = base address for loading
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
this function is only supported by the kernel debugging version of
OS2KRNL
--------O-2164--DX0007-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET WinOS2 CALL GATE ADDRESS
AH = 64h
DX = 0007h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Return: AX = call gate address
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
used by WinOS2 to make direct calls to OS2KRNL, bypassing the overhead
of DOSKRNL
--------O-2164--DX0008-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LOADING MESSAGE
AH = 64h
DX = 0008h (function number)
CX = 636Ch (magic value, "cl")
BX = 0000h (indicates special request)
Return: DS:DX -> '$'-terminated message "Loading. Please wait."
Notes: if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
this function permits National Language Support for the initial message
displayed while WinOS2 starts a full-screen session
--------O-2164--CX636C-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API support
AH = 64h
CX = 636Ch ("cl")
BX = API ordinal (see #1436)
other registers as appropriate for API call
Return: as appropriate for API call
SeeAlso: AH=64h/BX=0025h,AH=64h/BX=00B6h,AH=64h/BX=00CBh
(Table 1436)
Values for OS/2 API ordinal:
0025h DOS32StartSession
0082h DosGetCP
00B6h DosQFSAttach
00BFh DosEditName
00CBh DosForceDelete
0144h Dos32CreateEventSem
0145h Dos32OpenEvenSem
0146h Dos32CloseEventSem
0147h Dos32ResetEventSem
0148h Dos32PostEventSem
0149h Dos32WaitEventSem
014Ah Dos32QueryEventSem
014Bh Dos32CreateMutexSem
014Ch Dos32OpenMutexSem
014Dh Dos32CloseMutexSem
014Eh Dos32RequestMutexSem
014Fh Dos32ReleaseMutexSem
0150h Dos32QueryMutexSem
0151h Dos32CreateMuxWaitSem
0152h Dos32OpenMuxWaitSem
0153h Dos32CloseMuxWaitSem
0154h Dos32WaitMuxWaitSem
0155h Dos32AddMuxWaitSem
0156h Dos32DeleteMuxWaitSem
0157h Dos32QueryMuxWaitSem
--------O-2164--BX0025-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DOS32StartSession
AH = 64h
BX = 0025h (API ordinal)
CX = 636Ch ("cl")
DS:SI -> STARTDATA structure (see #1437)
Return: AX = return code
SeeAlso: AH=64h/CX=636Ch,AH=64h/BX=00B6h
Format of OS/2 Virtual DOS Machine STARTDATA structure:
Offset Size Description (Table 1437)
00h WORD length of structure (must be 0018h,001Eh,0020h,0032h,or 003Ch)
02h WORD relation of new process to caller (00h independent, 01h child)
04h WORD fore/background (00h foreground, 01h background)
06h WORD trace options (00h-02h, 00h = no trace)
08h DWORD pointer to ASCIZ program title (max 62 chars) or 0000h:0000h
0Ch DWORD pointer to ASCIZ program name (max 128 chars) or 0000h:0000h
10h DWORD pointer to ASCIZ program args (max 144 chars) or 0000h:0000h
14h DWORD "TermQ" (currently reserved, must be 00000000h)
18h DWORD pointer to environment (max 486 bytes) or 0000h:0000h
1Ch WORD inheritance (00h or 01h)
1Eh WORD session type
00h OS/2 session manager determines type (default)
01h OS/2 full-screen
02h OS/2 window
03h PM
04h VDM full-screen
07h VDM window
20h DWORD pointer to ASCIZ icon filename (max 128 chars) or 0000h:0000h
24h DWORD "PgmHandle" (currently reserved, must be 00000000h)
28h WORD "PgmControl"
2Ah WORD initial column
2Ch WORD initial row
2Eh WORD initial width
30h WORD initial height
32h WORD reserved (0)
34h DWORD "ObjectBuffer" (currently reserved, must be 00000000h)
38h DWORD "ObjectBufferLen" (currently reserved, must be 00000000h)
--------O-2164--BX00B6-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosQFSAttach
AH = 64h
BX = 00B6h (API ordinal)
CX = 636Ch (magic value "cl")
DS = user's data segment
ES:DI -> FSQAttachStruc (see #1438)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = 0000h
data buffer filled
SeeAlso: AH=64h/CX=636Ch
Format of OS/2 Virtual DOS Machine FSQAttachStruc:
Offset Size Description (Table 1438)
00h DWORD reserved
04h DWORD pointer to the offset of the data buffer length
08h DWORD pointer to the offset of the data buffer
0Ch WORD FSA Info level
0Eh WORD ordinal index into table
10h DWORD pointer to the offset of the device name
Notes: The segment value of the buffer, buffer length, and device
name MUST all be the same. It is defined on entry in the DS
register. The details of each info level are defined in the
OS/2 CP Reference.
--------O-2164--BX00CB-----------------------
INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosForceDelete
AH = 64h
BX = 00CBh (API ordinal)
CX = 636Ch (magic value "cl")
DS:DX -> ASCIZ filename
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (02h,03h,05h) (see #1366 at AH=59h/BX=0000h)
Desc: delete a file without saving it to the undelete directory
SeeAlso: AH=41h,AH=64h/CX=636Ch
--------D-2165-------------------------------
INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
AH = 65h
AL = info ID
01h get general internationalization info
02h get pointer to uppercase table
03h (DOS 6.2+ COUNTRY.SYS) get pointer to lowercase table
04h get pointer to filename uppercase table
05h get pointer to filename terminator table
06h get pointer to collating sequence table
07h (DOS 4.0+) get pointer to Double-Byte Character Set table
BX = code page (FFFFh=global code page) (see #1446)
DX = country ID (FFFFh=current country)
ES:DI -> country information buffer (see #1439)
CX = size of buffer (>= 5)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
CX = size of country information returned
ES:DI -> country information (see #1439)
Notes: AL=05h appears to return same info for all countries and codepages; it
has been documented for DOS 5+, but was undocumented in earlier
versions
NLSFUNC must be installed to get info for countries other than the
default
subfunctions 02h and 04h are identical under OS/2
subfunction 03h apparently supports only codepage 866 in DOS 6.2x
SeeAlso: AH=38h,AH=70h"MS-DOS 7",INT 2F/AX=1401h,INT 2F/AX=1402h
SeeAlso: INT 2F/AX=14FEh
Format of country information:
Offset Size Description (Table 1439)
00h BYTE info ID
---if info ID = 01h---
02h WORD size of following info in bytes
04h WORD country ID (see #1088 at AH=38h)
06h WORD code page (see #1446)
08h 34 BYTEs country-dependent info (see #1087 at AH=38h)
---if info ID = 02h---
01h DWORD pointer to uppercase table (see #1440)
---if info ID = 03h---
01h DWORD pointer to lowercase table (see #1441)
---if info ID = 04h---
01h DWORD pointer to filename uppercase table (see #1442)
---if info ID = 05h---
01h DWORD pointer to filename character table (see #1443)
---if info ID = 06h---
01h DWORD pointer to collating table (see #1444)
---if info ID = 07h (DOS 4.0+)---
01h DWORD pointer to DBCS lead byte table (see #1445)
SeeAlso: #1464
Format of uppercase table:
Offset Size Description (Table 1440)
00h WORD table size (0080h)
02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
SeeAlso: #1439,#1442
Format of lowercase table:
Offset Size Description (Table 1441)
00h WORD table size (0100h)
02h 256 BYTEs lowercase equivalents (if any) of chars 00h to FFh
SeeAlso: #1439,#1442
Format of filename uppercase table:
Offset Size Description (Table 1442)
00h WORD table size (0080h)
02h 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
SeeAlso: #1439,#1440
Format of filename terminator table:
Offset Size Description (Table 1443)
00h WORD table size (not counting this word)
02h BYTE ??? (01h for MS-DOS 3.30-6.00)
03h BYTE lowest permissible character value for filename
04h BYTE highest permissible character value for filename
05h BYTE ??? (00h for MS-DOS 3.30-6.00)
06h BYTE first excluded character in range \ all characters in this
07h BYTE last excluded character in range / range are illegal
08h BYTE ??? (02h for MS-DOS 3.30-6.00)
09h BYTE number of illegal (terminator) characters
0Ah N BYTEs characters which terminate a filename: ."/\[]:|<>+=;,
Note: partially documented for DOS 5+, but undocumented for earlier versions
SeeAlso: #1439
Format of collating table:
Offset Size Description (Table 1444)
00h WORD table size (0100h)
02h 256 BYTEs values used to sort characters 00h to FFh
SeeAlso: #1439
Format of DBCS lead byte table:
Offset Size Description (Table 1445)
00h WORD length of table in ranges
02h 2N BYTEs start/end for N lead byte ranges
WORD 0000h (end of table)
SeeAlso: #1439
--------D-2165-------------------------------
INT 21 - DOS 4.0+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
AH = 65h
AL = function
20h capitalize character
DL = character to capitalize
Return: DL = capitalized character
21h capitalize string
DS:DX -> string to capitalize
CX = length of string
22h capitalize ASCIZ string
DS:DX -> ASCIZ string to capitalize
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Note: these calls have been documented for DOS 5+, but were undocumented in
DOS 4.x.
--------D-216523-----------------------------
INT 21 U - DOS 4.0+ - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
AX = 6523h
DL = character
DH = second character of double-byte character (if applicable)
Return: CF set on error
CF clear if successful
AX = type
00h no
01h yes
02h neither yes nor no
Note: supported by Novell DOS 7, though prior to Update 14, the results
depended on the kernel variant rather than the COUNTRY= setting
--------D-2165-------------------------------
INT 21 U - DOS 4.0+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
AH = 65h
AL = function
A0h capitalize filename character
DL = character to capitalize
Return: DL = capitalized character
A1h capitalize counted filename string
DS:DX -> filename string to capitalize
CX = length of string
A2h capitalize ASCIZ filename
DS:DX -> ASCIZ filename to capitalize
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Note: nonfunctional in MS-DOS 4.00 through 6.00 due to a bug (the code sets a
pointer depending on the high bit of AL, but doesn't clear the
bit before branching by function number). Supported and
functional(!) in Novell DOS 7 (Update 15)
--------D-216601-----------------------------
INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
AX = 6601h
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
BX = active code page (see #1446)
DX = system code page (see #1446)
SeeAlso: AX=6602h
--------D-216602-----------------------------
INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
AX = 6602h
BX = active code page (see #1446)
DX = system code page (active page at boot time)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = EB41h (Novell NWDOS v7.0 when NLSFUNC not installed and
request was for previously-active code page)
SeeAlso: AX=6601h,INT 2F/AX=14FFh
(Table 1446)
Values for code page:
0 Reduced 7-bit ASCII [NetWare]
37 EBCDIC: US/Canada English (CECP) [Windows NT 3.51+]
38 EBCDIC: International (old)
111 Greek
112 Turkish
113 Yugoslavian
161 Arabic [Linux]
162 Arabic [Linux]
163 Arabic [Linux]
164 Arabic [Linux]
165 Arabic [Linux]
237 EBCDIC: Germany (CECP)
273 EBCDIC: ??? (CECP)
274 EBCDIC: Belgium
275 EBCDIC: Brazilian
277 EBCDIC: Danish/Norwegian (CECP)
278 EBCDIC: Finnish/Swedish (CECP)
280 EBCDIC: Italian (CECP)
281 EBCDIC: Japanese-E
284 EBCDIC: Latin-American/Spanish (CECP)
285 EBCDIC: UK English (CECP)
290 EBCDIC: Japanese Kana
297 EBCDIC: French (CECP)
367 US-ASCII (ISO 646-US, 7-bit)
420 EBCDIC: Arabic 1
423 EBCDIC: Greek
424 EBCDIC: Hebrew
437 US / English / PC-8 / IBM-2
500 EBCDIC: Belgium/Switzerland (CECP)
500 EBCDIC: International
646 (??? reserved for ISO 646 7-bit codepages)
667 Eastern Europe (Polish)
668 Eastern Europe (Slavic)
708 Arabic/Middle East
737 Greek (2)
775 Baltic / Baltic Rim
819 Latin-1 (ISO 8859-1)
850 Multilingual (Latin-1)
851 Greek
852 Slavic/Easter Europe (Latin-2) [DOS 5+]
853 Turkish (Latin-2)
854 Spanish
855 Cyrilic (1)
857 Turkish
860 Portugese
861 Icelandic
862 Hebrew
863 French Canadian
864 Arabic/Middle East
865 Nordic (Norwegian/Danish)
866 Russian (Cyrillic 2)
867 Czech
868 Arabic
869 Greek (1)
870 EBCDIC: Yugoslavia (Roece)
871 EBCDIC: Icelandic
874 Thailand
875 EBCDIC: Greek
880 Russian (Cyrillic GOST)
880 EBCDIC: Cyrillic
881 Latin 1 (ISO 8859-1)
882 Latin 2 (ISO 8859-2)
883 Latin 3 (ISO 8859-3)
884 Latin 4 (ISO 8859-4)
885 Latin 5 (ISO 8859-5)
891 unknown
897 Japanese (Shift-JIS)
903 unknown
904 unknown
905 EBCDIC: Turkish
912 Latin 2 (ISO 8859-2: Eastern Europe)
913 (??? reserved for Latin 3)
914 (??? reserved for Latin 4)
915 Cyrillic (ISO 8859-5: Latin/Cyrillic)
916 (??? reserved for ISO 8859-6: Latin/Arabic)
917 (??? reserved for ISO 8859-7: Latin/Greek)
918 EBCDIC: Arabic 2
919 (??? reserved for ISO 8859-9: Latin 5)
920 (??? reserved for ISO 8859-10: Latin 6/Sami)
932 DBCS: Japanese (Shift-JIS)
934 DBCS: Korean
936 DBCS: Chinese (PRC/ROC, Simplified/xGB)
938 DBCS: Taiwan
938 DBCS: Chinese (PRC/ROC)
942 DBCS: Japanese SAA
944 DBCS: Korean SAA
948 DBCS: Chinese SAA (PRC/ROC)
949 Korean (Unified Hangul; Extended Wansung)
950 Chinese Traditional, Big5 (Taiwan, Hong Kong)
966 Saudi Arabian
972 Hebrew (Israeli VT100)
999 reserved for user-definable codepages
1004 Desktop Publishing
1026 EBCDIC: Turkish (Latin 5)
1047 EBCDIC: International (CECP, de-facto EBCDIC-US)
1250 MSWIN: Eastern Europe (Latin 2)
1251 MSWIN: Cyrillic
1252 MSWIN: English/W. Europe/Standard (Latin 1)
1253 MSWIN: Greek (GRC)
1254 MSWIN: Turkish
1255 MSWIN: Hebrew
1256 MSWIN: Arabic
1257 MSWIN: Baltic (Estonian, Latvian, Lithuanian)
1258 MSWIN: Vietnamese
1361 ANSI???: Korean (Johab)
10000 MAC: International/Standard (Roman)
10006 MAC: Greek
10007 MAC: Cyrillic
10029 MAC: Latin 2
10079 MAC: Icelandic
10081 MAC: Turkish
10646 (should be reserved for the future ISO 10646 32-bit codepage???)
65400 OS/2: reserved for Glyphs
Notes: not all code pages are available in all versions of DOS or
DOS-compatibles, and many (particularly EBCDIC) have not been
implemented for *any* DOS to date
CECP = 'Country Extended CodePage' by IBM.
Unicode (UCS-2) is a 16-bit character codeset, covering all commonly
used characters from almost any language. Not all definitions are
fixed at the time of this writing. Unicode will be the future of
character coding for the foreseeable future, but is only the
"basic multilingual plane" (BMP) subset of 32-bit ISO 10646 codes
(UCS-4), a single character set standard covering requirements for
all countries and languages, which is still under construction.
The MS Windows 'ANSI' codepage 1252 (based on the MS Windows 3.0+
implementation) appears to be 100% compatible with the code sets
used by Amiga OS and Acorn Archimedes RISC-OS and is also a linear
subset of the 16bit UniCode code set (UCS-2); the actual ANSI
codepage is defined by ISO 8859-1 (Latin 1).
At least applications for OS/2 Warp 3 Presentation Manager can use
EBCDIC codepages, but the codepage ID assignments for EBCDIC
codepages are not known for OS/2. OS/2 SAA codepages are not
supported in CONFIG.SYS. Codepage 65400 "Glyphs" is not actually a
codepage, but a way to directly access the first 256 of the 383
glyphs from the current font set.
Novell DOS 7/DR DOS 6/Caldera OpenDOS undocumented codepage 853
does not necessarily match with MS-DOS' undocumented codepage 853.
Undocumented codepages 667 and 668 can be found in Russian's PTS/DOS
6.51 and S/DOS 1.x DISPLAY.CPI and contain some Eastern European
characters.
Novell NetWare 3.xx clients support UniCode and codepages 437, 850,
860, 863, 865, 897, 932, and 1252 (possibly more). NetWare 4.xx
clients also support 1250, 1251, 1256. Personal NetWare 1.0 (PNW),
as it was distributed in Europe, supports UniCode and codepages 437,
850 and 1252. Novell's Client32 for DOS/Windows supports 874, 932,
936, 949, 950, 1250 - 1257. For codesets not yet available, Novell
offers a reduced ASCII 7-bit support through a codepage 0 used as a
translation table to UniCode, that supports characters 32-127 except
92 ('\').
Format of DOS .CPI (Code Page Information) file header:
Offset Size Description (Table 1447)
00h BYTE ID tag
FFh FONT file (Standard for generic display or
printer font files used by MS-DOS, PC-DOS, DR DOS
and Novell DOS)
7Fh DRFONT file (Used by DR DOS 6.0 / Novell DOS 7 for
enhanced & compressed display font files. DR DOS 6.0
and Novell DOS 7 still support the standard FONT
files, thus allowing leaning of .CPI files from
MS-DOS to DR DOS / Novell DOS!)
01h 7 BYTEs ID string
"FONT " = FONT file (Standard for display or printer)
"DRFONT " = DRFONT file (Enhanced compressed format used
by DR DOS 6.0 / Novell DOS 7 for display fonts)
08h 8 BYTEs reserved (0)
10h WORD number of pointers (1)
12h BYTE type of pointers (1)
13h DWORD pointer to file offset of FontInfoHeader
(Generally pointing to the byte just after FontFileHeader,
that is 0000h:0017h. Due to extra data at offset 17h, this
value has changed with DR DOS 6.0 / Novell DOS 7 DRFONTs!
"MS-DOS 4.0 programmers reference" claimed word offset
+15h as an endmarker (0000h), but actually it is the
High-Word of the pointer.)
--- Extended FontFileHeader with DR DOS 6.0 / Novell DOS 7 DRFONTs: ---
17h BYTE number of fonts per codepage supported by this file
(N=4 with both DR DOS 6.0 / Novell DOS 7 DRFONT files)
18h N BYTEs cellsize (Height) of fonts 1..N
the cellsize corresponds with the character boxes height,
but is also the count of bytes used for each of the
characters inside the font data (as currently all fonts
are organized heightx8 and 8 pixel width is just one byte).
var N DWORDs file offsets of DisplayFontData.
Format of DOS .CPI file Font Information Header:
Offset Size Description (Table 1448)
00h WORD number of codepage entries
var N codepage entry headers (see #1449)
SeeAlso: #1447
Format of DOS .CPI file CodePage Entry Header:
Offset Size Description (Table 1449)
00h WORD size of this header (normally 1Ch)
02h DWORD offset of next entry, or 0000h:0000h or FFFFh:FFFFh if last
(if a valid "next" pointer but all of the fonts indicated in
the .CPI header have been processed, this field normally
points at an optional text area at the end of the .CPI file
containing copyright information)
06h WORD device type
01h display (FONT or DRFONT)
02h printer (FONT)
08h 8 BYTEs blank-padded device name string
10h WORD code page (see #1446)
12h 3 WORDs reserved (0)
18h DWORD pointer to Font Data Header (see #0154)
normally immediately follows this header
SeeAlso: #1447
Format of DOS .CPI file Font Data Header:
Offset Size Description (Table 1450)
00h WORD record type
0001h FONT
0002h DRFONT (DR-DOS 6.0/Novell DOS 7 display font)
02h WORD number of fonts
04h WORD length of font data (display fonts)
??? (printer fonts)
06h var font data (#fonts * fontlength) bytes
SeeAlso: #1447
Format of DOS .CPI file ScreenFONT Header:
Offset Size Description (Table 1451)
00h 6 BYTEs display-font header (see #1453)
06h var display font data
SeeAlso: #1447
Format of .CPI file DRFONT Header:
Offset Size Description (Table 1452)
00h 6N BYTEs DisplayFONT headers for N fonts (see #1453)
M WORDs character index table for cell offsets in font data
currently 256 words in length
SeeAlso: #1447
Format of .CPI file DisplayFONT header:
Offset Size Description (Table 1453)
00h BYTE height of character cell
01h BYTE width of character cell (currently always 08h)
02h BYTE aspect ratio (height) (currently 00h, unused)
03h BYTE aspect ratio (width) (currently 00h, unused)
04h WORD number of characters per font (256)
SeeAlso: #1447
Format of .CPI file PrinterFONT header:
Offset Size Description (Table 1454)
00h WORD type of printer
0001h (4201.CPI, 1050.CPI, EPS.CPI)
0002h (4208.CPI, 5202.CPI, PPDS.CPI)
02h WORD bytes per hardware/download codepage-select escape sequence
(max 31, typically 12)
04h N BYTEs escape sequence to select hardware codepage
N BYTEs escape sequence to select download codepage
var download data for printer font (including escape sequence to
transfer data)
SeeAlso: #1447
--------D-2167-------------------------------
INT 21 - DOS 3.3+ - SET HANDLE COUNT
AH = 67h
BX = size of new file handle table for process
Return: CF clear if successful
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
Desc: adjust the size of the per-process open file table, thus raising or
lowering the limit on the number of files the caller can open
simultaneously
Notes: if BX <= 20, no action is taken if the handle limit has not yet been
increased, and the table is copied back into the PSP if the limit
is currently > 20 handles
for file handle tables of > 20 handles, DOS 3.30 never reuses the
same memory block, even if the limit is being reduced; this can lead
to memory fragmentation as a new block is allocated and the existing
one freed
only the first 20 handles are copied to child processes in DOS 3.3-6.0
increasing the file handles here will not, in general, increase the
number of files that can be opened using the runtime library of a
high-level language such as C
Novell DOS 7 reportedly terminates the calling program if the JFT is
being reduced in size and there are any open file handles beyond
the portion of the JFT being retained
BUGS: the original release of DOS 3.30 allocates a full 64K for the handle
table on requests for an even number of handles
DR DOS 3.41 and 5.0 will lose track of any open file handles beyond
the portion of the JFT retained after the call; MS-DOS will indicate
error 04h if any of the JFT entries to be removed are open
SeeAlso: AH=26h,AH=86h
--------D-2168-------------------------------
INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
AH = 68h
BX = file handle
Return: CF clear if successful
all data still in DOS disk buffers is written to disk immediately,
and the file's directory entry is updated
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
SeeAlso: AX=5D01h,AH=6Ah,INT 2F/AX=1107h
--------D-2169-------------------------------
INT 21 U - DOS 4.0+ internal - GET/SET DISK SERIAL NUMBER
AH = 69h
AL = subfunction
00h get serial number
01h set serial number
BL = drive (0=default, 1=A, 2=B, etc)
BH = info level (00h only for DOS; OS/2 allows other levels)
DS:DX -> disk info (see #1455)
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX destroyed
(AL = 00h) buffer filled with appropriate values from extended BPB
(AL = 01h) extended BPB on disk set to values from buffer
Notes: does not generate a critical error; all errors are returned in AX
error 0005h given if no extended BPB on disk
does not work on network drives (error 0001h)
buffer after first two bytes is exact copy of bytes 27h thru 3Dh of
extended BPB on disk
this function is supported under Novell NetWare versions 2.0A through
3.11; the returned serial number is the one a DIR would display,
the volume label is the NetWare volume label, and the file system
is set to "FAT16".
this function is not supported by Novell DOS 7 through Update 13, but
Personal NetWare 1.0 does support this function
the serial number is computed from the current date and time when the
disk is created; the first part is the sum of the seconds/hundredths
and month/day, the second part is the sum of the hours/minutes and
year
the volume label which is read or set is the one stored in the extended
BPB on disks formatted with DOS 4.0+, rather than the special root
directory entry used by the DIR command in COMMAND.COM (use AH=11h
to find that volume label)
SeeAlso: AX=440Dh"DOS 3.2+"
Format of disk info:
Offset Size Description (Table 1455)
00h WORD 0000h (info level)
02h DWORD disk serial number (binary)
06h 11 BYTEs volume label or "NO NAME " if none present
11h 8 BYTEs (AL=00h only) filesystem type (see #1456)
Note: under MS-DOS 7.0 or a Windows95 DOS box, the volume label field can be
all blanks even when a volume label has been set (the Win95
installation seems to blank the volume label field in the partition
boot sector; once LABEL has been run, the volume label is reported
correctly)
SeeAlso: AH=4Eh
(Table 1456)
Values for filesystem type:
"FAT12 " 12-bit FAT
"FAT16 " 16-bit FAT
"CDROM " High-Sierra CD-ROM filesystem
"CD001 " ISO 9660 CD-ROM filesystem
"CDAUDIO " audio CD
SeeAlso: #1455
--------O-2169-------------------------------
INT 21 - DR DOS 5.0 - NULL FUNCTION
AH = 69h
Return: AL = 00h
SeeAlso: AH=18h
--------v-216969-----------------------------
INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
AX = 6969h
Return: AX = 0666h if resident
SeeAlso: AX=58CCh,AX=6304h"VIRUS",AH=71h"VIRUS"
--------d-2169FFDX0000-----------------------
INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
AX = 69FFh
DX = 0000h
BX = CB00h (magic value)
Return: ES:BX -> CUBITR.EXE handler for INT 21
Note: the installation check consists of testing that the first eight bytes
at the returned interrupt handler are EBh 07h "CUBITR" (a short
jump around the signature followed by the signature); the byte
following the signature (i.e. ES:[BX+8]) indicates whether CUBITR
is active (01h) or disabled (00h)
SeeAlso: AX=69FFh/DX=CFBFh
Index: installation check;CUBIT
--------d-2169FFDXCFBF-----------------------
INT 21 U - CUBIT v4.00 - UNINSTALL
AX = 69FFh
DX = CFBFh
CX = EFCFh
BX = CB00h (magic value)
Return: ES:BX -> CUBITR.EXE handler for INT 21
CX = status
2020h successful
2222h failed
Note: if DX is neither 0000h nor CFBFh on entry, some other code is executed
SeeAlso: AX=69FFh/DX=0000h
--------D-216A-------------------------------
INT 21 U - DOS 4.0+ - COMMIT FILE
AH = 6Ah
BX = file handle
Return: CF clear if successful
AH = 68h
CF set on error
AX = error code (06h) (see #1366 at AH=59h/BX=0000h)
Note: identical to AH=68h in DOS 5.0-6.0; not known whether this is the case
in DOS 4.x
SeeAlso: AH=68h
--------D-216B-------------------------------
INT 21 U - DOS 4.0 internal - IFS IOCTL
AH = 6Bh
AL = subfunction
00h ???
DS:SI -> Current Directory Structure???
CL = drive (1=A:)
01h ???
DS:SI -> ???
CL = file handle???
02h ???
DS:SI -> Current Directory Structure???
DI = ???
CX = drive (1=A:)
Return: CF set on error
AX = error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Note: passed through to INT 2F/AX=112Fh with AX on top of stack
SeeAlso: AH=6Bh"DOS 5",INT 2F/AX=112Fh
--------D-216B-------------------------------
INT 21 U - DOS 5+ - NULL FUNCTION
AH = 6Bh
Return: AL = 00h
Note: this function does nothing and returns immediately
SeeAlso: AH=6Bh"DOS 4"
--------D-216C00-----------------------------
INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE
AX = 6C00h
BL = open mode as in AL for normal open (see also AH=3Dh)
bit 7: inheritance
bits 4-6: sharing mode
bit 3 reserved
bits 0-2: access mode
100 read-only, do not modify file's last-access time (DOS 7.0)
BH = flags
bit 6 = auto commit on every write (see also AH=68h)
bit 5 = return error rather than doing INT 24h
bit 4 = (FAT32) extended size (>= 2GB)
CX = create attribute (see #1458)
DL = action if file exists/does not exist (see #1459)
DH = 00h (reserved)
DS:SI -> ASCIZ file name
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = file handle
CX = status (see #1457)
Notes: the PC LAN Program only supports existence actions (in DL) of 01h,
10h with sharing=compatibility, and 12h
DR DOS reportedly does not support this function and does not return
an "invalid function call" error when this function is used.
the documented bits of BX are stored in the SFT when the file is opened
(see #1327,#1328)
BUG: this function has bugs (at least in DOS 5.0 and 6.2) when used with
drives handled via the network redirector (INT 2F/AX=112Eh):
- CX (attribute) is not passed to the redirector if DL=11h,
- CX does not return the status, it is returned unchanged because
DOS does a PUSH CX/POP CX when calling the redirector.
SeeAlso: AH=3Ch,AH=3Dh,AX=6C01h,AH=71h,INT 2F/AX=112Eh
(Table 1457)
Values for extended open function status:
01h file opened
02h file created
03h file replaced
Bitfields for file create attribute:
Bit(s) Description (Table 1458)
6-15 reserved
5 archive
4 reserved
3 volume label
2 system
1 hidden
0 readonly
Bitfields for action:
Bit(s) Description (Table 1459)
7-4 action if file does not exist
0000 fail
0001 create
3-0 action if file exists
0000 fail
0001 open
0010 replace/open
--------O-216C01-----------------------------
INT 21 U - OS/2 v2.0 - "DosOpen2"
AX = 6C01h
BL = open mode as in AL for normal open (see also AH=3Dh)
bit 7: inheritance
bits 4-6: sharing mode
bit 3 reserved
bits 0-2: access mode
BH = flags
bit 6 = auto commit on every write (see also AH=68h)
bit 5 = return error rather than doing INT 24h
CX = create attribute (see #1458)
DL = action if file exists/does not exist (see #1459)
DH = 00h (reserved)
DS:SI -> ASCIZ file name
ES:DI -> EAOP structure
Return: CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
CF clear if successful
AX = file handle
CX = status (see #1457)
Note: this function is virtually identical to AX=6C00h, but supports OS/2's
extended attributes
SeeAlso: AX=5704h,AX=6C00h,AH=6Fh"OS/2"
--------D-216D-------------------------------
INT 21 U - DOS 5+ ROM - FIND FIRST ROM PROGRAM
AH = 6Dh
DS:DX -> ASCIZ program name (may contain wildcrds)
Return: CF clear if found
Disk Transfer Area filled with ROM search structure (see #1460)
CF set if not found
AX = error code
0002h name not found in ROM
0003h name contains colon or backslash
---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
AL = 00h
Notes: the '*' wildcard matches all remaining characters in a ROM program's
name; any following characters in the search mask are ignored up to
another asterisk, which must be matched by an asterisk in the
found program's name.
the search mask and program names may contain multiple periods
SeeAlso: AH=1Ah,AH=4Eh,AH=6Eh,AX=6F00h,AX=6F02h,INT 2F/AX=160Ch
Format of ROM search structure:
Offset Size Description (Table 1460)
00h 13 BYTEs ASCIZ name of found ROM program
0Dh DWORD address at which to resume search (do not modify)
11h var ASCIZ search mask passed in (do not modify)
--------O-216D-------------------------------
INT 21 U - OS/2 v1.x FAPI - "DosMkDir2"
AH = 6Dh
???
Return: ???
Desc: create a new directory, with extended attribute information
Note: also supported by OS/2 v2.0+ Virtual DOS Machines
BUG: does not work under OS/2 v2.0 because MVDM does not translate the
real-mode segment pointer in the Extended Attribute structure
(see #1359) into a protected-mode selector; use AH=39h followed by
AX=5703h instead
SeeAlso: AH=39h,AX=5702h"OS/2",AX=5703h"OS/2"
--------O-216D-------------------------------
INT 21 U - Novell DOS 7 - NOP
AH = 6Dh
Return: AX = 0000h
Note: this function invokes the same code as other NOP functions such as
AH=18h and AH=61h
--------D-216E-------------------------------
INT 21 U - DOS 5+ ROM - FIND NEXT ROM PROGRAM
AH = 6Eh
Disk Transfer Area contains result of previous FindFirst ROM
(see AH=6Dh)
Return: CF clear if found
Disk Transfer Area filled with updated ROM search structure
(see #1460)
CF set if not found
AX = 0012h (no more matches)
---if not supported (DOS <5, MS-DOS 5+ non-ROM versions)---
AL = 00h
SeeAlso: AH=4Fh,AH=6Dh
--------O-216E-------------------------------
INT 21 U - OS/2 v1.x FAPI - "DosEnumAttrib"
AH = 6Eh
DS:SI -> parameter packet (see #1461)
Return: CF clear if successful
AX = 0000h
DS:SI buffer updated
CF set on error
AX = error code
Note: also supported by OS/2 v2.0+ Virtual DOS Machines
SeeAlso: AX=5703h,AH=6Fh"OS/2",INT 2F/AX=112Dh
Format of OS/2 DosEnumAttrib parameter packet:
Offset Size Description (Table 1461)
00h DWORD reserved (0)
04h DWORD info level (always 00000001h)
08h DWORD (call) number of entries requested
(ret) actual number of entries returned
0Ch DWORD length of buffer
10h DWORD pointer to buffer for results
14h DWORD number of first entry to return
18h DWORD -> file handle or ASCIZ pathname
1Ch WORD flag: 00h = previous field is file handle, 01h = pathname
--------D-216F00-----------------------------
INT 21 U - DOS 5+ ROM - GET ROM SCAN START ADDRESS
AX = 6F00h
Return: CF clear
AL = 00h
BX = current ROM scan starting segment if function supported
SeeAlso: AH=6Dh,AX=6F01h,AX=6F02h
--------O-216F00-----------------------------
INT 21 U - OS/2 v1.x FAPI - "DosQMaxEASize" - GET MAXIMUM SIZE OF EXTENDED ATTR
AX = 6F00h
DS:SI -> DWORD buffer for maximum size of an extended attribute
Return: CF clear if successful
AX = 0000h
buffer filled
CF set on error
AX = error code
Note: also supported by OS/2 v2.0+ Virtual DOS Machines
SeeAlso: AX=5703h,AX=6C01h,AH=6Eh"OS/2"
--------D-216F01-----------------------------
INT 21 U - DOS 5+ ROM - SET ROM SCAN START ADDRESS
AX = 6F01h
BX = new ROM scan starting address
Return: CF clear
AL = 00h
SeeAlso: AX=6F00h,AX=6F03h
--------D-216F02-----------------------------
INT 21 U - DOS 5+ ROM - GET EXCLUSION REGION LIST
AX = 6F02h
ES:BX -> buffer for exclusion region list (see #1462)
Return: CF clear
AL = 00h
ES:BX = 0000h:0000h on error, unchanged if buffer filled
Note: for DOS versions which do not support this function, the return value
is AL=00h, CF unchanged, ES:BX unchanged, and the ES:BX buffer
unchanged
SeeAlso: AX=6F00h,AX=6F03h
Format of ROM exclusion region list:
Offset Size Description (Table 1462)
00h WORD number of entries
02h 2N WORDs start/end segments of N excluded regions
--------D-216F03-----------------------------
INT 21 U - DOS 5+ ROM - SET EXCLUSION REGION LIST
AX = 6F03h
DS:DX -> new exclusion region list (see #1462)
Return: CF clear
AL = 00h
Notes: DOS saves only the pointer and assumes that the contents of the list
are never changed, and that regions do not overlap
if AL > 03h on entry, DOS returns CF set/AL=01h
SeeAlso: AX=6F01h,AX=6F02h
--------D-2170-------------------------------
INT 21 - MS-DOS 7 (Windows95) - GET/SET INTERNATIONALIZATION INFORMATION
AH = 70h
AL = subfunction
00h get ??? info
CX = buffer size (3Ah bytes needed)
ES:DI -> buffer
01h set above info
CX = number of bytes to set
DS:SI -> buffer containing ??? info (see #1463)
02h set general internationalization info
DS:SI -> buffer containing info (see #1464)
CX = buffer size in bytes (up to 26h bytes used)
first three bytes are skipped, the rest is copied to somewhere
in the DOS data segment
Return: CF clear if successful
ES:DI buffer filled (func 00h) (see #1463)
CX = number of bytes actually set or returned
(max 003Ah for functions 00h and 01h under v7.00, 0026h for
function 02h)
CF set on error
AX = error code
7000h if function not supported
SeeAlso: AH=38h,AH=65h
Format of MS-DOS v7.0 ??? table:
Offset Size Description (Table 1463)
00h 58 BYTEs ??? country-specific information
returned was (among others) "ENU USA GR"..."AM PM M/d/yy"...
"dddd,MMMMdd,yyyy" in the German Preview version, and "US"
instead of "GR" in the US build 450 version (with German
country setting) and the US build 950a version with US
country settings
SeeAlso: #1464
Format of MS-DOS v7.0 internationalization table:
Offset Size Description (Table 1464)
00h 3 BYTEs unused (and ignored by DOS)
03h WORD country ID (see #1088 at AH=38h)
05h WORD code page (see #1446)
07h WORD date format
09h 5 BYTEs ASCIZ current symbol string
07h 2 BYTEs ASCIZ thousands separator
09h 2 BYTEs ASCIZ decimal separator
0Bh 2 BYTEs ASCIZ date separator
0Dh 2 BYTEs ASCIZ time separator
0Fh BYTE currency format
bit 2 = set if currency symbol replaces decimal point
bit 1 = number of spaces between value and currency symbol
bit 0 = 0 if currency symbol precedes value
1 if currency symbol follows value
10h BYTE number of digits after decimal in currency
11h BYTE time format
bit 0 = 0 if 12-hour clock
1 if 24-hour clock
12h DWORD address of case map routine
(FAR CALL, AL = character to map to upper case [>= 80h])
16h 2 BYTEs ASCIZ data-list separator
18h 10 BYTEs reserved
Note: this table has the identical format to the extended country information
retrieved via AH=65h with info ID = 01h
SeeAlso: #1087,#1439
----------217070BX6060-----------------------
INT 21 - PCW Weather Card interface - GET DATA SEGMENT
AX = 7070h
BX = 6060h
CX = 7070h
DX = 7070h
SI = 7070h
DI = 7070h
Return: AX = segment of data structure (see #1465)
Notes: the data structure is at offset 516 from this segment
the update byte is at offset 514 from this segment. Updates are
once per second while this byte is nonzero and it is decremented
once per second. While this byte is 0 updates are once per minute.
SeeAlso: AX=7070h/BX=7070h
Format of PCW Weather Card data structure:
Offset Type Description (Table 1465)
00h WORD hour
02h WORD minute
04h WORD second
06h WORD day
08h WORD month
0Ah WORD year
0Ch WORD ???
0Eh WORD relative barometric pressure (in 1/100 inches)
10h WORD ???
12h WORD ???
14h WORD temperature 1 (in 1/10 degrees F)
16h WORD temperature 1 lowest (in 1/10 degrees F)
18h WORD temperature 1 highest (in 1/10 degrees F)
1Ah WORD temperature 2 (in 1/10 degrees F)
1Ch WORD temperature 2 lowest (in 1/10 degrees F)
1Eh WORD temperature 2 highest (in 1/10 degrees F)
20h WORD wind speed (in MPH)
22h WORD average of 60 wind speed samples (in MPH)
24h WORD highest wind speed (in MPH)
26h WORD wind chill factor (in 1/10 degrees F)
28h WORD lowest wind chill factor (in 1/10 degrees F)
2Ah WORD ???
2Ch WORD wind direction (in degrees)
2Eh WORD accumulated daily rainfall (in 1/10 inches)
30h WORD accumulated annual rainfall (in 1/10 inches)
----------217070BX7070-----------------------
INT 21 - PCW Weather Card interface - INSTALLATION CHECK
AX = 7070h
BX = 7070h
CX = 7070h
DX = 7070h
SI = 7070h
DI = 7070h
Return: AX = 0070h
BX = 0070h
CX = 0070h
DX = 0070h
SI = 0070h
DI = 0070h
SeeAlso: AX=7070h/BX=6060h,AX=8080h
--------D-2171-------------------------------
INT 21 - Windows95 - LONG FILENAME FUNCTIONS
AH = 71h
AL = function
0Dh reset drive
39h create directory
3Ah remove directory
3Bh set current directory
41h delete file
43h get/set file attributes
47h get current directory
4Eh find first file
4Fh find next file
56h move (rename) file
60h truename
6Ch create/open file
A0h get volume information
A1h terminate FindFirst/FindNext
A6h get file information
A7h time conversion
A8h generate short filename
A9h server create/open file
AAh create/terminate SUBST
Return: CF set on error
AX = error code (see #1366)
7100h if function not supported
CF clear if successful
other registers as for corresponding "old" DOS function
Notes: if error 7100h is returned, the old-style function should be called
AX=714Eh returns a "search handle" which must be passed to AX=714Fh;
when the search is complete, AX=71A1h must be called to terminate
the search
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=39h,AH=3Ah,AH=3Bh,AH=41h,AX=4300h,AX=4301h,AX=4304h,AX=4306h
SeeAlso: AX=4307h,AH=47h,AH=4Eh,AH=4Fh,AH=56h,AH=6Ch,AX=714Eh,AX=714Fh
SeeAlso: AX=71A0h,AX=71A1h
--------v-2171-------------------------------
INT 21 - VIRUS - "1205" - INSTALLATION CHECK
AH = 71h
Return: AH = 17h if "1205" is resident
SeeAlso: AX=6969h"VIRUS",AH=76h"VIRUS"
--------D-21710D-----------------------------
INT 21 - Windows95 - RESET DRIVE
AX = 710Dh
CX = action (see #1466)
DX = drive number
Return: CF clear
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=0Dh
(Table 1466)
Values for drive reset action:
0000h flush filesystem buffers for drive, and reset drive
0001h flush filesystem buffers and cache for drive, and reset drive
0002h remount DriveSpace volume
--------D-217139-----------------------------
INT 21 - Windows95 - LONG FILENAME - MAKE DIRECTORY
AX = 7139h
DS:DX -> ASCIZ long directory name (including path)
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=39h,AX=713Ah,AX=713Bh
--------D-21713A-----------------------------
INT 21 - Windows95 - LONG FILENAME - REMOVE DIRECTORY
AX = 713Ah
DS:DX -> ASCIZ long name of directory to remove
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=3Ah,AX=7139h
--------D-21713B-----------------------------
INT 21 - Windows95 - LONG FILENAME - CHANGE DIRECTORY
AX = 713Bh
DS:DX -> ASCIZ long name of directory to make current
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=0Eh,AH=3Bh,AX=7139h
--------D-217141-----------------------------
INT 21 - Windows95 - LONG FILENAME - DELETE FILE
AX = 7141h
DS:DX -> ASCIZ long name of file to delete
SI = wildcard and attributes flag
0000h wildcards are not allowed, and search attributes are
ignored
0001h wildcards are allowed, and only files with matching
names and attributes are deleted
CL = search attributes
CH = must-match attributes
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=41h
--------D-217143-----------------------------
INT 21 - Windows95 - LONG FILENAME - EXTENDED GET/SET FILE ATTRIBUTES
AX = 7143h
DS:DX -> ASCIZ filename
BL = action
00h retrieve attributes
Return: CX = file attributes (see #1107)
01h set attributes
CX = attributes
02h get physical size of compressed file
Return: DX:AX = actual disk usage of file, in bytes
03h set last write date/time
DI = new last-write date (see #1352)
CX = new last-write time (see #1351)
04h get last write date/time
Return: CX = last write time (see #1351)
DI = last write date (see #1352)
05h set last access date
DI = new last-access date (see #1352)
06h get last access date
Return: DI = last access date (see #1352)
07h set creation date/time
DI = new creation date (see #1352)
CX = new creation time (see #1351)
SI = hundredths (10-millisecond units past time in CX, 0-199)
08h get creation date/time
Return: CX = creation time (see #1351)
DI = creation date (see #1352)
SI = hundredths (10-millisecond units past time in CX)
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
7100h if function not supported
Note: for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AX=4300h,AX=4301h
--------D-217147-----------------------------
INT 21 - Windows95 - LONG FILENAME - GET CURRENT DIRECTORY
AX = 7147h
DL = drive number (00h = current, 01h = A:, etc.)
DS:SI -> buffer for ASCIZ directory name
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
7100h if function not supported
Notes: the returned pathname does not include the drive letter, colon, or
leading backslash, and is not necessarily a long filename -- this
function returns whatever path was used when changing to the
current directory, and may include a mixture of long and short
components
the provided buffer must be at least as large as the value indicated
by AX=71A0h
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=47h,AX=713Bh,AX=7160h,AX=71A0h
--------D-21714E-----------------------------
INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
AX = 714Eh
CL = allowable-attributes mask (see #1107 at AX=4301h)
(bits 0 and 5 ignored)
CH = required-attributes mask (see #1107)
SI = date/time format (see #1467)
DS:DX -> ASCIZ filespec (both "*" and "*.*" match any filename)
ES:DI -> FindData record (see #1468)
Return: CF clear if successful
AX = filefind handle (needed to continue search)
CX = Unicode conversion flags (see #1469)
CF set on error
AX = error code
7100h if function not supported
Notes: this function is only available when IFSMgr is running, not under bare
MS-DOS 7
the application should close the filefind handle with AX=71A1h as soon
as it has completed its search
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=4Eh,AX=714Fh,AX=71A1h
(Table 1467)
Values for Windows95 date/time format:
0000h use 64-bit file time format
0001h use MS-DOS date/time values (see #1351,#1352) in low double-word of
file time QWORD (date is high word, time is low word of double-word)
Format of Windows95 long filename FindData record:
Offset Size Description (Table 1468)
00h DWORD file attributes
bits 0-6 standard DOS attributes (see #1107 at INT 21/AX=4301h)
bit 8: temporary file
04h QWORD file creation time (number of 100ns intervals since 1/1/1601)
0Ch QWORD last access time
14h QWORD last modification time
1Ch DWORD file size (high 32 bits)
20h DWORD file size (low 32 bits)
24h 8 BYTEs reserved
2Ch 260 BYTEs ASCIZ full filename
130h 14 BYTEs ASCIZ short filename (for backward compatibility)
Bitfields for Windows95 Unicode conversion flags:
Bit(s) Description (Table 1469)
0 the returned full filename contains underscores for un-convertable
Unicode characters
1 the returned short filename contains underscores for un-convertable
Unicode characters
--------D-21714F-----------------------------
INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
AX = 714Fh
BX = filefind handle (from AX=714Eh)
SI = date/time format (see #1467)
ES:DI -> buffer for FindData record (see #1468)
Return: CF clear if successful
CX = Unicode conversion flags (see #1469)
CF set on error
AX = error code
7100h if function not supported
Notes: this function is only available when IFSMgr is running, not under bare
MS-DOS 7
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=4Eh,AX=714Eh,AX=71A1h
--------D-217156-----------------------------
INT 21 - Windows95 - LONG FILENAME - RENAME FILE
AX = 7156h
DS:DX -> ASCIZ old file or directory name (long names allowed)
ES:DI -> ASCIZ new name (long names allowed)
Return: CF clear if successful
CF set on error
AX = error code
7100h if function not supported
Note: the file may be renamed into a different directory, but not across
disks
SeeAlso: AH=56h,AX=7141h
--------D-217160CL00-------------------------
INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
AX = 7160h
CL = 00h
CH = SUBST expansion flag
00h return a path containing true path for a SUBSTed drive letter
80h return a path containing the SUBSTed drive letter
DS:SI -> ASCIZ filename or path (either long name or short name)
ES:DI -> 261-byte buffer for canonicalized name
Return: CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
ES:DI buffer filled with fully qualified name
AX destroyed
Desc: determine the canonical name of the specified filename or path,
corresponding to the undocumented TRUENAME command in COMMAND.COM
Notes: if a complete path is given, the result will be a short-form complete
path; otherwise, the given relative path is appended to the
short-form current directory name, '.'/'..'/'...'/etc. are resolved,
and the final result uppercased without converting any remaining
long-form names to short-form
for compatibility with DOS versions prior to v7.00, the carry flag
should be set on call to ensure that it is set on exit
SeeAlso: AH=60h,AX=7160h/CL=01h
--------D-217160CL01-------------------------
INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
AX = 7160h
CL = 01h
CH = SUBST expansion flag
00h return a path containing true path for a SUBSTed drive letter
80h return a path containing the SUBSTed drive letter
DS:SI -> ASCIZ long filename or path
ES:DI -> 67-byte (possibly 128-byte) buffer for short filename
Return: CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
ES:DI buffer filled with equivalent short filename (full path,
even if relative path given, and all uppercase)
Note: this call returns the short name for any long-filename portions of
the provided pathname or filename
SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=02h
--------D-217160CL02-------------------------
INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
AX = 7160h
CL = 02h
CH = SUBST expansion flag
00h return a path containing true path for a SUBSTed drive letter
80h return a path containing the SUBSTed drive letter
DS:SI -> ASCIZ short filename or path
ES:DI -> 261-byte buffer for canonicalized long name
Return: CF set on error
AX = error code
02h invalid component in directory path or drive letter only
03h malformed path or invalid drive letter
ES:DI buffer unchanged
CF clear if successful
ES:DI buffer filled with qualified long name (can contain
lowercase letters)
Desc: determine the canonical name of the specified filename or path,
corresponding to the undocumented TRUENAME command in COMMAND.COM
BUG: even though the maximum length of a complete long pathname is 260
characters, Windows95 returns CF set/AX=0003h even if the file
exists whenever the full pathname is more than 255 characters
SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=01h
--------D-21716C-----------------------------
INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
AX = 716Ch
BX = access mode and sharing flags (see #1471,also AX=6C00h)
CX = attributes
DX = action (see #1470)
DS:SI -> ASCIZ filename
DI = alias hint (number to append to short filename for disambiguation)
Return: CF clear if successful
AX = file handle
CX = action taken
0001h file opened
0002h file created
0003h file replaced
CF set on error
AX = error code (see #1366)
7100h if function not supported
SeeAlso: AX=6C00h,AX=7141h,AX=7156h,AX=71A9h
Bitfields for Windows95 long-name open action:
Bit(s) Description (Table 1470)
0 open file (fail if file does not exist)
1 truncate file if it already exists (fail if file does not exist)
4 create new file if file does not already exist (fail if exists)
Note: the only valid combinations of multiple flags are bits 4&0 and 4&1
Bitfields for Windows95 file access/sharing modes:
Bit(s) Description (Table 1471)
2-0 file access mode
000 read-only
001 write-only
010 read-write
100 read-only, do not modify file's last-access time
6-4 file sharing modes
7 no-inherit flag
8 do not buffer data (requires that all reads/writes be exact physical
sectors)
9 do not compress file even if volume normally compresses files
10 use alias hint in DI as numeric tail for short-name alias
12-11 unused??? (0)
13 return error code instead of generating INT 24h if critical error
while opening file
14 commit file after every write operation
SeeAlso: #1090
--------D-2171A0-----------------------------
INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
AX = 71A0h
DS:DX -> ASCIZ root name (e.g. "C:\")
ES:DI -> buffer for file system name
CX = size of ES:DI buffer
Return: CF clear if successful
BX = file system flags (see #1472)
CX = maximum length of file name [usually 255]
DX = maximum length of path [usually 260]
ES:DI buffer filled (ASCIZ, e.g. "FAT","NTFS","CDFS")
CF set on error
AX = error code
7100h if function not supported
Notes: for the file system name buffer, 32 bytes should be sufficient; that's
what is used in some sample code by Walter Oney from Microsoft.
this function accesses the disk the first time it is called
SeeAlso: AX=714Eh,AX=7160h/CL=00h
Bitfields for long filename volume information flags:
Bit(s) Description (Table 1472)
0 searches are case sensitive
1 preserves case in directory entries
2 uses Unicode characters in file and directory names
3-13 reserved (0)
14 supports DOS long filename functions
15 volume is compressed
--------D-2171A1-----------------------------
INT 21 - Windows95 - LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH
AX = 71A1h
BX = filefind handle (from AX=714Eh)
Return: CF clear if successful
CF set on error
AX = error code
7100h if function not supported
Notes: this function must be called after starting a search with AX=714Eh,
to indicate that the search handle returned by that function will
no longer be used
this function is only available when IFSMgr is running, not under bare
MS-DOS 7
SeeAlso: AH=4Eh,AX=714Eh,AX=714Fh
--------D-2171A2-----------------------------
INT 21 U - Windows95 - internal
AX = 71A2h
???
Return: ???
Note: documented as "for internal use by Windows 95 only"
--------D-2171A3-----------------------------
INT 21 U - Windows95 - internal
AX = 71A3h
???
Return: ???
Note: documented as "for internal use by Windows 95 only"
--------D-2171A4-----------------------------
INT 21 U - Windows95 - internal
AX = 71A4h
???
Return: ???
Note: documented as "for internal use by Windows 95 only"
--------D-2171A5-----------------------------
INT 21 U - Windows95 - internal
AX = 71A5h
???
Return: ???
Note: documented as "for internal use by Windows 95 only"
--------D-2171A6-----------------------------
INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
AX = 71A6h
BX = file handle
DS:DX -> buffer for file information (see #1473)
CF set
Return: CF clear if successful
file information record filled
CF set on error
AX = error code
7100h if function not supported
SeeAlso: AX=71A7h/BL=00h
Format of Windows95 file information:
Offset Size Description (Table 1473)
00h DWORD file attributes
04h QWORD creation time (0 = unsupported)
0Ch QWORD last access time (0 = unsupported)
14h QWORD last write time
1Ch DWORD volume serial number
20h DWORD high 32 bits of file size
24h DWORD low 32 bits of file size
28h DWORD number of links to file
2Ch DWORD unique file identifier (high 32 bits)
30h DWORD unique file identifier (low 32 bits)
Note: the file identifer and volume serial number together uniquely identify
a file while it is open; the identifier may change when the system
is restarted or the file is first opened
--------D-2171A7BL00-------------------------
INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
AX = 71A7h
BL = 00h
DS:SI -> QWORD file time
Return: CF clear if successful
CX = DOS time (see #1351)
DX = DOS date (see #1352)
BH = hundredths (10-millisecond units past time in CX)
CF set on error
AX = error code
7100h if function not supported
Desc: convert Win95 64-bit file time (UTC) into DOS-style date and time
(local timezone)
Note: the conversion fails if the file time's value is outside the range
1/1/1980 and 12/31/2107
SeeAlso: AX=71A6h,AX=71A7h/BL=01h
--------D-2171A7BL01-------------------------
INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
AX = 71A7h
BL = 01h
CX = DOS time (see #1351)
DX = DOS date (see #1352)
BH = hundredths (10-millisecond units past time in CX)
ES:DI -> buffer for QWORD file time
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code
7100h if function not supported
Desc: convert DOS-style date and time (local timezone) into Win95 64-bit
file time (UTC)
SeeAlso: AX=71A6h,AX=71A7h/BL=00h
--------D-2171A8-----------------------------
INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
AX = 71A8h
DS:SI -> ASCIZ long filename (no path allowed!)
ES:DI -> buffer for ASCIZ short filename
DH = short name's format
00h 11-char directory entry/FCB filename format
01h DOS 8.3
DL = character sets
bits 7-4: short name's character set (see #1474)
bits 3-0: long name's character set (see #1474)
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code
7100h if function not supported
Note: this function uses the same algorithm as the filesystem except that
the returned name never has a numeric tail for disambiguation
SeeAlso: AX=7160h/CL=00h,AX=7160h/CL=02h,AX=71A7h/BL=00h
(Table 1474)
Values for Windows95 filename character set:
00h Windows ANSI
01h current OEM character set
02h Unicode
--------D-2171A9-----------------------------
INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
AX = 71A9h
BX = access mode and sharing flags (see #1471,also AX=6C00h)
CX = attributes
DX = action (see #1470)
DS:SI -> ASCIZ filename
DI = alias hint (number to append to short filename for disambiguation)
Return: CF clear if successful
AX = global file handle
CX = action taken
0001h file opened
0002h file created
0003h file replaced
CF set on error
AX = error code (see #1366)
7100h if function not supported
Note: for use by real-mode servers only
SeeAlso: AX=6C00h,AX=716Ch
--------D-2171AABH00-------------------------
INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
AX = 71AAh
BH = 00h
BL = drive number (00h = default, 01h = A:, etc.)
DS:DX -> ASCIZ pathname to associate with drive letter
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
7100h if function not supported
SeeAlso: AX=71AAh/BH=01h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#1329
--------D-2171AABH01-------------------------
INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
AX = 71AAh
BH = 01h
BL = drive number (01h = A:, etc.)
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
7100h if function not supported
Note: the specified drive number may not be 00h (default), and presumably not
the current drive either
SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#1329
--------D-2171AABH02-------------------------
INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
AX = 71AAh
BH = 02h
BL = drive number (01h = A:, etc.)
DS:DX -> buffer for ASCIZ pathname associated with drive letter
Return: CF clear if successful
DS:DX buffer filled
CF set on error
AX = error code (see #1366)
7100h if function not supported
Note: the specified drive number may not be 00h (default drive)
SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=01h,INT 2F/AX=1000h,#1329
--------D-2172-------------------------------
INT 21 - Windows95 beta - LFN-FindClose
AH = 72h
details not available
Return: CF clear if successful
CF set on error
AX = error code (see #1366)
7200h if function not supported (e.g. under bare MS-DOS 7)
Note: this function was present in beta versions of Windows95, but is
probably not present in the release version
SeeAlso: AX=71A1h
--------D-2173-------------------------------
INT 21 - MS-DOS 7 - DRIVE LOCKING ???
AH = 73h
DL = drive (0=current, 1=A:, etc.)
CL = which flag to get or set
00h drive flag???
01h ???
AL = subfunction
00h get ???
01h set ???
CH = new values for ??? flags
bit 1: ??? (CL=00h only)
bit 3: ??? (CL=01h only)
Return: CF clear if successful
for AL=00h:
AL = value of CL on entry
for CL=00h: AH = new flag and 06h (i.e. bits 1 and 2 used)
for CL=01h: AH = new flag and 08h (i.e. bit 3 used)
(flag being taken from a table of bytes)
CF set on error
AX = error code (01h,0Fh,etc.) (see #1366)
7300h if function not supported
Note: these two subfunctions are available even when only the MS-DOS kernel
is running
--------D-217302-----------------------------
INT 21 - Windows95 - FAT32 - "Get_ExtDPB" - GET EXTENDED DPB
AX = 7302h
DL = drive number (00h=default, 01h=A:, etc.)
ES:DI -> buffer for drive parameter block (DPB) (see #1475)
CX = length of buffer
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code
SeeAlso: AX=7303h,AX=7304h,AH=1Fh,AH=32h
Format of Extended Drive Parameter Block:
Offset Size Description (Table 1475)
00h 24 BYTEs standard DOS 4+ DPB
18h BYTE "dpb_flags" (undocumented)
19h DWORD pointer to next DPB
1Dh WORD cluster at which to start search for free space when writing,
usually the last cluster allocated
1Fh WORD number of free clusters on drive, FFFFh = unknown
21h WORD high word of free cluster count
23h WORD active FAT/mirroring
bits 3-0: the 0-based FAT number of the active FAT
bits 6-4: reserved (0)
bit 7: do not mirror active FAT to inactive FATs
25h WORD sector number of file system information sector, or
FFFFh for none (see also #1476)
27h WORD sector number of backup boot sector
29h DWORD first sector number of the first cluster
2Dh DWORD maximum cluster number
31h DWORD number of sectors occupied by FAT
35h DWORD cluster number of start of root directory
Note: except for offset 18h, all of the first 33 bytes are identical to
the standard DOS 4-6 DPB
SeeAlso: #1083 at AH=32h,#1350
Format of File System Information structure:
Offset Size Description (Table 1476)
00h DWORD signature 61417272h
04h DWORD number of free clusters (FFFFFFFFh if unknown)
08h DWORD most recently allocated cluster
0Ch 12 BYTEs reserved
SeeAlso: #1475
--------D-217303-----------------------------
INT 21 - Windows95 - FAT32 - GET EXTENDED FREE SPACE ON DRIVE
AX = 7303h
DS:DX -> ASCIZ string for drive ("C:\" or "\\SERVER\Share")
ES:DI -> buffer for extended free space structure (see #1477)
CX = length of buffer for extended free space
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code
Note: this function reportedly returns a maximum of 2GB free space even
on an FAT32 partition larger than 2GB
SeeAlso: AX=7302h,AX=7304h,AX=7305h,AH=36h
Format of extended free space structure:
Offset Size Description (Table 1477)
00h WORD (ret) size of returned structure
02h WORD (call) structure version (0000h)
(ret) actual structure version (0000h)
04h DWORD number of sectors per cluster (with adjustment for compression)
08h DWORD number of bytes per sector
0Ch DWORD number of available clusters
10h DWORD total number of clusters on the drive
14h DWORD number of physical sectors available on the drive, without
adjustment for compression
18h DWORD total number of physical sectors on the drive, without
adjustment for compression
1Ch DWORD number of available allocation units, without adjustment
for compression
20h DWORD total allocation units, without adjustment for compression
24h 8 BYTEs reserved
--------D-217304-----------------------------
INT 21 - Windows95 - FAT32 - Set DPB TO USE FOR FORMATTING
AX = 7304h
DL = drive number (00h=default, 01h=A:, etc.)
ES:DI -> buffer for Set_DPBforFormat structure (see #1478)
Return: CF clear if successful
ES:DI buffer updated
CF set on error
AX = error code
SeeAlso: AX=7302h,AX=7303h,AX=7305h
Format of Set_DPBforFormat structure:
Offset Size Description (Table 1478)
00h WORD (call) size
02h WORD (call) structure version??? (0000h)
(ret) ???
04h DWORD (call) function number
00h invalidate DPB counts
01h rebuild DPB from BPB
02h force media change (next access to drive rebuild DPB)
03h get/set active FAT number and mirroring
04h get/set root directory cluster number
---function 00h---
08h DWORD new DPB free count (00000000h=no change, FFFFFFFFh=unknown)
0Ch DWORD new DPB next-free (00000000h=no change, FFFFFFFFh=unknown)
10h DWORD unused
14h DWORD unused
---function 01h---
08h DWORD unused???
0Ch DWORD (call) -> BIOS Parameter Block from which to rebuild DPB
10h DWORD unused
14h DWORD unused
---function 02h---
08h DWORD unused
0Ch DWORD unused
10h DWORD unused
14h DWORD unused
---function 03h---
08h DWORD (call) new active FAT/mirroring state, or FFFFFFFFh to get
bits 3-0: the 0-based FAT number of the active FAT
bits 6-4: reserved (0)
bit 7: do not mirror active FAT to inactive FATs
0Ch DWORD (ret) previous active FAT/mirroring state (as above)
10h DWORD unused
14h DWORD unused
---function 04h---
08h DWORD (call) new root directory cluster number
FFFFFFFFh to get current
0Ch DWORD (ret) previous root directory cluster number
10h DWORD unused
14h DWORD unused
--------D-217305CXFFFF-----------------------
INT 21 - Windows95 - FAT32 - EXTENDED ABSOLUTE DISK READ/WRITE
AX = 7305h
CX = FFFFh
DL = drive number (00h=default, 01h=A:, etc.)
SI = read/write mode flags (see #1479)
DS:BX -> disk I/O packet (see #2236 at INT 25)
Return: CF clear if successful
CF set on error
AX = error code
SeeAlso: AX=7302h,AX=7304h,INT 25,INT 26
Bitfields for Extended Absolute Disk Read/Write mode flags:
Bit(s) Description (Table 1479)
0 direction (0=read, 1=write)
12-1 reserved (0)
14-13 write type (should be 00 on reads)
00 unknown data
01 FAT data
10 directory data
11 file data
15 reserved (0)
--------v-217575-----------------------------
INT 21 - VIRUS - "LEGO" -INSTALLATION CHECK
AX = 7575h
Return: AX = 4321h if resident
SeeAlso: AX=6969h,AH=76h"VIRUS"
--------v-2176-------------------------------
INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
AH = 76h
Return: AL = 48h if resident
SeeAlso: AX=7575h,AX=7700h"VIRUS"
--------v-217700-----------------------------
INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
AX = 7700h
Return: AX = 0920h if resident
SeeAlso: AH=76h,AX=7BCEh,AH=7Fh
--------V-217734-----------------------------
INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
AX = 7734h
Return: DX = 3477h if installed
AX = segment of resident code
Program: ScrollIt is a shareware backscroll utility by Bromfield Software
Products
--------U-217761-----------------------------
INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
AX = 7761h ('wa')
Return: AX = 6177h
Note: WATCH.COM is part of the "TSR" package by TurboPower Software
SeeAlso: INT 16/AX=7761h
--------v-217BCE-----------------------------
INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK
AX = 7BCEh
Return: AX = 7BCEh if resident (???)
SeeAlso: AX=5454h"VIRUS",AX=7700h,AX=7BCFh,AH=7Fh"VIRUS"
--------v-217BCF-----------------------------
INT 21 - VIRUS - "Tai-Pan.666"/"Doom II Death" - INSTALLATION CHECK
AX = 7BCFh
Return: AX = 7BCFh if resident
SeeAlso: AX=7BCEh"VIRUS",AH=7Dh"VIRUS"
--------v-217D-------------------------------
INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK
AH = 7Dh
Return: AH = FAh if installed
SeeAlso: AX=7BCFh"VIRUS",AH=7Fh"VIRUS"
--------v-217F-------------------------------
INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK
AH = 7Fh
Return: AH = 80h if resident
SeeAlso: AX=7BCEh,AH=83h"VIRUS"
--------D-2180-------------------------------
INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
AH = 80h
CX = mode
0000h place child in zombie mode on exit to preserve exit code
0001h discard child process and exit code on termination
DS:DX -> ASCIZ full program name
ES:BX -> parameter block (as for AX=4B00h)
Return: CF clear if successful
AX = Command Subgroup ID (CSID)
CF set on error
AX = error code (see #1366 at AH=59h/BX=0000h)
Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
by several other European OEMs; its release falls between mainstream
versions 3.2 and 3.3
Desc: asynchronously execute a program, creating a new process for it
Notes: this function is called by the DETACH command
there is a system-wide limit of 32 processes
the CSID is used to identify all processes that have been spawned by
a given process, whether directly or indirectly
programs to be run in the background must use the new executable format
(see #1282 at AH=4Bh)
background processes may only perform asynchronous (background) EXECs,
either this function or AX=4B04h
background processes may execute INT 11, INT 12, INT 21, INT 2A, and
INT 2F at any time; they may execute INT 10 and INT 16 only while
they have opened a popup screen via INT 2F/AX=1401h; no other
interrupts may be executed from the background
background processes may not use drive B: or overlay their code
segments
see AX=8700h for an installation check
the "NE" new executable format made its first appearance in European
MS-DOS 4.0
SeeAlso: AH=4Bh,AH=87h,INT 2F/AX=1400h"POPUP"
----------218080-----------------------------
INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
AX = 8080h
Return: ???
SeeAlso: AX=7070h/BX=7070h
--------D-2181-------------------------------
INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
AH = 81h
BX = flag (00h freeze command subtree, 01h only specified process)
CX = Process ID of head of command subtree
Return: CF clear if successful
CF set on error
AX = error code (no such process)
Desc: temporarily suspend a process or a process and all of its children
Note: if BX=0001h, this call will not return until the process is actually
frozen, which may not be until after it unblocks from an I/O
operation
SeeAlso: AH=82h,AH=89h,AX=8E00h,INT 15/AX=101Dh
--------D-2182-------------------------------
INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
AH = 82h
BX = flag (00h resume command subtree, 01h only specified process)
CX = Process ID of head of command subtree
Return: CF clear if successful
CF set on error
AX = error code (no such process)
Desc: restart a previously-suspended process or a process and all of its
children
SeeAlso: AH=81h,INT 15/AX=101Eh
--------D-2183-------------------------------
INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
AH = 83h
AL = function
00h get size
01h set new size
BX = new size in paragraphs
Return: CF clear if successful
BX = current size (function 00h) or old size (function 01h)
CF set on error
AX = error code (01h,07h,0Dh)(see #1366 at AH=59h/BX=0000h)
Desc: specify or determine how much memory may be allocated by the foreground
process
Note: if the partition size is set to 0000h, no partition management is done
and all memory allocation is compatible with DOS 3.2.
the partition size can be changed regardless of what use is being made
of the changed memory; subsequent allocations will follow the
partition rules (foreground processes may allocate only foreground
memory; background processes allocate background memory first, then
foreground memory)
SeeAlso: AH=48h,AH=4Ah
--------v-2183-------------------------------
INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
AH = 83h
Return: DX = 1990h if resident
SeeAlso: AH=76h,AH=84h"VIRUS"
--------v-2184-------------------------------
INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
AH = 84h
Return: DX = 1990h if resident
BH = version number (major in high nybble, minor in low)
SeeAlso: AH=83h"VIRUS",AH=89h"VIRUS"
--------D-218400-----------------------------
INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
AX = 8400h
BX = size in bytes (0000h = 65536)
CX = flags
bit 6: zero-initialize segment
DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
Return: CF clear if successful
AX = segment address of shared memory global object
CF set on error
AX = error code (06h,08h) (see #1366 at AH=59h/BX=0000h)
Desc: create an area of memory which may be accessed by multiple processes
Notes: shared memory objects are created as special files (thus the
restriction on the name)
on successful creation, the reference count is set to 1
SeeAlso: AX=8401h,AX=8402h,INT 15/AX=DE19h
--------D-218401-----------------------------
INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
AX = 8401h
CX = flags
bit 7: writable segment (ignored by MS-DOS 4.0)
DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
Return: CF clear if successful
AX = segment address of shared memory global object
CX = size in bytes
CF set on error
AX = error code (invalid name)
Desc: get address of a previously-created area of memory which may be
accessed by multiple processes
Note: this call increments the reference count for the shared memory area
SeeAlso: AX=8400h,AX=8402h
--------D-218402-----------------------------
INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
AX = 8402h
BX = handle (segment address of shared memory object)
Return: CF clear if successful
CF set on error
AX = error code (no such name)
Desc: indicate that the specified area of shared memory will no longer be
used by the caller
Note: the reference count is decremented and the shared memory area is
deallocated if the new reference count is zero
SeeAlso: AX=8400h,AX=8401h,INT 15/AX=DE19h
--------D-2185-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 85h
???
Return: ???
--------D-2186-------------------------------
INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
AH = 86h
BX = total number of file handles in new table
Return: CF clear if successful
CF set on error
AX = error code (06h,08h) (see #1366 at AH=59h/BX=0000h)
Desc: adjust the size of the per-process open file table, thus raising or
lowering the limit on the number of files the caller can open
simultaneously
Notes: any currently-open files are copied to the new table
if the table is increased beyond the default 20 handles, only the
first 20 will be inherited by child processes
error 06h is returned if the requested number of handles exceeds
system limits or would require closing currently-open files
SeeAlso: AH=26h,AH=67h
--------D-2187-------------------------------
INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
AH = 87h
Return: AX = PID
BX = parent process's PID
CX = Command Subgroup ID (CSID)
Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
by several other European OEMs; its release falls between mainstream
versions 3.2 and 3.3
Desc: determine an identifier by which to access the calling process
Notes: called by MS C v5.1 getpid() function
this function apparently must return AX=0001h for INT 21/AH=80h to
succeed
one possible check for European MS-DOS 4.0 is to issue this call with
AL=00h and check whether AL is nonzero on return
SeeAlso: AH=30h,AH=62h,AH=80h
Index: installation check;European MS-DOS 4.0
--------D-2188-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 88h
???
Return: ???
SeeAlso: AH=87h
--------D-2189-------------------------------
INT 21 - European MS-DOS 4.0 - SLEEP
AH = 89h
CX = time in milliseconds or 0000h to give up time slice
Return: CF clear if successful
CX = 0000h
CF set on error
AX = error code (interrupted system call)
CX = sleep time remaining
Desc: suspend the calling process for the specified duration
Notes: the sleep interval is rounded up to the next higher increment of the
scheduler clock, and may be extended further if other processes are
running
this call may be interrupted by signals (see AH=8Dh)
reportedly called by Microsoft C 4.0 startup code
background processes have higher priority than the foreground process,
and should thus periodically yield the CPU
SeeAlso: AH=81h,INT 15/AX=1000h,INT 2F/AX=1680h,INT 7A/BX=000Ah
--------v-2189-------------------------------
INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
AH = 89h
Return: AX = 0123h if resident
SeeAlso: AH=84h"VIRUS",AH=90h"VIRUS"
--------D-218A-------------------------------
INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
AH = 8Ah
BL = range (00h command subtree, 01h any child)
BH = suspend flag
00h suspend if children exist but none are dead
01h return if no dead children
CX = Process ID of head of command subtree
Return: CF clear if successful
AH = termination type (see #1480)
AL = return code from child or aborting signal
BX = PID of child (0000h if no dead children)
CF set on error
AX = error code (no child,interrupted system call)
Desc: get return code from an asynchronously-executed child program,
optionally waiting if no return code is available
SeeAlso: AH=4Bh,AH=4Dh,AH=80h,AH=8Dh
(Table 1480)
Values for termination type:
00h normal termination
01h aborted by Control-C
02h aborted by I/O error
03h terminate and stay resident
04h aborted by signal
05h aborted by program error
--------D-218B-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 8Bh
???
Return: ???
SeeAlso: AH=87h
--------D-218C-------------------------------
INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
AH = 8Ch
AL = signal number (see #1481)
BL = action (see #1482)
DS:DX -> signal handler (see #1483)
Return: CF clear if successful
AL = previous action
ES:BX -> previous signal handler
CF set on error
AX = error code (01h,invalid SigNumber or Action)
(see #1366 at AH=59h/BX=0000h)
Desc: set the routine which will be invoked on a number of exceptional
conditions
Note: all signals will be sent to the most recently installed handler
SeeAlso: AH=8Dh
(Table 1481)
Values for European MS-DOS 4.0 signal number:
01h SIGINTR Control-C or user defined interrupt key
08h SIGTERM program termination
09h SIGPIPE broken pipe
0Dh SIGUSER1 reserved for user definition
0Eh SIGUSER2 reserved for user definition
(Table 1482)
Values for signal action:
00h SIG_DFL terminate process on receipt
01h SIG_IGN ignore signal
02h SIG_GET signal is accepted
03h SIG_ERR sender gets error
04h SIG_ACK acknowledge received signal and clear it, but don't
change current setting
(Table 1483)
Values signal handler is called with:
AL = signal number (see #1481)
AH = signal argument
Return: RETF, CF set: terminate process
RETF, CF clear, ZF set: abort any interrupted system call with an error
RETF, CF clear, ZF clear: restart any interrupted system call
IRET: restart any interrupted system call
Note: the signal handler may also perform a nonlocal GOTO by resetting the
stack pointer and jumping; before doing so, it should dismiss the
signal by calling this function with BL=04h
--------D-218D-------------------------------
INT 21 - European MS-DOS 4.0 - SEND SIGNAL
AH = 8Dh
AL = signal number (see #1481)
BH = signal argument
BL = action
00h send to entire command subtree
01h send only to specified process
DX = Process ID
Return: CF clear if successful
CF set on error
AX = error code (01h,06h)(see #1366 at AH=59h/BX=0000h)
Desc: invoke the exceptional-condition handler for the specified process
Note: error 06h may be returned if one or more of the affected processes
have an error handler for the signal
SeeAlso: AH=8Ch
--------D-218E00BH00-------------------------
INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
AX = 8E00h
BH = 00h
BL = action
00h set priority for command subtree
01h set priority for specified process only
CX = Process ID
DH = 00h
DL = change in priority (00h to get priority)
Return: CF clear if successful
DL = process priority
DH destroyed
CF set on error
AX = error code (01h,no such process)(see #1366 at AH=59h)
Desc: specify or determine the execution priority of the specified process
or the process and all of its children
SeeAlso: AH=81h
--------D-218F-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 8Fh
???
Return: ???
SeeAlso: AH=87h
--------D-2190-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 90h
???
Return: ???
SeeAlso: AH=87h
--------v-2190-------------------------------
INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
AH = 90h
Return: AH = 01h if resident
SeeAlso: AH=89h"VIRUS",AX=9753h"VIRUS"
--------D-2191-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 91h
???
Return: ???
SeeAlso: AH=87h
--------D-2192-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 92h
???
Return: ???
SeeAlso: AH=87h
--------D-2193-------------------------------
INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
AH = 93h
CX = size in bytes
Return: CF clear if successful
AX = read handle
BX = write handle
CF set on error
AX = error code (08h) (see #1366 at AH=59h/BX=0000h)
Desc: create a communications channel which may be used for interprocess
data and command exchanges
SeeAlso: AH=3Ch,AH=3Fh"DOS",AH=40h"DOS",AH=84h
--------D-2194-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 94h
???
Return: ???
SeeAlso: AH=87h
--------D-2195-------------------------------
INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
AH = 95h
AL = new state
00h enabled
01h disabled, automatically fail hard errors
Return: AX = previous setting
Desc: specify whether hard (critical) errors should automatically fail the
system call or invoke an INT 24
SeeAlso: INT 24
--------D-2196-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 96h
???
Return: ???
--------D-2197-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 97h
???
Return: ???
--------v-219753-----------------------------
INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
AX = 9753h
Return: never (executes original program) if virus resident
SeeAlso: AH=90h"VIRUS",AX=A1D5h"VIRUS",AX=9AD5h"VIRUS"
--------D-2198-------------------------------
INT 21 U - European MS-DOS 4.0 - ???
AH = 98h
???
Return: ???
--------D-2199-------------------------------
INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
AH = 99h
DS:BX -> memory location to block on
CX = timeout in milliseconds
DH = nonzero if interruptable
Return: CF clear if awakened by event
AX = 0000h
CF set if unusual wakeup
ZF set if timeout, clear if interrupted by signal
AX = nonzero
Desc: suspend calling process until another process sends a "restart" signal
or a timeout occurs
SeeAlso: AH=9Ah,INT 2F/AX=0802h
--------D-219A-------------------------------
INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
AH = 9Ah
DS:BX -> memory location processes may have blocked on
Return: AX = number of processes awakened
ZF set if no processes awakened
Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
by several other European OEMs; its release falls between mainstream
versions 3.2 and 3.3
Desc: restart all processes waiting for the specified "restart" signal
SeeAlso: AH=99h,INT 2F/AX=0802h
--------v-219AD5------------------------
INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK
AX = 9AD5h
Return: AX = 9AD4h if resident
SeeAlso: AX=6969h"VIRUS",AX=A1D5h"VIRUS"
--------I-21A0-------------------------------
INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
AH = A0h
Return: AL = display status (see #1484)
BX = host window status (see #1485)
Program: Attachmate Extra! is a 3270 emulator by Attachmate Corporation
SeeAlso: AH=A1h
Bitfields for Attachmate Extra! display status:
Bit(s) Description (Table 1484)
7 0=windowed, 1=enlarged
6-3 current screen profile number 0-9
2-0 active window number (0=PC, 1-4=host B-E, 5-6=notepad F-G)
Bitfields for host window status:
Bit(s) Description (Table 1485)
15 reserved
14 0=host E window installed, 1=not
13 0=host E terminal on, 1=off
12 0=host E window displayed, 1=not
11 reserved
10 0=host D window installed, 1=not
9 0=host D terminal on, 1=off
8 0=host D window displayed, 1=not
7 reserved
6 0=host C window installed, 1=not
5 0=host C terminal on, 1=off
4 0=host C window displayed, 1=not
3 reserved
2 0=host B window installed, 1=not
1 0=host B terminal on, 1=off
0 0=host B window displayed, 1=not
--------I-21A1-------------------------------
INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
AH = A1h
AL = new display status byte (see #1484)
SeeAlso: AH=A0h,AH=A2h
--------v-21A1D5-----------------------------
INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
AX = A1D5h
Return: AX = 900Dh if resident
SeeAlso: AX=9753h,AX=9AD5h,AX=A55Ah
--------I-21A2-------------------------------
INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
AH = A2h
AL = new host window status byte (see #1486)
SeeAlso: AH=A1h
Bitfields for Attachmate Extra! host window status:
Bit(s) Description (Table 1486)
7 0=power off, 1=power on
6 0=not installed, 1=installed
5-3 reserved
2-0 window number 1-4=host B-E
--------I-21A3-------------------------------
INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
AH = A3h
AL = window number (1-4=host B-E)
CX = 0001h
DS:BX -> keystroke buffer
DL = zero if keystroke buffer contains host function code (see #1487),
non-zero if keystroke buffer contains ASCII character
Return: CX = zero if character sent, non-zero if not
BX incremented if CX=0
(Table 1487)
Values for Attachmate Extra! host function code:
00h=reserved 10h=PF16 20h=Clear 30h=SysReq
01h=PF1 11h=PF17 21h=Print 31h=ErInp
02h=PF2 12h=PF18 22h=Left 32h=ErEof
03h=PF3 13h=PF19 23h=Right 33h=Ident
04h=PF4 14h=PF20 24h=Up 34h=Test
05h=PF5 15h=PF21 25h=Down 35h=Reset
06h=PF6 16h=PF22 26h=Home 36h=DevCncl
07h=PF7 17h=PF23 27h=Fast Left 37h=Dup
08h=PF8 18h=PF24 28h=Fast Right 38h=FldMark
09h=PF9 19h=Alt on 29h=Bksp 39h=Enter
0Ah=PF10 1Ah=Alt off 2Ah=Insert 3Ah=CrSel
0Bh=PF11 1Bh=Shift on 2Bh=Delete
0Ch=PF12 1Ch=Shift off 2Ch=Backtab
0Dh=PF13 1Dh=PA1 2Dh=Tab
0Eh=PF14 1Eh=PA2 2Eh=Newline
0Fh=PF15 1Fh=PA3 2Fh=Attn
--------I-21A4-------------------------------
INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
AH = A4h
AL = window number (1-4=host B-E)
Return: DS:BX -> 3270 display buffer
SeeAlso: AH=A5h,AH=B8h
--------I-21A5-------------------------------
INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
AH = A5h
AL = window number (1-4=host B-E)
Return: BX = cursor position (80 * row + column, where 0:0 is upper left)
Note: if the host window is configured with the Extended Attribute (EAB)
feature, multiply the cursor position by 2 to obtain the byte offset
into the display buffer
SeeAlso: AH=A4h
--------v-21A55A-----------------------------
INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
AX = A55Ah
Return: AX = 5AA5h if resident
SeeAlso: AX=A1D5h,AX=AA00h
--------v-21AA00-----------------------------
INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
AX = AA00h
Return: AX = 00AAh if resident
SeeAlso: AX=A55Ah,AX=AA03h
--------v-21AA03-----------------------------
INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
AX = AA03h
Return: AX = 03AAh if resident
SeeAlso: AX=AA00h,AH=ABh
--------v-21AB-------------------------------
INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
AH = ABh
Return: AX = 5555h if resident
SeeAlso: AX=AA03h,AX=ABCDh,AX=BBBBh"VIRUS"
--------v-21ABCD-----------------------------
INT 21 - VIRUS - Major BBS - INSTALLATION CHECK
AX = ABCDh
Return: AX = 1234h if installed
SeeAlso: AH=ABh"VIRUS",AX=ABCDh"SuperVirus"
--------v-21ABCD------------------------
INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK
AX = ABCDh
Return: AX = DCBAh if resident
SeeAlso: AX=ABCDh"VIRUS",AX=BBBBh"VIRUS"
--------I-21AF-------------------------------
INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
AH = AFh
Return: DS:BX -> translate tables (see #1488)
Format of Attachmate Extra! translate tables:
Offset Size Description (Table 1488)
00h 256 BYTEs ASCII to 3270 buffer code translate table
100h 256 BYTEs 3270 buffer code to ASCII translate table
200h 256 BYTEs 3270 buffer code to EBCDIC translate table
300h 256 BYTEs EBCDIC to 3270 buffer code translate table
--------v-21B3-------------------------------
INT 21 - VIRUS - "Requires" - INSTALLATION CHECK
AH = B3h
Return: AX = 9051h if resident
SeeAlso: AH=7Fh"VIRUS",AX=B974h"VIRUS"
--------N-21B300-----------------------------
INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
AX = B300h
Return: AX = 0000h if supported???
Note: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
SeeAlso: AX=B301h,AX=B302h
--------N-21B301-----------------------------
INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
AX = B301h
Return: AX = 0000h if supported???
BX:CX indicate signature level (see #1489)
Note: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
SeeAlso: AX=B300h,AX=B304h,#2561 at INT 2F/AX=7A20h/BX=0000h
(Table 1489)
Values for signature level indicator:
0000h:0000h = signature level 0
0002h:0000h = signature level 1
0202h:0000h = signature level 2
0202h:0202h = signature level 3
--------N-21B302-----------------------------
INT 21 U - Novell NetWare - START PACKET SIGNING
AX = B302h
CX = server connection (1-8)
DS:SI -> 24-byte buffer containing ???
Return: ???
Notes: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
if packet signing is active, this call is required if and only if the
last call successfully authenticated the workstation to the server
SeeAlso: AX=B300h,#2561
--------N-21B304-----------------------------
INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
AX = B304h
BX:CX = new signature level (see AX=B301h)
Return: ???
Note: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
SeeAlso: AX=B300h,AX=B301h,AX=B306h,#2561
--------N-21B306-----------------------------
INT 21 - Novell NetWare - RENEGOTIATE SECURITY LEVEL
AX = B306h
CX = server connection number (01h-08h)
Return: ???
Note: this function appeared with the packet signing/Large Internet Packets/
IPX Checksum-aware NetWare shells
SeeAlso: AX=B300h,AX=B304h,#2561
--------N-21B4-------------------------------
INT 21 U - Novell NetWare - "AttachHandle"
AH = B4h
DS:SI -> input buffer (see #1490)
Return: AX = DOS file handle or return code
Note: this is an interface provided by NetWare to give DOS file access to
NetWare files on non-DOS systems such as Macintosh, OS/2, and Unix
SeeAlso: AX=E909h
Format of Novell NetWare input buffer:
Offset Size Description (Table 1490)
00h BYTE "WorkFileServer"
01h BYTE access code
02h DWORD "OpenHandle"
06h WORD "OpenHandleCount"
08h DWORD "OpenFileSize"
Note: the six bytes at 02h-07h appear to be the six-byte NetWare handle
returned by AX=E909h
--------N-21B500-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
AX = B500h
Return: ES:BX -> data
CX = length
SeeAlso: AX=B501h,AX=B502h
--------N-21B501-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
AX = B501h
SeeAlso: AX=B500h,AX=B502h
--------N-21B502-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
AX = B502h
SeeAlso: AX=B500h,AX=B501h
--------N-21B5-------------------------------
INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
AH = B5h
AL = subfunction
03h get task mode
Return: AH = 00h
AL = current task mode byte (see #1491)
04h get task mode pointer
Return: ES:BX -> task mode byte
Notes: the task mode byte specifies how task cleanup should be performed, but
is declared to be version-dependent
allows a program to disable the automatic cleanup for programs managing
task swapping, etc.
(Table 1491)
Values for NetWare task mode byte in version 3.01:
00h-03h reserved
04h no task cleanup
--------N-21B505-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
AX = B505h
???
Return: ???
SeeAlso: AX=B502h,AX=B506h
--------N-21B506-----------------------------
INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
AX = B506h
Return: AX = ??? (0002h)
SeeAlso: AX=B505h
--------N-21B507-----------------------------
INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
AX = B507h
Return: AL = number of packet burst buffers (configured at shell load time)
--------N-21B6-------------------------------
INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
AH = B6h
AL = subfunction
00h get extended file attributes
01h set extended file attributes
CL = extended file attributes (see #1492)
DS:DX -> ASCIZ pathname (max 255 bytes)
Return: CF set on error
AL = error code
8Ch caller lacks privileges
FEh not permitted to search directory
FFh file not found
CF clear if successful
AL = 00h (success)
CL = current extended file attributes (see #1492)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=4300h,AH=E3h/SF=0Fh
Bitfields for NetWare extended file attributes:
Bit(s) Description (Table 1492)
2-0 search mode (executables only)
000 none (use shell's default search)
001 search on all opens without path
010 do not search
011 search on read-only opens without path
100 reserved
101 search on all opens
110 reserved
111 search on all read-only opens
3 reserved
4 transactions on file tracked
5 file's FAT indexed
6 read audit (to be implemented)
7 write audit (to be implemented)
--------N-21B7-------------------------------
INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
AH = B7h
AL = new value for HoldFileFlag
Return: AL = previous value of HoldFileFlag
Note: this function provided backward compatibility with a bug in early
DOS versions and CP/M, but is no longer used or supported
--------I-21B8-------------------------------
INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
AH = B8h
AL = window number (1-4=host B-E)
DL = 01h
Notes: only valid in CUT mode
next AID keystroke (eg Enter) enables host buffer updates
SeeAlso: AH=A4h
--------N-21B800-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
AX = B800h
CX = size of reply buffer (01h-3Fh)
ES:BX -> reply buffer for capture flags table (see #1493)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.0+
SeeAlso: AX=B801h,AX=B802h,AH=DFh/DL=00h,AH=DFh/DL=04h
Format of NetWare capture flags table:
Offset Size Description (Table 1493)
00h BYTE status (used internally, should be set to 00h)
01h BYTE print flags (see #1494)
02h BYTE tab size (01h-12h, default 08h)
03h BYTE printer number on server (00h-04h, default 00h)
04h BYTE number of copies to print (00h-FFh, default 01h)
05h BYTE form type required in printer (default 00h)
06h BYTE reserved
07h 13 BYTEs text to be placed on banner page
14h BYTE reserved
15h BYTE default local printer (00h = LPT1)
16h WORD (big-endian) timeout in clock ticks for flushing capture file
on inactivity, or 0000h to disable timeout
18h BYTE flush capture file on LPT close if nonzero
19h WORD (big-endian) maximum lines per page
1Bh WORD (big-endian) maximum characters per line
1Dh 13 BYTEs name of form required in printer
2Ah BYTE LPT capture flag
00h inactive, FFh LPT device is being captured
2Bh BYTE file capture flag
00h if no file specified, FFh if capturing to file
2Ch BYTE timing out (00h if no timeout in effect, FFh if timeout counter
running)
2Dh DWORD (big-endian) address of printer setup string
31h DWORD (big-endian) address of printer reset string
35h BYTE target connection ID
36h BYTE capture in progress if FFh
37h BYTE job queued for printing if FFh
38h BYTE print job valid if FFh
39h DWORD bindery object ID of print queue if previous byte FFh
3Dh WORD (big-endian) print job number (1-999)
Bitfields for NetWare print flags:
Bit(s) Description (Table 1494)
2 print capture file if interrupted by loss of connection
3 no automatic form feed after print job
6 printing control sequences interpreted by print service
7 print banner page before capture file
--------N-21B801-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
AX = B801h
CX = size of buffer (01h-3Fh)
ES:BX -> buffer containing capture flags table (see #1493)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.0+
SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
--------N-21B802-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
AX = B802h
CX = size of reply buffer (01h-3Fh)
DH = LPT port (00h-02h)
ES:BX -> reply buffer for capture flags table (see #1493)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
--------N-21B803-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
AX = B803h
CX = size of buffer (01h-3Fh)
DH = LPT port (00h-02h)
ES:BX -> buffer containing capture flags table (see #1493)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
--------N-21B804-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
AX = B804h
Return: DH = default LPT port (00h-02h)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B805h,AH=DFh/DL=00h
--------N-21B805-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
AX = B805h
DH = new default LPT port (00h-02h)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h
--------N-21B806-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
AX = B806h
DH = LPT port (00h-02h)
BX:CX = print queue's object ID
Return: AL = status
00h successful
FFh job already set
Desc: specify the print queue on which a print job is to be placed the next
time a capture is started on the given printer port
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B801h,AX=B807h,AH=E0h/SF=09h
--------N-21B807-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
AX = B807h
DH = LPT port (00h-02h)
BX = job number (see AH=E3h/SF=68h)
SI:DI:CX = NetWare file handle (see AH=E3h/SF=68h)
Return: AL = status
00h successful
FFh job already queued
Desc: specify the capture file and print job to be used for subsequent
output to the given printer port
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AX=B801h,AX=B806h,AH=E0h/SF=09h,AH=E3h/SF=68h
--------N-21B808-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
AX = B808h
ES:BX -> 12-byte buffer for user name
Return: AL = status
00h successful
Desc: get the user name which is printed on the banner page
Notes: this function is supported by Advanced NetWare 2.1+
the default name is the login name of the user
SeeAlso: AX=B809h
--------N-21B809-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
AX = B809h
ES:BX -> 12-byte buffer containing user name
Return: AL = status
00h successful
Desc: specify the user name which is printed on the banner page
Notes: this function is supported by Advanced NetWare 2.1+
the default name is the login name of the user
SeeAlso: AX=B808h
--------N-21B9-------------------------------
INT 21 U - Novell NetWare - "SpecialAttachableFunction"
AH = B9h
AL = FFh to hook this function
ES:BX -> function to invoke on AH=B9h when AL<>FFh
Note: this function is no longer used or supported by current versions of
NetWare
--------v-21B974-----------------------------
INT 21 - VIRUS - "Tracker" - INSTALLATION CHECK
AX = B974h
Return: AX = 2888h if resident
SeeAlso: AH=B3h"VIRUS",AH=D0h"VIRUS"
--------N-21BA-------------------------------
INT 21 U - Novell NetWare - "ReturnCommandComPointers"
AH = BAh
Return: DX = environment segment
ES:DI -> COMMAND.COM drive
Desc: used to edit the COMSPEC and PATH variables in the master environment
when mapping network drives
Note: this function was documented in older Novell documents which are no
longer available
--------N-21BB-------------------------------
INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
AH = BBh
AL = new EOJ flag
00h disable EOJs
01h enable EOJs
Return: AL = old EOJ flag
Desc: specify whether the network shell should automatically generate an
End of Job call when the root command processor regains control
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=19h,AH=D6h
--------v-21BBBB-----------------------------
INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
AX = BBBBh
Return: AX = 6969h
SeeAlso: AH=ABh"VIRUS",AH=BEh"VIRUS"
--------N-21BC-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
AH = BCh
AL = flags (see #1496)
BX = file handle
CX:DX = starting offset in file
SI:DI = length of region to lock
BP = timeout in timer ticks (1/18 sec)
0000h = don't wait if already locked
Return: AL = status (see #1495)
Desc: add the specified physical record to the log table, optionally locking
it
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=5Ch,AH=BDh,AH=BEh,AH=BFh,AH=C2h,AH=D0h
(Table 1495)
Values for NetWare status:
00h successful
96h no dynamic memory for file
FEh timed out
FFh failed
Bitfields for NetWare flags:
Bit(s) Description (Table 1496)
0 lock as well as log record
1 non-exclusive lock
--------N-21BD-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
AH = BDh
BX = file handle
CX:DX = starting offset in file
SI:DI = length of record
Return: AL = status
00h successful
FFh record not locked
Desc: unlock the specified physical record but do not remove it from log
table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BCh,AH=BEh"NetWare",AH=C0h,AH=C3h,AH=D2h
--------N-21BE-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
AH = BEh
BX = file handle
CX:DX = starting offset within file
SI:DI = record length in bytes
Return: AL = status
00h successful
FFh specified record not locked
Desc: unlock the physical record and remove it from the log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=5Ch,AH=BCh,AH=BDh,AH=C1h,AH=C4h,AH=D4h
--------v-21BE-------------------------------
INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
AH = BEh
Return: AX = 1234h if resident
SeeAlso: AX=BBBBh,AX=BE00h
--------v-21BE00-----------------------------
INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
AX = BE00h
CF set
Return: CF clear if resident
SeeAlso: AH=BEh"VIRUS",AH=C0h"VIRUS"
--------N-21BF-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
AH = BFh
AL = flags (see #1496)
DS:DX -> opened FCB (see #1034 at AH=0Fh)
BX:CX = offset
BP = lock timeout in timer ticks (1/18 sec) if AL nonzero
SI:DI = length
Return: AL = error code (see #1495)
Note: this function was added in NetWare 4.6, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAlso: AH=BCh,AH=C0h"NetWare",AH=C2h"NetWare"
--------N-21C0-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
AH = C0h
DS:DX -> non-extended FCB (see #1034 at AH=0Fh)
BX:CX = offset
Return: AL = error code (see #1495)
Notes: unlocks record but does not remove it from log table
this function was added in NetWare 4.6, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAlso: AH=BDh,AH=BFh,AH=C1h"NetWare",AH=C3h
--------v-21C0-------------------------------
INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
AH = C0h
Return: AX = 0300h if "Slow"/"Zerotime" resident
AX = 1234h if "Solano" resident
SeeAlso: AX=BE00h,AX=C000h"VIRUS",AX=C301h"VIRUS"
--------v-21C000-----------------------------
INT 21 - VIRUS - "QUICKY" - INSTALLATION CHECK
AX = C000h
BX = most files infected by any other infected file
Return: AX = 76F3h if resident
SeeAlso: AH=C0h"VIRUS",AX=C001h,AX=C002h,AH=C1h"VIRUS"
--------v-21C001-----------------------------
INT 21 - VIRUS - "QUICKY" - TURN INFECTION OFF
AX = C001h
Return: nothing
Note: if the virus is already memory resident this call disables any
further infections
SeeAlso: AX=C000h,AX=C002h
--------v-21C002-----------------------------
INT 21 - VIRUS - "QUICKY" - TURN INFECTION ON
AX = C002h
Return: nothing
Note: if the virus is already memory resident and infection is disabled,
this call re-enables it
SeeAlso: AX=C000h,AX=C001h
--------N-21C1-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
AH = C1h
DS:DX -> opened FCB (see #1034 at AH=0Fh)
BX:CX = offset
Return: AL = error code (see #1495)
Note: unlocks record and removes it from log table
this function was added in NetWare 4.6, but was removed some time prior
to Advanced NetWare, and is no longer listed in current Novell
documentation
SeeAlso: AH=BEh,AH=C0h"NetWare",AH=C4h
--------v-21C1-------------------------------
INT 21 - VIRUS - "Solano" - ???
AH = C1h
???
Return: ???
SeeAlso: AH=C0h"VIRUS"
--------N-21C2-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
AH = C2h
AL = flags
bit 1: non-exclusive lock
BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
Return: AL = status
00h successful
FEh timed out
FFh failed
Desc: attempt to lock all physical records listed in the log table
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
status FFh will be returned if one or more physical records have been
exclusively locked by another process
SeeAlso: AH=BFh,AH=C3h,AH=D1h
--------v-21C2-------------------------------
INT 21 - VIRUS - "Scott's Valley" - ???
AH = C2h
???
Return: ???
SeeAlso: AH=C0h"VIRUS"
--------N-21C3-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYS RECORD SET
AH = C3h
Desc: unlock all currently-locked physical records in the log table, but do
not remove them from the table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BDh,AH=C0h,AH=C2h"NetWare",AH=C4h,AH=D3h
--------v-21C301DXF1F1-----------------------
INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
AX = C301h
DX = F1F1h
Return: DX = 0E0Eh if resident
SeeAlso: AH=C0h"VIRUS",AX=C500h"VIRUS"
--------N-21C4-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
AH = C4h
Desc: unlock all physical records in the log table and remove them from the
log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BEh,AH=C1h,AH=D5h
--------N-21C500-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
AX = C500h
DS:DX -> semaphore name (counted string, max 127 bytes)
CL = initial value for semaphore
Return: AL = status
00h successful
BL = number of processes having semaphore open
CX:DX = semaphore handle
03h name length greater than 127
(refer to Novell document FYI.A.4611)
FEh invalid name length
FFh invalid semaphore value
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
the semaphore's value is incremented by AX=C503h and decremented by
AX=C502h
SeeAlso: AX=C501h,AX=C502h,AX=C503h,AX=C504h,AX=F220h/SF=00h
--------v-21C500-----------------------------
INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
AX = C500h
Return: AX = 6731h if resident
SeeAlso: AX=C301h"VIRUS",AH=C6h"VIRUS"
--------N-21C501-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
AX = C501h
CX:DX = semaphore handle
Return: AL = status
00h successful
CX = semaphore value (-127 to 127)
DL = count of processes which have the semaphore open
FFh invalid handle
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C502h,AX=C504h,AX=F220h/SF=01h
--------N-21C502-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
AX = C502h
CX:DX = semaphore handle
BP = timeout limit in timer ticks (1/18 sec)
0000h return immediately if semaphore already zero or negative
Return: AL = status
00h successful
FEh timeout
FFh invalid handle
Desc: decrement the semaphore's value, optionally waiting until its value
becomes positive before decrementing
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C501h,AX=C503h,AX=F220h/SF=02h
--------N-21C503-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
AX = C503h
CX:DX = semaphore handle
Return: AL = status
00h successful
01h semaphore value overflowed
FFh invalid handle
Desc: increment the semaphore's value and signal the first process (if any)
in the queue waiting on the semaphore
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C502h,AX=F220h/SF=03h
--------N-21C504-----------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
AX = C504h
CX:DX = semaphore handle
Return: AL = status
00h successful
FFh invalid handle
Desc: decrement the semaphore's open count, and delete the semaphore if the
count reaches zero
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AX=C500h"NetWare",AX=C501h,AX=F220h/SF=04h
--------N-21C6-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
AH = C6h
AL = subfunction
00h set old "compatibility" mode (default)
01h set new extended locks mode
02h get lock mode
Return: AL = current lock mode
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
the locking mode should be 01h for NetWare 4.61+ and Advanced
NetWare 1.0+ locking calls, and 00h for all older calls
SeeAlso: AH=BCh,AH=C4h,AH=D0h
--------v-21C6-------------------------------
INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
AH = C6h
Return: AL = 55h if resident
SeeAlso: AX=C500h"VIRUS",AX=C603h
--------v-21C603-----------------------------
INT 21 - VIRUS - "Yankee Doodle" or "MLTI" - INSTALLATION CHECK
AX = C603h
BX = version number (002Ch or 002Dh)
CF set
Return: CF clear if resident
ZF set if resident and input BX matches version
SeeAlso: AX=C500h"VIRUS",AX=C700h"VIRUS"
--------N-21C700-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
AX = C700h
Return: CF clear if successful
AL = 00h
CF set on error
AL = error code
96h out of memory
FEh implicit transaction already active, converted to explicit
FFh explicit transaction already active
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C701h,AX=C702h,AX=C703h,AX=F222h/SF=01h
--------v-21C700-----------------------------
INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
AX = C700h
Return: AL = 07h if resident
SeeAlso: AX=C603h"VIRUS",AH=CBh"VIRUS"
--------N-21C701-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
AX = C701h
Return: AL = status (00h,FDh-FFh) (see #1497)
00h successful
CX:DX = transaction number
CF clear except when AL=FFh
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C700h"NetWare",AX=C703h,AX=F222h/SF=02h
(Table 1497)
Values for NetWare TTS status:
00h successful
FDh transaction tracking disabled
FEh transaction ended records locked
FFh no explicit transaction active
--------N-21C702-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
AX = C702h
Return: AL = status
00h not available
01h available
FDh available but disabled
Desc: determine whether the default file server supports TTS
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C700h,AX=C701h,AX=C703h,AX=F222h/SF=00h
--------N-21C703-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
AX = C703h
Return: CF clear if successful
AL = 00h
CF set on error
AL = error code (FDh-FFh) (see #1497)
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C704h,AX=F222h/SF=03h
--------N-21C704-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
AX = C704h
CX:DX = transaction number (see AX=C701h)
Return: AL = status
00h successful
FFh not yet written to disk
Desc: verify that a transaction has actually been written to disk
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
transactions are written to disk in the order in which they are ended,
but it may take as much as five seconds for the data to be written
SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C703h,AX=F222h/SF=04h
--------N-21C705-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
AX = C705h
Return: AL = status
00h successful
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Desc: get the per-application limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is FFh, implicit transactions are disabled for the
corresponding lock type
SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=05h
--------N-21C706-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
AX = C706h
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Return: AL = status
00h successful
Desc: specify the per-application limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is set to FFh, implicit transactions are disabled for
the corresponding lock type
SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=06h
--------N-21C707-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
AX = C707h
Return: AL = status
00h successful
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Desc: get the per-workstation limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is FFh, implicit transactions are disabled for the
corresponding lock type
SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=07h
--------N-21C708-----------------------------
INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
AX = C708h
CL = maximum logical record locks (default 0)
CH = maximum physical record locks (default 0)
Return: AL = status
00h successful
Desc: specify the per-workstation limits on record locks allowed before an
implicit transaction is begun
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
if either limit is set to FFh, implicit transactions are disabled for
the corresponding lock type
SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=08h
--------N-21C8-------------------------------
INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
AH = C8h
if function C6h lock mode 00h:
DL = mode
00h no wait
01h wait
if function C6h lock mode 01h:
BP = timeout in timer ticks (1/18 sec)
Return: AL = error code
Desc: used to provide TTS support for applications which are not aware of
Novell's Transaction Tracking System
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAlso: AH=C9h
--------N-21C9-------------------------------
INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
AH = C9h
Return: AL = error code
Desc: used to provide TTS support for applications which are not aware of
Novell's Transaction Tracking System
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAlso: AH=C8h
--------N-21CA-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
AH = CAh
DS:DX -> FCB (see #1034 at AH=0Fh)
if function C6h lock mode 01h:
AL = log and lock flag
00h log file only
01h lock as well as log file
BP = lock timeout in timer ticks (1/18 sec)
Return: AL = error code
00h successful
96h no dynamic memory for file
FEh timeout
FFh failed
Desc: provides file locking support for FCBs
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAlso: AH=CBh
--------v-21CA15-----------------------------
INT 21 - VIRUS - "Piter" - ???
AX = CA15h
???
Return: ???
SeeAlso: AH=CCh"VIRUS"
--------N-21CB-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
AH = CBh
if function C6h lock mode 00h:
DL = mode (00h no wait, 01h wait)
if function C6h lock mode 01h:
BP = lock timeout in timer ticks (1/18 sec), 0000h = no wait
Return: AL = status (00h,FEh,FFh) (see #1498)
Desc: attempt to lock all files listed in the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
status FFh will be returned if one or more of the files have already
been exclusively locked by another process
SeeAlso: AH=CAh,AH=CDh,AH=D1h,AH=EBh
(Table 1498)
Values for NetWare status:
00h successful
FEh timed out
FFh failed
--------v-21CB-------------------------------
INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
AH = CBh
Return: AL = 07h if resident
SeeAlso: AX=C700h"VIRUS",AX=CB02h
--------v-21CB02-----------------------------
INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
AX = CB02h
Return: AX = 02CBh if resident
SeeAlso: AH=CBh"VIRUS",AH=CCh"VIRUS"
--------N-21CC-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
AH = CCh
DS:DX -> FCB (see #1034 at AH=0Fh)
Return: none
Desc: unlocks file, but does not remove it from the log table or close it
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAlso: AH=CAh,AH=CDh
--------v-21CC-------------------------------
INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
AH = CCh
Return: AX = 0700h if resident
SeeAlso: AX=CB02h,AH=CDh"VIRUS",AX=D000h"VIRUS"
--------N-21CD-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
AH = CDh
Return: none
Desc: unlock all files listed in the log table, but don't remove them from
the table
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=CBh,AH=CCh,AH=CFh,AH=D3h
--------v-21CD-------------------------------
INT 21 - VIRUS - "Westwood" - ???
AH = CDh
???
Return: ???
SeeAlso: AH=CCh"VIRUS"
--------N-21CE-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
AH = CEh
DS:DX -> FCB (see #1034 at AH=0Fh)
Return: AL = error code
Desc: unlocks file and removes it from log table, then closes all opened and
logged occurrences
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAlso: AH=CAh,AH=CFh,AH=EDh"NetWare"
--------N-21CF-------------------------------
INT 21 - LANstep - ???
AH = CFh
???
Return: ???
Program: LANstep is a redesign of the Waterloo Microsystems PORT network
--------N-21CF-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
AH = CFh
Return: AL = 00h
Desc: unlock and remove all files from log table
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=CAh,AH=CEh,AH=EBh"NetWare"
--------N-21D0-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
AH = D0h
DS:DX -> record string (counted string, max 99 data bytes)
if function C6h lock mode 01h: (Novell, NTNX only)
AL = flags
bit 0: lock as well as log the record
bit 1: non-exclusive lock
BP = lock timeout in timer ticks (1/18 sec)
Return: AL = status
00h successful
96h no dynamic memory for file
FEh timed out
FFh unsuccessful
Desc: add the specified logical record name to the log table, and optionally
lock the record
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=BCh,AH=D1h,AH=D2h,AH=D4h,AH=EBh
--------v-21D0-------------------------------
INT 21 - VIRUS - "MALAGA" - INSTALLATION CHECK
AH = D0h
Return: AX = 00D0h if resident
SeeAlso: AH=B3h"VIRUS",AH=D0h"ANTIARJ",AX=D000h"VIRUS"
--------v-21D0-----------------------------
INT 21 - VIRUS - "ANTIARJ" -INSTALLATION CHECK
AH = D0h
Return: AH = D1h if resident
SeeAlso: AH=D0h"MALAGA"
--------v-21D000-----------------------------
INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
AX = D000h
Return: BX = 1234h if resident
SeeAlso: AH=CCh"VIRUS",AH=D0h"ANTIARJ",AX=D000h"Warlock",AH=D5h"VIRUS",AX=D5AAh
--------v-21D000-----------------------------
INT 21 - VIRUS - "Warlock" - INSTALLATION CHECK
AX = D000h
CF clear
Return: CF set if resident (normal DOS return would be CF clear)
SeeAlso: AX=D000h"VIRUS",AH=D5h"VIRUS"
--------N-21D1-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
AH = D1h
AL = lock type (00h exclusive, 01h shareable)
if function C6h lock mode 00h:
DL = mode (00h no wait, 01h wait)
if function C6h lock mode 01h: (Novell only)
BP = lock timeout in timer ticks (1/18 sec), 0000h no wait
Return: AL = status (see #1498)
Desc: attempt to lock all logical record names listed in the log table
Notes: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
status FFh will be returned if one or more logical records have been
exclusively locked by another process
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=C2h,AH=CBh,AH=D0h,AH=D3h,AH=D5h
--------N-21D2-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
AH = D2h
DS:DX -> semaphore identifier (counted string up to 99 chars long)
Return: AL = status
00h successful
FFh no such record
Desc: unlock the logical record name but do not remove it from the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=BDh,AH=D0h,AH=D3h,AH=D4h
--------v-21D2-------------------------------
INT 21 - VIRUS???
AH = D2h
???
Return: ???
Note: this call is intercepted by the Search&Destroy SDRes v27.03 bundled
with Novell DOS 7, and is presumably some virus's installation check
SeeAlso: AH=4Ah/BX=00B6h
--------N-21D3-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
AH = D3h
Desc: unlock all currently-locked logical record names in the log table, but
do not remove them from the table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=C3h,AH=CDh,AH=D1h,AH=D2h,AH=D5h
--------N-21D4-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
AH = D4h
DS:DX -> logical record name (counted string up to 99 chars long)
Return: AL = status (00h,FFh) (see #1499)
Desc: unlock and remove the logical record name from the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=BEh,AH=D0h,AH=D2h,AH=D5h
(Table 1499)
Values for NetWare status:
00h successful
FFh no such record name
--------N-21D5-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
AH = D5h
Return: AL = error code (00h,FFh) (see #1499)
Desc: unlock and remove all logical record name from the log table
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Banyan VINES, and Alloy NTNX
locks on logical record names are advisory and may be ignored by other
applications
SeeAlso: AH=D1h,AH=D3h,AH=D4h
--------v-21D5-------------------------------
INT 21 - VIRUS - "Carfield" - ???
AH = D5h
???
Return: ???
SeeAlso: AX=D5AAh,AH=F3h"Carfield"
--------v-21D5AA-----------------------------
INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
AX = D5AAh
Return: AX = 2A55h if "Diamond-A" resident
AX = 2A03h if "Diamond-B"-family virus resident
SeeAlso: AX=D000h,AH=D5h"VIRUS",AX=D5AAh/BP=DEAAh
--------v-21D5AABPDEAA-----------------------
INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
AX = D5AAh
BP = DEAAh
Return: SI = 4321h if resident
SeeAlso: AX=D5AAh,AX=DADAh"VIRUS"
--------N-21D6-------------------------------
INT 21 - Novell NetWare - WORKSTATION - END OF JOB
AH = D6h
BX = job flag (0000h current job, FFFFh all processes on workstation)
Return: AL = error code
Desc: unlocks and clears all locked or logged files and records held by the
process(es), closes all files, resets error and lock modes, and
releases all network resources
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BBh"NetWare",AH=D7h
--------N-21D7-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
AH = D7h
Return: AL = error code
Desc: this function closes the caller's open files, logs it out from all
file servers, detaches the workstation from all non-default file
servers, and maps a drive to the default server's SYS:LOGIN directory
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=D6h,AH=E3h/SF=14h,AH=F1h"NetWare"
--------N-21D8-------------------------------
INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
AH = D8h
DL = resource number
Return: AL = status (00h successful, FFh unsucessful)
Note: this function is no longer used or supported by NetWare, and is not
documented in Novell documents
SeeAlso: AH=D9h
--------N-21D9-------------------------------
INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
AH = D9h
DL = resource number
Return: AL = status (00h successful, FFh unsucessful)
Note: this function is no longer used or supported by NetWare, and is not
documented in Novell documents
SeeAlso: AH=D8h
--------N-21DA-------------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
AH = DAh
DL = volume number
ES:DI -> reply buffer (see #1500)
Return: AL = 00h
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
operator console rights are not required to make this call
reported total blocks and total unused blocks include the Hot Fix
Table; the NetWare shell's implementation of INT 21/AH=36h will
report values larger than 268MB as 268MB.
SeeAlso: AH=36h,AH=E2h/SF=15h,AH=E3h/SF=E9h
Format of NetWare reply buffer:
Offset Size Description (Table 1500)
00h WORD sectors/block
02h WORD total blocks on volume
04h WORD unused blocks
06h WORD total directory entries
08h WORD unused directory entries
0Ah 16 BYTEs volume name, null padded
1Ah WORD removable flag, 0000h = not removable
Note: all words are big-endian
--------v-21DADA-----------------------------
INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
AX = DADAh
Return: AH = A5h
SeeAlso: AX=D5AAh,AX=DAFEh"VIRUS"
--------v-21DAFE-----------------------------
INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
AX = DAFEh
Return: AX = 1234h if resident
SeeAlso: AX=DADAh,AH=DDh"VIRUS",AH=DEh"VIRUS"
--------N-21DB-------------------------------
INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
AH = DBh
Return: AL = number of local disks as set by LASTDRIVE in CONFIG.SYS
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=0Eh
--------N-21DC-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
AH = DCh
Return: AL = logical connection number
00h if NetWare not loaded or this machine is a non-dedicated server
CX = station number in ASCII (CL = first digit)
Notes: this function is supported by NetWare 4.0+, Banyan VINES, and Alloy
NTNX
station number only unique for those PCs connected to same semaphore
service
SeeAlso: AH=F2h"NetWare"
--------d-21DC-------------------------------
INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
AH = DCh
DX = state
0000h turn on
0001h turn off
SeeAlso: AX=FEDCh
--------v-21DC28-----------------------------
INT 21 - VIRUS - "Monika" - INSTALLATION CHECK
AX = DC28h
Return: AX = 1973h if resident
SeeAlso: AX=D000h"VIRUS",AX=DCBAh"VIRUS"
--------v-21DCBA-----------------------------
INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK
AX = DCBAh
Return: AX = ABCDh if resident
SeeAlso: AX=DC28h"VIRUS",AX=DEFEh"VIRUS"
--------N-21DD-------------------------------
INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
AH = DDh
DL = error mode
00h invoke INT 24 on critical I/O errors (default)
01h return NetWare extended error code in AL
02h return error code in AL, mapped to standard DOS error codes
Return: AL = previous error mode
Note: this function is supported by Advanced NetWare 2.0+
SeeAlso: INT 24
--------v-21DD-------------------------------
INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
AH = DDh
CX = number of bytes to copy
DS:SI -> source of copy
ES:DI -> destination of copy
Return: does not return normally; return address is caller's CS:0100h with
AX = ???
SeeAlso: AX=DDEFh,AH=E0h"VIRUS",AH=EEh"VIRUS"
--------v-21DDEF------------------------
INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK
AX = DDEFh
Return: AX = EFDDh if resident
SeeAlso: AH=DDh"VIRUS",AH=DEh"VIRUS"
--------v-21DE-------------------------------
INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
AH = DEh
Return: AH = DFh if resident
SeeAlso: AX=DAFEh,AX=DDEFh,AH=DEh"April 1st",AX=DEADh"90210"
--------v-21DE-------------------------------
INT 21 - VIRUS - "April 1st EXE" - ???
AH = DEh
???
Return: ???
SeeAlso: AH=DEh"Durban",AX=DEADh"90210"
--------N-21DE-------------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
AH = DEh
DL = broadcast mode
00h receive server and workstation broadcasts (default)
01h receive server broadcasts, discard user messages
02h store server broadcasts for retrieval
03h store all broadcasts for retrieval
Return: AL = new broadcast mode
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
--------N-21DE--DL04-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
AH = DEh
DL = 04h
Return: AL = current broadcast mode
00h receive server and workstation broadcasts (default)
01h receive server broadcasts, discard user message
02h store server broadcasts for retrieval
03h store all broadcasts for retrieval
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
--------N-21DE-------------------------------
INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
AH = DEh
DL = function
05h disable shell timer interrupt checks
06h enable shell timer interrupt checks
Return: ???
Note: this function was added in NetWare 4.0, but is not listed in current
Novell documentation and is probably no longer supported
--------v-21DEAD------------------------
INT 21 - VIRUS - "90210" - INSTALLATION CHECK
AX = DEADh
Return: AX = AAAAh if resident
SeeAlso: AH=DEh"April 1st",AX=DEADh"Shifting",AX=DEDEh"VIRUS"
--------v-21DEAD------------------------
INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ???
AX = DEADh
SeeAlso: AX=FEADh
SeeAlso: AX=DEADh"90210",AX=DEDEh"VIRUS"
--------v-21DEDE-----------------------------
INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
AX = DEDEh
Return: AH = 41h if resident
SeeAlso: AX=DEADh"Shifting",AX=DEFEh"VIRUS"
--------v-21DEFE-----------------------------
INT 21 - VIRUS - "Maze" - INSTALLATION CHECK
AX = DEFEh
Return: AX = ABCDh if resident
SeeAlso: AX=DCBAh"VIRUS",AX=DEDEh"VIRUS",AH=E0h"VIRUS"
--------N-21DF--DL00-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
AH = DFh
DL = 00h
Return: AL = status
00h successful
Desc: this function redirects the default LPT to a capture file on the file
server
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
a print job is queued when the first character of output is captured
SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h
SeeAlso: AH=DFh/DL=04h,AX=F003h
--------N-21DF--DL01-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
AH = DFh
DL = 01h
Return: AL = status
00h successful
Desc: stop redirecting the default LPT, close the capture file, and release
the job in the print queue for printing
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
after this call, the default LPT defaults to local printing
SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=02h,AH=DFh/DL=03h,AH=DFh/DL=05h
--------N-21DF--DL02-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
AH = DFh
DL = 02h
Return: AL = status
00h successful
Desc: this function ends the capture of the default LPT, removes the job from
the print queue, and deletes the capture file unless it is a
permanent capture file
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
after this call, the default LPT defaults to local printing
SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=06h
--------N-21DF--DL03-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
AH = DFh
DL = 03h
Return: AL = status
00h successful
Desc: this function closes the current capture file for the default LPT
and starts printing it if it is not a permanent capture file
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
if more data is sent to the LPT port after this call, a new capture
file will be opeend
SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=07h
--------N-21DF--DL04-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
AH = DFh
DL = 04h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: this function redirects the specified LPT to a capture file on the file
server
Notes: this function is supported by Advanced NetWare 2.1+
a print job is queued when the first character of output is captured
SeeAlso: AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h
SeeAlso: AX=F003h
--------N-21DF--DL05-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
AH = DFh
DL = 05h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: stop redirecting the specified LPT, close the capture file, and release
the job in the print queue for printing
Notes: this function is supported by Advanced NetWare 2.1+
after this call, the specified LPT defaults to local printing
SeeAlso: AH=DFh/DL=01h,AH=DFh/DL=04h,AH=DFh/DL=06h,AH=DFh/DL=07h
--------N-21DF--DL06-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
AH = DFh
DL = 06h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: this function ends the capture of the specified LPT, removes the job
from the print queue, and deletes the capture file unless it is a
permanent capture file
Notes: this function is supported by Advanced NetWare 2.1+
after this call, the specified LPT defaults to local printing
SeeAlso: AH=DFh/DL=02h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=07h
--------N-21DF--DL07-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
AH = DFh
DL = 07h
DH = LPT port (00h-02h)
Return: AL = status
00h successful
Desc: this function closes the current capture file for the specified LPT
and starts printing it if it is not a permanent capture file
Notes: this function is supported by Advanced NetWare 2.1+
if more data is sent to the LPT port after this call, a new capture
file will be opeend
SeeAlso: AH=DFh/DL=03h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=06h
--------T-21DF00DX534C-----------------------
INT 21 U - Software Carousel - INSTALLATION CHECK
AX = DF00h
DX = 534Ch ("SL")
DI = 534Ch ("SL")
Return: AX = 00FFh if installed
???
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
--------T-21DF01-----------------------------
INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
AX = DF01h
BL = task number (00h = next task)
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,02h) (see #1501)
(Table 1501)
Values for Software Carousel error code:
00h invalid subfunction in AL
01h invalid task number
02h tried to switch to task with no memory size
03h tried to kill program in partition with no program running
04h tried to change size of an active memory partition
05h invalid memory size
06h tried to send command to task with a pending previous command
--------T-21DF02-----------------------------
INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
AX = DF02h
BL = task number
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,03h) (see #1501)
--------T-21DF03-----------------------------
INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
AX = DF03h
BL = task number
Return: AL = status
00h Carousel not running
01h successful
BL = partition state (00h no program running, 01h prog running)
DX = partition size in KB
FFh unsucessful
AH = error code (01h) (see #1501)
SeeAlso: AX=DF05h
--------T-21DF04-----------------------------
INT 21 - Software Carousel - GET PARTITION NAME
AX = DF04h
BL = task number
Return: AL = status
00h Carousel not running
01h successful
CX = length of name (00h if default partition name)
ES:BX -> partition name (if CX nonzero)
FFh unsucessful
AH = error code (01h) (see #1501)
SeeAlso: AX=DF06h
--------T-21DF05-----------------------------
INT 21 - Software Carousel - CHANGE PARTITION SIZE
AX = DF05h
BL = task number
DX = new size in KB
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,04h,05h) (see #1501)
BX = minimum size allowed
CX = maximum size available
SeeAlso: AX=DF03h
--------T-21DF06-----------------------------
INT 21 - Software Carousel - CHANGE PARTITION NAME
AX = DF06h
BL = task number
CX = length of new name (00h to use default, max 18h)
DS:SI -> new name
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h) (see #1501)
SeeAlso: AX=DF04h
--------T-21DF07-----------------------------
INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
AX = DF07h
BL = task number
CX = length of command (max 8 chars)
DS:SI -> command line
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,06h) (see #1501)
Note: the maximum length seems too small and may be a typo for 80 characters
--------T-21DF08-----------------------------
INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
AX = DF08h
BL = new state of keyboard (00h disabled, 01h enabled)
Return: AL = status
00h Carousel not running
01h successful
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
Note: when the keyboard is is disabled, the user may neither access the
Carousel menu nor switch to another memory section
--------T-21DF09-----------------------------
INT 21 - Software Carousel - BOOT THE SYSTEM
AX = DF09h
Return: AL = status
00h Carousel not running
FFh unsucessful
AH = error code (01h,03h) (see #1501)
Note: this function never returns if successful
--------T-21DF0A-----------------------------
INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
AX = DF0Ah
Return: AL = status
00h Carousel not running
01h successful
BL = task number
DX = memory size in KB
FFh unsucessful
AH = error code (01h,03h) (see #1501)
--------T-21DF0B-----------------------------
INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
AX = DF0Bh
BH = interrupt number or 00h
BL = function number to invoke on partition switch
CL = function number to call when it is safe for resident programs
to perform DOS calls
DS:DX -> FAR function to call if BH=00h
Return: AL = status
00h Carousel not running
01h successful
FFh unsucessful
AH = error code (01h,03h) (see #1501)
Notes: the specified interrupt or FAR function is called with AH set to the
appropriate one of the values specified in BL and CL, and BL set to
the new task number
the function specified by CL will not be called until the notification
is enabled with AX=DF0Ch
SeeAlso: AX=DF0Ch
--------T-21DF0C-----------------------------
INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
AX = DF0Ch
Return: AL = status
00h Carousel not running
01h successful
Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
SeeAlso: AX=DF0Bh
--------O-21E0-------------------------------
INT 21 - Digital Research DOS Plus - CALL BDOS
AH = E0h
CL = BDOS function number (see #3690 at INT E0"CP/M-86")
other registers as appropriate for function
Return: as appropriate for function
SeeAlso: AX=4459h,INT E0"CP/M-86"
--------E-21E0-------------------------------
INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
AH = E0h
???
Return: ???
SeeAlso: AH=E1h"OS/286"
--------T-21E0-------------------------------
INT 21 - DoubleDOS - MENU CONTROL
AH = E0h
AL = subfunction
01h exchange tasks
73h resume invisible job if suspended
74h kill other job
75h suspend invisible job
Note: identical to AH=F0h
SeeAlso: AH=F0h"DoubleDOS"
--------v-21E0-------------------------------
INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
AH = E0h
Return: AX = 0300h if "Jerusalem" resident
AX = DADAh if "Armagedon" resident
SeeAlso: AH=DEh"VIRUS",AX=DEDEh"VIRUS",AX=E00Fh
--------N-21E0-------------------------------
INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
AH = E0h
DS:SI -> request buffer (see #1502)
ES:DI -> reply buffer
Return: AL = status
Note: this function was added in NetWare 4.0, but is no longer listed in
current Novell documentation and may no longer be supported
SeeAlso: AH=E3h/SF=68h,AX=F211h/SF=06h,AX=F211h/SF=0Ah
Format of NetWare print spooling request buffer:
Offset Size Description (Table 1502)
00h WORD length of following data
02h BYTE subfunction
00h spool data to a capture file
01h close and queue capture file
02h set spool flags
03h spool existing file
04h get spool queue entry
05h remove entry from spool queue
03h ???
SeeAlso: #1789
--------N-21E0--SF06-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
AH = E0h subfn 06h
DS:SI -> request buffer (see #1503)
ES:DI -> reply buffer (see #1504)
Return: AL = status
00h successful
FFh no such printer
Desc: get current state of specified printer attached to the server
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
Format of NetWare "Get Printer Status" request buffer:
Offset Size Description (Table 1503)
00h WORD 0002h (length of following data)
02h BYTE 06h (subfunction "Get Printer Status")
03h BYTE printer number (00h-04h)
SeeAlso: #1504
Format of NetWare "Get Printer Status" reply buffer:
Offset Size Description (Table 1504)
00h WORD (call) 0004h (size of following results buffer)
02h BYTE flag: 00h printer active, FFh printer halted
03h BYTE flag: 00h printer online, 01h printer offline
04h BYTE current form type
05h BYTE target printer number (00h-04h)
same as number in request buffer unless rerouted by server
console
SeeAlso: #1503
--------N-21E0--SF09-------------------------
INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
AH = E0h subfn 09h
DS:SI -> request buffer (see #1505)
ES:DI -> reply buffer (see #1506)
Return: AL = status
00h successful
9Ch invalid path
Desc: create a permanent capture file for the next print capture to be
started
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
the caller must have read, write, and create rights for the directory
containing the capture file
Format of NetWare "Specify Capture File" request buffer:
Offset Size Description (Table 1505)
00h WORD length of following data (max 102h)
02h BYTE 09h (subfunction "Specify Capture File")
03h BYTE directory handle or 00h
04h BYTE length of filename
05h N BYTEs name of capture file
SeeAlso: #1506
Format of NetWare reply buffer:
Offset Size Description (Table 1506)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1505
--------v-21E00F-----------------------------
INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
AX = E00Fh
Return: AX = 4C31h if resident
SeeAlso: AH=E0h"VIRUS",AH=E1h"VIRUS"
--------E-21E1-------------------------------
INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
AH = E1h
???
Return: ???
Note: protected mode only???
SeeAlso: AH=E0h"OS/286",AH=E2h"OS/286",AH=E3h"OS/286",AX=250Eh,INT 31/AX=0301h
--------T-21E1-------------------------------
INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
AH = E1h
SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F1h"DoubleDOS"
--------v-21E1-------------------------------
INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
AH = E1h
Return: AX = 0300h if "Mendoza" resident
AX = 0400h if "Fu Manchu" resident
SeeAlso: AX=E00Fh,AH=E4h"VIRUS"
--------N-21E1--SF00-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
AH = E1h subfn 00h
DS:SI -> request buffer (see #1507)
ES:DI -> reply buffer (see #1508)
Return: AL = status
00h successful
FEh I/O error or out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h
SeeAlso: AH=E1h/SF=09h
Format of NetWare "Send Broadcast Message" request buffer:
Offset Size Description (Table 1507)
00h WORD length of following data (max 9Eh)
02h BYTE 00h (subfunction "Send Broadcast Message")
03h BYTE number of connections (01h-64h)
04h N BYTEs list of connections to receive broadcast message
BYTE length of message (01h-37h)
N BYTEs broadcast message (no control characters or characters > 7Eh)
SeeAlso: #1508
Format of NetWare "Send Broadcast Message" reply buffer:
Offset Size Description (Table 1508)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of per-connection results
00h successful
FCh message rejected due to lack of buffer space
FDh invalid connection number
FFh blocked (see also AH=E1h/SF=02h)
SeeAlso: #1507
--------N-21E1--SF01-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE (OLD)
AH = E1h subfn 01h
DS:SI -> request buffer (see #1509)
ES:DI -> reply buffer (see #1510)
Return: AL = status
00h successful
FCh full message queue
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h
SeeAlso: AX=F215h/SF=01h,AX=F215h/SF=0Bh
Format of NetWare "Get Broadcast Message" request buffer:
Offset Size Description (Table 1509)
00h WORD 0001h (length of following data)
02h BYTE 01h (subfunction "Get Broadcast Message")
SeeAlso: #1510,#1797
Format of NetWare "Get Broadcast Message" reply buffer:
Offset Size Description (Table 1510)
00h WORD (call) size of following results buffer (max 38h)
02h BYTE length of message (00h-37h)
00h if no broadcast messages pending
03h N BYTEs message (no control characters or characters > 7Eh)
SeeAlso: #1509,#1795,#1798
--------N-21E1--SF02-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - DISABLE BROADCAST MESSAGES
AH = E1h subfn 02h
DS:SI -> request buffer (see #1512)
ES:DI -> reply buffer (see #1513)
Return: AL = error code
Note: these functions are supported by NetWare 4.0+ but are not listed in
_NetWare_System_Calls--DOS_; they may be obsolete
SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=03h,AH=E1h/SF=04h,AH=E1h/SF=09h
SeeAlso: AX=F215h/SF=02h
Format of NetWare "Disable Broadcasts" request packet:
Offset Size Description (Table 1511)
00h WORD 0001h (length of following data)
02h BYTE 02h (subfunction "Enable Broadcast Messages")
SeeAlso: #1512,#1513
--------N-21E1--SF03-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE BROADCAST MESSAGES
AH = E1h subfn 03h
DS:SI -> request buffer (see #1512)
ES:DI -> reply buffer (see #1513)
Return: AL = error code
Note: these functions are supported by NetWare 4.0+ but are not listed in
_NetWare_System_Calls--DOS_; they may be obsolete
SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=02h,AH=E1h/SF=04h,AH=E1h/SF=09h
SeeAlso: AX=F215h/SF=03h
Format of NetWare "Enable Broadcast Messages" request buffer:
Offset Size Description (Table 1512)
00h WORD 0001h (length of following data)
02h BYTE 03h (subfunction "Enable Broadcast Messages")
SeeAlso: #1513,#1511
Format of NetWare "Enable/Disable Broadcast Messages" reply buffer:
Offset Size Description (Table 1513)
00h WORD (call) 0000h (no data returned)
SeeAlso: #1512,#1511
--------N-21E1--SF04-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
AH = E1h subfn 04h
DS:SI -> request buffer (see #1514)
ES:DI -> reply buffer (see #1515)
Return: AL = status
00h successful
FEh I/O error or out of dynamic workspace
Notes: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
message pipes use CPU time on the file server; IPX, SPX, or NetBIOS
connections should be used for peer-to-peer communications as these
protocols do not use file server time
SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
Format of NetWare "Send Personal Message" request buffer:
Offset Size Description (Table 1514)
00h WORD length of following data (max E5h)
02h BYTE 04h (subfunction "Send Personal Message")
03h BYTE number of connections (01h-64h)
04h N BYTEs list of connections to receive broadcast message
BYTE length of message (01h-7Eh)
N BYTEs message (no control characters or characters > 7Eh)
SeeAlso: #1515
Format of NetWare "Send Personal Message" reply buffer:
Offset Size Description (Table 1515)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of per-connection results
00h successful
FCh message rejected because queue is full (contains 6 msgs)
FDh incomplete pipe
FFh failed
SeeAlso: #1514
--------N-21E1--SF05-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
AH = E1h subfn 05h
DS:SI -> request buffer (see #1516)
ES:DI -> reply buffer (see #1517)
Return: AL = status
00h successful
FEh out of dynamic workspace
Desc: return the oldest message in the default file server's message queue
for the calling workstation
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAlso: AH=E1h/SF=01h,AH=E1h/SF=04h,AH=E1h/SF=06h,AH=E1h/SF=08h
Format of NetWare "Get Personal Message" request buffer:
Offset Size Description (Table 1516)
00h WORD 0001h (length of following data)
02h BYTE 05h (subfunction "Get Personal Message")
SeeAlso: #1517
Format of NetWare "Get Personal Message" reply buffer:
Offset Size Description (Table 1517)
00h WORD (call) size of following results buffer (max 80h)
02h BYTE connection number of sending station
03h BYTE length of message (00h-7Eh)
00h if no personal messages pending
04h N BYTEs message (no control characters or characters > 7Eh)
SeeAlso: #1516
--------N-21E1--SF06-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
AH = E1h subfn 06h
DS:SI -> request buffer (see #1518)
ES:DI -> reply buffer (see #1519)
Return: AL = status
00h successful
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAlso: AH=E1h/SF=04h,AH=E1h/SF=07h,AH=E1h/SF=08h
Format of NetWare "Open Message Pipe" request buffer:
Offset Size Description (Table 1518)
00h WORD length of following data (max 66h)
02h BYTE 06h (subfunction "Open Message Pipe")
03h BYTE number of pipes to open (01h-64h)
04h N BYTEs list of connection numbers
SeeAlso: #1519,#1520,#1523
Format of NetWare "Open Message Pipe" reply buffer:
Offset Size Description (Table 1519)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of results
00h successful
FEh incomplete (target half not yet created)
FFh failed
SeeAlso: #1518,#1521,#1524
--------N-21E1--SF07-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
AH = E1h subfn 07h
DS:SI -> request buffer (see #1520)
ES:DI -> reply buffer (see #1521)
Return: AL = status
00h successful
FCh full message queue
FEh out of dynamic workspace
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
Format of NetWare "Close Mesage Pipe" request buffer:
Offset Size Description (Table 1520)
00h WORD length of following data (max 66h)
02h BYTE 07h (subfunction "Close Message Pipe")
03h BYTE number of pipes to close (01h-64h)
04h N BYTEs list of connection numbers
SeeAlso: #1518,#1521
Format of NetWare "Close Message Pipe" reply buffer:
Offset Size Description (Table 1521)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of results
00h successful
FDh failed
FFh no such pipe
SeeAlso: #1519,#1520
--------N-21E1--SF08-------------------------
INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
AH = E1h subfn 08h
DS:SI -> request buffer (see #1523)
ES:DI -> reply buffer (see #1524)
Return: AL = status (see #1522)
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=07h,AX=F215h/SF=08h
(Table 1522)
Values for NetWare function status:
00h successful
FCh full message queue
FEh out of dynamic workspace
SeeAlso: #1527
Format of NetWare "Check Pipe Status" request buffer:
Offset Size Description (Table 1523)
00h WORD length of following data (max 66h)
02h BYTE 08h (subfunction "Check Pipe Status")
03h BYTE number of pipes to monitor (01h-64h)
04h N BYTEs list of connection numbers
SeeAlso: #1518,#1524
Format of NetWare "Check Pipe Status" reply buffer:
Offset Size Description (Table 1524)
00h WORD (call) size of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs list of pipe statuses
00h open
FEh incomplete
FFh closed
SeeAlso: #1519,#1523,#1796
--------N-21E1--SF09-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
AH = E1h subfn 09h
DS:SI -> request buffer (see #1525)
ES:DI -> reply buffer (see #1526)
Return: AL = status (see #1522)
Desc: send a one-line message to the system console on the default file
server
Note: this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h
SeeAlso: AX=F215h/SF=09h
Format of NetWare "Broadcast to Console" request buffer:
Offset Size Description (Table 1525)
00h WORD length of following data (max 3Eh)
02h BYTE 09h (subfunction "Broadcast to Console")
03h BYTE length of message (01h-3Ch)
04h N BYTEs message (no control characters or characters > 7Eh)
SeeAlso: #1526
Format of NetWare reply buffer:
Offset Size Description (Table 1526)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1525
--------E-21E2-------------------------------
INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
AH = E2h
???
Return: ???
SeeAlso: AH=E0h"OS/286",AH=E1h"OS/286",AH=E6h"OS/286"
--------N-21E2-------------------------------
INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
AH = E2h
AL = character
Return: AL = 00h successful
01h buffer full (128 characters)
SeeAlso: AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F2h"DoubleDOS"
--------N-21E2--SF00-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
AH = E2h subfn 00h
DS:SI -> request buffer (see #1528)
ES:DI -> reply buffer (see #1529)
Return: AL = status (00h,98h,9Bh,9Ch) (see #1527)
Desc: set the target handle to reference the directory specified by the
source handle and the source path; both handles must refer to the
same file server
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
the target handle is not changed if this function fails
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=00h
(Table 1527)
Values for NetWare function status:
00h successful
84h not permitted to create
8Ah not permitted to delete
8Bh not permitted to rename
8Ch not permitted to modify
98h nonexistent volume
9Bh invalid directory handle
9Ch invalid path
9Eh invalid filename
9Fh directory currently in use
A0h directory not empty
C6h no console rights
FCh no such bindery object
SeeAlso: #1522,#1554
Format of NetWare "Set Directory Handle" request buffer:
Offset Size Description (Table 1528)
00h WORD length of following data (max 103h)
02h BYTE 00h (subfunction "Set Directory Handle")
03h BYTE directory handle of target
04h BYTE directory handle of source
05h BYTE length of source directory path (01h-FFh)
06h N BYTEs source directory path
SeeAlso: #1529
Format of NetWare reply buffer:
Offset Size Description (Table 1529)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1528
--------N-21E2--SF01-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
AH = E2h subfn 01h
DS:SI -> request buffer (see #1530)
ES:DI -> reply buffer (see #1531)
Return: AL = status (00h,9Bh) (see #1527)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=03h,AH=E2h/SF=1Ah,AH=E9h,AX=F216h/SF=01h
Format of NetWare "Get Directory Path" request buffer:
Offset Size Description (Table 1530)
00h WORD 0002h (length of following data)
02h BYTE 01h (subfunction "Get Directory Path")
03h BYTE directory handle
SeeAlso: #1531,#1532
Format of NetWare "Get Directory Path" reply buffer:
Offset Size Description (Table 1531)
00h WORD (call) length of following data buffer
02h BYTE length of directory path (01h-FFh)
03h N BYTEs full directory path including volume
SeeAlso: #1530,#1533
--------N-21E2--SF02-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
AH = E2h subfn 02h
DS:SI -> request buffer (see #1532)
ES:DI -> reply buffer (see #1533)
Return: AL = status (00h,98h,9Bh,9Ch) (see #1527)
Desc: get information about the first or next subdirectory of the specified
directory
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=03h,AH=E2h/SF=19h,AX=F216h/SF=02h
Format of NetWare "Scan Directory Information" request buffer:
Offset Size Description (Table 1532)
00h WORD length of following data (max 104h)
02h BYTE 02h (subfunction "Scan Directory Information")
03h BYTE directory handle
04h WORD (big-endian) subdirectory number
0000h for first call, returned subdir number + 1 on next call
06h BYTE length of directory path
07h N BYTEs directory path
SeeAlso: #1530,#1533
Format of NetWare "Scan Directory Information" reply buffer:
Offset Size Description (Table 1533)
00h WORD (call) 001Ch (length of following data buffer)
02h 16 BYTEs subdirectory name
12h DWORD (big-endian) date and time of creation (see #1534)
16h DWORD (big-endian) object ID of owner
1Ah BYTE maximum directory rights (see #1537)
1Bh BYTE unused
1Ch WORD (big-endian) subdirectory number
SeeAlso: #1531,#1532,#1799 at AX=F216h/SF=02h
Bitfields for NetWare date and time:
Bit(s) Description (Table 1534)
31-25 year-1980
24-21 month
20-16 day
15-11 hour
10-5 minute
4-0 second
--------N-21E2--SF03-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
AH = E2h subfn 03h
DS:SI -> request buffer (see #1535)
ES:DI -> reply buffer (see #1536)
Return: AL = status (00h,98h,9Bh) (see #1527)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=02h,AX=F216h/SF=03h
Format of NetWare "Get Effective Directory Rights (old)" request buffer:
Offset Size Description (Table 1535)
00h WORD length of following data (max 102h)
02h BYTE 03h (subfunction "Get Effective Directory Rights (old)")
03h BYTE directory handle
04h BYTE length of directory path (00h-FFh)
05h N BYTEs directory path
SeeAlso: #1536,#1538
Format of NetWare "Get Effective Directory Rights" reply buffer:
Offset Size Description (Table 1536)
00h WORD (call) 0001h (length of following data buffer)
02h BYTE effective directory rights (see #1537)
SeeAlso: #1535
Bitfields for NetWare directory rights:
Bit(s) Description (Table 1537)
0 reading allowed
1 writing allowed
2 opens allowed
3 file creation allowed
4 deletion allowed
5 "parental" may create/delete subdirectories and grant/revoke trustee
rights
6 directory search allowed
7 file attributes may be changed
SeeAlso: #1536,#1538
--------N-21E2--SF04-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
AH = E2h subfn 04h
DS:SI -> request buffer (see #1538)
ES:DI -> reply buffer (see #1539)
Return: AL = status (00h,8Ch,98h,9Ch) (see #1527)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=03h,AH=E2h/SF=0Ah,AH=E2h/SF=0Dh,AX=F216h/SF=04h
Format of NetWare "Modify Maximum Rights Mask" request buffer:
Offset Size Description (Table 1538)
00h WORD length of following data (max 104h)
02h BYTE 04h (subfunction "Modify Maximum Rights Mask")
03h BYTE directory handle
04h BYTE rights to grant (see #1537)
05h BYTE rights to revoke (see #1537)
06h BYTE length of directory path (00h-FFh)
07h N BYTEs directory path
Note: the rights specified at offset 05h are revoked first, and then the
rights specified at offset 04h are added to the resulting rights
mask
SeeAlso: #1535,#1539
Format of NetWare reply buffer:
Offset Size Description (Table 1539)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1538
--------N-21E2--SF05-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
AH = E2h subfn 05h
DS:SI -> request buffer (see #1540)
ES:DI -> reply buffer (see #1541)
Return: AL = status (00h,98h) (see #1527)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h
SeeAlso: AX=F216h/SF=05h
Format of NetWare "Get Volume Number" request buffer:
Offset Size Description (Table 1540)
00h WORD length of following data (max 12h)
02h BYTE 05h (subfunction "Get Volume Number")
03h BYTE length of volume name (01h-10h)
04h N BYTEs volume name
SeeAlso: #1541,#1801 at AX=F216h/SF=05h
Format of NetWare "Get Volume Number" reply buffer:
Offset Size Description (Table 1541)
00h WORD (call) 0001h (length of following results buffer)
02h BYTE volume number
SeeAlso: #1540,#1801 at AX=F216h/SF=05h
--------N-21E2--SF06-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
AH = E2h subfn 06h
DS:SI -> request buffer (see #1542)
ES:DI -> reply buffer (see #1543)
Return: AL = status (00h,98h) (see #1527)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah
SeeAlso: AH=E3h/SF=E9h,AX=F216h/SF=06h
Format of NetWare "Get Volume Name" request buffer:
Offset Size Description (Table 1542)
00h WORD 0002h (length of following data)
02h BYTE 06h (subfunction "Get Volume Name")
03h BYTE volume number
SeeAlso: #1543,#1802 at AX=F216h/SF=06h
Format of NetWare "Get Volume Name" reply buffer:
Offset Size Description (Table 1543)
00h WORD (call) 0011h (length of following results buffer)
02h BYTE length of volume name
03h 16 BYTEs NUL-padded volume name
SeeAlso: #1542,#1802 at AX=F216h/SF=06h
--------N-21E2--SF0A-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
AH = E2h subfn 0Ah
DS:SI -> request buffer (see #1544)
ES:DI -> reply buffer (see #1545)
Return: AL = status (00h,84h,98h,FCh) (see #1527)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=39h,AH=E2h/SF=0Bh,AH=E2h/SF=0Fh,AX=F216h/SF=0Ah
Format of NetWare "Create Directory" request buffer:
Offset Size Description (Table 1544)
00h WORD length of following data (max 103h)
02h BYTE 0Ah (subfunction "Create Directory")
03h BYTE directory handle
04h BYTE maximum directory rights (see #1537)
05h BYTE length of directory path (00h-FFh)
06h N BYTEs directory path
SeeAlso: #1545,#1546
Format of NetWare reply buffer:
Offset Size Description (Table 1545)
00h WORD (call) 0000h (no data returned)
SeeAlso: #1544,#1546
--------N-21E2--SF0B-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
AH = E2h subfn 0Bh
DS:SI -> request buffer (see #1546)
ES:DI -> reply buffer (see #1545)
Return: AL = status (00h,8Ah,98h,9Bh,9Ch,9Fh,A0h) (see #1527)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=3Ah,AH=E2h/SF=0Ah,AH=E2h/SF=0Fh,AX=F216h/SF=0Bh
Format of NetWare "Delete Directory" request buffer:
Offset Size Description (Table 1546)
00h WORD length of following data (max 103h)
02h BYTE 0Bh (subfunction "Delete Directory")
03h BYTE directory handle
04h BYTE unused
05h BYTE length of directory path (00h-FFh)
06h N BYTEs directory path
SeeAlso: #1544,#1545
--------N-21E2--SF0C-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
AH = E2h subfn 0Ch
DS:SI -> request buffer (see #1547)
ES:DI -> reply buffer (see #1548)
Return: AL = status (00h,9Ch) (see also #1527)
9Ch no more trustees
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Ch
Format of NetWare "Scan Directory For Trustees" request buffer:
Offset Size Description (Table 1547)
00h WORD length of following data (max 103h)
02h BYTE 0Ch (subfunction "Scan Directory For Trustees")
03h BYTE directory handle
04h BYTE sequence number
00h on first call, increment for each subsequent call
05h BYTE length of directory path (00h-FFh)
06h N BYTEs directory path
SeeAlso: #1548,#1549,#1803 at AX=F216h/SF=0Ch
Format of NetWare "Scan Directory For Trustees" reply buffer:
Offset Size Description (Table 1548)
00h WORD (call) 0031h (length of following results buffer)
02h 16 BYTEs directory name
12h 4 BYTEs date and time of creation
16h DWORD (big-endian) object ID of owner
1Ah 5 DWORDs (big-endian) object IDs of Trustees 0 through 4
00000000h = end of group
2Eh 5 BYTEs directory rights for Trustees 0 through 4 (see #1537)
SeeAlso: #1547,#1551,#1803 at AX=F216h/SF=0Ch
--------N-21E2--SF0D-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
AH = E2h subfn 0Dh
DS:SI -> request buffer (see #1549)
ES:DI -> reply buffer (see #1551)
Return: AL = status (00h,8Ch,FCh) (see #1527)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Dh
Format of NetWare "Add Trustee To Directory" request buffer:
Offset Size Description (Table 1549)
00h WORD length of following data (max 107h)
02h BYTE 0Dh (subfunction "Add Trustee To Directory")
03h BYTE directory handle
04h DWORD (big-endian) object ID of trustee
08h BYTE trustee directory rights (see #1537)
09h BYTE length of directory path (00h-FFh)
0Ah N BYTEs directory path
SeeAlso: #1551
--------N-21E2--SF0E-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
AH = E2h subfn 0Eh
DS:SI -> request buffer (see #1550)
ES:DI -> reply buffer (see #1551)
Return: AL = status (00h,98h,9Bh,9Ch) (see #1527)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AX=F216h/SF=0Eh
Format of NetWare "Delete Trustee From Directory" request buffer:
Offset Size Description (Table 1550)
00h WORD length of following data (max 107h)
02h BYTE 0Eh (subfunction "Delete Trustee From Directory")
03h BYTE directory handle
04h DWORD (big-endian) object ID of trustee
08h BYTE unused
09h BYTE length of directory path (00h-FFh)
0Ah N BYTEs directory path
SeeAlso: #1551
Format of NetWare reply buffer:
Offset Size Description (Table 1551)
00h WORD (call) 0000h (no data returned)
SeeAlso: #1550,#1552,#1553
--------N-21E2--SF0F-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
AH = E2h subfn 0Fh
DS:SI -> request buffer (see #1552)
ES:DI -> reply buffer (see #1551)
Return: AL = status (00h,8Bh,9Bh,9Ch,9Eh) (see #1527)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
directories SYS:LOGIN, SYS:MAIL, and SYS:PUBLIC must not be renamed
SeeAlso: AH=56h,AH=E2h/SF=0Ah,AH=E2h/SF=0Bh,AX=F216h/SF=0Fh
Format of NetWare "Rename Directory" request buffer:
Offset Size Description (Table 1552)
00h WORD length of following data (max 111h)
02h BYTE 0Fh (subfunction "Rename Directory")
03h BYTE directory handle
04h BYTE length of directory path (00h-FFh)
05h N BYTEs directory path
BYTE length of new directory name (01h-0Eh)
N BYTEs new directory name
SeeAlso: #1551
--------N-21E2--SF10-------------------------
INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES (OLD)
AH = E2h subfn 10h
DS:SI -> request buffer (see #1553)
ES:DI -> reply buffer (see #1551)
Return: AL = status (00h,C6h) (see #1554)
Desc: purges files marked for deletion on the file server by the calling
workstation
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=13h,AH=41h,AH=E2h/SF=11h,AH=E3h/SF=CEh,AX=F244h,AX=F216h/SF=10h
Format of NetWare "Purge Erased Files" request buffer:
Offset Size Description (Table 1553)
00h WORD 0001h (length of following data)
02h BYTE 10h (subfunction "Purge Erased Files")
SeeAlso: #1551
--------N-21E2--SF11-------------------------
INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE (OLD)
AH = E2h subfn 11h
DS:SI -> request buffer (see #1555)
ES:DI -> reply buffer (see #1556)
Return: AL = status (00h,98h,FFh) (see #1554)
Desc: restores one file marked for deletion which has not yet been purged
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=13h,AH=41h,AH=E2h/SF=10h,AH=E3h/SF=CEh,AX=F244h
(Table 1554)
Values for NetWare function status:
00h successful
98h nonexistent volume
9Ch invalid path
C6h no console rights
FFh no more erased files
SeeAlso: #1527,#1587
Format of NetWare "Restore Erased File" request buffer:
Offset Size Description (Table 1555)
00h WORD length of following data (max 13h)
02h BYTE 11h (subfunction "Restore Erased File")
03h BYTE directory handle or 00h
04h BYTE length of volume name
05h N BYTEs volume name (including colon)
Note: if both a directory handle and a volume name are specified, the volume
name overrides the handle
SeeAlso: #1556,#1804
Format of NetWare "Restore Erased File" reply buffer:
Offset Size Description (Table 1556)
00h WORD (call) 001Eh (size of following results buffer)
02h 15 BYTEs ASCIZ name of erased file
11h 15 BYTEs ASCIZ name under which file was restored
SeeAlso: #1555,#1804
--------N-21E2--SF12-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
AH = E2h subfn 12h
DS:SI -> request buffer (see #1557)
ES:DI -> reply buffer (see #1558)
Return: AL = status (00h,98h,9Ch) (see #1554)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=12h
Format of NetWare "Allocate Permanent Directory Handle" request buffer:
Offset Size Description (Table 1557)
00h WORD length of following data (max 103h)
02h BYTE 12h (subfunction "Allocate Permanent Directory Handle")
03h BYTE directory handle
04h BYTE drive ('A'-'Z')
05h BYTE length of directory path
06h N BYTEs directory path
SeeAlso: #1558,#1559,#1806
Format of NetWare reply buffer:
Offset Size Description (Table 1558)
00h WORD (call) 0002h (size of following results buffer)
02h BYTE new directory handle
03h BYTE effective directory rights (see #1537)
SeeAlso: #1557,#1806
--------N-21E2--SF13-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
AH = E2h subfn 13h
DS:SI -> request buffer (see #1559)
ES:DI -> reply buffer (see #1558)
Return: AL = status (00h,98h,9Ch) (see #1554)
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
this call is the same as AH=E2h/SF=12h except that the directory handle
will be automatically deallocated when the calling application
executes an End of Job call (AH=D6h) or terminates
SeeAlso: AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h
SeeAlso: AX=F216h/SF=13h
Format of NetWare "Allocate Temporary Directory Handle" request buffer:
Offset Size Description (Table 1559)
00h WORD length of following data (max 103h)
02h BYTE 13h (subfunction "Allocate Temporary Directory Handle")
03h BYTE directory handle
04h BYTE drive ('A'-'Z')
05h BYTE length of directory path
06h N BYTEs directory path
SeeAlso: #1557,#1560
--------N-21E2--SF14-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
AH = E2h subfn 14h
DS:SI -> request buffer (see #1560)
ES:DI -> reply buffer (see #1561)
Return: AL = status (00h,9Bh) (see #1527)
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=14h
Format of NetWare "Deallocate Directory Handle" request buffer:
Offset Size Description (Table 1560)
00h WORD 0002h (length of following data)
02h BYTE 14h (subfunction "Deallocate Directory Handle")
03h BYTE directory handle
SeeAlso: #1561
Format of NetWare reply buffer:
Offset Size Description (Table 1561)
00h WORD (call) 0000h (no returned data)
SeeAlso: #1560
--------N-21E2--SF15-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
AH = E2h subfn 15h
DS:SI -> request buffer (see #1562)
ES:DI -> reply buffer (see #1563)
Return: AL = status
00h successful
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h
SeeAlso: AX=F216h/SF=15h
Format of NetWare "Get Volume Info with Handle" request buffer:
Offset Size Description (Table 1562)
00h WORD 0002h (length of following data)
02h BYTE 15h (subfunction "Get Volume Info With Handle")
03h BYTE directory handle
SeeAlso: #1563,#1807
Format of NetWare "Get Volume Info with Handle" reply buffer:
Offset Size Description (Table 1563)
00h WORD (call) 001Ch (length of following results buffer)
02h WORD (big-endian) sectors per block
04h WORD (big-endian) total blocks on volume
06h WORD (big-endian) blocks available on volume
08h WORD (big-endian) total directory slots
0Ah WORD (big-endian) directory slots available
0Ch 16 BYTEs NUL-padded volume name
1Ch WORD (big-endian) flag: volume removable if nonzero
SeeAlso: #1562,#1807
--------N-21E2--SF16-------------------------
INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
AH = E2h subfn 16h
DS:SI -> request buffer (see #1564)
ES:DI -> reply buffer (see #1561)
Return: AL = status
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX,
but is not described in _NetWare_System_Calls--DOS_
SeeAlso: AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=16h
Format of NetWare "Alloc Special Temporary Directory Handle" request buffer:
Offset Size Description (Table 1564)
00h WORD length of following data
02h BYTE 16h (subfunction "Allocate Special Temporary Directory Handle")
03h BYTE source directory handle
04h BYTE drive name ('A'-'Z')
05h BYTE path length
06h N BYTEs directory path
SeeAlso: #1561
--------N-21E2--SF17-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
AH = E2h subfn 17h
DS:SI -> request buffer (see #1565)
ES:DI -> reply buffer (see #1566)
Return: AL = status
00h successful
else network error code
Note: this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=17h
Format of NetWare "Save Directory Handle" request buffer:
Offset Size Description (Table 1565)
00h WORD 0002h (length of following data)
02h BYTE 17h (subfunction "Save Directory Handle")
03h BYTE directory handle
SeeAlso: #1566,#1567
Format of NetWare "Save Directory Handle" reply buffer:
Offset Size Description (Table 1566)
00h WORD (call) 0010h (length of following results buffer)
02h 16 BYTEs save buffer
SeeAlso: #1565,#1568
--------N-21E2--SF18-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
AH = E2h subfn 18h
DS:SI -> request buffer (see #1567)
ES:DI -> reply buffer (see #1568)
Return: AL = status
00h successful
else network error code
Desc: restore a previously saved directory handle to reproduce an executing
environment, possibly on a different execution site
Note: this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=18h
Format of NetWare "Restore Directory Handle" request buffer:
Offset Size Description (Table 1567)
00h WORD 0011h (length of following data)
02h BYTE 18h (subfunction "Restore Directory Handle")
03h 16 BYTEs save buffer
SeeAlso: #1565,#1568
Format of NetWare "Restore Directory Handle" reply buffer:
Offset Size Description (Table 1568)
00h WORD (call) 0002h (length of following results buffer)
02h BYTE new directory handle
03h BYTE effective rights (see #1537)
SeeAlso: #1567
--------N-21E2--SF19-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
AH = E2h subfn 19h
DS:SI -> request buffer (see #1569)
ES:DI -> reply buffer (see #1570)
Return: AL = status (00h,9Bh,9Ch) (see #1527)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=0Fh,AX=F216h/SF=19h
Format of NetWare "Set Directory Information" request buffer:
Offset Size Description (Table 1569)
00h WORD length of following data (max 10Bh)
02h BYTE 19h (subfunction "Set Directory Information")
03h BYTE directory handle
04h DWORD (big-endian) date and time of creation
08h DWORD (big-endian) object ID of owner
0Ch BYTE maximum directory rights (see #1537)
0Dh BYTE length of directory path
0Eh N BYTEs directory path
SeeAlso: #1570
Format of NetWare reply buffer:
Offset Size Description (Table 1570)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1569
--------N-21E2--SF1A-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
AH = E2h subfn 1Ah
DS:SI -> request buffer (see #1571)
ES:DI -> reply buffer (see #1572)
Return: AL = status
00h successful
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=06h,AH=E3h/SF=D7h,AX=F216h/SF=1Ah
Format of NetWare "Get Path from Directory Entry" request buffer:
Offset Size Description (Table 1571)
00h WORD 0004h (length of following data)
02h BYTE 1Ah (subfunction "Get Path From Directory Entry")
03h BYTE volume number (00h-1Fh)
04h WORD (big-endian) directory entry number
SeeAlso: #1572,#1810
Format of NetWare "Get Path from Directory Entry" reply buffer:
Offset Size Description (Table 1572)
00h WORD (call) size of following results record (max 200h)
02h 256 BYTEs path
SeeAlso: #1571,#1810
--------!---Section--------------------------
Interrupt List, part 8 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------E-21E3-------------------------------
INT 21 - OS/286, OS/386 - ISSUE REAL INTERRUPT
AH = E3h
AL = interrupt number
???
Return: ???
Note: protected mode only???
SeeAlso: AH=E1h"OS/286",INT 31/AX=0300h
--------T-21E3-------------------------------
INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
AH = E3h
AL = character
Return: AL = status
00h successful
01h buffer full (128 characters)
SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E8h"DoubleDOS"
SeeAlso: AH=F3h"DoubleDOS"
--------N-21E3-------------------------------
INT 21 - Novell NetWare - CONNECTION CONTROL
AH = E3h
DS:SI -> request buffer (see #1573)
ES:DI -> reply buffer (see #1574)
Return: AL = status
00h successful
else error code
Note: supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
SeeAlso: AH=E3h/SF=0Ah,AH=E3h/SF=32h,AH=E3h/SF=64h,AH=E3h/SF=C8h
Format of NetWare request buffer:
Offset Size Description (Table 1573)
00h WORD length of following data
02h BYTE subfunction number (see also AH=E3h/SF=01h,AH=E3h/SF=02h)
00h login
03h map object to number
04h map number to object
05h get station's logged information
06h get station's root mask (obsolete)
07h map group name to number
08h map number to group name
09h get memberset M of group G
var depends on subfunction
Notes: the above subfunctions are not described in _NetWare_System_Calls--DOS_
see separate entries below for other subfunctions
SeeAlso: #1574,#1575,#1578
Format of NetWare reply buffer:
Offset Size Description (Table 1574)
00h WORD (call) length of following buffer space for results
var depends on subfunction
SeeAlso: #1573
Format of NetWare object property:
Offset Size Description (Table 1575)
00h 1-16 BYTEs property name (see also #1576)
N BYTE flags
bit 0: property is dynamic
bit 1: property is a set rather than an item
N+1 BYTE security levels (see #1577)
???
(Table 1576)
Values for names of well-known NetWare properties:
ACCOUNT_BALANCE
ACCOUNT_SERVERS
GROUP_MEMBERS
GROUPS_I'M_IN
IDENTIFICATION user's name
LOGIN_CONTROL
NET_ADDRESS
OPERATORS
PASSWORD
SECURITY_EQUALS
(Table 1577)
Values for NetWare security levels:
00h "anyone" everyone may access
01h "logged" only logged-in clients may access
02h "object" only clients logged-in with object's name, type, and password
03h "supervisor" only clients logged-in with supervisor privileges
04h "NetWare" only NetWare may access
Note: the above values are stored in a nybble; the high half-byte is write
access and the low half-byte is read access
(Table 1578)
Values for NetWare object type:
0000h unknown
0001h user
0002h user group
0003h print queue / print server
0004h file server
0005h job server
0006h gateway
0007h print server
0008h archive queue
0009h archive server
000Ah job queue
000Bh administration
0021h NAS SNA gateway
0024h remote bridge server???
0026h remote bridge server
0027h TCPIP gateway
002Dh time synchronization server
002Eh archive server dynamic SAP
0047h advertising print server
0053h print queue uwer
0048h-8000h reserved
FFFFh wild (used only for finding objects)
--------N-21E3--SF01-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
AH = E3h subfn 01h
DS:SI -> request buffer (see #1579)
ES:DI -> reply buffer (see #1583)
Return: AL = status
00h successful
else error code
Note: supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
SeeAlso: AH=E3h/SF=0Ah,AH=E3h/SF=32h,AH=E3h/SF=64h,AH=E3h/SF=C8h
Format of NetWare "Change User Password (old)" request packet:
Offset Size Description (Table 1579)
00h WORD length of following data
02h BYTE 01h (subfunction "Change User Password (old)")
03h BYTE length of user name
04h N BYTEs user name
BYTE length of old password
N BYTEs old password
BYTE length of new password
N BYTEs new password
SeeAlso: #1583
--------N-21E3--SF02-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - CHANGE USER PASSWORD (OLD)
AH = E3h subfn 02h
DS:SI -> request buffer (see #1580)
ES:DI -> reply buffer (see #1581)
Return: AL = status
00h successful
else error code
Note: supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
SeeAlso: AH=E3h/SF=01h,AH=E3h/SF=03h,AH=E3h/SF=0Ah
Format of NetWare "Get User Connection List (old)" request packet:
Offset Size Description (Table 1580)
00h WORD length of following data
02h BYTE 02h (subfunction "Get User Connection List (old)")
03h BYTE length of user name
04h N BYTEs user name
SeeAlso: #1581,#1850
Format of NetWare "Get User Connection List (old)" reply packet:
Offset Size Description (Table 1581)
00h WORD (call) length of following buffer
02h BYTE length of connection list
03h BYTE number of bytes in connection list
04h N BYTEs list of connection numbers in use by user
SeeAlso: #1580,#1850
--------N-21E3--SF03-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - MAP OBJECT TO NUMBER (OLD)
AH = E3h subfn 03h
DS:SI -> request buffer
ES:DI -> reply buffer
Return: AL = status
00h successful
else error code
Note: supported by NetWare 4.0+, Advanced NetWare 1.0+, and Alloy NTNX
SeeAlso: AH=E3h/SF=01h,AH=E3h/SF=02h,AH=E3h/SF=0Ah
--------N-21E3--SF0A-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - ENTER LOGIN AREA
AH = E3h subfn 0Ah
DS:SI -> request buffer (see #1582)
ES:DI -> reply buffer (see #1583)
Return: AL = status
00h successful
Desc: change the login directory for the calling workstation
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=D7h,AH=E3h/SF=14h
Format of NetWare "Enter Login Area" request buffer:
Offset Size Description (Table 1582)
00h WORD length of following data (max 102h)
02h BYTE 0Ah (subfunction "Enter Login Area")
03h BYTE number of local drives
04h BYTE length of subdirectory name (00h-FFh)
05h N BYTEs name of subdirectory under SYS:LOGIN where to find the login
utility
SeeAlso: #1583
Format of NetWare reply buffer:
Offset Size Description (Table 1583)
00h WORD (call) 0000h (no data returned)
SeeAlso: #1579,#1582,#1586
--------N-21E3--SF0C-------------------------
INT 21 U - Novell NetWare - VERIFY NETWORK SERIAL NUMBER
AH = E3h subfn 0Ch
DS:SI -> request buffer (see #1584)
ES:DI -> reply buffer (see #1585)
Return: AL = status
00h successful
Note: if the network serial number to be verified is correct, the reply
buffer will contain the corresponding application number
SeeAlso: AH=E3h/SF=12h,AX=F217h/SF=0Ch
Format of NetWare "Verify Network Serial Number" request buffer:
Offset Size Description (Table 1584)
00h WORD 0005h (length of following data)
02h BYTE 0Ch (subfunction "Verify Network Serial Number")
03h DWORD (big-endian) network serial number to verify
SeeAlso: #1585,#1851
Format of NetWare "Verify Network Serial Number" reply buffer:
Offset Size Description (Table 1585)
00h WORD (call) 0002h (size of following results buffer)
02h WORD (big-endian) application number
SeeAlso: #1584,#1851
--------N-21E3--SF0D-------------------------
INT 21 - Novell NetWare - MESSAGE SERVICES - LOG NETWORK MESSAGE
AH = E3h subfn 0Dh
DS:SI -> request buffer (see #1586)
ES:DI -> reply buffer (see #1583)
Return: AL = status
00h successful
Desc: append a line to the default file server's NET$LOG.MSG file
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E1h/SF=09h
Format of NetWare "Log Network Message" request buffer:
Offset Size Description (Table 1586)
00h WORD length of following data (max 52h)
02h BYTE 0Dh (subfunction "Log Network Message")
03h BYTE length of message (01h-50h)
04h N BYTEs message (no control characters or characters > 7Eh)
SeeAlso: #1583
--------N-21E3--SF0E-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET DISK UTILIZATION
AH = E3h subfn 0Eh
DS:SI -> request buffer (see #1588)
ES:DI -> reply buffer (see #1589)
Return: AL = status (00h,98h,F2h) (see #1587)
Notes: this function is supported by Advanced NetWare 2.1+
the caller must have bindery object read privileges
SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
SeeAlso: AX=F217h/SF=0Eh
(Table 1587)
Values for NetWare function status:
00h successful
98h nonexistent volume
F2h not permitted to read object
SeeAlso: #1554,#1590
Format of NetWare "Get Disk Utilization" request buffer:
Offset Size Description (Table 1588)
00h WORD 0005h (length of following data)
02h BYTE 0Eh (subfunction "Get Disk Utilization")
03h BYTE volume number (00h-1Fh)
04h DWORD (big-endian) object ID
SeeAlso: #1589,#1852
Format of NetWare "Get Disk Utilization" reply buffer:
Offset Size Description (Table 1589)
00h WORD (call) 000Bh (size of following results buffer)
02h BYTE volume number (00h-1Fh)
03h DWORD (big-endian) object ID
07h WORD (big-endian) directories used by object
09h WORD (big-endian) files created by object
0Bh WORD (big-endian) disk blocks used by object-created files
SeeAlso: #1588,#1852
--------N-21E3--SF0F-------------------------
INT 21 - Novell NetWare - FILE SERVICES - SCAN FILE INFORMATION
AH = E3h subfn 0Fh
DS:SI -> request buffer (see #1591)
ES:DI -> reply buffer (see #1592)
Return: AL = status (see #1590)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=B6h,AH=E3h/SF=10h,AX=F217h/SF=0Fh
(Table 1590)
Values for NetWare function status:
00h successful
89h not permitted to search directory
FFh no more matching files
SeeAlso: #1587,#1608
Format of NetWare "Scan File Information" request buffer:
Offset Size Description (Table 1591)
00h WORD length of following data (max 105h)
02h BYTE 0Fh (subfunction "Scan File Information")
03h WORD (big-endian) sequence number
FFFFh on first call
05h BYTE directory handle or 00h
06h BYTE search attributes (see #1107 at AX=4301h)
07h BYTE length of filespec
08h N BYTEs ASCIZ uppercase filespec
SeeAlso: #1592,#1853
Format of NetWare "Scan File Information" reply buffer:
Offset Size Description (Table 1592)
00h WORD (call) 005Eh (size of following results buffer)
02h WORD next sequence number (place in request buffer for next call)
04h 14 BYTEs ASCIZ filename
12h BYTE file attributes (see #1107 at AX=4301h)
13h BYTE extended file attributes (see #1492 at AH=B6h)
14h DWORD (big-endian) file size in bytes
18h WORD (big-endian) file's creation date (see #1352 at AX=5700h)
1Ah WORD (big-endian) date of last access (see #1351 at AX=5700h)
1Ch DWORD (big-endian) date and time of last update (see #1534)
20h DWORD (big-endian) object ID of owner
24h DWORD (big-endian) date and time last archived (see #1534)
28h 55 BYTEs reserved
Note: the official documentation erroneously lists the field at offset 04h as
15 bytes and thus shifts the remaining fields by one byte
SeeAlso: #1591,#1853
--------N-21E3--SF10-------------------------
INT 21 - Novell NetWare - FILE SERVICES - SET FILE INFORMATION
AH = E3h subfn 10h
DS:SI -> request buffer (see #1593)
ES:DI -> reply buffer (see #1594)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the caller must have modify privileges on the directory containing the
file
SeeAlso: AH=B6h,AH=E3h/SF=0Fh,AX=F217h/SF=10h
Format of NetWare "Set File Information" request buffer:
Offset Size Description (Table 1593)
00h WORD length of following data (max 151h)
02h BYTE 10h (subfunction "Set File Information")
03h BYTE file attributes (see #1107 at AX=4301h)
04h BYTE extended file attributes (see #1492 at AH=B6h)
05h 4 BYTEs reserved
09h WORD (big-endian) file's creation date (see #1352 at AX=5700h)
0Bh WORD (big-endian) date of last access (see #1351 at AX=5700h)
0Dh DWORD (big-endian) date and time of last update (see #1534)
11h DWORD (big-endian) object ID of owner
15h DWORD (big-endian) date and time last archived (see #1534)
19h 56 BYTEs reserved
51h BYTE directory handle or 00h
52h BYTE search attributes (see #1107 at AX=4301h)
53h BYTE length of filename
54h N BYTEs filename
SeeAlso: #1594
Format of NetWare reply buffer:
Offset Size Description (Table 1594)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1593
--------N-21E3--SF11-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER INFORMATION
AH = E3h subfn 11h
DS:SI -> request buffer (see #1595)
ES:DI -> reply buffer (see #1596)
Return: AL = status
00h successful
Desc: determine the version of software installed on the file server and
how it is configured
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=12h,AH=E3h/SF=CDh,AH=E3h/SF=D3h,AH=E3h/SF=E7h
SeeAlso: AH=E7h"Novell",AX=F217h/SF=11h
Format of NetWare "Get File Server Information" request buffer:
Offset Size Description (Table 1595)
00h WORD 0001h (length of following data)
02h BYTE 11h (subfunction "Get File Server Information")
SeeAlso: #1596,#1854 at AX=F217h/SF=11h
Format of NetWare "Get File Server Information" reply buffer:
Offset Size Description (Table 1596)
00h WORD (call) 0080h (size of following results buffer)
02h 48 BYTEs server's name
32h BYTE NetWare version
33h BYTE NetWare subversion (0-99)
34h WORD (big-endian) number of connections supported
NetWare 4.01 reportedly returns maximum simulataneously-used
connections
36h WORD (big-endian) number of connections in use
38h WORD (big-endian) maximum connected volumes
---Advanced NetWare 2.1+ ---
3Ah BYTE operating system revision number
3Bh BYTE fault tolerance (SFT) level
3Ch BYTE TTS level
3Dh WORD (big-endian) maximum simultaneously-used connections
NetWare 4.01 reportedly returns number of connections in use
3Fh BYTE accounting version
40h BYTE VAP version
41h BYTE queueing version
42h BYTE print server version
43h BYTE virtual console version
44h BYTE security restrictions level
45h BYTE internetwork bridge version
46h 60 BYTEs reserved
SeeAlso: #1595,#1854
--------N-21E3--SF12-------------------------
INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
AH = E3h subfn 12h
AL = 00h
BX = CX = DX = 0000h
DS:SI -> request buffer (see #1597)
ES:DI -> reply buffer (see #1598)
Return: AL = status
00h successful
Desc: return the serial number and application number for the software
installed on the file server
Notes: this function is supported by Advanced NetWare 2.1+
reportedly, the workstation crashes if AL,BX,CX, and DX are not all
zero
SeeAlso: AH=E3h/SF=0Ch,AH=E3h/SF=11h,AX=F217h/SF=12h
Format of NetWare "Get Serial Number" request buffer:
offset size description (Table 1597)
00h WORD 0001h (length of following data)
02h BYTE 12h (subfunction "Get Serial Number")
SeeAlso: #1598,#1855
Format of NetWare "Get Serial Number" reply buffer:
offset size description (Table 1598)
00h WORD (call) 0006h (size of following results buffer)
02h 4 BYTEs (big-endian) NetWare server serial number
06h 2 BYTEs (big-endian) NetWare application serial number
SeeAlso: #1597,#1855
--------N-21E3--SF13-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET INTERNET ADDRESS (OLD)
AH = E3h subfn 13h
DS:SI -> request buffer (see #1599)
ES:DI -> reply buffer (see #1600)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h,AH=EEh"NetWare",AX=F217h/SF=13h
Format of NetWare "Get Internet Address (old)" request buffer:
Offset Size Description (Table 1599)
00h WORD 0002h (length of following data)
02h BYTE 13h (subfunction "Get Internet Address")
03h BYTE logical connection number (01h-64h)
SeeAlso: #1600,#1856
Format of NetWare "Get Internet Address (old)" reply buffer:
Offset Size Description (Table 1600)
00h WORD (call) 000Ch (length of following results buffer)
02h 4 BYTEs network number
06h 6 BYTEs physical node address
0Ch 2 BYTEs socket number
SeeAlso: #1599,#1856 at AX=F217h/SF=13h
--------N-21E3--SF14-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - LOGIN TO FILE SERVER
AH = E3h subfn 14h
DS:SI -> request buffer (see #1601)
ES:DI -> reply buffer (see #1602)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=D7h"NetWare",AH=F1h"NetWare",AX=F217h/SF=14h
Format of NetWare "Login to File Server" request buffer:
Offset Size Description (Table 1601)
00h WORD length of following data (max B3h)
02h BYTE 14h (subfunction "Login To File Server")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
BYTE length of password
N BYTEs password
SeeAlso: #1602
Format of NetWare reply buffer:
Offset Size Description (Table 1602)
00h WORD (call) 0000h (no data returned)
SeeAlso: #1601
--------N-21E3--SF15-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET OBJECT CONNECTION LIST(OLD)
AH = E3h subfn 15h
DS:SI -> request buffer (see #1603)
ES:DI -> reply buffer (see #1604)
Return: AL = status
00h successful
Desc: this function retrieves a list indicating the connection numbers under
which a bindery object is logged into the default file server
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=DCh"NetWare",AH=E3h/SF=16h,AX=F217h/SF=15h
Format of NetWare "Get Object Connection Numbers" request buffer:
Offset Size Description (Table 1603)
00h WORD length of following data (max 33h)
02h BYTE 15h (subfunction "Get Object Connection Numbers")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
SeeAlso: #1604,#1857
Format of NetWare "Get Object Connection Numbers" reply buffer:
Offset Size Description (Table 1604)
00h WORD (call) length of following results buffer (max 65h)
02h BYTE number of connections
03h N BYTEs connection list
SeeAlso: #1603,#1857
--------N-21E3--SF16-------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION INFORMATION
AH = E3h subfn 16h
DS:SI -> request buffer (see #1605)
ES:DI -> reply buffer (see #1606)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=D7h,AH=DCh"NetWare",AH=E3h/SF=14h
Format of NetWare "Get Connection Information" request buffer:
Offset Size Description (Table 1605)
00h WORD 0002h (length of following data)
02h BYTE 16h (subfunction "Get Connection Information")
03h BYTE logical connection number (01h-64h)
Format of NetWare "Get Connection Information" reply buffer:
Offset Size Description (Table 1606)
00h WORD (call) 003Eh (length of following results buffer)
02h DWORD (big-endian) object ID for object logged in on the connection
00000000h if no object logged in
06h WORD (big-endian) type of object
08h 48 BYTEs name of object
38h 7 BYTEs login time (see #1607)
Note: much of the Novell documentation incorrectly states the reply buffer
length as 3Fh instead of 40h, which corresponds to a results length
of 3Dh (61) bytes instead of the correct 3Eh (62) bytes
Format of NetWare login time:
Offset Size Description (Table 1607)
00h BYTE year (80-99 = 1980-1999, 00-79 = 2000-2079)
01h BYTE month (1-12)
02h BYTE day (1-31)
03h BYTE hour (0-23)
04h BYTE minute (0-59)
05h BYTE second (0-59)
06h BYTE day of week (0 = Sunday)
--------N-21E3--SF32-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CREATE BINDERY OBJECT
AH = E3h subfn 32h
DS:SI -> request buffer (see #1609)
ES:DI -> reply buffer (see #1610)
Return: AL = status (see #1608)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=33h,AH=E3h/SF=34h,AH=E3h/SF=38h,AH=E3h/SF=39h
SeeAlso: AX=F217h/SF=32h
(Table 1608)
Values for NetWare function status:
00h successful
96h server out of memory
EEh object already exists
EFh invalid name
F0h wildcard not allowed
F1h invalid bindery security level
F3h not permitted to rename object
F4h not permitted to delete objects
F5h not permitted to create objects
FCh no such object
FEh server bindery locked
FFh bindery failure
SeeAlso: #1590,#1615
Format of NetWare "Create Bindery Object" request buffer:
Offset Size Description (Table 1609)
00h WORD length of following data (max 35h)
02h BYTE 32h (subfunction "Create Bindery Object")
03h BYTE object flag (00h static, 01h dynamic)
04h BYTE object security levels
05h WORD (big-endian) type of object
07h BYTE length of object's name
08h N BYTEs object's name
SeeAlso: #1610
Format of NetWare reply buffer:
Offset Size Description (Table 1610)
00h WORD 0000h (no data returned)
SeeAlso: #1609,#1611,#1612
--------N-21E3--SF33-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT
AH = E3h subfn 33h
DS:SI -> request buffer (see #1611)
ES:DI -> reply buffer (see #1610)
Return: AL = status (see #1608)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=34h,AX=F217h/SF=33h
Format of NetWare "Delete Bindery Object" request buffer:
Offset Size Description (Table 1611)
00h WORD length of following data (max 33h)
02h BYTE 33h (subfunction "Delete Bindery Object")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
SeeAlso: #1610
--------N-21E3--SF34-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - RENAME BINDERY OBJECT
AH = E3h subfn 34h
DS:SI -> request buffer (see #1612)
ES:DI -> reply buffer (see #1610)
Return: AL = status (see #1608)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h,AX=F217h/SF=34h
Format of NetWare "Rename Bindery Object" request buffer:
Offset Size Description (Table 1612)
00h WORD length of following data (max 63h)
02h BYTE 34h (subfunction "Rename Bindery Object")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
BYTE length of new name (01h-2Fh)
N BYTEs new name
SeeAlso: #1610
--------N-21E3--SF35-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT ID
AH = E3h subfn 35h
DS:SI -> request buffer (see #1613)
ES:DI -> reply buffer (see #1614)
Return: AL = status (00h,96h,FCh,FEh,FFh) (see #1615)
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the requesting workstation must be logged into the file server with
read access to the bindery object
SeeAlso: AH=E3h/SF=36h,AH=E3h/SF=44h,AX=F217h/SF=35h
Format of NetWare "Get Bindery Object ID" request buffer:
Offset Size Description (Table 1613)
00h WORD length of following data (max 33h)
02h BYTE 35h (subfunction "Get Bindery Object ID")
03h WORD (big-endian) type of object
05h BYTE length of object's name
06h N BYTEs object's name
SeeAlso: #1614,#1872
Format of NetWare "Get Bindery Object ID" reply buffer:
Offset Size Description (Table 1614)
00h WORD (call) 0036h (length of following buffer space)
02h DWORD (big-endian) object ID
06h WORD (big-endian) type of object
08h 48 BYTEs object name
SeeAlso: #1613,#1872 at AX=F217h/SF=35h
--------N-21E3--SF36-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY OBJECT NAME
AH = E3h subfn 36h
DS:SI -> request buffer (see #1616)
ES:DI -> reply buffer (see #1617)
Return: AL = status (see #1615)
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the requesting workstation must be logged into the file server with
read access to the bindery object
SeeAlso: AH=E3h/SF=35h,AH=E3h/SF=44h,AX=F217h/SF=36h
(Table 1615)
Values for NetWare function status:
00h successful
96h server out of memory
EFh invalid name
F0h wildcard not allowed
FCh no such object
FEh server bindery locked
FFh bindery failure
SeeAlso: #1608,#1621
Format of NetWare "Get Bindery Object Name" request buffer:
Offset Size Description (Table 1616)
00h WORD 0005h (length of following data)
02h BYTE 36h (subfunction "Get Bindery Object Name")
03h DWORD (big-endian) object ID
SeeAlso: #1617,#1873 at AX=F217h/SF=36h
Format of NetWare "Get Bindery Object Name" reply buffer:
Offset Size Description (Table 1617)
00h WORD (call) 0036h (length of following buffer space)
02h DWORD (big-endian) object ID
06h WORD (big-endian) type of object
08h 48 BYTEs object name
SeeAlso: #1616,#1873
--------N-21E3--SF37-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - SCAN BINDERY OBJECT
AH = E3h subfn 37h
DS:SI -> request buffer (see #1618)
ES:DI -> reply buffer (see #1619)
Return: AL = status (see #1615)
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the requesting workstation must be logged into the file server with
read access to the bindery object
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=33h,AH=E3h/SF=38h,AH=E3h/SF=3Ch
SeeAlso: AX=F217h/SF=37h
Format of NetWare "Scan Bindery Object" request buffer:
Offset Size Description (Table 1618)
00h WORD length of following data (max 37h)
02h BYTE 37h (subfunction "Scan Bindery Object")
03h DWORD (big-endian) last object ID
07h WORD (big-endian) type of object
09h BYTE length of object's name
0Ah N BYTEs object's name
SeeAlso: #1619,#1874
Format of NetWare "Scan Bindery Object" reply buffer:
Offset Size Description (Table 1619)
00h WORD (call) 0039h (length of following buffer space)
02h DWORD (big-endian) object ID
FFFFFFFFh for first call
06h WORD (big-endian) type of object
08h 48 BYTEs object name (counted string)
38h BYTE object flag (00h static, 01h dynamic)
39h BYTE object's security levels
3Ah BYTE object properties flag (00h no, FFh yes)
SeeAlso: #1618,#1874
--------N-21E3--SF38-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT SECURITY
AH = E3h subfn 38h
DS:SI -> request buffer (see #1620)
ES:DI -> reply buffer (see #1623)
Return: AL = status (00h,96h,F0h,F1h,FBh,FCh,FEh,FFh) (see #1621)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh,AX=F217h/SF=38h
Format of NetWare "Change Bindery Object Security" request buffer:
Offset Size Description (Table 1620)
00h WORD length of following data (max 34h)
02h BYTE 38h (subfunction "Change Bindery Object Security")
03h BYTE new security levels
04h WORD (big-endian) type of object
06h BYTE length of object's name (01h-2Fh)
07h N BYTEs object name
Note: the object type may not be WILD (FFFFh)
SeeAlso: #1623
--------N-21E3--SF39-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CREATE PROPERTY
AH = E3h subfn 39h
DS:SI -> request buffer (see #1622)
ES:DI -> reply buffer (see #1623)
Return: AL = status (see #1621)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=3Bh,AX=F217h/SF=39h
(Table 1621)
Values for NetWare function status:
00h successful
96h server out of memory
EDh property already exists
EFh invalid name
F0h wildcard not allowed
F1h invalid bindery security level
F6h not permitted to delete properties
F7h not permitted to create properties
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
SeeAlso: #1615,#1625
Format of NetWare "Create Property" request buffer:
Offset Size Description (Table 1622)
00h WORD length of following data (max 45h)
02h BYTE 39h (subfunction "Create Property")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
BYTE property flags
BYTE property security levels
BYTE length of property's name (01h-0Fh)
N BYTEs property's name
SeeAlso: #1623
Format of NetWare reply buffer:
Offset Size Description (Table 1623)
00h WORD (call) 0000h (no data returned)
SeeAlso: #1620,#1623,#1624
--------N-21E3--SF3A-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - DELETE PROPERTY
AH = E3h subfn 3Ah
DS:SI -> request buffer (see #1624)
ES:DI -> reply buffer (see #1623)
Return: AL = status (see #1621)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=32h,AH=E3h/SF=39h,AX=F217h/SF=3Ah
Format of NetWare "Delete Property" request buffer:
Offset Size Description (Table 1624)
00h WORD length of following data (max 43h)
02h BYTE 3Ah (subfunction "Delete Property")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object's name
BYTE length of property's name (01h-0Fh)
N BYTEs property's name
SeeAlso: #1623
--------N-21E3--SF3B-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE PROPERTY SECURITY
AH = E3h subfn 3Bh
DS:SI -> request buffer (see #1626)
ES:DI -> reply buffer (see #1623)
Return: AL = status (see #1625)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=38h,AX=F217h/SF=3Bh
(Table 1625)
Values for NetWare function status:
00h successful
96h server out of memory
F0h wildcard not allowed
F1h invalid bindery security level
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
SeeAlso: #1621,#1629
Format of NetWare "Change Property Security" request buffer:
Offset Size Description (Table 1626)
00h WORD length of following data (max 44h)
02h BYTE 3Bh (subfunction "Change Property Security")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE new property security levels
BYTE length of property's name
N BYTEs property name
Note: the object type may not be WILD (FFFFh)
--------N-21E3--SF3C-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - SCAN PROPERTY
AH = E3h subfn 3Ch
DS:SI -> request buffer (see #1627)
ES:DI -> reply buffer (see #1628)
Return: AL = status (00h,96h,F1h,FBh,FCh,FEh,FFh) (see #1625)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=37h,AH=E3h/SF=3Bh,AX=F217h/SF=3Ch
Format of NetWare "Scan Property" request buffer:
Offset Size Description (Table 1627)
00h WORD length of following data (max 47h)
02h BYTE 3Ch (subfunction "Scan Property")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
DWORD (big-endian) sequence number
FFFFFFFFh for first call
BYTE length of property's name (01h-0Fh)
N BYTEs property's name
SeeAlso: #1628,#1875
Format of NetWare "Scan Property" reply buffer:
Offset Size Description (Table 1628)
00h WORD (call) 0018h (length of following results buffer)
02h 16 BYTEs property name
12h BYTE property flags
13h BYTE property security levels
14h DWORD (big-endian) sequence number
18h BYTE property value flag (00h no, FFh yes)
19h BYTE more properties (00h no, FFh yes)
SeeAlso: #1627,#1875
--------N-21E3--SF3D-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - READ PROPERTY VALUE
AH = E3h subfn 3Dh
DS:SI -> request buffer (see #1630)
ES:DI -> reply buffer (see #1631)
Return: AL = status (see #1629)
Desc: retrieve one 128-byte segment of the specified property's value
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Eh,AX=F217h/SF=3Dh
(Table 1629)
Values for NetWare function status:
00h successful
96h server out of memory
E8h not item property
ECh no such segment
F0h wildcard not allowed
F1h invalid bindery security level
F8h not permitted to write property
F9h not permitted to read property
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
SeeAlso: #1625,#1634
Format of NetWare "Read Property Value" request buffer:
Offset Size Description (Table 1630)
00h WORD length of following data (max 44h)
02h BYTE 3Dh (subfunction "Read Property Value")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE segment number (01h on first call, increment until done)
BYTE length of property's name (01h-0Fh)
N BYTEs property name
SeeAlso: #1631,#1876
Format of NetWare "Read Property Value" reply buffer:
Offset Size Description (Table 1631)
00h WORD (call) 0082h (length of following results buffer)
02h 128 BYTEs property's value
82h BYTE more segments (00h no, FFh yes)
83h BYTE property's flags
SeeAlso: #1630,#1876
--------N-21E3--SF3E-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - WRITE PROPERTY VALUE
AH = E3h subfn 3Eh
DS:SI -> request buffer (see #1632)
ES:DI -> reply buffer (see #1633)
Return: AL = status (see #1629)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=39h,AH=E3h/SF=3Ch,AH=E3h/SF=3Dh,AX=F217h/SF=3Eh
Format of NetWare "Write Property Value" request buffer:
Offset Size Description (Table 1632)
00h WORD length of following data (max C5h)
02h BYTE 3Eh (subfunction "Write Property Value")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE segment number (01h on first call, increment until done)
BYTE erase remaining segments (00h no, FFh yes)
BYTE length of property's name (01h-0Fh)
N BYTEs property name
128 BYTEs property value segment
SeeAlso: #1633
Format of NetWare reply buffer:
Offset Size Description (Table 1633)
00h WORD (call) 0000h (no data returned)
SeeAlso: #1632,#1635
--------N-21E3--SF3F-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - VERIFY BINDERY OBJECT PASSWORD
AH = E3h subfn 3Fh
DS:SI -> request buffer (see #1635)
ES:DI -> reply buffer (see #1633)
Return: AL = status (see #1634)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=40h,AX=F217h/SF=3Fh
(Table 1634)
Values for NetWare function status:
00h successful
96h server out of memory
F0h wildcard not allowed
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure: no such object, bad password, no password for object,
or invalid old password
SeeAlso: #1629,#1638
Format of NetWare "Verify Bindery Object Password" request buffer:
Offset Size Description (Table 1635)
00h WORD length of following data (max 133h)
02h BYTE 3Fh (subfunction "Verify Bindery Object Password")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE length of password (00h-7Fh)
N BYTEs password
SeeAlso: #1633
--------N-21E3--SF40-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CHANGE BINDERY OBJECT PASSWORD
AH = E3h subfn 40h
DS:SI -> request buffer (see #1636)
ES:DI -> reply buffer (see #1637)
Return: AL = status (see #1634)
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=3Fh,AH=E3h/SF=41h,AX=F217h/SF=40h
Format of NetWare "Change Bindery Object Password" request buffer:
Offset Size Description (Table 1636)
00h WORD length of following data (max 133h)
02h BYTE 40h (subfunction "Change Bindery Object Password")
03h WORD (big-endian) type of object
05h BYTE length of object's name (01h-2Fh)
06h N BYTEs object name
BYTE length of old password (00h-7Fh)
N BYTEs old password
BYTE length of new password (00h-7Fh)
N BYTEs new password
SeeAlso: #1637,#1883
Format of NetWare reply buffer:
Offset Size Description (Table 1637)
00h WORD (call) 0000h (no data returned)
SeeAlso: #1636,#1639
--------N-21E3--SF41-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - ADD BINDERY OBJECT TO SET
AH = E3h subfn 41h
DS:SI -> request buffer (see #1639)
ES:DI -> reply buffer (see #1637)
Return: AL = status (see #1638)
Desc: add the specified object to an object's group property
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h,AX=F217h/SF=41h
(Table 1638)
Values for NetWare function status:
00h successful
96h server out of memory
E9h member already exists
EAh member does not exist
EBh not a group property
F0h wildcard not allowed
F8h can't write property
F9h not permitted to read property
FBh no such property
FCh no such object
FEh server bindery locked
FFh bindery failure
SeeAlso: #1634,#1649
Format of NetWare "Add Bindery Object to Set" request buffer:
Offset Size Description (Table 1639)
00h WORD length of following data (max 75h)
02h BYTE 41h (subfunction "Add Bindery Object to Set")
03h WORD (big-endian) type of object
05h BYTE length of object's name
06h N BYTEs object name
BYTE length of property name (01h-0Fh)
N BYTEs property name
WORD (big-endian) type of member object
BYTE length of member object's name
N BYTEs member object's name
SeeAlso: #1637
--------N-21E3--SF42-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - DELETE BINDERY OBJECT FROM SET
AH = E3h subfn 42h
DS:SI -> request buffer (see #1640)
ES:DI -> reply buffer (see #1641)
Return: AL = status (see #1638)
Desc: delete the specified object from a set property
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=40h,AH=E3h/SF=42h,AH=E3h/SF=43h,AX=F217h/SF=42h
Format of NetWare "Delete Bindery Object from Set" request buffer:
Offset Size Description (Table 1640)
00h WORD length of following data (max 75h)
02h BYTE 42h (subfunction "Delete Bindery Object from Set")
03h WORD (big-endian) type of object
05h BYTE length of object's name
06h N BYTEs object name
BYTE length of property name (01h-0Fh)
N BYTEs property name
WORD (big-endian) type of member object
BYTE length of member object's name
N BYTEs member object's name
SeeAlso: #1641
Format of NetWare reply buffer:
Offset Size Description (Table 1641)
00h WORD (call) 0000h (no data returned)
SeeAlso: #1640,#1642,#1643,#1644
--------N-21E3--SF43-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - IS BINDERY OBJECT IN SET
AH = E3h subfn 43h
DS:SI -> request buffer (see #1642)
ES:DI -> reply buffer (see #1641)
Return: AL = status (see #1638)
Desc: determine whether the specified object is a member of the given set
property
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the caller must have read access to the property
SeeAlso: AH=E3h/SF=41h,AH=E3h/SF=42h,AX=F217h/SF=43h
Format of NetWare "Is Bindery Object in Set?" request buffer:
Offset Size Description (Table 1642)
00h WORD length of following data (max 75h)
02h BYTE 43h (subfunction "Is Bindery Object In Set")
03h WORD (big-endian) type of object
05h BYTE length of object's name
06h N BYTEs object's name
BYTE length of property's name
N BYTEs property's name
WORD (big-endian) type of member object
BYTE length of member object's name
N BYTEs member object's name
SeeAlso: #1641
--------N-21E3--SF44-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - CLOSE BINDERY
AH = E3h subfn 44h
DS:SI -> request buffer (see #1643)
ES:DI -> reply buffer (see #1641)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E3h/SF=45h,AX=F217h/SF=44h
Format of NetWare "Close Bindery" request buffer:
Offset Size Description (Table 1643)
00h WORD 0001h (length of following data)
02h BYTE 44h (subfunction "Close Bindery")
SeeAlso: #1641,#1644
--------N-21E3--SF45-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - OPEN BINDERY
AH = E3h subfn 45h
DS:SI -> request buffer (see #1644)
ES:DI -> reply buffer (see #1641)
Return: AL = status
00h successful
Notes: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
the bindery may only be opened by the supervisor or an object with
equivalent privileges
SeeAlso: AH=E3h/SF=44h,AX=F217h/SF=45h
Format of NetWare "Open Bindery" request buffer:
Offset Size Description (Table 1644)
00h WORD 0001h (length of following data)
02h BYTE 45h (subfunction "Open Bindery")
SeeAlso: #1641,#1643
--------N-21E3--SF46-------------------------
INT 21 - Novell NetWare - BINDERY SERVICES - GET BINDERY ACCESS LEVEL
AH = E3h subfn 46h
DS:SI -> request buffer (see #1645)
ES:DI -> reply buffer (see #1646)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AX=F217h/SF=46h
Format of NetWare "Get Bindery Access Level" request buffer:
Offset Size Description (Table 1645)
00h WORD 0001h (length of following data)
02h BYTE 46h (subfunction "Get Bindery Access Level")
SeeAlso: #1646,#1877
Format of NetWare "Get Bindery Access Level" reply buffer:
Offset Size Description (Table 1646)
00h WORD 0005h (length of following buffer)
02h BYTE security levels
03h DWORD (big-endian) object ID
SeeAlso: #1645,#1877
--------N-21E3--SF47-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN BINDERY OBJ TRUSTEE PATHS
AH = E3h subfn 47h
DS:SI -> request buffer (see #1647)
ES:DI -> reply buffer (see #1648)
Return: AL = status (00h,96h,F0h,F1h,FCh,FEh,FFh) (see #1649)
Desc: iterate through the directories to which an object is a trustee
Note: this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AX=F217h/SF=47h
Format of NetWare "Scan Bindery Object Trustee Paths" request buffer:
Offset Size Description (Table 1647)
00h WORD 0008h (length of following data)
02h BYTE 47h (subfunction "Scan Bindery Object Trustee Paths")
03h BYTE volume number (00h-1Fh)
04h WORD (big-endian) last sequence number (FFFFh on first call)
06h DWORD (big-endian) object ID
SeeAlso: #1648,#1878
Format of NetWare "Scan Bindery Object Trustee Paths" reply buffer:
Offset Size Description (Table 1648)
00h WORD (call) length of following results buffer (max 107h)
02h WORD (big-endian) next sequence number
04h DWORD (big-endian) object ID
08h BYTE trustee directory rights (see #1537 at AH=E2h/SF=03h)
09h BYTE length of trustee path
0Ah N BYTEs trustee path
SeeAlso: #1647,#1878
--------N-21E3--SF64-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE
AH = E3h subfn 64h
DS:SI -> request buffer (see #1650)
ES:DI -> reply buffer (see #1651)
Return: AL = status (00h,96h,99h,9Bh,9Ch,EDh-F1h,F5h,F7h,FCh,FEh,FFh)
(see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation with supervisor privileges
SeeAlso: AH=E3h/SF=65h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Bh
SeeAlso: AX=F217h/SF=64h
(Table 1649)
Values for NetWare function status:
00h (0) successful
96h (150) server out of memory
99h (153) directory full
9Bh (155) invalid directory handle
9Ch (156) invalid path
D0h (208) queue error
D1h (209) no such queue
D2h (210) no server for queue
D3h (211) no queue rights
D4h (212) queue full
D5h (213) no queue job
D6h (214) no job rights
D7h (215) queue servicing error
D8h (216) queue not active
D9h (217) station is not a server
DAh (218) queue halted
DBh (219) too many queue servers
EDh (237) property already exists
EEh (238) object already exists
EFh (239) invalid name
F0h (240) wildcard not allowed
F1h (241) invalid bindery security level
F5h (245) not permitted to create object
F7h (247) not permitted to create property
FCh (252) no such object
FEh (254) server bindery locked
FFh (255) bindery failure
SeeAlso: #1638,#1690,#1366,#2546 at INT 2F/AX=7A20h/BX=0000h
Format of NetWare "Create Queue" request buffer:
Offset Size Description (Table 1650)
00h WORD length of following data (max ABh)
02h BYTE 64h (subfunction "Create Queue")
03h WORD (big-endian) queue type
05h BYTE length of queue's name (01h-2Fh)
06h N BYTEs queue's name
BYTE directory handle or 00h
BYTE length of path name (01h-76h)
N BYTEs path name of directory in which to create queue subdirectory
SeeAlso: #1651,#1886
Format of NetWare "Create Queue" reply buffer:
Offset Size Description (Table 1651)
00h WORD (call) 0004h (size of following results buffer)
02h DWORD (big-endian) object ID of queue
SeeAlso: #1650,#1886
--------N-21E3--SF65-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - DESTROY QUEUE
AH = E3h subfn 65h
DS:SI -> request buffer (see #1652)
ES:DI -> reply buffer (see #1657)
Return: AL = status (00h,96h,9Ch,D0h,D1h,FFh) (see also AH=E3h/SF=64h)
FFh hardware failure
Desc: abort all active jobs, detach all job servers, remove all job entries,
delete all job files, remove the queue object and its properties
from the bindery, and delete the queue's subdirectory
Notes: this function is supported by Advanced NetWare 2.1+
caller must have SUPERVISOR privileges
SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=70h
SeeAlso: AX=F217h/SF=65h
Format of NetWare "Destroy Queue" request buffer:
Offset Size Description (Table 1652)
00h WORD 0005h (length of following data)
02h BYTE 65h (subfunction "Destroy Queue")
03h DWORD (big-endian) object ID of queue
SeeAlso: #1657
--------N-21E3--SF66-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE CURRENT STATUS (OLD)
AH = E3h subfn 66h
DS:SI -> request buffer (see #1653)
ES:DI -> reply buffer (see #1654)
Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the queue's Q_USERS or Q_OPERATORS properties
SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=67h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=66h
Format of NetWare "Read Queue Current Status (old)" request buffer:
Offset Size Description (Table 1653)
00h WORD 0005h (length of following data)
02h BYTE 66h (subfunction "Read Queue Current Status")
03h DWORD (big-endian) object ID of queue
SeeAlso: #1654,#1887 at AX=F217h/SF=66h
Format of NetWare "Read Queue Current Status (old)" reply buffer:
Offset Size Description (Table 1654)
00h WORD (call) 0085h (size of following results)
02h DWORD (big-endian) object ID of queue
06h BYTE status of queue (see #1655)
07h BYTE number of jobs in queue (00h-FAh)
08h BYTE number of servers attached to queue (00h-19h)
09h 25 DWORDs list of object IDs of attached servers
6Dh 25 BYTEs list of attached servers' stations
86h BYTE (call) maximum number of servers to return
SeeAlso: #1653,#1887 at AX=F217h/SF=66h
Bitfields for NetWare queue status:
Bit(s) Description (Table 1655)
0 operator disabled addition of new jobs
1 operator refuses additional job servers attaching
2 operator disabled job servicing
SeeAlso: #1654,#1656
--------N-21E3--SF67-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE CURRENT STATUS (OLD)
AH = E3h subfn 67h
DS:SI -> request buffer (see #1656)
ES:DI -> reply buffer (see #1657)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must have operator privileges
SeeAlso: AH=E3h/SF=64h,AH=E3h/SF=66h,AH=E3h/SF=6Fh,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=67h
Format of NetWare "Set Queue Current Status (old)" request buffer:
Offset Size Description (Table 1656)
00h WORD 0006h (length of following data)
02h BYTE 67h (subfunction "Set Queue Current Status")
03h DWORD (big-endian) object ID of queue
07h BYTE queue status (see #1655)
SeeAlso: #1657
Format of NetWare reply buffer:
Offset Size Description (Table 1657)
00h WORD (call) 0000h (no results returned)
--------N-21E3--SF68-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CREATE QUEUE JOB AND FILE
AH = E3h subfn 68h
DS:SI -> request buffer (see #1658)
ES:DI -> reply buffer (see #1660)
Return: AL = status (00h,96h,99h,9Ch,D0h-D4h,DAh,EDh,EFh-F1h,F7h,FCh,FEh,FFh)
(see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the queue's Q_USER property
SeeAlso: AX=B807h,AH=E0h"SPOOLING",AH=E3h/SF=69h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh
SeeAlso: AX=F217h/SF=68h
Format of NetWare "Create Queue Job and File" request buffer:
Offset Size Description (Table 1658)
00h WORD 0107h (length of following data)
02h BYTE 68h (subfunction "Close File and Start Queue Job")
03h DWORD (big-endian) object ID of queue
07h 256 BYTEs job structure (see #1659)
SeeAlso: #1660,#1888
Format of NetWare old-style job structure:
Offset Size Description (Table 1659)
00h BYTE client station
01h BYTE client task number
02h DWORD (big-endian) object ID of client
06h DWORD (big-endian) object ID of target server
FFFFFFFh if any server acceptable
0Ah 6 BYTEs target execution time (year,month,day,hour,minute,second)
FFFFFFFFFFFFh to execute as soon as possible
10h 6 BYTEs job entry time (year,month,day,hour,minute,second)
16h WORD (big-endian) job number
18h WORD (big-endian) job type
1Ah BYTE job position
1Bh BYTE job control flags (see #1668)
1Ch 14 BYTEs ASCIZ job file name
2Ah 6 BYTEs job file handle
30h BYTE server station
31h BYTE server task number
32h DWORD (big-endian) object ID of server
36h 50 BYTEs ASCIZ job description string
68h 152 BYTEs client record area
SeeAlso: #1658,#1898
Format of NetWare "Create Queue Job and File" reply buffer:
Offset Size Description (Table 1660)
00h WORD (call) 0036h (size of following results buffer)
02h BYTE client station
03h BYTE client task number
04h DWORD (big-endian) object ID of client
08h DWORD (big-endian) object ID of target server
0Ch 6 BYTEs target execution time (year,month,day,hour,minute,second)
12h 6 BYTEs job entry time (year,month,day,hour,minute,second)
18h WORD (big-endian) job number
1Ah WORD (big-endian) job type
1Ch BYTE job position
1Dh BYTE job control flags (see #1668)
1Eh 14 BYTEs ASCIZ job file name
2Ch 6 BYTEs job file handle
32h BYTE server station
33h BYTE server task number
34h DWORD (big-endian) object ID of server or 00000000h
SeeAlso: #1658,#1888
--------N-21E3--SF69-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CLOSE FILE AND START QUEUE JOB (OLD)
AH = E3h subfn 69h
DS:SI -> request buffer (see #1661)
ES:DI -> reply buffer (see #1662)
Return: AL = status (00h,96h,D0h,D1h,D3h,D5h,D6h,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on the workstation which created the job
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=69h
Format of NetWare "Close File and Start Queue Job (old)" request buffer:
Offset Size Description (Table 1661)
00h WORD 0007h (length of following data)
02h BYTE 69h (subfunction "Close File and Start Queue Job")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
SeeAlso: #1662
Format of NetWare reply buffer:
Offset Size Description (Table 1662)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1661,#1663
--------N-21E3--SF6A-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - REMOVE JOB FROM QUEUE (OLD)
AH = E3h subfn 6Ah
DS:SI -> request buffer (see #1663)
ES:DI -> reply buffer (see #1662)
Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must have created the job or be an operator
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=6Ah
Format of NetWare "Remove Job From Queue (old)" request buffer:
Offset Size Description (Table 1663)
00h WORD 0007h (length of following data)
02h BYTE 6Ah (subfunction "Remove Job From Queue (old)")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
--------N-21E3--SF6B-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB LIST (OLD)
AH = E3h subfn 6Bh
DS:SI -> request buffer (see #1664)
ES:DI -> reply buffer (see #1665)
Return: AL = status (00h,96h,9Ch,D0h-D3h,FCh,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the Q_USERS or Q_OPERATORS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=6Bh
Format of NetWare "Get Queue Job List (old)" request buffer:
Offset Size Description (Table 1664)
00h WORD 0005h (length of following data)
02h BYTE 6Bh (subfunction "Get Queue Job List (old)")
03h DWORD (big-endian) object ID of queue
SeeAlso: #1665
Format of NetWare "Get Queue Job List (old)" reply buffer:
Offset Size Description (Table 1665)
00h WORD (call) size of following results buffer (max 1F6h)
02h WORD (big-endian) job count
04h N WORDs (big-endian) list of job numbers by position in queue
WORD maximum job numbers
SeeAlso: #1664
--------N-21E3--SF6C-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE JOB ENTRY (OLD)
AH = E3h subfn 6Ch
DS:SI -> request buffer (see #1666)
ES:DI -> reply buffer (see #1667)
Return: AL = status (00h,96h,D0h-D3h,D5h,FCh,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Eh,AX=F217h/SF=6Ch
Format of NetWare "Read Queue Job Entry (old)" request buffer:
Offset Size Description (Table 1666)
00h WORD 0007h (length of following data)
02h BYTE 6Ch (subfunction "Read Queue Job Entry (old)")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
SeeAlso: #1667
Format of NetWare "Read Queue Job Entry (old)" reply buffer:
Offset Size Description (Table 1667)
00h WORD (call) 0100h (size of following results)
02h BYTE client station number
03h BYTE client task number
04h DWORD object ID of client
08h DWORD (big-endian) object ID of target server
FFFFFFFFh if any server acceptable
0Ch 6 BYTEs target execution time (year,month,day,hour,minute,second)
FFFFFFFFFFFFh if serviced as soon as possible
12h 6 BYTEs job entry time (year,month,day,hour,minute,second)
18h WORD (big-endian) job number
1Ah WORD (big-endian) job type
1Ch BYTE job position
1Dh BYTE job control flags (see #1668)
1Eh 14 BYTEs ASCIZ job filename
2Ch 6 BYTEs job file handle
32h BYTE server station
33h BYTE server task number
34h DWORD object ID of server
38h 50 BYTEs ASCIZ job description string
6Ah 152 BYTEs client record area
SeeAlso: #1666
Bitfields for NetWare job control flags:
Bit(s) Description (Table 1668)
3 job will be serviced automatically if connection broken
4 job remains in queue after server aborts job
5 client has not filled associated job file
6 User Hold--job advances, but cannot be serviced until this is
cleared by user or operator
7 Operator Hold--job advances, but cannot be serviced until this is
cleared by an operator
SeeAlso: #1667
--------N-21E3--SF6D-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB ENTRY (OLD)
AH = E3h subfn 6Dh
DS:SI -> request buffer (see #1669)
ES:DI -> reply buffer (see #1671)
Return: AL = status (00h,96h,D0h,D1h,D5h,D7h,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be an operator or the user who created the job
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Eh
SeeAlso: AX=F217h/SF=6Dh
Format of NetWare "Change Queue Job Entry" request buffer:
Offset Size Description (Table 1669)
00h WORD 0105h (length of following data)
02h BYTE 6Dh (subfunction "Change Queue Job Entry")
03h DWORD (big-endian) object ID of queue
07h 256 BYTEs job structure (see #1659)
SeeAlso: #1671
--------N-21E3--SF6E-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE QUEUE JOB POSITION
AH = E3h subfn 6Eh
DS:SI -> request buffer (see #1670)
ES:DI -> reply buffer (see #1671)
Return: AL = status (00h,96h,D0h,D1h,D5h,D6h,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be an operator
if the specified position is greater than the number of jobs in the
queue, the job is placed at the end of the queue
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ah,AH=E3h/SF=6Ch,AH=E3h/SF=6Dh
SeeAlso: AX=F217h/SF=6Eh
Format of NetWare "Change Queue Job Position" request buffer:
Offset Size Description (Table 1670)
00h WORD 0008h (length of following data)
02h BYTE 6Eh (subfunction "Change Queue Job Position")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
09h BYTE new position in queue
(01h = first, FAh [250] = last position in full queue)
SeeAlso: #1671
Format of NetWare reply buffer:
Offset Size Description (Table 1671)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1669,#1670,#1672
--------N-21E3--SF6F-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - ATTACH QUEUE SERVER TO QUEUE
AH = E3h subfn 6Fh
DS:SI -> request buffer (see #1672)
ES:DI -> reply buffer (see #1671)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,DAh,DBh,FEh,FFh)
(see also AH=E3h/SF=64h)
FFh bindery failure, or no such property, or no such member
Desc: attach the calling job server to the specified queue
Notes: this function is supported by Advanced NetWare 2.1+
a queue may have up to 25 job servers attached
the calling workstation must be security-equivalent to a member of the
queue's Q_SERVERS property
SeeAlso: AH=E3h/SF=70h,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=6Fh
Format of NetWare "Attach Queue Server to Queue" request buffer:
Offset Size Description (Table 1672)
00h WORD 0005h (length of following data)
02h BYTE 6Fh (subfunction "Attach Queue Server To Queue")
03h DWORD (big-endian) object ID of queue
SeeAlso: #1671,#1673
--------N-21E3--SF70-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - DETACH QUEUE SERVER FROM QUEUE
AH = E3h subfn 70h
DS:SI -> request buffer (see #1673)
ES:DI -> reply buffer (see #1671)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D2h,FEh,FFh) (see #1649)
Desc: remove the calling job server from the specified queue's list of
servers
Notes: this function is supported by Advanced NetWare 2.1+
the caller must have previously attached itself to the queue
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=70h
Format of NetWare "Detach Queue Server From Queue" request buffer:
Offset Size Description (Table 1673)
00h WORD 0005h (length of following data)
02h BYTE 70h (subfunction "Detach Queue Server From Queue")
03h DWORD (big-endian) object ID of queue
SeeAlso: #1671,#1672
--------N-21E3--SF71-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - SERVICE QUEUE JOB AND OPEN FILE
AH = E3h subfn 71h
DS:SI -> request buffer (see #1674)
ES:DI -> reply buffer (see #1660)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh)
(see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
the caller must be on a workstation which is security-equivalent to a
member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=71h
Format of NetWare "Service Queue Job and Open File" request buffer:
Offset Size Description (Table 1674)
00h WORD 0007h (length of following data)
02h BYTE 71h (subfunction "Service Queue Job and Open File")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) target job type
FFFFh any
SeeAlso: #1660,#1675
--------N-21E3--SF72-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB AND FILE
AH = E3h subfn 72h
DS:SI -> request buffer (see #1675)
ES:DI -> reply buffer (see #1677)
Return: AL = status (00h,96h,D0h,D1h,D6h) (see #1649)
Desc: inform the Queue Management System (QMS) that the queue server has
completed a job
Notes: this function is supported by Advanced NetWare 2.1+
the caller must be a job server which has previously obtained a job
for servicing
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=72h
Format of NetWare "Finish Servicing Queue Job and File (old)" request buffer:
Offset Size Description (Table 1675)
00h WORD 000Bh (length of following data)
02h BYTE 72h (subfunction "Finish Servicing Queue Job and File (old)")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
09h DWORD (big-endian) charge
SeeAlso: #1677,#1674,#1686
--------N-21E3--SF73-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB AND FILE
AH = E3h subfn 73h
DS:SI -> request buffer (see #1676)
ES:DI -> reply buffer (see #1677)
Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #1649)
Desc: inform the Queue Management System (QMS) that the queue server is
unable to service a previously-accepted job
Notes: this function is supported by Advanced NetWare 2.1+
this is an old version of the call (see AH=E3h/SF=84h)
only a job server which previously accepted a job for servicing may
call this function
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=76h,AH=E3h/SF=84h
SeeAlso: AX=F217h/SF=73h
Format of NetWare "Abort Servicing Queue Job and File (old)" request buffer:
Offset Size Description (Table 1676)
00h WORD 0007h (length of following data)
02h BYTE 73h (subfunction "Abort Servicing Queue Job and File (old)")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
SeeAlso: #1677,#1675
Format of NetWare reply buffer:
Offset Size Description (Table 1677)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1675,#1676,#1678,#1679
--------N-21E3--SF74-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - CHANGE TO CLIENT RIGHTS (OLD)
AH = E3h subfn 74h
DS:SI -> request buffer (see #1678)
ES:DI -> reply buffer (see #1677)
Return: AL = status (00h,96h,D0h,D1h,D5h,D9h) (see #1649)
Desc: temporarily assume the login identity of the client submitting the
job being serviced
Notes: this function is supported by Advanced NetWare 2.1+
caller must be a job server which has obtained a job for servicing
SeeAlso: AH=E3h/SF=75h,AX=F217h/SF=74h
Format of NetWare "Change to Client Rights (old)" request buffer:
Offset Size Description (Table 1678)
00h WORD 0007h (length of following data)
02h BYTE 74h (subfunction "Change To Client Rights (old)")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
SeeAlso: #1677,#1679
--------N-21E3--SF75-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - RESTORE QUEUE SERVER RIGHTS
AH = E3h subfn 75h
DS:SI -> request buffer (see #1679)
ES:DI -> reply buffer (see #1677)
Return: AL = status (00h,96h,9Ch,D0h,D1h,D3h,D5h,D9h,DAh,FEh,FFh) (see #1649)
Desc: restore server's own identity after assuming the login identity of the
client submitting the job being serviced
Notes: this function is supported by Advanced NetWare 2.1+
caller must be a job server which has previously changed its identity
SeeAlso: AH=E3h/SF=74h,AX=F217h/SF=75h
Format of NetWare "Restore Queue Server Rights" request buffer:
Offset Size Description (Table 1679)
00h WORD 0001h (length of following data)
02h BYTE 75h (subfunction "Change To Client Rights")
SeeAlso: #1677,#1678
--------N-21E3--SF76-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - READ QUEUE SERVER CURRENT STATUS OLD
AH = E3h subfn 76h
DS:SI -> request buffer (see #1680)
ES:DI -> reply buffer (see #1681)
Return: AL = status (00h,96h,9Ch,D1h-D3h,F1h,FCh,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the Q_USERS or Q_OPERATORS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=77h,AH=E3h/SF=78h
SeeAlso: AX=F217h/SF=76h
Format of NetWare "Read Queue Server Current Status (old)" request buffer:
Offset Size Description (Table 1680)
00h WORD 000Ah (length of following data)
02h BYTE 76h (subfunction "Read Queue Server Current Status (old)")
03h DWORD (big-endian) object ID of queue
07h DWORD (big-endian) object ID of server
0Bh BYTE server station
SeeAlso: #1681
Format of NetWare "Read Queue Server Current Status (old)" reply buffer:
Offset Size Description (Table 1681)
00h WORD (call) 0040h (size of following results)
02h 64 BYTEs server status record (format depends on server)
first four bytes should contain estimated "price" for an
average job
SeeAlso: #1680,#1891
--------N-21E3--SF77-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - SET QUEUE SERVER CURRENT STATUS
AH = E3h subfn 77h
DS:SI -> request buffer (see #1682)
ES:DI -> reply buffer (see #1683)
Return: AL = status (00h,96h,9Ch,D0h,D1h,FEh,FFh) (see #1649)
Notes: this function is supported by Advanced NetWare 2.1+
caller must be a job server which has attached itself to the queue
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=6Fh,AH=E3h/SF=76h,AH=E3h/SF=78h
SeeAlso: AX=F217h/SF=77h
Format of NetWare "Set Queue Server Current Status" request buffer:
Offset Size Description (Table 1682)
00h WORD 0045h (length of following data)
02h BYTE 77h (subfunction "Set Queue Server Current Status")
03h DWORD (big-endian) object ID of queue
07h 64 BYTEs server status record (format depends on server)
first four bytes should contain estimated "price" for an
average job
SeeAlso: #1683
Format of NetWare "Set Queue Server Current Status" reply buffer:
Offset Size Description (Table 1683)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1682
--------N-21E3--SF78-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - GET QUEUE JOB'S FILE SIZE (OLD)
AH = E3h subfn 78h
DS:SI -> request buffer (see #1684)
ES:DI -> reply buffer (see #1685)
Return: AL = status (see also #1649)
00h successful
Notes: this function is supported by Advanced NetWare 2.1+
caller must be on a workstation which is security-equivalent to a
member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=68h,AH=E3h/SF=6Ch,AH=E3h/SF=71h,AX=F217h/SF=78h
Format of NetWare "Get Queue Job's File Size (old)" request buffer:
Offset Size Description (Table 1684)
00h WORD 0007h (length of following data)
02h BYTE 78h (subfunction "Get Queue Job's File Size (old)")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
SeeAlso: #1685,#1892 at AX=F217h/SF=78h
Format of NetWare "Get Queue Job's File Size (old)" reply buffer:
Offset Size Description (Table 1685)
00h WORD (call) 000Ah (size of following results)
02h DWORD (big-endian) object ID of queue
06h WORD (big-endian) job number
08h DWORD (big-endian) size of job file in bytes
SeeAlso: #1684,#1892 at AX=F217h/SF=78h
--------N-21E3--SF83-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - FINISH SERVICING QUEUE JOB
AH = E3h subfn 83h
DS:SI -> request buffer (see #1686)
ES:DI -> reply buffer (see #1687)
Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #1649)
Desc: inform the Queue Management System (QMS) that the queue server has
completed servicing a previously-accepted job
Notes: this function is supported by Advanced NetWare 3.1+
this variant of Abort Servicing Queue Job allows use of the high
connection byte in the NCP packet header, unlike AH=E3h/SF=73h
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=84h
SeeAlso: AX=F217h/SF=83h
Format of NetWare "Finish Servicing Queue Job" request buffer:
Offset Size Description (Table 1686)
00h WORD 0007h (length of following data)
02h BYTE 84h (subfunction "Abort Servicing Queue Job")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
09h DWORD (big-endian) charge for job
SeeAlso: #1687,#1675
Format of NetWare "Finish Servicing Queue Job" reply buffer:
Offset Size Description (Table 1687)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1686
--------N-21E3--SF84-------------------------
INT 21 - Novell NetWare - QUEUE SERVICES - ABORT SERVICING QUEUE JOB
AH = E3h subfn 84h
DS:SI -> request buffer (see #1688)
ES:DI -> reply buffer (see #1689)
Return: AL = status (00h,96h,D0h,D1h,D6h,D9h) (see #1649)
Desc: inform the Queue Management System (QMS) that the queue server is
unable to service a previously-accepted job
Notes: this function is supported by Advanced NetWare 3.1+
this variant of Abort Servicing Queue Job allows use of the high
connection byte in the NCP packet header, unlike AH=E3h/SF=73h
SeeAlso: AH=E3h/SF=6Fh,AH=E3h/SF=71h,AH=E3h/SF=72h,AH=E3h/SF=73h,AH=E3h/SF=76h
SeeAlso: AX=F217h/SF=84h
Format of NetWare "Abort Servicing Queue Job" request buffer:
Offset Size Description (Table 1688)
00h WORD 0007h (length of following data)
02h BYTE 84h (subfunction "Abort Servicing Queue Job")
03h DWORD (big-endian) object ID of queue
07h WORD (big-endian) job number
SeeAlso: #1689
Format of NetWare "Abort Servicing Queue Job" reply buffer:
Offset Size Description (Table 1689)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1688
--------N-21E3--SF96-------------------------
INT 21 - Novell NetWare - ACCOUNTING SERVICES - GET ACCOUNT STATUS
AH = E3h subfn 96h
DS:SI -> request buffer (see #1691)
ES:DI -> reply buffer (see #1692)
Return: AL = status (00h,C0h,C1h) (see #1690)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=97h,AH=E3h/SF=98h,AH=E3h/SF=99h,AX=F217h/SF=96h
(Table 1690)
Values for NetWare function status:
00h successful
C0h no account privileges
C1h no account balance
C2h credit limit exceeded
C3h too many holds on account
C6h no console rights
SeeAlso: #1649
Format of NetWare "Get Account Status" request buffer:
Offset Size Description (Table 1691)
00h WORD length of following data (max 33h)
02h BYTE 96h (subfunction "Get Account Status")
03h WORD (big-endian) type of bindery object
05h BYTE length of object name (01h to 2Fh)
06h N BYTEs object name
SeeAlso: #1692,#1912 at AX=F217h/SF=96h
Format of NetWare "Get Account Status" reply buffer:
Offset Size Description (Table 1692)
00h WORD (call) length of following buffer space
02h DWORD (big-endian) account balance
06h DWORD (big-endian) credit limit
signed number indicating lowest allowable account balance
0Ah 120 BYTEs reserved
82h DWORD (big-endian) object ID, server 1
86h DWORD (big-endian) hold amount, server 1
...
F8h DWORD (big-endian) object ID, server 16
FCh DWORD (big-endian) hold amount, server 16
Note: the reply buffer lists the servers which have placed holds on a portion
of the account balance, and the amount reserved by each
SeeAlso: #1691,#1912 at AX=F217h/SF=96h
--------N-21E3--SF97-------------------------
INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT CHARGE
AH = E3h subfn 97h
DS:SI -> request buffer (see #1693)
ES:DI -> reply buffer (see #1695)
Return: AL = status (00h,C0h-C2h) (see #1690)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=98h,AX=F217h/SF=97h
Format of NetWare "Submit Account Charge" request buffer:
Offset Size Description (Table 1693)
00h WORD length of following data (max 13Fh)
02h BYTE 97h (subfunction "Submit Account Charge")
03h WORD (big-endian) service type
05h DWORD (big-endian) amount to be charged to account
09h DWORD (big-endian) amount of prior hold to be cancelled
0Dh WORD (big-endian) type of bindery object
0Fh WORD (big-endian) type of comment
8000h-FFFFh reserved for experimental use
11h BYTE length of object's name
12h N BYTEs object name
BYTE length of comment
N BYTEs comment
SeeAlso: #1695
--------N-21E3--SF98-------------------------
INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT HOLD
AH = E3h subfn 98h
DS:SI -> request buffer (see #1694)
ES:DI -> reply buffer (see #1695)
Return: AL = status (00h,C0h-C3h) (see #1690)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=96h,AH=E3h/SF=97h,AX=F217h/SF=98h
Format of NetWare "Submit Account Hold" request buffer:
Offset Size Description (Table 1694)
00h WORD length of following data (max 37h)
02h BYTE 98h (subfunction "Submit Account Hold")
03h DWORD (big-endian) amount of account balance to reserve
07h WORD (big-endian) type of bindery object
09h BYTE length of object's name
0Ah N BYTEs object name
SeeAlso: #1695
Format of NetWare reply buffer:
Offset Size Description (Table 1695)
00h WORD 0000h (no data returned)
SeeAlso: #1693,#1694,#1696,#1697
--------N-21E3--SF99-------------------------
INT 21 - Novell NetWare - ACCOUNTING SERVICES - SUBMIT ACCOUNT NOTE
AH = E3h subfn 99h
DS:SI -> request buffer (see #1696)
ES:DI -> reply buffer (see #1695)
Return: AL = status (00h,C0h) (see #1690)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=96h,AX=F217h/SF=99h
Format of NetWare "Submit Account Note" request buffer:
Offset Size Description (Table 1696)
00h WORD length of following data (max 137h)
02h BYTE 99h (subfunction "Submit Account Note")
03h WORD (big-endian) type of service
05h WORD (big-endian) type of bindery object
07h WORD (big-endian) type of comment
8000h-FFFFh reserved for experimental use
09h BYTE length of object's name
0Ah N BYTEs object name
BYTE length of comment
N BYTEs comment
SeeAlso: #1695
--------N-21E3--SFC8-------------------------
INT 21 - Novell NetWare - FILE SERVER - CHECK CONSOLE PRIVILEGES
AH = E3h subfn C8h
DS:SI -> request buffer (see #1697)
ES:DI -> reply buffer (see #1695)
Return: AL = status (00h,C6h) (see #1690)
Desc: determine whether the caller is a console operator
Notes: this function is supported by Advanced NetWare 2.1+
NetWare determines console privileges by checking the file server's
OPERATOR property for the caller's object ID
SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h,AX=F217h/SF=C8h
Format of NetWare "Check Console Privileges" request buffer:
Offset Size Description (Table 1697)
00h WORD 0001h (length of following data)
02h BYTE C8h (subfunction "Check Console Privileges")
SeeAlso: #1695
--------N-21E3--SFC9-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DESCRIPTION STRINGS
AH = E3h subfn C9h
DS:SI -> request buffer (see #1698)
ES:DI -> reply buffer (see #1699)
Return: AL = status
00h successful
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must be attached to the file server
SeeAlso: AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E8h,AX=F217h/SF=C9h
Format of NetWare "Get File Server Description Strings" request buffer:
Offset Size Description (Table 1698)
00h WORD 0001h (length of following data)
02h BYTE C9h (subfunction "Get File Server Description Strings")
SeeAlso: #1699,#1913 at AX=F217h/SF=C9h
Format of NetWare "Get File Server Description Strings" reply buffer:
Offset Size Description (Table 1699)
00h WORD (call) 0200h (size of following results buffer)
02h var ASCIZ name of company distributing this copy of NetWare
var ASCIZ version and revision
9 BYTEs ASCIZ revision date (mm/dd/yy)
var ASCIZ copyright notice
SeeAlso: #1698,#1913 at AX=F217h/SF=C9h
--------N-21E3--SFCA-------------------------
INT 21 - Novell NetWare - FILE SERVER - SET FILE SERVER DATE AND TIME
AH = E3h subfn CAh
DS:SI -> request buffer (see #1700)
ES:DI -> reply buffer (see #1702)
Return: AL = status (00h,C6h) (see #1690)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=2Bh"DATE",AH=2Dh"TIME",AH=E3h/SF=C8h,AH=E7h"Novell",AX=F217h/SF=CAh
SeeAlso: AX=F214h
Format of NetWare "Set File Server Date and Time" request buffer:
Offset Size Description (Table 1700)
00h WORD 0007h (length of following data)
02h BYTE CAh (subfunction "Set File Server Date And Time")
03h BYTE year (00-79 = 2000-2079, 80-99 = 1980-1999)
04h BYTE month (1-12)
05h BYTE day (1-31)
06h BYTE hour (0-23)
07h BYTE minute
08h BYTE second
SeeAlso: #1702,#1794 at AX=F214h
--------N-21E3--SFCB-------------------------
INT 21 - Novell NetWare - FILE SERVER - DISABLE FILE SERVER LOGIN
AH = E3h subfn CBh
DS:SI -> request buffer (see #1701)
ES:DI -> reply buffer (see #1702)
Return: AL = status (00h,C6h) (see #1690)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CCh,AH=E3h/SF=D3h,AX=F217h/SF=CBh
Format of NetWare "Disable File Server Login" request buffer:
Offset Size Description (Table 1701)
00h WORD 0001h (length of following data)
02h BYTE CBh (subfunction "Disable File Server Login")
SeeAlso: #1702,#1703
Format of NetWare reply buffer:
Offset Size Description (Table 1702)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1700,#1701,#1703
--------N-21E3--SFCC-------------------------
INT 21 - Novell NetWare - FILE SERVER - ENABLE FILE SERVER LOGIN
AH = E3h subfn CCh
DS:SI -> request buffer (see #1703)
ES:DI -> reply buffer (see #1702)
Return: AL = status (00h,C6h) (see #1690)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AX=F217h/SF=CCh
Format of NetWare "Enable File Server Login" request buffer:
Offset Size Description (Table 1703)
00h WORD 0001h (length of following data)
02h BYTE CCh (subfunction "Enable File Server Login")
SeeAlso: #1702
--------N-21E3--SFCD-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LOGIN STATUS
AH = E3h subfn CDh
DS:SI -> request buffer (see #1704)
ES:DI -> reply buffer (see #1705)
Return: AL = status (00h,C6h) (see #1690)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CCh
Format of NetWare "Get File Server Login Status" request buffer:
Offset Size Description (Table 1704)
00h WORD 0001h (length of following data)
02h BYTE CDh (subfunction "Get File Server Login Status")
SeeAlso: #1705,#1914 at AX=F217h/SF=CDh
Format of NetWare "Get File Server Login Status" reply buffer:
Offset Size Description (Table 1705)
00h WORD (call) 0001h (size of following results buffer)
02h BYTE login state (00h disabled, 01h enabled)
SeeAlso: #1704,#1914 at AX=F217h/SF=CDh
--------N-21E3--SFCE-------------------------
INT 21 - Novell NetWare - FILE SERVICES - PURGE ALL ERASED FILES
AH = E3h subfn CEh
DS:SI -> request buffer (see #1706)
ES:DI -> reply buffer (see #1708)
Return: AL = status (00h,C6h) (see #1690)
Desc: all files marked for deletion on the file server are purged, regardless
of which workstation actually erased them
Notes: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
the calling workstation must have console operator privileges
SeeAlso: AH=13h,AH=E2h/SF=10h,AH=E3h/SF=C8h,AX=F217h/SF=CEh,AX=F244h
Format of NetWare "Purge All Erased Files" request buffer:
Offset Size Description (Table 1706)
00h WORD 0001h (length of following data)
02h BYTE CEh (subfunction "Purge All Erased Files")
SeeAlso: #1708
--------N-21E3--SFCF-------------------------
INT 21 - Novell NetWare - FILE SERVER - DISABLE TRANSACTION TRACKING
AH = E3h subfn CFh
DS:SI -> request buffer (see #1707)
ES:DI -> reply buffer (see #1708)
Return: AL = status (00h,C6h) (see #1690)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D0h
Format of NetWare "Disable Transaction Tracking" request buffer:
Offset Size Description (Table 1707)
00h WORD 0001h (length of following data)
02h BYTE CFh (subfunction "Disable Transaction Tracking")
SeeAlso: #1708,#1709
Format of NetWare reply buffer:
Offset Size Description (Table 1708)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1706,#1707,#1709
--------N-21E3--SFD0-------------------------
INT 21 - Novell NetWare - FILE SERVER - ENABLE TRANSACTION TRACKING
AH = E3h subfn D0h
DS:SI -> request buffer (see #1709)
ES:DI -> reply buffer (see #1708)
Return: AL = status (00h,C6h) (see #1713)
Desc: restart transaction tracking after being stopped either explicitly by
AH=E3h/SF=CFh or automatically due to a full transaction volume
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh,AX=F217h/SF=D0h
Format of NetWare "Enable Transaction Tracking" request buffer:
Offset Size Description (Table 1709)
00h WORD 0001h (length of following data)
02h BYTE D0h (subfunction "Enable Transaction Tracking")
SeeAlso: #1708,#1707
--------N-21E3--SFD1-------------------------
INT 21 - Novell NetWare - FILE SERVER - SEND CONSOLE BROADCAST
AH = E3h subfn D1h
DS:SI -> request buffer (see #1710)
ES:DI -> reply buffer (see #1712)
Return: AL = status (00h,C6h) (see #1713)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
the broadcast message will not be received by workstations which have
disabled broadcasts with AH=E1h/SF=02h
SeeAlso: AH=E1h/SF=02h,AH=E1h/SF=09h,AH=E3h/SF=C8h,AH=E3h/SF=D3h
SeeAlso: AX=F217h/SF=D1h
Format of NetWare "Send Console Broadcast" request buffer:
Offset Size Description (Table 1710)
00h WORD length of following data (max A2h)
02h BYTE D1h (subfunction "Send Console Broadcast")
03h BYTE number of connections to receive message
00h = all, else specific list below
04h N BYTEs connection list
BYTE length of message (max 3Ch)
N BYTEs message
SeeAlso: #1712
--------N-21E3--SFD2-------------------------
INT 21 - Novell NetWare - FILE SERVER - CLEAR CONNECTION NUMBER
AH = E3h subfn D2h
DS:SI -> request buffer (see #1711)
ES:DI -> reply buffer (see #1712)
Return: AL = status (00h,C6h) (see #1713)
Desc: close the open files and release all file locks for a connection,
abort transactions if a TTS file server, and detach from the file
server
Notes: this function is supported by Advanced NetWare 2.1+
the caller must have SUPERVISOR privileges
SeeAlso: AH=E3h/SF=C9h,AH=E3h/SF=D1h,AX=F217h/SF=D2h,AX=F217h/SF=FEh
Format of NetWare "Clear Connection Number" request buffer:
Offset Size Description (Table 1711)
00h WORD 0002h (length of following data)
02h BYTE D2h (subfunction "Clear Connection Number")
03h BYTE connection number
SeeAlso: #1712,#1965
Format of NetWare reply buffer:
Offset Size Description (Table 1712)
00h WORD (call) 0000h (no results returned)
SeeAlso: #1710,#1711,#1714
--------N-21E3--SFD3-------------------------
INT 21 - Novell NetWare - FILE SERVER - DOWN FILE SERVER
AH = E3h subfn D3h
DS:SI -> request buffer (see #1714)
ES:DI -> reply buffer (see #1712)
Return: AL = status (00h,C6h,FFh) (see #1713)
Desc: take down the file server
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have SUPERVISOR privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CBh,AH=E3h/SF=CFh,AH=E3h/SF=D1h
(Table 1713)
Values for NetWare function status:
00h successful
C6h no console rights
FFh files open
SeeAlso: #1690,#1741
Format of NetWare "Down File Server" request buffer:
Offset Size Description (Table 1714)
00h WORD 0002h (length of following data)
02h BYTE D3h (subfunction "Down File Server")
03h BYTE flag: force down even if files open if nonzero
SeeAlso: #1712
--------N-21E3--SFD4-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SYSTEM STATISTICS
AH = E3h subfn D4h
DS:SI -> request buffer (see #1715)
ES:DI -> reply buffer (see #1716)
Return: AL = status (00h,C6h) (see #1713)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E7h,AH=E3h/SF=E8h
SeeAlso: AX=F217h/SF=D4h
Format of NetWare "Get File System Statistics" request buffer:
Offset Size Description (Table 1715)
00h WORD 0001h (length of following data)
02h BYTE D4h (subfunction "Get File System Statistics")
SeeAlso: #1716,#1915 at AX=F217h/SF=D4h
Format of NetWare "Get File System Statistics" reply buffer:
Offset Size Description (Table 1716)
00h WORD (call) 0028h (size of following results buffer)
02h DWORD clock ticks since system started
06h WORD maximum open files set by configuration
08h WORD maximum files open concurrently
0Ah WORD current number of open files
0Ch DWORD total files opened
10h DWORD total file read requests
14h DWORD total file write requests
18h WORD current changed FATs
1Ah WORD total changed FATs
1Ch WORD number of FAT write errors
1Eh WORD number of fatal FAT write errors
20h WORD number of FAT scan errors
22h WORD maximum concurrently-indexed files
24h WORD current number of indexed files
26h WORD number of attached indexed files
28h WORD number of indexed files available
Note: all fields except the first are big-endian
SeeAlso: #1715,#1915 at AX=F217h/SF=D4h
--------N-21E3--SFD5-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET TRANSACTION TRACKING STATISTICS
AH = E3h subfn D5h
DS:SI -> request buffer (see #1717)
ES:DI -> reply buffer (see #1718)
Return: AL = status (00h,C6h) (see #1713)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=CFh,AH=E3h/SF=D0h,AH=E3h/SF=E8h
SeeAlso: AX=F217h/SF=D5h
Format of NetWare "Get Transaction Tracking Statistics" request buffer:
Offset Size Description (Table 1717)
00h WORD 0001h (length of following data)
02h BYTE D5h (subfunction "TTS Get Statistics")
SeeAlso: #1718,#1916 at AX=F217h/SF=D5h
Format of NetWare "Get Transaction Tracking Statistics" reply buffer:
Offset Size Description (Table 1718)
00h WORD (call) length of following results buffer (max 1BCh)
02h DWORD (big-endian) clock ticks since system started
06h BYTE transaction tracking supported if nonzero
(all following fields are invalid if zero)
07h BYTE transaction tracking enabled
08h WORD (big-endian) transaction volume number
0Ah WORD (big-endian) maximum simultaneous transactions configured
0Ch WORD (big-endian) maximum simultaneous transactions since startup
0Eh WORD (big-endian) current transactions in progress
10h DWORD (big-endian) total transactions performed
14h DWORD (big-endian) total write transactions
18h DWORD (big-endian) total transactions backed out
1Ch WORD (big-endian) number of unfilled backout requests
1Eh WORD (big-endian) disk blocks used for transaction tracking
20h DWORD (big-endian) blocks allocated for tracked-file FATs
24h DWORD (big-endian) number of file size changes during a transaction
28h DWORD (big-endian) number of file truncations during a transaction
2Ch BYTE number of records following
2Dh Active Transaction Records [array]
Offset Size Description
00h BYTE logical connection number
01h BYTE task number
SeeAlso: #1717,#1916 at AX=F217h/SF=D5h
--------N-21E3--SFD6-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET DISK CACHE STATISTICS
AH = E3h subfn D6h
DS:SI -> request buffer (see #1719)
ES:DI -> reply buffer (see #1720)
Return: AL = status (00h,C6h) (see #1713)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D5h,AH=E3h/SF=D8h,AH=E3h/SF=D9h,AH=E3h/SF=E6h
SeeAlso: AX=F217h/SF=D6h
Format of NetWare "Get Disk Cache Statistics" request buffer:
Offset Size Description (Table 1719)
00h WORD 0001h (length of following data)
02h BYTE D6h (subfunction "Get Disk Cache Statistics")
SeeAlso: #1720,#1917 at AX=F217h/SF=D6h
Format of NetWare "Get Disk Cache Statistics" reply buffer:
Offset Size Description (Table 1720)
00h WORD (call) 004Eh (length of following results buffer)
02h DWORD clock ticks since system started
06h WORD number of cache buffers
08h WORD size of cache buffer in bytes
0Ah WORD number of dirty cache buffers
0Ch DWORD number of cache read requests
10h DWORD number of cache write requests
14h DWORD number of cache hits
18h DWORD number of cache misses
1Ch DWORD number of physical read requests
20h DWORD number of physical write requests
24h WORD number of physical read errors
26h WORD number of physical write errors
28h DWORD cache get requests
2Ch DWORD cache full write requests
30h DWORD cache partial write requests
34h DWORD background dirty writes
38h DWORD background aged writes
3Ch DWORD total cache writes
40h DWORD number of cache allocations
44h WORD thrashing count
46h WORD number of times LRU block was dirty
48h WORD number of reads on cache blocks not yet filled by writes
4Ah WORD number of times a fragmented write occurred
4Ch WORD number of cache hits on unavailable block
4Eh WORD number of times a cache block was scrapped
Note: all fields except the first are big-endian
SeeAlso: #1719,#1917 at AX=F217h/SF=D6h
--------N-21E3--SFD7-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET DRIVE MAPPING TABLE
AH = E3h subfn D7h
DS:SI -> request buffer (see #1721)
ES:DI -> reply buffer (see #1722)
Return: AL = status (00h,C6h) (see #1713)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D6h,AH=E3h/SF=D9h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
SeeAlso: AX=F217h/SF=D7h
Format of NetWare "Get Drive Mapping Table" request buffer:
Offset Size Description (Table 1721)
00h WORD 0001h (length of following data)
02h BYTE D7h (subfunction "Get Drive Mapping Table")
SeeAlso: #1722,#1918 at AX=F217h/SF=D7h
Format of NetWare "Get Drive Mapping Table" reply buffer:
Offset Size Description (Table 1722)
00h WORD (call) 00ECh (length of following results buffer)
02h DWORD (big-endian) clock tick elapsed since system started
06h BYTE fault tolerance (SFT) level
07h BYTE number of logical drives attached to server
08h BYTE number of physical drives attached to server
09h 5 BYTEs disk channel types (00h none, 01h XT, 02h AT, 03h SCSI,
04h disk coprocessor drive, 32h-FFh value-added drive types)
0Eh WORD (big-endian) number of outstanding controller commands
10h 32 BYTEs drive mapping table (FFh = no such drive)
30h 32 BYTEs drive mirror table (secondary physical drive, FFh = none)
50h 32 BYTEs dead mirror table (last drive mapped to, FFh if never mirrored)
70h BYTE physical drive being remirrored (FFh = none)
71h BYTE reserved
72h DWORD (big-endian) remirrored block
76h 60 BYTEs SFT error table (internal error counters)
SeeAlso: #1721,#1918 at AX=F217h/SF=D7h
--------N-21E3--SFD8-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL DISK STATISTICS
AH = E3h subfn D8h
DS:SI -> request buffer (see #1723)
ES:DI -> reply buffer (see #1724)
Return: AL = status (00h,C6h) (see #1713)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D9h,AH=E3h/SF=E9h,AX=F217h/SF=D8h
Format of NetWare "Get Physical Disk Statistics" request buffer:
Offset Size Description (Table 1723)
00h WORD 0002h (length of following data)
02h BYTE D8h (subfunction "Get Physical Disk Statistics")
03h BYTE physical disk number
SeeAlso: #1724,#1919 at AX=F217h/SF=D8h
Format of NetWare "Get Physical Disk Statistics" reply buffer:
Offset Size Description (Table 1724)
00h WORD (call) 005Dh (size of following results record)
02h DWORD (big-endian) clock ticks since system started
06h BYTE physical disk channel
07h BYTE flag: drive removable if nonzero
08h BYTE physical drive type
09h BYTE drive number within controller
0Ah BYTE controller number
0Bh BYTE controller type
0Ch DWORD (big-endian) size of drive in 4K disk blocks
10h WORD (big-endian) number of cylinders on drive
12h BYTE number of heads
13h BYTE number of sectors per track
14h 64 BYTEs ASCIZ drive make and model
54h WORD (big-endian) number of I/O errors
56h DWORD (big-endian) start of Hot Fix table
5Ah WORD (big-endian) size of Hot Fix table
5Ch WORD (big-endian) number of Hot Fix blocks available
5Eh BYTE flag: Hot Fix disabled if nonzero
SeeAlso: #1723,#1919 at AX=F217h/SF=D8h
--------N-21E3--SFD9-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET DISK CHANNEL STATISTICS
AH = E3h subfn D9h
DS:SI -> request buffer (see #1725)
ES:DI -> reply buffer (see #1726)
Return: AL = status (00h,C6h) (see #1713)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=D8h,AH=E3h/SF=E6h,AH=E3h/SF=E9h
SeeAlso: AX=F217h/SF=D9h
Format of NetWare "Get Disk Channel Statistics" request buffer:
Offset Size Description (Table 1725)
00h WORD 0002h (length of following data)
02h BYTE D9h (subfunction "Get Disk Channel Statistics")
03h BYTE channel number
SeeAlso: #1726,#1920 at AX=F217h/SF=D9h
Format of NetWare "Get Disk Channel Statistics" reply buffer:
Offset Size Description (Table 1726)
00h WORD (call) 00A8h (size of following results record)
02h DWORD (big-endian) clock ticks since system started
06h WORD (big-endian) channel run state (see #1727)
08h WORD (big-endian) channel synchronization state (see #1728)
0Ah BYTE driver type
0Bh BYTE major version of driver
0Ch BYTE minor version of driver
0Dh 65 BYTEs ASCIZ driver description
4Eh WORD (big-endian) first I/O address used
50h WORD (big-endian) length of first I/O address
52h WORD (big-endian) second I/O address used
54h WORD (big-endian) length of second I/O address
56h 3 BYTEs first shared memory address
59h 2 BYTEs length of first shared memory address
5Bh 3 BYTEs second shared memory address
5Eh 2 BYTEs length of second shared memory address
60h BYTE first interrupt number in-use flag
61h BYTE first interrupt number used
62h BYTE second interrupt number in-use flag
63h BYTE second interrupt number used
64h BYTE first DMA channel in-use flag
65h BYTE first DMA channel used
66h BYTE second DMA channel in-use flag
67h BYTE second DMA channel used
68h BYTE flags
69h BYTE reserved
6Ah 80 BYTEs ASCIZ configuration description
SeeAlso: #1725,#1920 at AX=F217h/SF=D9h
(Table 1727)
Values for channel run state:
0000h running
0001h being stopped
0002h stopped
0003h nonfunctional
SeeAlso: #1726,#1728
(Table 1728)
Values for channel synchronization state:
0000h not in use
0002h used by NetWare, no other requests
0004h used by NetWare, other requests
0006h in use, not needed by NetWare
0008h in use, needed by NetWare
000Ah channel released, NetWare should use it
SeeAlso: #1726,#1727
--------N-21E3--SFDA-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S TASK INFORMATION
AH = E3h subfn DAh
DS:SI -> request buffer (see #1729)
ES:DI -> reply buffer (see #1730)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h,AH=E3h/SF=E5h
SeeAlso: AX=F217h/SF=DAh
Format of NetWare "Get Connection's Task Information" request buffer:
Offset Size Description (Table 1729)
00h WORD 0003h (length of following data)
02h BYTE DAh (subfunction "Get Connection's Task Information")
03h WORD (big-endian) logical connection number
SeeAlso: #1730,#1921 at AX=F217h/SF=DAh
Format of NetWare "Get Connection's Task Information" reply buffer:
Offset Size Description (Table 1730)
00h WORD (call) size of following results record (max 1FEh)
02h BYTE lock status of connection (see #1731)
03h var Lock Status Information (see #1732)
N BYTE number of records following
N+1 Active Task Information Records [array]
Offset Size Description
00h BYTE task number (01h-FFh)
01h BYTE task state
01h in TTS explicit transaction
02h in TTS implicit transaction
04h shared fileset lock active
SeeAlso: #1729,#1921 at AX=F217h/SF=DAh
(Table 1731)
Values for lock status of connection:
00h no locks
01h waiting on physical record lock
02h waiting on file lock
03h waiting on logical record lock
04h waiting on semaphore
SeeAlso: #1730,#1732
Format of Lock Status Information:
Offset Size Description (Table 1732)
---lock status 00h---
no fields
---lock status 01h---
00h BYTE number of waiting task
01h DWORD start address
05h DWORD end address
09h BYTE volume number
0Ah WORD directory entry number
0Ch 14 BYTEs ASCIZ filename
---lock status 02h---
00h BYTE number of waiting task
01h BYTE volume number
02h WORD directory entry number
04h 14 BYTEs ASCIZ filename
---lock status 03h---
00h BYTE number of waiting task
01h BYTE length of record name
02h N BYTEs ASCIZ record name
---lock status 04h---
00h BYTE number of waiting task
01h BYTE length of semaphore's name
02h N BYTEs ASCIZ semaphore name
SeeAlso: #1730,#1731
--------N-21E3--SFDB-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S OPEN FILES (OLD)
AH = E3h subfn DBh
DS:SI -> request buffer (see #1733)
ES:DI -> reply buffer (see #1734)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E2h/SF=1Ah,AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DCh,AH=E3h/SF=DFh
SeeAlso: AH=E3h/SF=E1h,AX=F217h/SF=DBh
Format of NetWare "Get Connection's Open Files (old)" request buffer:
Offset Size Description (Table 1733)
00h WORD 0005h (length of following data)
02h BYTE DBh (subfunction "Get Connection's Open Files")
03h WORD (big-endian) logical connection number
05h WORD (big-endian) last record seen (0000h on first call)
SeeAlso: #1734,#1922 at AX=F217h/SF=DBh
Format of NetWare "Get Connection's Open Files (old)" reply buffer:
Offset Size Description (Table 1734)
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" field on next call)
0000h if no more records
04h BYTE number of records following
05h var array of File Information Records (see #1735)
SeeAlso: #1733,#1922 at AX=F217h/SF=DBh
Format of NetWare File Information Record:
Offset Size Description (Table 1735)
00h BYTE task number
01h BYTE lock flags (see #1736)
02h BYTE access flags (see #1737)
03h BYTE lock type
00h no lock
FEh file lock
FFh locked by Begin Share File Set
04h BYTE volume number (00h-1Fh)
05h WORD (big-endian) directory entry number
07h 14 BYTEs ASCIZ filename
SeeAlso: #1734
Bitfields for lock flags:
Bit(s) Description (Table 1736)
0 file is locked
1 file opened Shareable
2 logged
3 file opened Normal
6 TTS holding lock
7 Transaction Flag set on file
SeeAlso: #1735,#1737
Bitfields for access flags:
Bit(s) Description (Table 1737)
0 file open for reading by calling station
1 file open for writing by calling station
2 deny reads by other stations
3 deny writes by other stations
4 file detached
5 TTS Holding Detach
6 TTS Holding Open
SeeAlso: #1735,#1736
--------N-21E3--SFDC-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTIONS USING A FILE
AH = E3h subfn DCh
DS:SI -> request buffer (see #1738)
ES:DI -> reply buffer (see #1739)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E1h
SeeAlso: AX=F217h/SF=DCh
Format of NetWare "Get Connections Using a File" request buffer:
Offset Size Description (Table 1738)
00h WORD length of following data (max 104h)
02h BYTE DCh (subfunction "Get Connections Using a File")
03h WORD (big-endian) last record (0000h on first call)
05h BYTE directory handle
06h BYTE length of file path
07h N BYTEs ASCIZ file path
SeeAlso: #1739,#1923 at AX=F217h/SF=DCh
Format of NetWare "Get Connections Using a File" reply buffer:
Offset Size Description (Table 1739)
00h WORD (call) size of following results record (max 1FEh)
02h WORD (big-endian) count of tasks which have opened or logged file
04h WORD (big-endian) count of tasks which have opened file
06h WORD (big-endian) count of opens for reading
08h WORD (big-endian) count of opens for writing
0Ah WORD (big-endian) deny read count
0Ch WORD (big-endian) deny write count
0Eh WORD next request record (place in "last record" field on next call)
0000h if no more records
10h BYTE locked flag
00h not locked exclusively
else locked exclusively
11h BYTE number of records following
12h var array of File Usage Information Records (see #1740)
SeeAlso: #1738,#1923 at AX=F217h/SF=DCh
Format of NetWare File Usage Information Record:
Offset Size Description (Table 1740)
00h WORD (big-endian) logical connection number
02h BYTE task number
03h BYTE lock flags (see #1736)
04h BYTE access flags (see #1737)
05h BYTE lock type
00h no lock
FEh file lock
FFh locked by Begin Share File Set
--------N-21E3--SFDD-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY CONN&FILE
AH = E3h subfn DDh
DS:SI -> request buffer (see #1742)
ES:DI -> reply buffer (see #1743)
Return: AL = status (00h,C6h,FFh) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DEh,AH=E3h/SF=DFh,AX=F217h/SF=DDh
(Table 1741)
Values for NetWare function status:
00h successful
C6h no console rights
FFh file not open
SeeAlso: #1713,#1782
Format of NetWare "Get Phys Record Locks by Conn and File" request buffer:
Offset Size Description (Table 1742)
00h WORD 0016h (length of following data)
02h BYTE DDh (subfunction "Get Physical Record Locks by Connection and
File")
03h WORD (big-endian) logical connection number
05h WORD (big-endian) last record seen (0000h on first call)
07h BYTE volume number (00h-1Fh)
08h WORD (big-endian) directory handle
0Ah 14 BYTEs ASCIZ filename
SeeAlso: #1743,#1924 at AX=F217h/SF=DDh
Format of NetWare "Get Phys Record Locks by Conn and File" reply buffer:
Offset Size Description (Table 1743)
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" on next call)
0000h if no more records
04h BYTE number of physical record locks
05h BYTE number of records following
06h var array of Physical Record Lock Info records (see #1744)
SeeAlso: #1742,#1924 at AX=F217h/SF=DDh
Format of NetWare Physical Record Lock Info:
Offset Size Description (Table 1744)
00h BYTE task number
01h BYTE lock status (see #1745)
02h DWORD (big-endian) starting offset of record in file
06h DWORD (big-endian) ending offset of record in file
SeeAlso: #1743
Bitfields for lock status:
Bit(s) Description (Table 1745)
0 exclusive lock
1 shareable lock
2 logged
6 lock held by TTS
SeeAlso: #1744
--------N-21E3--SFDE-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET PHYSICAL RECORD LOCKS BY FILE
AH = E3h subfn DEh
DS:SI -> request buffer (see #1746)
ES:DI -> reply buffer (see #1747)
Return: AL = status (00h,C6h,FFh) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh,AX=F217h/SF=DEh
Format of NetWare "Get Physical Record Locks by File" request buffer:
Offset Size Description (Table 1746)
00h WORD length of following data (max 104h)
02h BYTE DEh (subfunction "Get Physical Record Locks by File")
03h WORD (big-endian) last record seen (0000h on first call)
05h BYTE directory handle
06h BYTE length of filename
07h N BYTEs ASCIZ filename
SeeAlso: #1747,#1925 at AX=F217h/SF=DEh
Format of NetWare "Get Physical Record Locks by File" reply buffer:
Offset Size Description (Table 1747)
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" on next call)
0000h if no more records
04h BYTE number of physical record locks
05h BYTE number of records following
06h var array of Physical Record Lock Info records (see #1748)
SeeAlso: #1746,#1925 at AX=F217h/SF=DEh
Format of NetWare Physical Record Lock Info:
Offset Size Description (Table 1748)
00h WORD (big-endian) number of tasks logging record
02h WORD (big-endian) number of tasks with shareable lock
04h DWORD (big-endian) starting offset of record in file
08h DWORD (big-endian) ending offset of record in file
0Ch WORD (big-endian) logical connection number
0Eh BYTE task number
0Fh BYTE lock type
00h none
FEh file lock
FFh Begin Share File Set lock
SeeAlso: #1747
--------N-21E3--SFDF-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORDS BY CONNECTION
AH = E3h subfn DFh
DS:SI -> request buffer (see #1749)
ES:DI -> reply buffer (see #1750)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=E0h,AH=E3h/SF=E2h
SeeAlso: AX=F217h/SF=DFh
Format of NetWare "Get Logical Records by Connection" request buffer:
Offset Size Description (Table 1749)
00h WORD 0005h (length of following data)
02h BYTE DFh (subfunction "Get Logical Records By Connection")
03h WORD (big-endian) logical connection number
05h WORD (big-endian) last record seen (0000h on first call)
SeeAlso: #1750,#1926 at AX=F217h/SF=DFh
Format of NetWare "Get Logical Records by Connection" reply buffer:
Offset Size Description (Table 1750)
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" field on next call)
0000h if no more locked records
04h BYTE number of records following
05h var array of Logical Lock Information Records (see #1751)
SeeAlso: #1749,#1926 at AX=F217h/SF=DFh
Format of NetWare Logical Lock Information Record:
Offset Size Description (Table 1751)
00h BYTE task number
01h BYTE lock status (see #1745)
02h BYTE length of logical lock's name
03h N BYTEs logical lock's name
SeeAlso: #1750
--------N-21E3--SFE0-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET LOGICAL RECORD INFORMATION
AH = E3h subfn E0h
DS:SI -> request buffer (see #1752)
ES:DI -> reply buffer (see #1753)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DDh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
SeeAlso: AX=F217h/SF=E0h
Format of NetWare "Get Logical Record Information" request buffer:
Offset Size Description (Table 1752)
00h WORD length of following data (max 67h)
02h BYTE E0h (subfunction "Get Logical Record Information")
03h WORD (big-endian) last record seen (0000h on first call)
05h BYTE length of logical record's name
06h N BYTEs logical record's name
SeeAlso: #1753,#1927 at AH=E3h/SF=E0h
Format of NetWare "Get Logical Record Information" reply buffer:
Offset Size Description (Table 1753)
00h WORD (call) size of following results record (max 200h)
02h WORD (big-endian) number of logical connections logging the record
04h WORD (big-endian) number of logical connections with shareable lock
06h WORD (big-endian) next request record (place in "last record" field
on next call)
08h BYTE locked exclusively if nonzero
09h BYTE number of records following
0Ah var array of Task Information Records (see #1754)
SeeAlso: #1752,#1927 at AH=E3h/SF=E0h
Format of NetWare Task Information Record:
Offset Size Description (Table 1754)
00h WORD (big-endian) logical connection number
02h BYTE task number
03h BYTE lock status (see #1745)
SeeAlso: #1753
--------N-21E3--SFE1-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S SEMAPHORES
AH = E3h subfn E1h
DS:SI -> request buffer (see #1755)
ES:DI -> reply buffer (see #1756)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DBh,AH=E3h/SF=DFh,AH=E3h/SF=E2h
SeeAlso: AX=F217h/SF=E1h
Format of NetWare "Get Connection's Semaphores" request buffer:
Offset Size Description (Table 1755)
00h WORD 0005h (length of following data)
02h BYTE E1h (subfunction "Get Connection's Semaphores")
03h WORD (big-endian) logical connection number
05h WORD (big-endian) last record seen (0000h on first call)
SeeAlso: #1756,#1928 at AX=F217h/SF=E1h
Format of NetWare "Get Connection's Semaphores" reply buffer:
Offset Size Description (Table 1756)
00h WORD (call) size of following results record (max 1FEh)
02h WORD next request record (place in "last record" field on next call)
04h BYTE number of records following
05h var array of Semaphore Information Records (see #1757)
SeeAlso: #1755,#1928 at AX=F217h/SF=E1h
Format of NetWare Semaphore Information Record:
Offset Size Description (Table 1757)
00h WORD (big-endian) open count
02h BYTE semaphore value (-128 to 127)
03h BYTE task number
04h BYTE lock type
05h BYTE length of semaphore's name
06h N BYTEs semaphore's name
14 BYTEs filename
SeeAlso: #1756
--------N-21E3--SFE2-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET SEMAPHORE INFORMATION
AH = E3h subfn E2h
DS:SI -> request buffer (see #1758)
ES:DI -> reply buffer (see #1759)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E1h,AX=F217h/SF=E2h
Format of NetWare "Get Semaphore Information" request buffer:
Offset Size Description (Table 1758)
00h WORD length of following data (max 83h)
02h BYTE E2h (subfunction "Get LAN Driver's Configuration Information")
03h WORD (big-endian) last record seen (0000h on first call)
05h BYTE length of semaphore's name (01h-7Fh)
06h N BYTEs semaphore's name
SeeAlso: #1759,#1929 at AX=F217h/SF=E2h
Format of NetWare "Get Semaphore Information" reply buffer:
Offset Size Description (Table 1759)
00h WORD (call) size of following results buffer (max 1FEh)
02h WORD next request record (place in "last record" on next call)
0000h if no more
04h WORD (big-endian) number of logical connections opening semaphore
06h BYTE semaphore value (-127 to 128)
07h BYTE number of records following
08h var array of Semaphore Information records (see #1760)
SeeAlso: #1759,#1929 at AX=F217h/SF=E2h
Format of NetWare Semaphore Information:
Offset Size Description (Table 1760)
00h WORD (big-endian) logical connection number
02h BYTE task number
SeeAlso: #1759
--------N-21E3--SFE3-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET LAN DRIVER'S CONFIGURATION INFO
AH = E3h subfn E3h
DS:SI -> request buffer (see #1761)
ES:DI -> reply buffer (see #1762)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
the calling workstation must have console operator privileges
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E7h,AH=E3h/SF=E8h,AX=F217h/SF=E3h
Format of NetWare "Get LAN Driver's Configuration Info" request buffer:
Offset Size Description (Table 1761)
00h WORD 0002h (length of following data)
02h BYTE E3h (subfunction "Get LAN Driver's Configuration Information")
03h BYTE LAN board (00h-03h)
SeeAlso: #1762,#1930 at AX=F217h/SF=E3h
Format of NetWare "Get LAN Driver's Configuration Info" reply buffer:
Offset Size Description (Table 1762)
00h WORD (call) 00ACh (size of following results buffer)
02h 4 BYTEs network number
06h 6 BYTEs node number
0Ch BYTE LAN driver installed (00h no--remaining fields invalid)
0Dh BYTE option number selected at configuration time
0Eh 160 BYTEs configuration text
ASCIZ hardware type
ASCIZ hardware settings
SeeAlso: #1761,#1930 at AX=F217h/SF=E3h
--------N-21E3--SFE5-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET CONNECTION'S USAGE STATISTICS
AH = E3h subfn E5h
DS:SI -> request buffer (see #1763)
ES:DI -> reply buffer (see #1764)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
one must have console operator privileges to get statistics for logical
connections other than one's own
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=DAh,AH=E3h/SF=DBh,AH=E3h/SF=E1h
SeeAlso: AX=F217h/SF=E5h
Format of NetWare "Get Connection's Usage Statistics" request buffer:
Offset Size Description (Table 1763)
00h WORD 0003h (length of following data)
02h BYTE E5h (subfunction "Get Connection's Usage Statistics")
03h WORD (big-endian) logical connection number
SeeAlso: #1764,#1931 at AX=F217h/SF=E5h
Format of NetWare "Get Connection's Usage Statistics" reply buffer:
Offset Size Description (Table 1764)
00h WORD (call) 0014h (size of following results record)
02h DWORD (big-endian) clock ticks since server started
06h 6 BYTEs bytes read
0Ch 6 BYTEs bytes written
12h DWORD (big-endian) total request packets
SeeAlso: #1763,#1931 at AX=F217h/SF=E5h
--------N-21E3--SFE6-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET BINDERY OBJECT DISK SPACE LEFT
AH = E3h subfn E6h
DS:SI -> request buffer (see #1765)
ES:DI -> reply buffer (see #1766)
Return: AL = status (00h,C6h) (see #1741)
Notes: this function is supported by Advanced NetWare 2.1+
one must have console operator privileges to get the free space for
other bindery objects
SeeAlso: AH=E3h/SF=C8h,AH=E3h/SF=E8h,AH=E3h/SF=E9h
Format of NetWare "Get Bindery Object Disk Space Left" request buffer:
Offset Size Description (Table 1765)
00h WORD 0005h (length of following data)
02h BYTE E6h (subfunction "Get Bindery Object Disk Space Left")
03h DWORD (big-endian) object ID
SeeAlso: #1766,#1932 at AX=F217h/SF=E6h
Format of NetWare "Get Bindery Object Disk Space Left" reply buffer:
Offset Size Description (Table 1766)
00h WORD (call) 000Fh (size of following results buffer)
02h DWORD (big-endian) clock ticks elapsed since server started
06h DWORD (big-endian) object ID
0Ah DWORD (big-endian) 4K disk blocks available to user
0Eh BYTE restrictions (00h enforced, FFh not enforced)
SeeAlso: #1765,#1932 at AX=F217h/SF=E6h
--------N-21E3--SFE7-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER LAN I/O STATISTICS
AH = E3h subfn E7h
DS:SI -> request buffer (see #1767)
ES:DI -> reply buffer (see #1768)
Return: AL = status
00h successful
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=D3h,AH=E3h/SF=E8h
SeeAlso: AH=E7h"Novell",AX=F217h/SF=E7h
Format of NetWare "Get File Server LAN I/O Statistics" request buffer:
Offset Size Description (Table 1767)
00h WORD 0001h (length of following data)
02h BYTE E7h (subfunction "Get File Server LAN I/O Statistics")
SeeAlso: #1768,#1933 at AX=F217h/SF=E7h
Format of NetWare "Get File Server LAN I/O Statistics" reply buffer:
Offset Size Description (Table 1768)
00h WORD (call) 0042h (size of following results buffer)
02h DWORD clock ticks since system started
06h WORD total routing buffers
08h WORD maximum routing buffers used
0Ah WORD current routing buffers used
0Ch DWORD total file service packets
10h WORD number of file service packets buffered
12h WORD number of invalid connection packets
14h WORD packets with bad logical connection numbers
16h WORD number of packets received during processing
18h WORD number of requests reprocessed
1Ah WORD packets with bad sequence numbers
1Ch WORD number of duplicate replies sent
1Eh WORD number of acknowledgements sent
20h WORD number of packets with bad request types
22h WORD requests to attach to ws for which a request is being processed
24h WORD requests to attach from ws which is already attaching
26h WORD number of forged detach requests
28h WORD detach requests with bad connection number
2Ah WORD requests to detach from ws for which requests pending
2Ch WORD number of cancelled replies
2Eh WORD packets discarded due to excessive hop count
30h WORD packets discarded due to unknown net
32h WORD incoming packets discarded for lack of DGroup buffer
34h WORD outgoing packets discarded due to lack of buffer
36h WORD received packets destined for B,C, or D side drivers
38h DWORD number of NetBIOS packets propagated through net
3Ch DWORD total number of non-file-service packets
40h DWORD total number of routed packets
Note: all fields except the first are big-endian
SeeAlso: #1768,#1933 at AX=F217h/SF=E7h
--------N-21E3--SFE8-------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER MISC INFORMATION
AH = E3h subfn E8h
DS:SI -> request buffer (see #1769)
ES:DI -> reply buffer (see #1770)
Return: AL = status (00h,C6h) (see #1741)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=E3h/SF=0Eh,AH=E3h/SF=11h,AH=E3h/SF=CDh,AH=E3h/SF=E7h
SeeAlso: AX=F217h/SF=E8h
Format of NetWare "Get File Server Misc Information" request buffer:
Offset Size Description (Table 1769)
00h WORD 0001h (length of following data)
02h BYTE E8h (subfunction "Get File Server Misc Information")
SeeAlso: #1770,#1934 at AX=F217h/SF=E8h
Format of NetWare "Get File Server Misc Information" reply buffer:
Offset Size Description (Table 1770)
00h WORD (call) size of following results buffer (max 0048h)
02h DWORD (big-endian) clock ticks since system started
06h BYTE CPU type
00h Motorola 68000
01h Intel 8086, 8088, or V20
02h Intel 80286+
07h BYTE reserved
08h BYTE number of service processes in server
09h BYTE server utilization in percent
0Ah WORD (big-endian) maximum bindery objects set by configuration
0000h = unlimited
0Ch WORD (big-endian) maximum number of bindery objects used
0Eh WORD (big-endian) current number of bindery objects in use
10h WORD (big-endian) total server memory in KB
12h WORD (big-endian) wasted server memory in KB
normally 0000h
14h WORD number of records following (01h-03h)
16h var array of Dynamic Memory Information records (see #1771)
SeeAlso: #1769,#1934 at AX=F217h/SF=E8h
Format of NetWare Dynamic Memory Information:
Offset Size Description (Table 1771)
00h DWORD (big-endian) total dynamic space
04h DWORD (big-endian) maximum dynamic space used
08h DWORD (big-endian) current dynamic space usage
--------N-21E3--SFE9-------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFORMATION
AH = E3h subfn E9h
DS:SI -> request buffer (see #1772)
ES:DI -> reply buffer (see #1773)
Return: AL = status
00h successful
Notes: this function is supported by Advanced NetWare 2.1+
SeeAlso: AH=DAh,AH=E2h/SF=15h,AX=F217h/SF=E9h
Format of NetWare "Get Volume Information" request buffer:
Offset Size Description (Table 1772)
00h WORD 0002h (length of following data)
02h BYTE E9h (subfunction "Get Volume Information")
03h BYTE directory handle
SeeAlso: #1773,#1935 at AX=F217h/SF=E9h
Format of NetWare "Get Volume Information" reply buffer:
Offset Size Description (Table 1773)
00h WORD (call) 0028h (length of following results buffer)
02h DWORD (big-endian) elapsed system time
06h BYTE volume number
07h BYTE logical drive number
08h WORD (big-endian) sectors per block
0Ah WORD (big-endian) starting block
0Ch WORD (big-endian) total blocks on volume
0Eh WORD (big-endian) blocks available on volume
10h WORD (big-endian) total directory slots
12h WORD (big-endian) directory slots available
14h WORD (big-endian) maximum directory entries actually used
16h BYTE flag: volume hashed if nonzero
17h BYTE flag: volume cached if nonzero
18h BYTE flag: volume removable if nonzero
19h BYTE flag: volume mounted if nonzero
1Ah 16 BYTEs NUL-padded volume name
SeeAlso: #1772,#1935 at AX=F217h/SF=E9h
--------N-21E4-------------------------------
INT 21 O - Novell NetWare - SET FILE ATTRIBUTES (FCB)
AH = E4h
CL = file attributes (see #1774)
DX:DX -> FCB (see #1034 at AH=0Fh)
Return: AL = error code
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
SeeAlso: AX=4301h
Bitfields for NetWare file attributes:
Bit(s) Description (Table 1774)
0 read only
1 hidden
2 system
7 shareable
--------v-21E4-------------------------------
INT 21 - VIRUS - "Anarkia" - INSTALLATION CHECK
AH = E4h
Return: AH = 04h if resident
SeeAlso: AH=E1h"VIRUS",AH=E7h"VIRUS"
--------T-21E400-----------------------------
INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
AX = E400h
Return: AL = program status
00h if DoubleDOS not present
01h if running in visible DoubleDOS partition
02h if running in the invisible DoubleDOS partition
SeeAlso: AH=E5h"DoubleDOS",AX=F400h
--------E-21E400-----------------------------
INT 21 - OS/286, OS/386 - CHAIN TO REAL-MODE HANDLER
AX = E400h
???
Return: ???
Note: protected mode only???
--------E-21E402-----------------------------
INT 21 - OS/286, OS/386 - SET PROTECTED-MODE TASK GATE
AX = E402h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=E403h
--------E-21E403-----------------------------
INT 21 - OS/286, OS/386 - REMOVE PROTECTED-MODE TASK GATE
AX = E403h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=E402h
--------N-21E5-------------------------------
INT 21 O - Novell NetWare - UPDATE FILE SIZE (FCB)
AH = E5h
DS:DX -> FCB (see #1034 at AH=0Fh)
Return: AL = (unreliable) return code
Notes: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
on success, NetWare sets AL to zero; on errors it restores AL
--------T-21E5-------------------------------
INT 21 - DoubleDOS - OTHER PROGRAM STATUS
AH = E5h
Return: AL = status
00h no program in other partition
01h program in other partition is running
02h program in other partition is suspended
SeeAlso: AX=E400h"DoubleDOS",AH=F5h"DoubleDOS"
--------E-21E500-----------------------------
INT 21 - OS/286, OS/386 - HEAP MANAGEMENT STRATEGY
AX = E500h
???
Return: ???
SeeAlso: AX=E501h
--------E-21E501-----------------------------
INT 21 - OS/286, OS/386 - FORCE HEAP COMPACTION
AX = E501h
???
Return: ???
SeeAlso: AX=E500h
--------N-21E6-------------------------------
INT 21 O - Novell NetWare - COPY FILE TO FILE (FCB)
AH = E6h
CX:DX = number of bytes to copy
DS:SI -> opened source FCB
ES:DI -> opened destination FCB
Return: AL = error code
CX = ???
DX = ???
Note: this function was added in NetWare 4.0, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
--------E-21E6-------------------------------
INT 21 P - OS/286, OS/386 - ISSUE REAL PROCEDURE SIGNAL FROM PROTECTED MODE
AH = E6h
???
Return: ???
SeeAlso: AH=E2h"OS/286"
--------N-21E7-------------------------------
INT 21 - Novell NetWare - FILE SERVER - GET FILE SERVER DATE AND TIME
AH = E7h
DS:DX -> date/time buffer (see #1775)
Return: AL = error code
00h successful
FFh unsuccessful
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
Alloy NTNX, and Banyan VINES
SeeAlso: AH=2Ah,AH=2Ch,AX=5FC0h,AH=E3h/SF=CAh,AX=F214h
Format of NetWare date/time buffer:
Offset Size Description (Table 1775)
00h BYTE year (80-99 = 1980-1999, 0-79 = 2000-2079)
01h BYTE month (1=Jan)
02h BYTE day
03h BYTE hours
04h BYTE minutes
05h BYTE seconds
06h BYTE day of week (0 = Sunday) (Novell and NTNX only)
SeeAlso: #1794
--------E-21E7-------------------------------
INT 21 - OS/286, OS/386 - CREATE CODE SEGMENT
AH = E7h
???
Return: ???
SeeAlso: AH=E8h"OS/286",AH=E9h"OS/286",AH=EAh"OS/286"
--------v-21E7-------------------------------
INT 21 - VIRUS - "Spyer"/"Kiev" - INSTALLATION CHECK
AH = E7h
Return: AH = 78h if resident
SeeAlso: AH=E4h"VIRUS",AX=EC59h
--------N-21E8-------------------------------
INT 21 O - Novell NetWare, Alloy NTNX - SET FCB RE-OPEN MODE
AH = E8h
DL = mode
00h no automatic re-open
01h auto re-open
Return: AL = error code
Desc: provided backward compatibility with a bug in CP/M and early DOS vers
Note: this function was added in NetWare 4.6, but was removed some time prior
to Advanced NetWare 2.15, and is no longer listed in current Novell
documentation
--------E-21E8-------------------------------
INT 21 - OS/286, OS/386 - SEGMENT CREATION
AH = E8h
AL = type
00h data segment
01h data window/alias
02h real segment
03h real window/alias
CX:DX = size in bytes
SI:BX -> start of desired memory block
Return: AX = selector
06h shareable segment
???
Return: ???
SeeAlso: AH=E7h"OS/286",AH=E9h"OS/286"
--------T-21E8-------------------------------
INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
AH = E8h
AL = program for which to set flags (00h this program, 01h other)
DX = keyboard control flags (see #1776)
Return: DX = previous flags
Notes: disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
disabling any of the other keystrokes disables them completely
identical to AH=F8h
SeeAlso: AH=E1h"DoubleDOS",AH=E2h"DoubleDOS",AH=E3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"
Bitfields for DoubleDOS keyboard control flags:
Bit(s) Description (Table 1776)
0 menu
1 exchange
2 entire keyboard enable/disable
3 Ctrl-C
4 Ctrl-PrtSc
5 Alt/Erase
6 Ctrl-Break
7 Ctrl-NumLock
8 shift-PrtSc
9-13 undefined
14 cancel key (clear keyboard buffer)
15 suspend key
Note: setting a enables the corresponding key or operatin, clearing a
disables it
--------E-21E9-------------------------------
INT 21 P - OS/286, OS/386 - CHANGE SEGMENTS
AH = E9h
AL = function
01h change code segment parameters
02h change data segment parameters
05h adjust segment limit
06h change segment base address
???
Return: ???
SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=EAh"OS/286",AH=EDh"OS/286"
SeeAlso: INT 31/AX=0007h,INT 31/AX=0008h
--------T-21E9-------------------------------
INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
AH = E9h
AL = new priority (see #1777)
Return: AL = priority setting if AL=05h on entry
Note: identical to AH=F9h
SeeAlso: AH=EAh"DoubleDOS",AH=EBh"DoubleDOS",AH=F9h"DoubleDOS"
(Table 1777)
Values for DoubleDOS timesharing priority:
00h visible program gets 70%, invisible gets 30% (default)
01h visible program gets 50%, invisible gets 50%
02h visible program gets 30%, invisible gets 70%
03h Top program gets 70%, bottom program gets 30%
04h Top program gets 30%, bottom program gets 70%
05h get current priority
--------N-21E900-----------------------------
INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY HANDLE
AX = E900h
DX = drive number to check (0 = A:, ..., 25 = Z:, 26 ... 31)
Return: AL = directory handle
AH = flags (drive not mapped if none set)
bit 0: permanent handle
bit 1: temporary handle
bit 7: mapped to local drive
Note: this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=01h,AH=E2h/SF=0Ah
--------v-21E900-----------------------------
INT 21 - VIRUS - "Dark End" - INSTALLATION CHECK
AX = E900h
Return: AX = 1234h if resident
SeeAlso: AX=DEFEh"VIRUS",AX=EC27h"VIRUS"
--------N-21E905-----------------------------
INT 21 - Novell NetWare shell 3.01 - MAP A FAKE ROOT DIRECTORY
AX = E905h
BL = drive number (0=default, 1=A:, ...)
DS:DX -> ASCIZ path for fake root (may include server name or be empty)
Return: CF set on error
AL = error code (03h,0Fh,11h) (see #1366 at AH=59h/BX=0000h)
CF clear if successful
Note: if drive is not currently mapped, a drive mapping will be created
SeeAlso: AX=E906h
--------N-21E906-----------------------------
INT 21 - Novell NetWare shell 3.01 - DELETE FAKE ROOT DIRECTORY
AX = E906h
BL = drive number (0=default, 1=A:, ...)
Return: AL = completion code
Note: drive remains mapped
SeeAlso: AX=E905h
--------N-21E907-----------------------------
INT 21 - Novell NetWare shell 3.01 - GET RELATIVE DRIVE DEPTH
AX = E907h
BL = drive number (0=default, 1=A:, ...)
Return: AL = number of directories below the fake root
FFh if no fake root assigned
SeeAlso: AX=E905h
--------N-21E908BL00-------------------------
INT 21 - Novell NetWare shell 3.01 - SET SHOW DOTS
AX = E908h
BL = 00h don't return '.' or '..' during directory scans
= nonzero directory scans will return '.' or '..' entries
Return: BL = previous show-dots setting
--------N-21E909-----------------------------
INT 21 - Novell NetWare - NetWare shell - CONVERT DOS FILE HANDLE TO NETWARE
AX = E909h
BX = DOS file handle
Return: AX = 0000h if successful
BX:CX:DX = NetWare file handle
Notes: this function is partially a reverse of "AttachHandle" (AH=B4h)
many NetWare 3.x functions use a four-byte file handle, which appears
to be the high four bytes of the six-byte NetWare handle
SeeAlso: AH=B4h"NetWare"
--------N-21EA-------------------------------
INT 21 - Novell NetWare, Alloy NTNX - RETURN SHELL VERSION
AH = EAh
AL = return version environment string
00h don't return string
nonzero get environment string
ES:DI -> 40-byte buffer for string
Return: buffer filled with three null-terminated entries:
major operating system
version
hardware type
Return: AH = operating system (00h = MS-DOS)
AL = hardware type
00h IBM PC
01h Victor 9000
BH = major shell version
BL = minor shell version
CH = (v3.01+) shell type
00h conventional memory
01h expanded memory
02h extended memory
CL = shell revision number
Note: this function is supported by NetWare 4.6 and Advanced NetWare 1.0+
SeeAlso: INT DF"Victor"
--------T-21EA-------------------------------
INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
AH = EAh
Return: task switching turned off
SeeAlso: AH=E9h"DoubleDOS",AH=EBh"DoubleDOS",AH=FAh"DoubleDOS"
SeeAlso: INT FA"DoubleDOS"
--------E-21EA-------------------------------
INT 21 - OS/286, OS/386 - ALLOCATE HUGE SEGMENT
AH = EAh
???
Return: ???
Note: protected mode only???
SeeAlso: AH=E7h"OS/286",AH=E8h"OS/286",AH=E9h"OS/286"
--------N-21EB-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG FILE
AH = EBh
DS:DX -> ASCIZ filename
if function C6h lock mode 01h:
AL = flags
00h log file only
01h lock as well as log file
BP = lock timeout in timer ticks (1/18 second)
0000h = don't wait if file already locked
Return: AL = status (see #1778)
Desc: add the location and size of the specified file to the log table and
optionally lock the file
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=BCh"NetWare",AH=CAh,AH=D0h,AH=ECh"NetWare",AH=EDh"NetWare"
(Table 1778)
Values for NetWare status:
00h successful
96h no dynamic memory for file
FEh timed out
FFh failed
SeeAlso: #1741
--------T-21EB-------------------------------
INT 21 - DoubleDOS - TURN ON TASK SWITCHING
AH = EBh
Return: task switching turned on
SeeAlso: AH=E9h"DoubleDOS",AH=EAh"DoubleDOS",AH=FBh"DoubleDOS"
SeeAlso: INT FB"DoubleDOS"
--------E-21EB00-----------------------------
INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY LINEAR ADDRESS
AX = EB00h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB02h,AX=EB04h,INT 31/AX=0506h
--------E-21EB02-----------------------------
INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 16-BIT SEGMENT:OFFSET
AX = EB02h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB00h,AX=EB04h
--------E-21EB03-----------------------------
INT 21 - OS/386 VMM - FREE MAPPED PAGES
AX = EB03h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB05h,INT 31/AX=0801h
--------E-21EB04-----------------------------
INT 21 - OS/386 VMM - GET A PAGE TABLE ENTRY BY 32-BIT SEGMENT:OFFSET
AX = EB04h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB00h,AX=EB02h
--------E-21EB05-----------------------------
INT 21 - OS/386 VMM - MAP PAGES
AX = EB05h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB03h,INT 31/AX=0800h
--------E-21EB06-----------------------------
INT 21 - OS/386 VMM - LOCK PAGES IN MEMORY
AX = EB06h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB07h,INT 31/AX=0600h
--------E-21EB07-----------------------------
INT 21 - OS/386 VMM - UNLOCK MEMORY PAGES
AX = EB07h
???
Return: ???
Note: protected mode only???
SeeAlso: AX=EB06h,INT 31/AX=0601h
--------N-21EC-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE
AH = ECh
DS:DX -> ASCIZ filename
Return: AL = status
00h successful
FFh file not found
Desc: unlock the specified file but retain it in the log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=CDh,AH=EBh"NetWare",AH=EDh"NetWare"
--------T-21EC-------------------------------
INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
AH = ECh
Return: ES = segment of virtual screen
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
Notes: screen address can change if task-switching is on!
identical to AH=FCh
SeeAlso: INT 10/AH=FEh,AH=FCh"DoubleDOS",INT FC"DoubleDOS"
--------E-21EC-------------------------------
INT 21 - OS/286, OS/386 - BLOCK TRANSFER
AH = ECh
???
Return: ???
--------v-21EC27-----------------------------
INT 21 - VIRUS - "Halloween.1839" - INSTALLATION CHECK
AX = EC27h
Return: AX = 4A52h ("JR") if resident
SeeAlso: AH=E7h"VIRUS",AX=E900h"VIRUS",AX=EC59h"VIRUS"
--------v-21EC59-----------------------------
INT 21 - VIRUS - "Terror" - INSTALLATION CHECK
AX = EC59h
Return: BP = EC59h if resident
SeeAlso: AX=EC27h"VIRUS",AH=EEh"VIRUS"
--------N-21ED-------------------------------
INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE
AH = EDh
DS:DX -> ASCIZ filename
Return: AL = status
00h successful
FFh no files found
Desc: unlock the file and remove it from the log table
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=CBh"NetWare",AH=CEh,AH=CFh,AH=EBh"NetWare",AH=ECh"NetWare"
--------E-21ED-------------------------------
INT 21 - OS/286, OS/386 - GET SEGMENT OR WINDOW DESCRIPTOR
AH = EDh
???
Return: ???
Note: protected mode only???
SeeAlso: AH=E9h"OS/286"
--------N-21EE-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - GET PHYSICAL STATION ADDRESS
AH = EEh
Return: CX:BX:AX = six-byte physical address
Note: this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
Alloy NTNX
SeeAlso: AH=E3h/SF=13h
--------T-21EE-------------------------------
INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
AH = EEh
AL = number of 55ms time slices to give away
Return: returns after giving away time slices
SeeAlso: AH=FEh"DoubleDOS",INT FE"DoubleDOS"
--------v-21EE-------------------------------
INT 21 - VIRUS - "Jerusalem-G", "Pregnant", "Barrotes" - INSTALLATION CHECK
AH = EEh
Return: AX = 0300h if "Jerusalem-G" resident
AL = 05h if "Pregnant" resident
AL = FEh if "Barrotes" resident
SeeAlso: AH=DDh"VIRUS",AX=EC59h,AX=EEE7h"VIRUS"
--------v-21EEE7-----------------------------
INT 21 - VIRUS - "GingerBread" - INSTALLATION CHECK
AX = EEE7h
Return: AX = D703h if installed
SeeAlso: AH=EEh"VIRUS",AH=EFh"VIRUS"
--------v-21EF-------------------------------
INT 21 - VIRUS - "Mabuhay"/"June 12th" - INSTALLATION CHECK
AH = EFh
Return: AX = 025Bh if resident
SeeAlso: AX=EC27h"VIRUS",AH=EEh"VIRUS",AH=F0h"VIRUS"
--------N-21EF00-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET DRIVE HANDLE TABLE
AX = EF00h
Return: ES:SI -> network shell's 32-byte drive handle table
AX = 0000h
Notes: this function is supported by Advanced NetWare 1.0+
each byte in the drive handle table contains the directory handle for
the corresponding drive, or 00h if not mapped to a directory
SeeAlso: AX=EF01h,AX=EF02h,AX=EF03h,AX=EF04h
--------N-21EF01-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET DRIVE FLAG TABLE
AX = EF01h
Return: ES:SI -> network shell's 32-byte drive flag table (see #1779)
AX = 0000h
Notes: this function is supported by Advanced NetWare 1.0+
each byte in the drive flag table corresponds to a drive
SeeAlso: AX=EF00h,AX=EF02h,AX=EF03h
(Table 1779)
Values in NetWare drive flag table:
00h drive is not mapped
01h permanent network drive
02h temporary network drive
80h mapped to local drive
81h local drive used as permanent network drive
82h local drive used as temporary network drive
--------N-21EF02-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET DRIVE CONNECTION ID TABLE
AX = EF02h
Return: ES:SI -> network shell's 32-byte drive conection ID table
AX = 0000h
Notes: this function is supported by Advanced NetWare 1.0+
each byte in the connection ID table corresponds to a drive and
contains either the connection ID (1-8) of the server for that drive
or 00h if the drive is not mapped to a file server
SeeAlso: AX=EF01h,AX=EF03h,AX=F002h
--------N-21EF03-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET CONNECTION ID TABLE
AX = EF03h
Return: ES:SI -> network shell's connection ID table (see #1780)
AX = 0000h
Note: this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=EF00h,AX=EF02h,AX=EF04h,AX=F002h
Format of NetWare connection ID table [one entry of eight-element array]:
Offset Size Description (Table 1780)
00h BYTE in-use flag
E0h AES temporary
F8h IPX in critical section
FAh processing
FBh holding
FCh AES waiting
FDh waiting
FEh receiving
FFh sending
01h BYTE order number assigned to server (1-8)
02h DWORD (big-endian) file server's network address
06h 6 BYTEs (big-endian) file server's node address
0Ch WORD (big-endian) socket number
0Eh WORD (big-endian) base receive timeout in clock ticks
10h 6 BYTEs (big-endian) preferred routing node
16h BYTE packet sequence number
17h BYTE connection number (FFh = no connection)
18h BYTE connection status (00h if active)
19h WORD (big-endian) maximum receive timeout in clock ticks
1Bh WORD connection number (if > FAh)
1Dh BYTE major version of NetWare
1Eh BYTE minor version of NetWare
1Fh BYTE server flags
bit 0: server is burst enabled
--------N-21EF04-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET FILE SERVER NAME TABLE
AX = EF04h
Return: ES:SI -> network shell's file server name table (see #1781)
AX = 0000h
Note: this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=EF03h
Format of file server name table:
Offset Size Description (Table 1781)
00h 48 BYTEs ASCIZ server name for first entry in connection ID table
30h 48 BYTEs ASCIZ server name for second entry in connection ID table
...
150h 48 BYTEs ASCIZ server name for eighth entry in connection ID table
--------T-21F0-------------------------------
INT 21 - DoubleDOS - MENU CONTROL
AH = F0h
AL = subfunction
01h exchange tasks
73h resume invisible job if suspended
74h kill other job
75h suspend invisible job
Note: identical to AH=E0h
SeeAlso: AH=E0h"DoubleDOS"
--------v-21F0-------------------------------
INT 21 - VIRUS - "Frere Jacques" - INSTALLATION CHECK
AH = F0h
Return: AX = 0300h if resident
SeeAlso: AH=EEh"VIRUS",AX=F078h"VIRUS"
--------N-21F000-----------------------------
INT 21 - Novell NetWare - WORKSTATION - SET PREFERRED CONNECTION ID
AX = F000h
DL = connection ID of prefered file server (1-8) or 00h for none
Notes: this function is supported by Advanced NetWare 1.0+
the preferred connection ID is set to 00h by the shell on EOJ
SeeAlso: AH=D6h,AX=EF03h,AX=F001h,AX=F002h,AX=F005h
--------N-21F001-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET PREFERRED CONNECTION ID
AX = F001h
Return: AL = connection ID of preferred file server (1-8), 00h if not set
Notes: this function is supported by Advanced NetWare 1.0+
the preferred connection ID is set to 00h by the shell on EOJ
SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h
--------N-21F002-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET DEFAULT CONNECTION ID
AX = F002h
Return: AL = connection ID of current default file server (1-8) (see AX=EF03h)
Note: this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=EF03h,AX=F000h,AX=F004h
--------N-21F003-----------------------------
INT 21 - Novell NetWare - PRINT SERVICES - GET LPT CAPTURE STATUS
AX = F003h
Return: AH = status
00h not active
FFh active
AL = connection ID (01h-08h)
Note: this function is supported by Advanced NetWare 1.0+
SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h,AH=DFh/DL=04h
--------N-21F004-----------------------------
INT 21 - Novell NetWare - WORKSTATION - SET PRIMARY CONNECTION ID
AX = F004h
DL = connection ID of primary file server (1-8) or 00h for none
Note: this function is supported by Advanced NetWare 2.0+
SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F005h
--------N-21F005-----------------------------
INT 21 - Novell NetWare - WORKSTATION - GET PRIMARY CONNECTION ID
AX = F005h
Return: AL = connection ID of primary file server (1-8), 00h if not set
Notes: this function is supported by Advanced NetWare 2.0+
by default, the primary file server is the one from which the login
script executed; it is set to 00h if the workstation is not logged in
and when it detaches from its primary file server
SeeAlso: AH=D6h,AX=EF03h,AX=F000h,AX=F002h,AX=F004h
--------v-21F078-----------------------------
INT 21 - VIRUS - "Burgler/H" - INSTALLATION CHECK
AX = F078h
Return: AX = 0000h if installed
SeeAlso: AH=F0h"VIRUS",AH=F1h"VIRUS"
--------N-21F1-------------------------------
INT 21 - Novell NetWare - CONNECTION SERVICES - FILE SERVER CONNECTION
AH = F1h
AL = subfunction
00h attach to file server
DL = preferred file server (01h-08h)
01h detach from file server
DL = connection ID
02h logout from file server
DL = connection ID
Return: AL = status (see #1782)
Note: these functions are supported by Advanced NetWare 1.0+
SeeAlso: AH=D7h"NetWare",AH=E3h/SF=14h
(Table 1782)
Values for NetWare function status:
00h successful
F8h already attached to server
F9h connection table full
FAh no more server slots
FCh unknown file server
FEh server bindery locked
FFh no response from server, or connection does not exist
SeeAlso: #1741,#2038
--------T-21F1-------------------------------
INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
AH = F1h
SeeAlso: AH=E1h"DoubleDOS",AH=F2h"DoubleDOS",AH=F3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"
--------v-21F1-------------------------------
INT 21 - VIRUS - "F1-337" - ???
AH = F1h
???
Return: ???
SeeAlso: AH=F0h"VIRUS",AX=F1E9h
--------v-21F1E9-----------------------------
INT 21 - VIRUS - "Tremor" - INSTALLATION CHECK
AX = F1E9h
Return: AX = installation state
CADEh installed, and calling program is infected
F100h not installed (normal DOS return value)
else installed, but calling program is not infected
SeeAlso: AH=F1h"VIRUS",AX=F2AAh
--------!---Section--------------------------
Interrupt List, part 9 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------N-21F2-------------------------------
INT 21 u - Novell NetWare v3.01+ shell interface - MULTIPLEXOR
AH = F2h
AL = function (see #1783)
(subfunction stored in various places in the request packet,
depending on function number; see individual entries)
CX = length of request buffer
DX = length of reply buffer (0000h if no reply packet)
DS:SI -> request buffer
ES:DI -> reply buffer (ignored if DX=0000h)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled as appropriate for function
Note: this is a multiplexor providing a "raw" interface to the underlying
NetWare Core Protocol. Many functions which were accessed via a
separate AH function in older versions can also be accessed here,
but some NetWare 3.x calls appear to be available only here.
SeeAlso: AX=F244h,AX=F268h/SF=3Dh,#2561
(Table 1783)
Values for NetWare Core Protocol functions:
Fnc/Subfn Description
01h File Set Lock
02h File Release Lock
03h Log File (old) (see AX=F203h)
04h Lock File Set (old) (see AX=F204h)
05h Release File (see AH=CCh,AH=ECh"NetWare")
06h Release File Set (see AH=CDh"NetWare")
07h Clear File (see AH=CEh,AX=F207h)
08h Clear File Set (see AX=F208h)
09h Log Logical Record (old) (see AH=D0h"NetWare")
0Ah Lock Logical Record Set (old) (see AX=F20Ah)
0Bh Clear Logical Record (see AX=F20Bh)
0Ch Release Logical Record (see AH=D2h"NetWare")
0Dh Release Logical Record Set (see AH=D3h"NetWare")
0Eh Clear Logical Record Set (see AX=F20Eh)
0Fh Allocate Resource (see AH=D8h"NetWare")
10h Deallocate Resource (see AH=D9h"NetWare")
11h/xxh print spooling (see AH=E0h"NetWare")
11h/06h Get Printer Status
11h/0Ah Get Printer Queue
12h Get Volume Info with Number (see AH=DAh"NetWare")
13h Get Station Number (see AH=DCh"NetWare")
14h Get File Server Date and Time (NW v2.2+) (see AH=E7h"NetWare")
15h/01h Get Broadcast Message (old) (see AX=F215h/SF=01h)
15h/02h Disable Broadcasts (see AX=F215h/SF=02h)
15h/03h Enable Broadcasts (see AX=F215h/SF=03h)
15h/08h Check Pipe Status (see AH=E1h/SF=08h,AX=F215h/SF=08h)
15h/09h Broadcast to Console (see AH=E1h/SF=09h,AX=F215h/SF=09h)
15h/0Bh Get Broadcast Message (see AX=F215h/SF=0Bh)
16h/00h Set Directory Handle (see AX=F216h/SF=00h)
16h/01h Get Directory Path (see AX=F216h/SF=01h)
16h/02h Scan Directory Information (see AX=F216h/SF=02h)
16h/03h Get Effective Directory Rights (old) (see AX=F216h/SF=03h)
16h/04h Modify Maximum Rights Mask (see AX=F216h/SF=04h)
16h/05h Get Volume Number (see AX=F216h/SF=05h)
16h/06h Get Volume Name (see AX=F216h/SF=06h)
16h/0Ah Create Directory (see AX=F216h/SF=0Ah)
16h/0Bh Delete Directory (see AX=F216h/SF=0Bh)
16h/0Ch Scan Directory for Trustees (see AX=F216h/SF=0Ch)
16h/0Dh Add Trustee to Directory (see AX=F216h/SF=0Dh)
16h/0Eh Delete Trustee from Directory (see AX=F216h/SF=0Eh)
16h/0Fh Rename Directory (see AX=F216h/SF=0Fh)
16h/10h Purge Erased Files (old) (see AX=F216h/SF=10h)
16h/11h Recover Erased File (old) (see AX=F216h/SF=11h)
16h/12h Alloc Permanent Directory Handle (see AX=F216h/SF=12h)
16h/13h Alloc Temporary Directory Handle (see AX=F216h/SF=13h)
16h/14h Deallocate Directory Handle (see AX=F216h/SF=14h)
16h/15h Get Volume Info with Handle (see AX=F216h/SF=15h)
16h/16h Alloc Special Temporary Directory Handle (see AX=F216h/SF=16h)
16h/19h Set Directory Information (see AX=F216h/SF=19h)
16h/1Ah Get Path Name of Volume-Directory Number Pair (see AX=F216h/SF=1Ah)
16h/1Bh Scan Salvageable Files (old) (see AX=F216h/SF=1Bh)
16h/1Ch Recover Salvageable File (old) (see AX=F216h/SF=1Ch)
16h/1Dh Purge Salvageable File (old) (see AX=F216h/SF=1Dh)
16h/1Eh Scan a Directory (see AX=F216h/SF=1Eh)
16h/1Fh Get Directory Entry (see AX=F216h/SF=1Fh)
16h/20h Scan Volume's User Disk Restrictions (see AX=F216h/SF=20h)
16h/21h Add User Disk Space Restriction (see AX=F216h/SF=21h)
16h/22h Remove User Disk Space Restrictions (see AX=F216h/SF=22h)
16h/23h Scan Directory Space Restrictions (see AX=F216h/SF=23h)
16h/24h Set Directory Disk Space Restriction (see AX=F216h/SF=24h)
16h/25h Set Directory File Information (see AX=F216h/SF=25h)
16h/26h Scan File or Directory For Extended Trustees (see AX=F216h/SF=26h)
16h/27h Add Extended Trustee to Directory or File (see AX=F216h/SF=27h)
16h/28h Scan Directory Disk Space (see AX=F216h/SF=28h)
16h/29h Get Object Disk Usage and Restrictions (see AX=F216h/SF=29h)
16h/2Ah Get Effective Rights (see AX=F216h/SF=2Ah)
16h/2Bh Remove Extended Trustee from Dir or File (see AX=F216h/SF=2Bh)
16h/2Ch Get Volume Usage (see AX=F216h/SF=2Ch)
16h/2Dh Get Directory Information (see AX=F216h/SF=2Dh)
16h/2Eh Rename or Move (see AX=F216h/SF=2Eh)
16h/2Fh Get Name Space Information (see AX=F216h/SF=2Fh)
16h/30h Get Name Space Directory Entry (see AX=F216h/SF=30h)
16h/31h Open Data Stream (see AX=F216h/SF=31h)
16h/32h Get Object Effective Rights (see AX=F216h/SF=32h)
16h/33h Get Extended Volume Info (see AX=F216h/SF=33h)
17h/01h Change User Password (old) (see AX=F217h/SF=01h)
17h/02h Get User Connection List (old) (see AX=F217h/SF=02h)
17h/0Ch Verify Serialization (see AX=F217h/SF=0Ch)
17h/0Eh Get Disk Utilization (see AX=F217h/SF=0Eh)
17h/0Fh Scan File Information (see AX=F217h/SF=0Fh)
17h/10h Set File Information (see AX=F217h/SF=10h)
17h/11h Get File Server Information (see AX=F217h/SF=11h)
17h/12h Get Network Serial Number (see AX=F217h/SF=12h)
17h/13h Get Internet Address (old) (see AX=F217h/SF=13h)
17h/14h Login Object (see AX=F217h/SF=14h)
17h/15h Get Object Connection List (old) (see AX=F217h/SF=15h)
17h/16h Get Connection Information (old) (see AX=F217h/SF=1Ch)
17h/17h Get Encryption Key (see AX=F217h/SF=17h)
17h/18h Login Object Encrypted (see AX=F217h/SF=18h)
17h/1Ah Get Internet Address (see AX=F217h/SF=1Ah)
17h/1Bh Get Object Connection List (see AX=F217h/SF=1Bh)
17h/1Ch Get Connection Information (see AX=F217h/SF=1Ch)
17h/1Fh Get Connection List from Object (see AX=F217h/SF=1Fh)
17h/32h Create Bindery Object (see AX=F217h/SF=32h)
17h/33h Delete Bindery Object (see AX=F217h/SF=33h)
17h/34h Rename Bindery Object (see AX=F217h/SF=34h)
17h/35h Get Bindery Object ID (see AX=F217h/SF=35h)
17h/36h Get Bindery Object Name (see AX=F217h/SF=36h)
17h/37h Scan Bindery Object (see AX=F217h/SF=37h)
17h/38h Change Bindery Object Security (see AX=F217h/SF=38h)
17h/39h Create Property (see AX=F217h/SF=39h)
17h/3Ah Delete Property (see AX=F217h/SF=3Ah)
17h/3Bh Change Property Security (see AX=F217h/SF=3Bh)
17h/3Ch Scan Property (see AX=F217h/SF=3Ch)
17h/3Dh Read Property Value (see AX=F217h/SF=3Dh)
17h/3Eh Write Property Value (see AX=F217h/SF=3Eh)
17h/3Fh Verify Bindery Object Password (see AX=F217h/SF=3Fh)
17h/40h Change Bindery Object Password (see AX=F217h/SF=40h)
17h/41h Add Bindery Object to Set (see AX=F217h/SF=41h)
17h/42h Delete Bindery Object from Set (see AX=F217h/SF=42h)
17h/43h Is Bindery Object in Set (see AX=F217h/SF=43h)
17h/44h Close Bindery (see AX=F217h/SF=44h)
17h/45h Open Bindery (see AX=F217h/SF=45h)
17h/46h Get Bindery Access Level (see AX=F217h/SF=46h)
17h/47h Scan Bindery Object Trustee Paths (see AX=F217h/SF=47h)
17h/48h Get Bindery Object Access Level (see AX=F217h/SF=48h)
17h/49h Is Station a Manager? (see AX=F217h/SF=49h)
17h/4Ah Keyed Verify Bindery Object Password (see AX=F217h/SF=4Ah)
17h/4Bh Keyed Change Bindery Object Password (see AX=F217h/SF=4Bh)
17h/4Ch List Relations of an Object (see AX=F217h/SF=4Ch)
17h/64h Create Queue (see AX=F217h/SF=64h)
17h/65h Destroy Queue (see AX=F217h/SF=65h)
17h/66h Read Queue Current Status (old) (see AX=F217h/SF=66h)
17h/67h Set Queue Current Status (old) (see AX=F217h/SF=67h)
17h/68h Create Queue Job and File (old) (see AX=F217h/SF=68h)
17h/69h Close File and Start Queue Job (old) (see AX=F217h/SF=69h)
17h/6Ah Remove Job From Queue (old) (see AX=F217h/SF=6Ah)
17h/6Bh Get Queue Job List (old) (see AX=F217h/SF=6Bh)
17h/6Ch Read Queue Job Entry (old) (see AX=F217h/SF=6Ch)
17h/6Dh Change Queue Job Entry (old) (see AX=F217h/SF=6Dh)
17h/6Eh Change Queue Job Position (see AX=F217h/SF=6Eh)
17h/6Fh Attach Queue Server to Queue (see AX=F217h/SF=6Fh)
17h/70h Detach Queue Server from Queue (see AX=F217h/SF=70h)
17h/72h Finish Servicing Queue Job (old) (see AX=F217h/SF=72h)
17h/74h Change to Client Rights (old) (see AX=F217h/SF=74h)
17h/75h Restore Queue Server Rights (see AX=F217h/SF=75h)
17h/76h Read Queue Server Current Status (old) (see AX=F217h/SF=76h)
17h/77h Set Queue Server Current Status (see AX=F217h/SF=77h)
17h/78h Get Queue Job File Size (old) (see AX=F217h/SF=78h)
17h/79h Create Queue Job and File (see AX=F217h/SF=79h)
17h/7Ah Read Queue Job Entry (see AX=F217h/SF=7Ah)
17h/7Bh Change Queue Job Entry (see AX=F217h/SF=7Bh)
17h/7Dh Read Queue Current Status (see AX=F217h/SF=7Dh)
17h/7Eh Set Queue Current Status (see AX=F217h/SF=7Eh)
17h/7Fh Close File and Start Queue Job (see AX=F217h/SF=7Fh)
17h/80h Remove Job From Queue (see AX=F217h/SF=80h)
17h/81h Get Queue Job List (see AX=F217h/SF=81h)
17h/82h Change Job Priority (see AX=F217h/SF=82h)
17h/83h Finish Servicing Queue Job (see AX=F217h/SF=83h)
17h/85h Change to Client Rights (see AX=F217h/SF=85h)
17h/86h Read Queue Server Current Status (see AX=F217h/SF=86h)
17h/87h Get Queue Job File Size (see AX=F217h/SF=87h)
17h/96h Get Account Status (see AX=F217h/SF=96h)
17h/97h Submit Account Charge (see AX=F217h/SF=97h)
17h/98h Submit Account Hold (see AX=F217h/SF=98h)
17h/99h Submit Account Note (see AX=F217h/SF=99h)
17h/C8h Check Console Privileges (see AX=F217h/SF=C8h)
17h/C9h Get File Server Description Strings (see AX=F217h/SF=C9h)
17h/CAh Set File Server Date and Time (see AX=F217h/SF=CAh)
17h/CBh Disable File Server Login (see AX=F217h/SF=CBh)
17h/CCh Enable File Server Login (see AX=F217h/SF=CCh)
17h/CDh Get File Server Login Status (see AX=F217h/SF=CDh)
17h/CEh Purge All Erased Files (see AX=F217h/SF=CEh)
17h/CFh Disable Transaction Tracking (see AX=F217h/SF=CFh)
17h/D0h Enable Transaction Tracking (see AX=F217h/SF=D0h)
17h/D2h Clear Connection Number (Logout Station) (see AX=F217h/SF=D2h)
17h/D3h Down File Server (see AX=F217h/SF=D3h)
17h/D4h Get File System Statistics (see AX=F217h/SF=D4h)
17h/D5h Get Transaction Tracking Statistics (see AX=F217h/SF=D5h)
17h/D6h Get Disk Cache Statistics (see AX=F217h/SF=D6h)
17h/D7h Get Drive Mapping Table (see AX=F217h/SF=D7h)
17h/D8h Get Physical Disk Statistics (see AX=F217h/SF=D8h)
17h/D9h Get Disk Channel Statistics (see AX=F217h/SF=D9h)
17h/DAh Get Connection's Task Information (NW v2.2) (see AX=F217h/SF=DAh)
17h/DBh Get Connection's Open Files (old) (NW v2.2) (see AX=F217h/SF=DBh)
17h/DCh Get Connections Using a File (NW v2.2) (see AX=F217h/SF=DCh)
17h/DDh Get Physical Record Locks by Connection and File (old)
17h/DEh Get Physical Record Locks by File (old) (see AX=F217h/SF=DEh)
17h/DFh Get Logical Records by Connection (old) (see AX=F217h/SF=DFh)
17h/E0h Get Logical Record Information (old) (see AX=F217h/SF=E0h)
17h/E1h Get Connection's Semaphores (old) (see AX=F217h/SF=E1h)
17h/E2h Get Semaphore Information (old) (see AX=F217h/SF=E2h)
17h/E3h Get LAN Driver's Configuration Information (see AX=F217h/SF=E3h)
17h/E5h Get Connection's Usage Statistics (NW v2.2) (see AX=F217h/SF=E5h)
17h/E6h Get Object's Remaining Disk Space (see AX=F217h/SF=E6h)
17h/E7h Get File Server LAN I/O Statistics (see AX=F217h/SF=E7h)
17h/E8h Get File Server Misc Information (see AX=F217h/SF=E8h)
17h/E9h Get Volume Information (see AX=F217h/SF=E9h)
17h/EAh Get Connection's Task Information (NW v3.11+) (see AX=F217h/SF=EAh)
17h/EBh Get Connection's Open Files (NW v3.11+) (see AX=F217h/SF=EBh)
17h/ECh Get Connections Using a File (NW v3.11+) (see AX=F217h/SF=ECh)
17h/EDh Get Physical Record Locks by Connection and File (see AX=F217h/SF=EDh)
17h/EEh Get Physical Record Locks by File (see AX=F217h/SF=EEh)
17h/EFh Get Logical Records by Connection (see AX=F217h/SF=EFh)
17h/F0h Get Logical Record Information (see AX=F217h/SF=F0h)
17h/F1h Get Connection's Semaphores (see AX=F217h/SF=F1h)
17h/F2h Get Semaphore Information (see AX=F217h/SF=F2h)
17h/F3h Map Directory Number to Path (see AX=F217h/SF=F3h)
17h/F4h Convert Path to Directory Entry (see AX=F217h/SF=F4h)
17h/F5h Get File Server Extended Misc Information (see AX=F217h/SF=F5h)
17h/F6h Get Volume Extended Information (see AX=F217h/SF=F6h)
17h/FEh Clear Connection Number Greater than 250 (see AX=F217h/SF=FEh)
18h End of Job (see AH=D6h"NetWare")
19h Logout (old) (see AH=D7h"NetWare")
1Ah Log Physical Record (old) (see AH=BCh"NetWare")
1Bh Lock Physical Record Set (old) (see AX=F21Bh)
1Ch Release Physical Record (see AH=BDh"NetWare")
1Dh Release Physical Record Set (see AH=C3h"NetWare")
1Eh Clear Physical Record (see AX=F21Eh)
1Fh Clear Physical Record Set (see AX=F21Fh)
20h/xxh semaphore services (see AX=C501h"NetWare")
20h/00h Open Semaphore (old) (see AX=C500h"NetWare")
20h/01h Examine Semaphore (old) (see AX=C501h"NetWare")
20h/02h Wait on Semaphore (old) (see AX=C502h"NetWare")
20h/03h Signal Semaphore (old) (see AX=C503h"NetWare")
20h/04h Close Semaphore (old) (see AX=C504h"NetWare")
21h Negotiate Buffer Size
22h/00h TTS Is Available (see AX=C702h"NetWare")
22h/01h TTS Begin Transaction (see AX=C700h"NetWare")
22h/02h TTS End Transaction (see AX=C701h"NetWare")
22h/03h TTS Abort Transaction (see AX=C703h"NetWare")
22h/04h TTS Transaction Status (see AX=C704h"NetWare")
22h/05h TTS Get Application Thresholds (see AX=C705h"NetWare")
22h/06h TTS Set Application Thresholds (see AX=C706h"NetWare")
22h/07h TTS Get Workstation Thresholds (see AX=C707h"NetWare")
22h/08h TTS Set Workstation Thresholds (see AX=C708h"NetWare")
22h/09h TTS Get Control Flags
22h/0Ah TTS Set Control Flags
23h/01h AFP Create Directory (see AX=F223h/SF=01h)
23h/02h AFP Create File (see AX=F223h/SF=02h)
23h/03h AFP Delete (see AX=F223h/SF=03h)
23h/04h AFP Get Entry ID From Name (see AX=F223h/SF=04h)
23h/05h AFP Get File Information (see AX=F223h/SF=05h)
23h/06h AFP Get Entry ID From NetWare Handle (see AX=F223h/SF=06h)
23h/07h AFP Rename (see AX=F223h/SF=07h)
23h/08h AFP Open File Fork (see AX=F223h/SF=08h)
23h/09h AFP Set File Information (see AX=F223h/SF=09h)
23h/0Ah AFP Scan File Information (see AX=F223h/SF=0Ah)
23h/0Bh AFP Alloc Temporary Dir Handle (see AX=F223h/SF=0Bh)
23h/0Ch AFP Get Entry ID From Path Name (see AX=F223h/SF=0Ch)
23h/0Dh AFP 2.0 Create Directory (see AX=F223h/SF=0Dh)
23h/0Eh AFP 2.0 Create File (see AX=F223h/SF=0Eh)
23h/10h AFP 2.0 Set File Information (see AX=F223h/SF=10h)
23h/11h AFP 2.0 Scan File Information (see AX=F223h/SF=11h)
23h/12h AFP Get DOS Name from Entry ID (see AX=F223h/SF=12h)
23h/13h AFP Get Macintosh Info on Deleted File (see AX=F223h/SF=13h)
3Dh Commit File
3Eh File Search Initialize (FindFirst) (see AX=F23Eh)
3Fh File Search Continue (FindNext) (see AX=F23Fh)
40h Search File
42h Close File (see AX=F242h)
43h File Create (see AX=F243h)
44h File Erase (see AX=F244h)
45h File Rename
46h Set File Attributes
47h Get File Size (see AX=F247h)
48h File Read
49h File Write
4Ah File Server Copy (see AX=F24Ah)
4Bh Set File Time and Date
4Ch File Open
4Dh Create New File (see AX=F24Dh)
4Eh Allow Task Access to File (see AX=F24Eh)
4Fh Set Extended File Attributes (see AH=B6h"NetWare")
54h Open Create File (see also AX=6C00h)
55h Get Sparse File Data Block Bit Map
56h/xx extended attribute services (OS/2)
56h/01h Close Extended Attribute Handle (see AX=F256h/SF=01h)
56h/02h Write Extended Attribute (see AX=F256h/SF=02h)
56h/03h Read Extended Attribute (see AX=F256h/SF=03h)
56h/04h Enumerate Extended Attributes (see AX=F256h/SF=04h)
56h/05h Duplicate Extended Attributes (see AX=F256h/SF=05h)
57h/01h Open/Create File or Subdirectory (see AX=F257h/SF=01h)
57h/02h Initialize Search, continue with 57h/03h (see AX=F257h/SF=02h)
57h/03h Scan NS Entry Info (see AX=F257h/SF=03h)
57h/04h Rename or Move File or Subdirectory (see AX=F257h/SF=04h)
57h/05h Scan File or Subdirectory for Trustees (see AX=F257h/SF=05h)
57h/06h Obtain File or Subdirectory Information (see AX=F257h/SF=06h)
57h/07h Modify File or Subdirectory DOS Information (see AX=F257h/SF=07h)
57h/08h Delete File/Directory (see AX=F257h/SF=08h)
57h/09h Set Short Directory Handle (see AX=F257h/SF=09h)
57h/0Ah Add Trustee Set (see AX=F257h/SF=0Ah)
57h/0Bh Delete Trustee (see AX=F257h/SF=0Bh)
57h/0Ch Allocate Short Directory Handle (see AX=F257h/SF=0Ch)
57h/10h Scan Salvageable Files (see AX=F257h/SF=10h)
57h/11h Recover Salvageable File (see AX=F257h/SF=11h)
57h/12h Purge Salvageable File (see AX=F257h/SF=12h)
57h/13h Get NS Information (see AX=F257h/SF=13h)
57h/15h Get Path String from Short Directory Handle (see AX=F257h/SF=15h)
57h/16h Generate Directory Base and Volume Number (see AX=F257h/SF=16h)
57h/17h Get Name Space Info (see AX=F257h/SF=17h)
57h/18h Get Name Spaces Loaded (see AX=F257h/SF=18h)
57h/19h Write Name Space Info (see AX=F257h/SF=19h)
57h/1Ah Read Extended Name Space Info (see AX=F257h/SF=1Ah)
57h/1Bh Write Extended Name Space Info (see AX=F257h/SF=1Bh)
57h/1Ch Get NS Full Path String (see AX=F257h/SF=1Ch)
57h/1Dh Get Effective Directory Rights (see AX=F257h/SF=1Dh)
58h/01h Get Volume Audit Statistics (see AX=F258h/SF=01h)
58h/02h Add Audit Property (see AX=F258h/SF=02h)
58h/03h Login as Volume Auditor (see AX=F258h/SF=03h)
58h/04h Change Auditor Password (see AX=F258h/SF=04h)
58h/05h Check Audit Access (see AX=F258h/SF=05h)
58h/06h Remove Audit Property (see AX=F258h/SF=06h)
58h/07h Disable Auditing on Volume (see AX=F258h/SF=07h)
58h/08h Enable Auditing on Volume (see AX=F258h/SF=08h)
58h/09h Is User Audited? (see AX=F258h/SF=09h)
58h/0Ah Read Auditing Bit Map (see AX=F258h/SF=0Ah)
58h/0Bh Read Audit Config Header (see AX=F258h/SF=0Bh)
58h/0Dh Logout as Volume Auditor (see AX=F258h/SF=0Dh)
58h/0Eh Reset Auditing File (see AX=F258h/SF=0Eh)
58h/0Fh Reset Audit History File (see AX=F258h/SF=0Fh)
58h/10h Write Auditing Bit Map (see AX=F258h/SF=10h)
58h/11h Write Audit Config Header (see AX=F258h/SF=11h)
58h/13h Get Auditing Flags (see AX=F258h/SF=13h)
58h/14h Close Old Auditing File (see AX=F258h/SF=14h)
58h/15h Delete Old Auditing File (see AX=F258h/SF=15h)
58h/16h Check Audit Level Two Access (see AX=F258h/SF=16h)
5Ah/01h Get DM (Data Migration) Info (see AX=F25Ah/SF=01h)
5Ah/80h Move File Data to DM (see AX=F25Ah/SF=80h)
5Ah/81h DM File Information (see AX=F25Ah/SF=81h)
5Ah/82h Volume DM Status (see AX=F25Ah/SF=82h)
5Ah/83h Get Migration or Status Information (see AX=F25Ah/SF=83h)
5Ah/84h DM Support Module Information (see AX=F25Ah/SF=84h)
5Ah/85h Move File Data from DM (see AX=F25Ah/SF=85h)
5Ah/86h Get or Set Default Support Module (see AX=F25Ah/SF=86h)
61h Negotiate LIP Buffer, packet signing, and IPX checksums
65h Packet Burst Connection
68h/xxh NetWare 4.x directory services (subfn at DS:[SI+11h])
68h/01h NDS resolve name (see AX=F268h/SF=01h)
68h/03h NDS read property
68h/04h NDS Get Bindery Context (see AX=F268h/SF=04h)
68h/05h NDS Monitor Connection (see AX=F268h/SF=05h)
68h/16h NDS List Partitions (see AX=F268h/SF=16h)
68h/35h NDS get server address (see AX=F268h/SF=35h)
68h/36h NDS set keys
68h/39h NDS begin login
68h/3Ah NDS finish login
68h/3Bh NDS begin authenticate
68h/3Ch NDS finish authenticate
68h/3Dh NDS Logout (see AX=F268h/SF=3Dh)
68h/C8h Get DS Auditing Statistics (see AX=F268h/SF=C8h)
69h Log File (see AX=F269h)
6Ah Lock File Set (see AX=F26Ah)
6Bh Log Logical Record !!!APIREF09 line 1430
6Ch Lock Logical Record Set (see AX=F26Ch)
6Dh Log Physical Record
6Eh Lock Physical Record Set (see AX=F26Eh)
6Fh/00h Open Semaphore (see AX=F26Fh/SF=00h)
6Fh/01h Close Semaphore (see AX=F26Fh/SF=01h)
6Fh/02h Wait on Semaphore (see AX=F26Fh/SF=02h)
6Fh/03h Signal Semaphore (see AX=F26Fh/SF=03h)
6Fh/04h Examine Semaphore (see AX=F26Fh/SF=04h)
72h NetWare 4.x Time Services (see AX=F272h)
7Bh/01h Get Cache Information (see AX=F27Bh/SF=01h)
7Bh/02h Get File Server Information (see AX=F27Bh/SF=02h)
7Bh/03h Get NetWare File Systems Information
7Bh/04h Get User Information (see AX=F27Bh/SF=04h)
7Bh/05h Get Packet Burst Information
7Bh/06h Get IPX/SPX Information (see AX=F27Bh/SF=06h)
7Bh/07h Get Garbage Collection Information
7Bh/08h Get CPU Information (see AX=F27Bh/SF=08h)
7Bh/09h Get Volume Switch Information (see AX=F27Bh/SF=09h)
7Bh/0Ah Get NLM Loaded List (see AX=F27Bh/SF=0Ah)
7Bh/0Bh Get NLM Information (see AX=F27Bh/SF=0Bh)
7Bh/0Ch Get Directory Cache Information
7Bh/0Dh Get OS Version Information (see AX=F27Bh/SF=0Dh)
7Bh/0Eh Get Active Connection List by Type
7Bh/0Fh Get NLM's Resource Tag List
7Bh/14h Get Active LAN Board List (see AX=F27Bh/SF=14h)
7Bh/15h Get LAN Configuration Information (see AX=F27Bh/SF=15h)
7Bh/16h Get LAN Common Counters Information (see AX=F27Bh/SF=16h)
7Bh/17h Get LAN Custom Counters Information
7Bh/18h Get LAN Config Strings
7Bh/19h Get LSL Information
7Bh/1Ah Get LSL Logical Board Statistics
7Bh/1Eh Get Media Manager Object Information
7Bh/1Fh Get Media Manager Object List
7Bh/20h Get Media Manager Object Children List
7Bh/21h Get Volume Segment List
7Bh/28h Get Active Protocol Stacks
7Bh/29h Get Protocol Stack Configuration Information (see AX=F27Bh/SF=29h)
7Bh/2Ah Get Protocol Stack Statistics Information
7Bh/2Bh Get Protocol Stack Custom Information
7Bh/2Ch Get Protocol Stack Numbers By Media Number
7Bh/2Dh Get Protocol Stack Numbers By LAN Board Number
7Bh/2Eh Get Media Name by Media Number
7Bh/2Fh Get Loaded Media Number List
7Bh/32h Get General Router and SAP Information
7Bh/33h Get Network Router Information (see AX=F27Bh/SF=33h)
7Bh/34h Get Network Routers Information
7Bh/35h Get Known Networks Information (see AX=F27Bh/SF=35h)
7Bh/36h Get Server Information
7Bh/38h Get Known Servers Information (see AX=F27Bh/SF=38h)
7Bh/3Ch Get Server Set Commands Information (see AX=F27Bh/SF=3Ch)
7Bh/3Dh Get Server Set Categories (see AX=F27Bh/SF=3Dh)
Note: the subfunction is stored at DS:SI for AL=56h,57h, DS:SI+2 for
AL=15h-17h,23h
--------T-21F2-------------------------------
INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
AH = F2h
AL = character
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
00h successful
01h buffer full (128 characters)
SeeAlso: AH=E2h"DoubleDOS",AH=F1h"DoubleDOS",AH=F3h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"
--------N-21F203-----------------------------
INT 21 - Novell NetWare - LOG FILE (OLD)
AX = F203h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2165 at AX=F269h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F204h,AX=F269h,AH=EBh"NetWare"
--------N-21F204-----------------------------
INT 21 - Novell NetWare - LOCK FILE SET (OLD)
AX = F204h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1784)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F203h,AX=F26Ah,AH=CBh"NetWare"
Format of NetWare "Lock File Set (old)" request packet:
Offset Size Description (Table 1784)
00h WORD lock timeout in clock ticks (0000h = don't wait)
--------N-21F207-----------------------------
INT 21 - Novell NetWare - CLEAR FILE
AX = F207h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1785)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=CEh,AH=EDh"NetWare",AH=F2h"NetWare",AX=F208h
Format of NetWare "Clear File" request packet:
Offset Size Description (Table 1785)
00h BYTE directory handle
01h BYTE length of filename
02h N BYTEs filename
SeeAlso: #1786
--------N-21F208-----------------------------
INT 21 - Novell NetWare - CLEAR FILE SET
AX = F208h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1786)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=CFh"NetWare",AH=F2h"NetWare",AX=F207h
Format of NetWare "Clear File Set" request packet:
Offset Size Description (Table 1786)
00h BYTE lock flag (nonzero to lock)
SeeAlso: #1785
--------N-21F20A-----------------------------
INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET (OLD)
AX = F20Ah
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2167 at AX=F26Ch)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F204h,AX=F26Ch,AH=D1h"NetWare"
--------N-21F20B-----------------------------
INT 21 - Novell NetWare - CLEAR LOGICAL RECORD
AX = F20Bh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1787)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=D4h"NetWare",AH=F2h"NetWare",AX=F207h,AX=F20Eh
Format of NetWare "Clear Logical Record" request packet:
Offset Size Description (Table 1787)
00h BYTE length of record name (max 128)
01h N BYTEs logical record name
SeeAlso: #1788
--------N-21F20E-----------------------------
INT 21 - Novell NetWare - CLEAR LOGICAL RECORD SET
AX = F20Eh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1788)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=D5h"NetWare",AH=F2h"NetWare",AX=F207h,AX=F20Bh
Format of NetWare "Clear Logical Record Set" request packet:
Offset Size Description (Table 1788)
00h BYTE lock flag
SeeAlso: #1787
--------N-21F211SF06-------------------------
INT 21 - Novell NetWare - GET PRINTER STATUS
AX = F211h subfn 06h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1789)
ES:DI -> reply buffer (see #1790)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=E0h"NetWare",AH=F2h"Novell",AX=F211h/SF=0Ah
Format of NetWare "Get Printer Status" request packet:
Offset Size Description (Table 1789)
00h WORD length of following data
02h BYTE 06h (subfunction "Get Printer Status")
03h BYTE target printer number (00h-04h)
SeeAlso: #1790,#1502
Format of NetWare "Get Printer Status" reply packet:
Offset Size Description (Table 1790)
00h BYTE flag: printer halted if FFh
01h BYTE flag: printer off-line if FFh
02h BYTE current form type
03h BYTE redirected printer number
SeeAlso: #1789
--------N-21F211SF0A-------------------------
INT 21 - Novell NetWare - GET PRINTER QUEUE
AX = F211h subfn 0Ah
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1791)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F211h/SF=06h
Format of NetWare "Get Printer Queue" request packet:
Offset Size Description (Table 1791)
00h WORD length of following data
02h BYTE 0Ah (subfunction "Get Printer Queue")
???
--------N-21F212-----------------------------
INT 21 - Novell NetWare - GET VOLUME INFO WITH NUMBER
AX = F212h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1792)
ES:DI -> reply buffer (see #1793)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=15h,AX=F217h/SF=E9h
Format of NetWare "Get Volume Info with Number" request packet:
Offset Size Description (Table 1792)
00h BYTE volume number
SeeAlso: #1793
Format of NetWare "Get Volume Info with Number" reply packet:
Offset Size Description (Table 1793)
00h WORD sectors per cluster
02h WORD total clusters in volume
04h WORD free clusters
06h WORD total directory entries for volume (FFFFh if not relevant)
08h WORD available directory entries (FFFFh if not relevant)
0Ah 16 BYTEs volume name
1Ah WORD removability
0000h fixed media
FFFFh removable
SeeAlso: #1792
--------N-21F214CX0000-----------------------
INT 21 - Novell NetWare - GET FILE SERVER DATE AND TIME
AX = F214h
CX = 0000h (no request packet)
DX = length of reply packet in bytes
ES:DI -> buffer for reply packet (see #1794)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"NetWare",AH=E3h/SF=CAh,AH=E7h"NetWare"
Format of NetWare "Get File Server Date and Time" reply packet:
Offset Size Description (Table 1794)
00h BYTE year-1900 (80-179)
01h BYTE month (1-12)
02h BYTE day (1-31)
03h BYTE hour
04h BYTE minute
05h BYTE second
06h BYTE day of week
SeeAlso: #1700 at AH=E3h/SF=CAh,#1775 at AH=E7h
--------N-21F215SF01-------------------------
INT 21 - Novell NetWare - GET BROADCAST MESSAGE (OLD)
AX = F215h subfn 01h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1510 at AH=E1h/SF=01h)
ES:DI -> reply buffer (see #1795)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=01h,AX=F215h/SF=02h,AX=F215h/SF=0Bh
Format of NetWare "Get Broadcast Message (Old)" reply packet:
Offset Size Description (Table 1795)
00h BYTE length of message (00h-37h)
00h if no broadcast messages pending
01h N BYTEs message (no control characters or characters > 7Eh)
SeeAlso: #1509,#1510
--------N-21F215SF02-------------------------
INT 21 - Novell NetWare - DISABLE BROADCASTS
AX = F215h subfn 02h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1511 at AH=E1h/SF=02h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=02h,AX=F215h/SF=01h,AX=F215h/SF=03h
--------N-21F215SF03-------------------------
INT 21 - Novell NetWare - ENABLE BROADCASTS
AX = F215h subfn 03h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1512 at AH=E1h/SF=03h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=03h,AX=F215h/SF=01h,AX=F215h/SF=02h
--------N-21F215SF08-------------------------
INT 21 - Novell NetWare - CHECK PIPE STATUS
AX = F215h subfn 08h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1523 at AH=E1h/SF=08h)
ES:DI -> reply buffer (see #1796)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=08h,AX=F215h/SF=09h
Format of NetWare "Check Pipe Status" reply packet:
Offset Size Description (Table 1796)
00h BYTE number of connections
01h N BYTEs list of pipe statuses
00h open
FEh incomplete
FFh closed
SeeAlso: #1523,#1524
--------N-21F215SF09-------------------------
INT 21 - Novell NetWare - BROADCAST TO CONSOLE
AX = F215h subfn 09h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1525 at AH=E1h/SF=09h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Note: requires Access Control rights to the target directory or its parent
SeeAlso: AH=E1h/SF=09h,AH=F2h"NetWare",AX=F215h/SF=08h
--------N-21F215SF0B-------------------------
INT 21 - Novell NetWare - GET BROADCAST MESSAGE
AX = F215h subfn 0Bh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1797)
ES:DI -> reply buffer (see #1798)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E1h/SF=01h,AX=F215h/SF=01h
Format of NetWare "Get Broadcast Message" request packet:
Offset Size Description (Table 1797)
00h WORD length of following data
02h BYTE 0Bh (subfunction "Get Broadcast Message")
SeeAlso: #1798,#1509
Format of NetWare "Get Broadcast Message" reply packet:
Offset Size Description (Table 1798)
00h BYTE length of message
01h N BYTEs message
SeeAlso: #1797,#1510
--------N-21F216SF00-------------------------
INT 21 - Novell NetWare - SET DIRECTORY HANDLE
AX = F216h subfn 00h
CX = length of request buffer in bytes
DX = 0000h (no reply buffer)
DS:SI -> request buffer (see #1528 at AH=E2h/SF=00h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=00h,AX=F216h/SF=01h
--------N-21F216SF01-------------------------
INT 21 - Novell NetWare - GET DIRECTORY PATH
AX = F216h subfn 01h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1530 at AH=E2h/SF=01h)
ES:DI -> reply buffer (see #1531)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=01h,AX=F216h/SF=00h
--------N-21F216SF02-------------------------
INT 21 - Novell NetWare - SCAN DIRECTORY INFORMATION
AX = F216h subfn 02h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1532 at AH=E2h/SF=02h)
ES:DI -> reply buffer (see #1799)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=02h,AX=F216h/SF=01h,AX=F216h/SF=03h
Format of NetWare "Scan Directory Information" reply packet:
Offset Size Description (Table 1799)
00h 16 BYTEs subdirectory name
10h DWORD (big-endian) date and time of creation (see #1534)
14h DWORD (big-endian) object ID of owner
18h BYTE maximum directory rights (see #1537)
19h BYTE unused
1Ah WORD (big-endian) subdirectory number
SeeAlso: #1532,#1533 at AH=E2h/SF=02h
--------N-21F216SF03-------------------------
INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS (OLD)
AX = F216h subfn 03h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1535 at AH=E2h/SF=03h)
ES:DI -> reply buffer (see #1800)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=E2h/SF=03h,AX=F216h/SF=02h,AX=F216h/SF=04h,AX=F257h/SF=1Dh
Format of NetWare "Get Effective Directory Rights (old)" reply buffer:
Offset Size Description (Table 1800)
00h BYTE effective directory rights (see #1537 at AH=E2h/SF=03h)
SeeAlso: #1535,#1536 at AH=E2h/SF=03h
--------N-21F216SF04-------------------------
INT 21 - Novell NetWare - MODIFY MAXIMUM RIGHTS MASK
AX = F216h subfn 04h
CX = length of request buffer in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1538 at AH=E2h/SF=04h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=04h,AX=F216h/SF=03h,AX=F216h/SF=05h
--------N-21F216SF05-------------------------
INT 21 - Novell NetWare - GET VOLUME NUMBER
AX = F216h subfn 05h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1540 at AH=E2h/SF=05h)
ES:DI -> reply buffer (see #1801)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=05h,AX=F216h/SF=02h,AX=F216h/SF=06h
Format of NetWare "Get Volume Number" reply packet:
Offset Size Description (Table 1801)
00h BYTE volume number
SeeAlso: #1540 at AH=E2h/SF=05h
--------N-21F216SF06-------------------------
INT 21 - Novell NetWare - GET VOLUME NAME
AX = F216h subfn 06h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1542 at AH=E2h/SF=06h)
ES:DI -> reply buffer (see #1802)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=06h,AX=F216h/SF=05h,AX=F216h/SF=0Ah
Format of NetWare "Get Volume Name" reply packet:
Offset Size Description (Table 1802)
SeeAlso: #1542,#1543 at AH=E2h/SF=06h
--------N-21F216SF0A-------------------------
INT 21 - Novell NetWare - CREATE DIRECTORY
AX = F216h subfn 0Ah
CX = length of request buffer in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1544 at AH=E2h/SF=0Ah)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=39h,AH=F2h"Novell",AH=E2h/SF=0Ah,AX=F216h/SF=0Bh
--------N-21F216SF0B-------------------------
INT 21 - Novell NetWare - DELETE DIRECTORY
AX = F216h subfn 0Bh
CX = length of request buffer in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1546 at AH=E2h/SF=0Bh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=3Ah,AH=F2h"Novell",AH=E2h/SF=0Bh,AX=F216h/SF=0Ah
--------N-21F216SF0C-------------------------
INT 21 - Novell NetWare - SCAN DIRECTORY FOR TRUSTEES
AX = F216h subfn 0Ch
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1547 at AH=E2h/SF=0Ch)
ES:DI -> reply buffer (see #1803)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=0Ch,AX=F216h/SF=0Dh
Format of NetWare "Scan Directory For Trustees" reply packet:
Offset Size Description (Table 1803)
02h 16 BYTEs directory name
12h 4 BYTEs date and time of creation
16h DWORD (big-endian) object ID of owner
1Ah 5 DWORDs (big-endian) object IDs of Trustees 0 through 4
00000000h = end of group
2Eh 5 BYTEs directory rights for Trustees 0 through 4 (see #1537)
SeeAlso: #1547 at AH=E2h/SF=0Ch
--------N-21F216SF0D-------------------------
INT 21 - Novell NetWare - ADD TRUSTEE TO DIRECTORY
AX = F216h subfn 0Dh
CX = length of request buffer in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1549 at AH=E2h/SF=0Dh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Note: requires Access Control rights to the target directory or its parent
SeeAlso: AH=F2h"NetWare",AH=E2h/SF=0Dh,AX=F216h/SF=0Ch,AX=F216h/SF=0Eh
--------N-21F216SF0E-------------------------
INT 21 - Novell NetWare - DELETE TRUSTEE FROM DIRECTORY
AX = F216h subfn 0Eh
CX = length of request buffer in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1550 at AH=E2h/SF=0Eh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=0Eh,AX=F216h/SF=0Ch,AX=F216h/SF=0Dh
--------N-21F216SF0F-------------------------
INT 21 - Novell NetWare - RENAME DIRECTORY
AX = F216h subfn 0Fh
CX = length of request buffer in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1552 at AH=E2h/SF=0Fh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=0Fh,AX=F216h/SF=0Ah
--------N-21F216SF10-------------------------
INT 21 - Novell NetWare - PURGE ERASED FILES (OLD)
AX = F216h subfn 10h
CX = length of request buffer in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1553 at AH=E2h/SF=10h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=10h,AX=F216h/SF=11h
--------N-21F216SF11-------------------------
INT 21 - Novell NetWare - RECOVER ERASED FILE (OLD)
AX = F216h subfn 11h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1555 at AH=E2h/SF=11h)
ES:DI -> reply buffer (see #1804)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=11h,AX=F216h/SF=10h
Format of NetWare "Recover Erased File (Old)" reply packet:
Offset Size Description (Table 1804)
02h 15 BYTEs ASCIZ name of erased file
11h 15 BYTEs ASCIZ name under which file was restored
SeeAlso: #1555,#1556 at AH=E2h/SF=11h
--------N-21F216SF12-------------------------
INT 21 - Novell NetWare - ALLOCATE PERMANENT DIRECTORY HANDLE
AX = F216h subfn 12h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1557 at AH=E2h/SF=12h)
ES:DI -> reply buffer (see #1806)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=16h,AH=E2h/SF=12h
Format of NetWare IPX fragment list entry:
Offset Size Description (Table 1805)
00h DWORD -> fragment data
04h WORD size of fragment in bytes
Format of NetWare "Allocate Permanent Directory Handle" reply packet:
Offset Size Description (Table 1806)
00h BYTE new directory handle
01h BYTE access rights
SeeAlso: #1557,#1561,#1805
--------N-21F216SF13-------------------------
INT 21 - Novell NetWare - ALLOCATE TEMPORARY DIRECTORY HANDLE
AX = F216h subfn 13h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1559 at AH=E2h/SF=13h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=12h,AX=F216h/SF=16h,AH=E2h/SF=13h
--------N-21F216SF14-------------------------
INT 21 - Novell NetWare - DEALLOCATE DIRECTORY HANDLE
AX = F216h subfn 14h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1560 at AH=E2h/SF=14h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=14h,AX=F216h/SF=13h,AX=F216h/SF=16h
--------N-21F216SF15-------------------------
INT 21 - Novell NetWare - GET VOLUME INFO WITH HANDLE
AX = F216h subfn 15h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1562 at AH=E2h/SF=15h)
ES:DI -> reply buffer (see #1807)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=15h,AX=F212h,AX=F216h/SF=13h
Format of NetWare "Get Volume Info With Handle" reply packet:
Offset Size Description (Table 1807)
00h WORD (big-endian) sectors per block
02h WORD (big-endian) total blocks on volume
04h WORD (big-endian) blocks available on volume
06h WORD (big-endian) total directory slots
08h WORD (big-endian) directory slots available
0Ah 16 BYTEs NUL-padded volume name
1Ah WORD (big-endian) flag: volume removable if nonzero
SeeAlso: #1562 at AH=E2h/SF=15h
--------N-21F216SF16-------------------------
INT 21 - Novell NetWare v2+ - ALLOCATE SPECIAL TEMPORARY DIRECTORY HANDLE
AX = F216h subfn 16h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1564 at AH=E2h/SF=16h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=12h,AX=F216h/SF=13h,AH=E2h/SF=16h
--------N-21F216SF17-------------------------
INT 21 - Novell NetWare - SAVE DIRECTORY HANDLE
AX = F216h subfn 17h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1565 at AH=E2h/SF=17h)
ES:DI -> reply buffer (see #1808)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=17h,AX=F216h/SF=18h
Format of NetWare "Save Directory Handle" reply packet:
Offset Size Description (Table 1808)
00h 16 BYTEs save buffer
SeeAlso: #1565,#1566,#1809
--------N-21F216SF18-------------------------
INT 21 - Novell NetWare - RESTORE DIRECTORY HANDLE
AX = F216h subfn 18h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1567 at AH=E2h/SF=18h)
ES:DI -> reply buffer (see #1809)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=18h,AX=F216h/SF=17h
Format of NetWare "Restore Directory Handle" reply packet:
Offset Size Description (Table 1809)
00h BYTE new directory handle
01h BYTE effective rights (see #1537)
SeeAlso: #1568,#1808
--------N-21F216SF19-------------------------
INT 21 - Novell NetWare - SET DIRECTORY INFORMATION
AX = F216h subfn 19h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1569 at AH=E2h/SF=19h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=19h,AX=F216h/SF=17h
--------N-21F216SF1A-------------------------
INT 21 - Novell NetWare - GET PATH NAME OF VOLUME-DIRECTORY NUMBER PAIR
AX = F216h subfn 1Ah
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1571 at AH=E2h/SF=1Ah)
ES:DI -> reply buffer (see #1810)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=1Ah,AX=F216h/SF=0Eh
Format of NetWare "Get Path Name Of Volume-Dir Number Pair" reply packet:
Offset Size Description (Table 1810)
00h 256 BYTEs path
SeeAlso: #1571,#1572 at AH=E2h/SF=1Ah
--------N-21F216SF1B-------------------------
INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES (OLD)
AX = F216h subfn 1Bh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1811)
ES:DI -> reply buffer (see #1812)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Ch,AX=F216h/SF=1Dh,AX=F257h/SF=10h
Format of NetWare "Scan Salvageable Files (Old)" request packet:
Offset Size Description (Table 1811)
00h WORD length of following data
02h BYTE 1Bh (subfunction "Scan Salvageable Files (Old)")
03h BYTE directory handle
04h DWORD last sequence number (set to FFFFFFFFh before first call)
SeeAlso: #1812,#2087
Format of NetWare "Scan Salvageable Files (Old)" reply packet:
Offset Size Description (Table 1812)
00h DWORD next sequence number
04h WORD subdirectory
06h DWORD attributes
0Ah BYTE unique ID
0Bh BYTE flags
0Ch BYTE name space
0Dh BYTE length of filename
0Eh 14 BYTEs filename
1Ah DWORD creation date and time
1Eh DWORD owner ID
22h DWORD last-backup date and time
26h DWORD last-backup ID
2Ah DWORD last-modified date and time
2Eh WORD ???
30h DWORD last-modified ID
34h DWORD file size
38h 44 BYTEs reserved
62h WORD inherited rights mask
64h WORD last-access date
66h DWORD deleted file's time
6Ah DWORD deletion date and time
6Eh DWORD ID of deletor
72h 16 BYTEs reserved
SeeAlso: #1811,#2088
--------N-21F216SF1C-------------------------
INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE (OLD)
AX = F216h subfn 1Ch
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1813)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Bh,AX=F216h/SF=1Dh,AX=F257h/SF=11h
Format of NetWare "Recover Salvageable File (Old)" request packet:
Offset Size Description (Table 1813)
00h WORD length of following data
02h BYTE 1Ch (subfunction "Recover Salvageable File (Old)")
03h BYTE directory handle
04h DWORD sequence number (set to ? before first call)
08h BYTE length of filename
09h N BYTEs filename in DOS format
BYTE length of new name for recovered file
N BYTEs recovered filename in NetWare VOLUME:DIRECTORY/.../FILE format
SeeAlso: #2089
--------N-21F216SF1D-------------------------
INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE (OLD)
AX = F216h subfn 1Dh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1814)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Bh,AX=F216h/SF=1Ch,AX=F257h/SF=12h
Format of NetWare "Purge Salvageable File (old)" request packet:
Offset Size Description (Table 1814)
00h WORD length of following data
02h BYTE 1Dh (subfunction "Purge Salvageable File (Old)")
03h BYTE directory handle
04h DWORD directory entry
08h DWORD sequence number from Scan Salvageable Files
--------N-21F216SF1E-------------------------
INT 21 - Novell NetWare - SCAN A DIRECTORY
AX = F216h subfn 1Eh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1815)
ES:DI -> reply buffer (see #1816)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E2h/SF=02h,AX=F216h/SF=1Fh
Format of NetWare "Scan A Directory" request packet:
Offset Size Description (Table 1815)
00h WORD length of following data
02h BYTE 1Eh (subfunction "Scan A Directory")
03h BYTE directory handle
04h BYTE search attributes
05h DWORD sequence number
09h BYTE length of search filespec
0Ah N BYTEs search filespec
SeeAlso: #1816
Format of NetWare "Scan A Directory" reply packet:
Offset Size Description (Table 1816)
00h DWORD sequence number (copy into next request packet)
04h DWORD subdirectory
08h DWORD attributes
0Ch BYTE unique ID
0Dh BYTE flags
0Eh BYTE name space
0Fh BYTE length of filename
---DOS file---
10h 12 BYTEs DOS filename
1Ch DWORD creation date and time
20h DWORD owner ID
24h DWORD last-archived date and time
28h DWORD last-archived ID
2Ch DWORD last-updated date and time
30h DWORD last-updated ID
34h DWORD file size
38h 44 BYTEs reserved
64h WORD inherited rights mask
66h WORD last-accessed date
68h 28 BYTEs reserved
---DOS subdirectory---
10h 12 BYTEs DOS directory name
1Ch DWORD creation date and time
20h DWORD owner ID
24h DWORD last-archived date and time
28h DWORD last-archived ID
2Ch DWORD last-updated date and time
30h DWORD next trustee entry
34h 48 BYTEs reserved
64h DWORD maximum space
68h WORD inherited rights mask
6Ah 26 BYTEs unused
SeeAlso: #1815
--------N-21F216SF1F-------------------------
INT 21 - Novell NetWare - GET DIRECTORY ENTRY
AX = F216h subfn 1Fh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1817)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Eh
Format of NetWare "Get Directory Entry" request packet:
Offset Size Description (Table 1817)
00h WORD length of following data
02h BYTE 1Fh (subfunction "Get Directory Entry")
???
--------N-21F216SF20-------------------------
INT 21 - Novell NetWare - SCAN VOLUME'S USER DISK RESTRICTIONS
AX = F216h subfn 20h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1818)
ES:DI -> reply buffer (see #1819)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=23h,AX=F216h/SF=29h
Format of NetWare "Scan Volume's User Disk Restrictions" request packet:
Offset Size Description (Table 1818)
00h WORD length of following data
02h BYTE 20h (subfunction "Scan Volume's User Disk Restrictions")
03h BYTE volume number
04h DWORD sequence number (set to 00000000h before first call)
SeeAlso: #1819
Format of NetWare "Scan Volume's User Disk Restrictions" reply packet:
Offset Size Description (Table 1819)
00h BYTE number of entries returned (max 12)
01h 2N DWORDs restriction entries [array]
Offset Size Description
00h DWORD object ID
04h DWORD maximum usage allowed (in 4K blocks)
SeeAlso: #1818
--------N-21F216SF21-------------------------
INT 21 - Novell NetWare v3+ - ADD USER DISK SPACE RESTRICTION
AX = F216h subfn 21h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1820)
ES:DI -> reply buffer (ignored)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=F216h/SF=20h,AX=F216h/SF=22h,AX=F216h/SF=24h
Format of NetWare "Add User Disk Space Restriction" request buffer:
Offset Size Description (Table 1820)
00h WORD 000Ah (length of following data)
02h BYTE 21h (subfunction "Add User Disk Space Restriction")
03h BYTE volume number
04h DWORD (big-endian) object ID
08h DWORD (big-endian) disk space limit in 4K blocks
00000000h to 40000000h
--------N-21F216SF22-------------------------
INT 21 - Novell NetWare - REMOVE USER DISK SPACE RESTRICTIONS
AX = F216h subfn 22h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1821)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=20h,AX=F216h/SF=21h,AX=F216h/SF=23h
Format of NetWare "Remove User Disk Space Restrictions" request packet:
Offset Size Description (Table 1821)
00h WORD length of following data
02h BYTE 22h (subfunction "Remove User Disk Space Restrictions")
???
--------N-21F216SF23-------------------------
INT 21 - Novell NetWare - SCAN DIRECTORY SPACE RESTRICTIONS
AX = F216h subfn 23h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1822)
ES:DI -> reply buffer (see #1823)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=20h,AX=F216h/SF=21h,AX=F216h/SF=22h
Format of NetWare "Scan Directory Space Restrictions" request packet:
Offset Size Description (Table 1822)
00h WORD length of following data
02h BYTE 23h (subfunction "Scan Directory Space Restrictions")
03h BYTE directory handle
SeeAlso: #1823
Format of NetWare "Scan Directory Space Restrictions" reply packet:
Offset Size Description (Table 1823)
00h BYTE number of entries returned
01h 10N BYTEs restrictions [array]
Offset Size Description
00h WORD depth of directory from root
02h DWORD maximum space allowed for files in directory
04h DWORD current space used by files in directory
SeeAlso: #1822
--------N-21F216SF24-------------------------
INT 21 - Novell NetWare v3+ - SET DIRECTORY DISK SPACE RESTRICTION
AX = F216h subfn 24h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1824)
ES:DI -> reply buffer (ignored)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=F216h/SF=21h,AX=F216h/SF=22h,AX=F216h/SF=23h,AX=F216h/SF=25h
Format of NetWare "Set Directory Disk Space Restriction" request buffer:
Offset Size Description (Table 1824)
00h WORD 0006h (length of following data)
02h BYTE 24h (subfunction "Set Directory Disk Space Restriction")
03h BYTE directory handle
04h DWORD (big-endian) disk space limit in 4K blocks
00000000h to remove restriction, negative to set to 0 blocks
--------N-21F216SF25-------------------------
INT 21 - Novell NetWare - SET DIRECTORY/FILE INFORMATION
AX = F216h subfn 25h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1825)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=02h
Format of NetWare "Set Directory/File Information" request packet:
Offset Size Description (Table 1825)
00h WORD length of following data
02h BYTE 25h (subfunction "Set Directory/File Information")
03h BYTE directory handle
04h BYTE search attributes
05h DWORD sequence number
09h DWORD change bits
0Dh DWORD directory number
11h DWORD attributes
15h BYTE unique ID
16h BYTE flags
17h BYTE name space (see #2075)
18h BYTE length of directory/file name
19h 12 BYTEs directory/file name
25h DWORD creation date and time
29h DWORD (big-endian) owner ID
2Dh DWORD last-backup date and time
31h DWORD (big-endian) last-backup ID
35h DWORD last-modification date and time
39h DWORD (big-endian) last-modification ID
3Dh DWORD file size
41h DWORD data fork first FAT
45h DWORD next trustee entry
49h 36 BYTEs reserved
6Dh WORD inherited rights mask
6Fh WORD last-access date
71h 20 BYTEs reserved
85h DWORD primary entry
89h DWORD name list
--------N-21F216SF26-------------------------
INT 21 - Novell NetWare v3+ - SCAN FILE OR DIRECTORY FOR EXTENDED TRUSTEES
AX = F216h subfn 26h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1826)
ES:DI -> reply buffer (see #1827)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Desc: get up to 20 extended trustee entries per call for a file or directory
Format of NetWare "Scan File/Directory for Extended Trustees" request buffer:
Offset Size Description (Table 1826)
00h WORD length of following data
02h BYTE 26h (subfunc "Scan File or Directory For Extended Trustees")
03h BYTE directory handle
04h BYTE sequence number
00h for first call, increment by number of returned entries
05h BYTE length of path
06h N BYTEs pathname
SeeAlso: #1826
Format of NetWare "Scan File/Directory for Extended Trustees" reply buffer:
Offset Size Description (Table 1827)
00h BYTE number of entries returned (max 20)
01h 20 DWORDs (big-endian) list of object IDs
51h 20 WORDs list of associated trustee rights
SeeAlso: #1827
--------N-21F216SF27-------------------------
INT 21 - Novell NetWare v3+ - ADD EXTENDED TRUSTEE TO DIRECTORY OR FILE
AX = F216h subfn 27h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1828)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Format of NetWare "Add Extended Trustee to Directory or File" request buffer:
Offset Size Description (Table 1828)
00h WORD length of following data
02h BYTE 27h (subfunction "Add Extended Trustee to Directory or File")
03h BYTE directory handle
04h DWORD (big-endian) object ID
08h WORD trustee rights (see #1829)
0Ah BYTE path length
0Bh N BYTEs path name
Bitfields for NetWare trustee rights:
Bit(s) Description (Table 1829)
0 read
1 write
3 create
4 delete
5 access
6 file
7 modify
8 supervisor
--------N-21F216SF28-------------------------
INT 21 - Novell NetWare - SCAN DIRECTORY DISK SPACE
AX = F216h subfn 28h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1830)
ES:DI -> reply buffer (see #1831)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=02h,AX=F216h/SF=20h
Format of NetWare "Scan Directory Disk Space" request packet:
Offset Size Description (Table 1830)
00h WORD length of following data
02h BYTE 28h (subfunction "Scan Directory Disk Space")
03h BYTE directory handle
04h BYTE search attributes
05h DWORD sequence number (set to FFFFFFFFh before first call)
09h BYTE length of filespec
0Ah N BYTEs search filespec
SeeAlso: #1831
Format of NetWare "Scan Directory Disk Space" reply packet:
Offset Size Description (Table 1831)
00h DWORD next sequence number
04h DWORD (big-endian) subdirectory number
08h DWORD (big-endian) attributes
0Ch BYTE unique ID
0Dh BYTE flags
0Eh BYTE name space (see #2075)
0Fh BYTE length of name
10h 12 BYTEs name
1Ch DWORD creation date and time
20h DWORD owner ID
24h DWORD date and time last backed up
28h DWORD last-backup ID
2Ch DWORD date and time last modified
30h DWORD last-modification ID
34h DWORD data fork size
38h DWORD data fork first FAT
3Ch DWORD next trustee entry
40h 36 BYTEs reserved
64h WORD inherited rights mask
66h WORD last-access date
68h DWORD deleted file date and time
6Ch DWORD date and time file was deleted
70h DWORD deleted ID
74h 8 BYTEs undefined
7Ch DWORD primary entry
80h DWORD name list
84h DWORD other file fork size
SeeAlso: #1830
--------N-21F216SF29-------------------------
INT 21 - Novell NetWare v3+ - GET OBJECT DISK USAGE AND RESTRICTIONS
AX = F216h subfn 29h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1832)
ES:DI -> reply buffer (see #1833)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Note: this function returns successfully, showing no restriction, if an
invalid object ID is specified
SeeAlso: AX=F216h/SF=24h,AX=F216h/SF=33h
Format of NetWare "Get Object Disk Restrictions" request buffer:
Offset Size Description (Table 1832)
00h WORD 0006h (length of following data)
02h BYTE 21h (subfunction "Get Object Disk Restrictions")
03h BYTE volume number
04h DWORD (big-endian) object ID
SeeAlso: #1833
Format of NetWare "Get Object Disk Restrictions" reply buffer:
Offset Size Description (Table 1833)
00h DWORD disk space limit
04h DWORD disk space currently in use by object
SeeAlso: #1832
--------N-21F216SF2A-------------------------
INT 21 - Novell NetWare - GET EFFECTIVE RIGHTS
AX = F216h subfn 2Ah
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1834)
ES:DI -> reply buffer (see #1835)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=32h
Format of NetWare "Get Effective Rights" request packet:
Offset Size Description (Table 1834)
00h WORD length of following data
02h BYTE 2Ah (subfunction "Get Effective Rights")
???
--------N-21F216SF2B-------------------------
INT 21 - Novell NetWare - REMOVE EXTENDED TRUSTEE FROM DIR OR FILE
AX = F216h subfn 2Bh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1805,#1835)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=26h,AX=F216h/SF=27h
Format of NetWare "Remove Extended Trustee From Dir Or File" request packet:
Offset Size Description (Table 1835)
00h WORD length of following data
02h BYTE 2Bh (subfunction "Remove Extended Trustee From Dir Or File")
03h BYTE directory handle
04h DWORD trustee's object ID
08h BYTE unused
09h BYTE length of pathname
0Ah N BYTEs directory path in form VOLUME:DIRECTORY/.../DIRECTORY
--------N-21F216SF2C-------------------------
INT 21 - Novell NetWare - GET VOLUME USAGE
AX = F216h subfn 2Ch
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1836)
ES:DI -> reply buffer (see #1837)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=20h,AX=F216h/SF=29h
Format of NetWare "Get Volume Usage" request packet:
Offset Size Description (Table 1836)
00h WORD length of following data
02h BYTE 2Ch (subfunction "Get Volume Usage")
???
--------N-21F216SF2D-------------------------
INT 21 - Novell NetWare - GET DIRECTORY INFORMATION
AX = F216h subfn 2Dh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1837)
ES:DI -> reply buffer (see #1838)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=2Ch,AX=F216h/SF=2Eh
Format of NetWare "Get Directory Information" request packet:
Offset Size Description (Table 1837)
00h WORD length of following data
02h BYTE 2Dh (subfunction "Get Directory Information")
03h BYTE directory handle
SeeAlso: #1838
Format of NetWare "Get Directory Information" reply packet:
Offset Size Description (Table 1838)
00h DWORD total blocks
04h DWORD available blocks
08h DWORD total number of directory entries
0Ch DWORD number of available directory entries
10h 4 BYTEs reserved
14h BYTE sectors per block
15h BYTE length of volume name
16h N BYTEs volume name
SeeAlso: #1837
--------N-21F216SF2E-------------------------
INT 21 - Novell NetWare - RENAME OR MOVE
AX = F216h subfn 2Eh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1839)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=34h,AX=F223h/SF=07h,AX=F244h
Format of NetWare "Rename Or Move" request packet:
Offset Size Description (Table 1839)
00h WORD length of following data
02h BYTE 2Eh (subfunction "Rename Or Move")
03h BYTE source directory handle
04h BYTE search attributes
05h BYTE source path component count
06h N BYTEs source path
BYTE destination directory handle
BYTE destination path component count
N BYTEs destination path
--------N-21F216SF2F-------------------------
INT 21 - Novell NetWare - GET NAME SPACE INFORMATION
AX = F216h subfn 2Fh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1840)
ES:DI -> reply buffer (see #1841)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=30h,AX=F257h/SF=18h
Format of NetWare "Get Name Space Information" request packet:
Offset Size Description (Table 1840)
00h WORD length of following data
02h BYTE 2Fh (subfunction "Get Name Space Information")
03h BYTE volume number
SeeAlso: #1841
Format of NetWare "Get Name Space Information" request packet:
Offset Size Description (Table 1841)
00h BYTE length of namespace name
01h N BYTEs name of namespace
BYTE number of data streams
var data stream information [one entry per data stream]
Offset Size Description
00h BYTE associated name space
01h BYTE length of data stream name
02h N BYTEs data stream name
BYTE number of loaded name spaces
BYTE bitmap of loaded name spaces
N BYTEs list of name spaces being used
BYTE index number
SeeAlso: #1840
--------N-21F216SF30-------------------------
INT 21 - Novell NetWare - GET NAME SPACE DIRECTORY ENTRY
AX = F216h subfn 30h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1842)
ES:DI -> reply buffer (see #1843)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=2Fh
Format of NetWare "Get Name Space Directory Entry" request packet:
Offset Size Description (Table 1842)
00h WORD length of following data
02h BYTE 30h (subfunction "Get Name Space Directory Entry")
03h BYTE volume number
04h DWORD sequence number (set to 00000000h before first call)
08h BYTE name space (see #2075)
SeeAlso: #1843
Format of NetWare "Get Name Space Directory Entry" request packet:
Offset Size Description (Table 1843)
00h DWORD next sequence number
04h DWORD subdirectory
08h DWORD attributes
0Ch BYTE unique ID
0Dh BYTE flags
0Eh BYTE name space (see #2075)
0Fh BYTE length of name
10h 12 BYTEs filename
1Ch DWORD creation date and time
20h DWORD (big-endian) owner ID
24h DWORD last-backup date and time
28h DWORD (big-endian) last-backup ID
2Ch DWORD last-modification date and time
---DOS file---
30h DWORD (big-endian) last-modification ID
34h DWORD file size
38h 44 BYTEs reserved
64h WORD inherited rights mask
66h WORD last-access date
68h 28 BYTEs reserved
---DOS subdirectory---
30h DWORD next trustee entry
34h 48 BYTEs reserved
64h WORD maximum space
66h WORD inherited rights mask
68h 26 BYTEs reserved
---Macintosh subdirectory---
10h 32 BYTEs Mac filename
30h DWORD resource fork
34h DWORD resource fork size
38h 32 BYTEs Finder information
58h 6 BYTEs ProDOS information
5Eh 38 BYTEs reserved
SeeAlso: #1842
--------N-21F216SF31-------------------------
INT 21 - Novell NetWare - OPEN DATA STREAM
AX = F216h subfn 31h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1844)
ES:DI -> reply buffer (see #1845)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=30h
Format of NetWare "Open Data Stream" request packet:
Offset Size Description (Table 1844)
00h WORD length of following data
02h BYTE 31h (subfunction "Open Data Stream")
03h BYTE data stream
04h BYTE directory handle
05h BYTE file attributes
06h BYTE open rights
07h BYTE length of filename
08h N BYTEs filename (8.3)
SeeAlso: #1845
Format of NetWare "Open Data Stream" reply packet:
Offset Size Description (Table 1845)
00h DWORD file handle
SeeAlso: #1844
--------N-21F216SF32-------------------------
INT 21 - Novell NetWare v2.2+ - GET OBJECT EFFECTIVE RIGHTS
AX = F216h subfn 32h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1846)
ES:DI -> reply buffer (see #1847)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F216h/SF=29h
Format of NetWare "Get Object Effective Rights" request buffer:
Offset Size Description (Table 1846)
00h WORD length of following data
02h BYTE 32h (subfunction "Get Object Effective Rights")
03h DWORD object ID
07h BYTE directory handle
08h var counted path string
SeeAlso: #1847
Format of NetWare "Get Object Effective Rights" reply buffer:
Offset Size Description (Table 1847)
00h WORD object's effective rights
02h 6 BYTEs reserved
SeeAlso: #1846
--------N-21F216SF33-------------------------
INT 21 - Novell NetWare v2.2+ - GET EXTENDED VOLUME INFORMATION
AX = F216h subfn 33h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1848)
ES:DI -> reply buffer (see #1849)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F216h/SF=29h
Format of NetWare "Get Extended Volume Information" request buffer:
Offset Size Description (Table 1848)
00h WORD length of following data
02h BYTE 33h (subfunction "Get Extended Volume Information")
---v2.2---
03h BYTE volume ID
---v4.x---
03h DWORD volume number
SeeAlso: #1849
Format of NetWare "Get Extended Volume Information" reply buffer:
Offset Size Description (Table 1849)
00h WORD length of returned data
02h DWORD volume type
06h DWORD status flag bits
bit 0: suballocation
bit 1: compressoin
bit 2: migration
bit 3: auditing
0Ah DWORD sector size
0Eh DWORD sectors per cluster
12h DWORD total clusters in volume
16h DWORD free clusters
1Ah DWORD freeable suballocated clusters
1Eh DWORD freeable in-limbo sectors
22h DWORD non-freeable in-limbo sectors
26h DWORD non-freeable available suballocated sectors
2Ah DWORD unuable suballocated sectors
2Eh DWORD total suballocated clusters
32h DWORD number of data streams
36h DWORD number of in-limbo data streams
3Ah DWORD age of oldest deleted file in clock ticks
3Eh DWORD number of compressed data streams
42h DWORD number of compressed in-limbo data streams
46h DWORD number of uncompressable data streams
4Ah DWORD number of precompressed sectors
4Eh DWORD number of compressed sectors
52h DWORD number of migrated files
56h DWORD number of migrated sectors
5Ah DWORD number of clusters used by FAT
5Eh DWORD number of clusters used by directories
62h DWORD number of clusters used by extended directories
66h DWORD total number of directory entries
6Ah DWORD number of unused directory entries
6Eh DWORD total number of extended directory extants
72h DWORD number of unused extended directory extants
76h DWORD number of extended attributes defined (see AX=F256h/SF=04h)
7Ah DWORD number of extended-attribute extants used
7Eh DWORD object ID for Directory Services
82h DWORD date and time volume last modified
86h var counted volume name string
SeeAlso: #1848
--------N-21F217SF01-------------------------
INT 21 - Novell NetWare - CHANGE USER PASSWORD (OLD)
AX = F217h subfn 01h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1579 at AH=E3h/SF=01h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Note: this function requires an object of type USER, unlike the newer
password changing function AX=F217h/SF=40h
SeeAlso: AH=F2h"Novell",AH=E3h/SF=01h,AX=F217h/SF=02h,AX=F217h/SF=40h
--------N-21F217SF02-------------------------
INT 21 - Novell NetWare - GET USER CONNECTION LIST (OLD)
AX = F217h subfn 02h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1580 at AH=E3h/SF=02h)
ES:DI -> reply buffer (see #1850)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=02h,AX=F217h/SF=01h,AX=F217h/SF=0Ch
Format of NetWare "Get User Connection List (old)" reply packet:
Offset Size Description (Table 1850)
00h BYTE length of connection list
01h BYTE number of bytes in connection list
02h N BYTEs list of connection numbers in use by user
SeeAlso: #1580
--------N-21F217SF0C-------------------------
INT 21 - Novell NetWare - VERIFY SERIALIZATION
AX = F217h subfn 0Ch
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1584 at AH=E3h/SF=0Ch)
ES:DI -> reply buffer (see #1851)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=0Ch,AX=F217h/SF=12h
Format of NetWare "Verify Serialization" reply packet:
Offset Size Description (Table 1851)
00h WORD server application number
SeeAlso: #1584
--------N-21F217SF0E-------------------------
INT 21 - Novell NetWare - GET DISK UTILIZATION
AX = F217h subfn 0Eh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1588 at AH=E3h/SF=0Eh)
ES:DI -> reply buffer (see #1852)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=0Eh,AX=F217h/SF=D6h
Format of NetWare "Get Disk Utilization" reply packet:
Offset Size Description (Table 1852)
00h BYTE volume number (00h-1Fh)
01h DWORD (big-endian) object ID
05h WORD (big-endian) directories used by object
07h WORD (big-endian) files created by object
09h WORD (big-endian) disk blocks used by object-created files
SeeAlso: #1588 at AH=E3h/SF=0Eh
--------N-21F217SF0F-------------------------
INT 21 - Novell NetWare - SCAN FILE INFORMATION
AX = F217h subfn 0Fh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1591 at AH=E3h/SF=0Fh)
ES:DI -> reply buffer (see #1853)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=0Fh,AX=F217h/SF=10h
Format of NetWare "Scan File Information" reply packet:
Offset Size Description (Table 1853)
00h WORD next sequence number (place in request buffer for next call)
02h 14 BYTEs ASCIZ filename
10h BYTE file attributes (see #1107 at AX=4301h)
11h BYTE extended file attributes (see #1492 at AH=B6h)
12h DWORD (big-endian) file size in bytes
16h WORD (big-endian) file's creation date (see #1352 at AX=5700h)
18h WORD (big-endian) date of last access (see #1351 at AX=5700h)
1Ah DWORD (big-endian) date and time of last update (see #1534)
1Eh DWORD (big-endian) object ID of owner
22h DWORD (big-endian) date and time last archived (see #1534)
26h 55 BYTEs reserved
SeeAlso: #1591 at AH=E3h/SF=0Fh
--------N-21F217SF10-------------------------
INT 21 - Novell NetWare - SET FILE INFORMATION
AX = F217h subfn 10h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1593 at AH=E3h/SF=10h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=10h,AX=F217h/SF=0Fh
--------N-21F217SF11-------------------------
INT 21 - Novell NetWare - GET FILE SERVER INFORMATION
AX = F217h subfn 11h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1595 at AH=E3h/SF=11h)
ES:DI -> reply buffer (see #1854)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=11h,AX=F217h/SF=F1h
Format of NetWare "Get File Server Information" reply packet:
Offset Size Description (Table 1854)
00h 48 BYTEs server's name
30h BYTE NetWare version
31h BYTE NetWare subversion (0-99)
32h WORD (big-endian) number of connections supported
NetWare 4.01 reportedly returns maximum simulataneously-used
connections
34h WORD (big-endian) number of connections in use
36h WORD (big-endian) maximum connected volumes
---Advanced NetWare 2.1+ ---
38h BYTE operating system revision number
39h BYTE fault tolerance (SFT) level
3Ah BYTE TTS level
3Bh WORD (big-endian) maximum simultaneously-used connections
NetWare 4.01 reportedly returns number of connections in use
3Dh BYTE accounting version
3Eh BYTE VAP version
3Fh BYTE queueing version
40h BYTE print server version
41h BYTE virtual console version
42h BYTE security restrictions level
43h BYTE internetwork bridge version
44h 60 BYTEs reserved
SeeAlso: #1595
--------N-21F217SF12-------------------------
INT 21 - Novell NetWare - GET NETWORK SERIAL NUMBER
AX = F217h subfn 12h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1597 at AH=E3h/SF=12h)
ES:DI -> reply buffer (see #1855)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=12h,AX=F217h/SF=0Ch
Format of NetWare "Get Network Serial Number" reply packet:
Offset Size Description (Table 1855)
00h 4 BYTEs (big-endian) NetWare server serial number
04h 2 BYTEs (big-endian) NetWare application serial number
SeeAlso: #1597 at AH=E3h/SF=12h
--------N-21F217SF13-------------------------
INT 21 - Novell NetWare - GET INTERNET ADDRESS (OLD)
AX = F217h subfn 13h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1599 at AH=E3h/SF=13h)
ES:DI -> reply buffer (see #1856)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=13h,AX=F217h/SF=1Ah
Format of NetWare "Get Internet Address (old)" reply packet:
Offset Size Description (Table 1856)
00h 4 BYTEs network number
04h 6 BYTEs physical node address
0Ah 2 BYTEs socket number
SeeAlso: #1599 at AH=E3h/SF=13h,#1862
--------N-21F217SF14-------------------------
INT 21 - Novell NetWare - LOGIN OBJECT
AX = F217h subfn 14h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1601 at AH=E3h/SF=14h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=14h,AX=F216h/SF=18h,AX=F217h/SF=CCh
SeeAlso: AX=F258h/SF=03h,AX=F268h/SF=3Dh
--------N-21F217SF15-------------------------
INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST (OLD)
AX = F217h subfn 15h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1603 at AH=E3h/SF=15h)
ES:DI -> reply buffer (see #1857)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=15h,AX=F217h/SF=1Bh
Format of NetWare "Get Object Connection List (old)" reply packet:
Offset Size Description (Table 1857)
00h BYTE number of connections
01h N BYTEs connection list
SeeAlso: #1603
--------N-21F217SF16-------------------------
INT 21 - Novell NetWare - GET CONNECTION INFORMATION (OLD)
AX = F217h subfn 16h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1858)
ES:DI -> reply buffer (see #1859)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=1Ch,AX=F217h/SF=1Fh
Format of NetWare "Get Connection Information (old)" request packet:
Offset Size Description (Table 1858)
00h WORD 0002h (length of following data)
02h BYTE 16h (subfunction "Get Connection Information (old)")
03h BYTE target connection number
Note: connection numbers greater than the maximum supported by the server
can cause ABENDs
SeeAlso: #1859
Format of NetWare "Get Connection Information (old)" reply packet:
Offset Size Description (Table 1859)
00h DWORD (big-endian) unique user ID, 00000000h if no one logged in
04h WORD (big-endian) user type
06h 48 BYTEs user name
36h 7 BYTEs login time (see #1775)
3Dh BYTE reserved
SeeAlso: #1858
--------N-21F217SF17-------------------------
INT 21 - Novell NetWare - GET ENCRYPTION KEY
AX = F217h subfn 17h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1860)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=18h,AX=F217h/SF=4Ah,AX=F217h/SF=4Bh
Format of NetWare "Get Encryption Key" request packet:
Offset Size Description (Table 1860)
00h WORD length of following data
02h BYTE 17h (subfunction "Get Encryption Key")
???
--------N-21F217SF18-------------------------
INT 21 - Novell NetWare - LOGIN OBJECT ENCRYPTED
AX = F217h subfn 18h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1861)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=14h,AX=F217h/SF=17h
Format of NetWare "Login Object Encrypted" request packet:
Offset Size Description (Table 1861)
00h WORD length of following data
02h BYTE 18h (subfunction "Login Object Encrypted")
???
--------N-21F217SF1A-------------------------
INT 21 - Novell NetWare - GET INTERNET ADDRESS
AX = F217h subfn 1Ah
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1862)
ES:DI -> reply buffer (see #1863)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=13h
Format of NetWare "Get Internet Address" request packet:
Offset Size Description (Table 1862)
00h WORD length of following data
02h BYTE 1Ah (subfunction "Get Internet Address")
03h DWORD target connection ID
SeeAlso: #1863
Format of NetWare "Get Internet Address" reply packet:
Offset Size Description (Table 1863)
00h 4 BYTEs network number
04h 6 BYTEs physical node address
0Ah 2 BYTEs socket number
0Ch BYTE connection type
00h not in use
02h NCP
03h AFP
SeeAlso: #1862
--------N-21F217SF1B-------------------------
INT 21 - Novell NetWare - GET OBJECT CONNECTION LIST
AX = F217h subfn 1Bh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1864)
ES:DI -> reply buffer (see #1865)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=15h
Format of NetWare "Get Object Connection List" request packet:
Offset Size Description (Table 1864)
00h WORD length of following data
02h BYTE 1Bh (subfunction "Get Object Connection List")
03h DWORD search connection number
set to highest connection number returned by previous call, or
00000000h before first call
07h WORD object type
09h BYTE length of object's name
0Ah N BYTEs object name
SeeAlso: #1865
Format of NetWare "Get Object Connection List" reply packet:
Offset Size Description (Table 1865)
00h BYTE length of connection number list
01h N WORDs array of server connection numbers
SeeAlso: #1864
--------N-21F217SF1C-------------------------
INT 21 - Novell NetWare v3+ - GET CONNECTION INFORMATION
AX = F217h subfn 1Ch
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1866)
ES:DI -> reply buffer (see #1867)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=16h,AX=F217h/SF=1Fh
Format of NetWare "Get Connection Information" request packet:
Offset Size Description (Table 1866)
00h WORD 0005h (length of following data)
02h BYTE 1Ch (subfunction "Get Connection Information")
03h DWORD target connection number
Note: connection numbers greater than the maximum supported by the server
can cause ABENDs
SeeAlso: #1867,#1858
Format of NetWare "Get Connection Information" reply packet:
Offset Size Description (Table 1867)
00h DWORD (big-endian) unique user ID, 00000000h if no one logged in
04h WORD (big-endian) user type
06h 48 BYTEs user name
36h 7 BYTEs login time (see #1775)
3Dh BYTE reserved
SeeAlso: #1866,#1859
--------N-21F217SF1D-------------------------
INT 21 - Novell NetWare v4 - CHANGE CONNECTION STATE
AX = F217h subfn 1Dh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1868)
ES:DI -> reply buffer
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Change Connection State" requst buffer:
Offset Size Description (Table 1868)
00h WORD length of following data
02h BYTE 1Dh (subfunction "Change Connection State")
03h DWORD new state
--------N-21F217SF1E-------------------------
INT 21 - Novell NetWare v4 - SET WATCHDOG DELAY INTERVAL
AX = F217h subfn 1Eh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1869)
ES:DI -> reply buffer
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Set Watchdog Delay Interval" request buffer:
Offset Size Description (Table 1869)
00h WORD length of following data
02h BYTE 1Eh (subfunction "Set Watchdog Delay Interval")
03h DWORD interval in minutes
--------N-21F217SF1F-------------------------
INT 21 - Novell NetWare v4 - GET CONNECTION LIST
AX = F217h subfn 1Fh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1870)
ES:DI -> reply buffer (see #1871)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get Connection List" request buffer:
Offset Size Description (Table 1870)
00h WORD length of following data
02h BYTE 1Fh (subfunction "Get Connection List")
03h DWORD object ID
07h DWORD ??? (initialize to FFFFFFFFh before first call)
SeeAlso: #1871
Format of NetWare "Get Connection List" reply buffer:
Offset Size Description (Table 1871)
00h WORD number of connections following (max 50)
02h 50 DWORDs connection numbers
SeeAlso: #1870
--------N-21F217SF32-------------------------
INT 21 - Novell NetWare - CREATE BINDERY OBJECT
AX = F217h subfn 32h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1609 at AH=E3h/SF=32h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=32h,AX=F217h/SF=33h,AX=F217h/SF=34h
--------N-21F217SF33-------------------------
INT 21 - Novell NetWare - DELETE BINDERY OBJECT
AX = F217h subfn 33h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1611 at AH=E3h/SF=33h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=33h,AX=F217h/SF=32h,AX=F217h/SF=34h
--------N-21F217SF34-------------------------
INT 21 - Novell NetWare - RENAME BINDERY OBJECT
AX = F217h subfn 34h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1612 at AH=E3h/SF=34h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=34h,AX=F217h/SF=32h,AX=F217h/SF=33h
--------N-21F217SF35-------------------------
INT 21 - Novell NetWare - GET BINDERY OBJECT ID
AX = F217h subfn 35h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1613 at AH=E3h/SF=35h)
ES:DI -> reply buffer (see #1872)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=35h,AX=F217h/SF=36h,AX=F217h/SF=45h
Format of NetWare "Get Bindery Object ID" reply packet:
Offset Size Description (Table 1872)
00h DWORD (big-endian) object ID
04h WORD (big-endian) type of object
06h 48 BYTEs object name
SeeAlso: #1613 at AH=E3h/SF=35h
--------N-21F217SF36-------------------------
INT 21 - Novell NetWare - GET BINDERY OBJECT NAME
AX = F217h subfn 36h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1616 at AH=E3h/SF=36h)
ES:DI -> reply buffer (see #1873)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=36h,AX=F217h/SF=35h,AX=F217h/SF=37h
Format of NetWare "Get Bindery Object Name" reply packet:
Offset Size Description (Table 1873)
00h DWORD (big-endian) object ID
04h WORD (big-endian) type of object
06h 48 BYTEs object name
SeeAlso: #1616 at AH=E3h/SF=36h
--------N-21F217SF37-------------------------
INT 21 - Novell NetWare - SCAN BINDERY OBJECT
AX = F217h subfn 37h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1618 at AH=E3h/SF=37h)
ES:DI -> reply buffer (see #1874)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=37h,AX=F217h/SF=3Ch
Format of NetWare "Scan Bindery Object" reply packet:
Offset Size Description (Table 1874)
00h
SeeAlso: #1618
--------N-21F217SF38-------------------------
INT 21 - Novell NetWare - CHANGE BINDERY OBJECT SECURITY
AX = F217h subfn 38h
CX = length of request packet in bytes
DX = 0000h (no reply buffer)
DS:SI -> request packet (see #1620 at AH=E3h/SF=38h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=38h,AX=F217h/SF=32h
--------N-21F217SF39-------------------------
INT 21 - Novell NetWare - CREATE PROPERTY
AX = F217h subfn 39h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1622 at AH=E3h/SF=39h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=39h,AX=F217h/SF=3Ah
--------N-21F217SF3A-------------------------
INT 21 - Novell NetWare - DELETE PROPERTY
AX = F217h subfn 3Ah
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1624 at AH=E3h/SF=3Ah)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Ah,AX=F217h/SF=39h,AX=F217h/SF=3Bh
--------N-21F217SF3B-------------------------
INT 21 - Novell NetWare - CHANGE PROPERTY SECURITY
AX = F217h subfn 3Bh
CX = length of request packet in bytes
DX = 0000h (no reply buffer)
DS:SI -> request packet (see #1626 at AH=E3h/SF=3Bh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Bh
--------N-21F217SF3C-------------------------
INT 21 - Novell NetWare - SCAN PROPERTY
AX = F217h subfn 3Ch
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1627 at AH=E3h/SF=3Ch)
ES:DI -> reply buffer (see #1875)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Ch,AX=F217h/SF=39h,AX=F217h/SF=3Dh
Format of NetWare "Scan Property" reply packet:
Offset Size Description (Table 1875)
00h
SeeAlso: #1627
--------N-21F217SF3D-------------------------
INT 21 - Novell NetWare - READ PROPERTY VALUE
AX = F217h subfn 3Dh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1630 at AH=E3h/SF=3Dh)
ES:DI -> reply buffer (see #1876)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Dh,AX=F217h/SF=39h,AX=F217h/SF=3Eh
Format of NetWare "Read Property Value" request packet:
Offset Size Description (Table 1876)
00h
SeeAlso: #1630
--------N-21F217SF3E-------------------------
INT 21 - Novell NetWare - WRITE PROPERTY VALUE
AX = F217h subfn 3Eh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1632 at AH=E3h/SF=3Eh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Eh,AX=F217h/SF=39h,AX=F217h/SF=3Dh
--------N-21F217SF3F-------------------------
INT 21 - Novell NetWare - VERIFY BINDERY OBJECT PASSWORD
AX = F217h subfn 3Fh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1635 at AH=E3h/SF=3Fh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=3Fh,AX=F217h/SF=40h
--------N-21F217SF40-------------------------
INT 21 - Novell NetWare - CHANGE BINDERY OBJECT PASSWORD
AX = F217h subfn 40h
CX = length of request packet in bytes
DX = 0000h (no reply buffer)
DS:SI -> request packet (see #1636 at AH=E3h/SF=40h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=40h,AX=F217h/SF=3Fh
--------N-21F217SF41-------------------------
INT 21 - Novell NetWare v2.2+ - ADD OBJECT TO SET
AX = F217h subfn 41h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1639 at AH=E3h/SF=41h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Desc: add a member to an object's group property
SeeAlso: AH=F2h"Novell",AH=E3h/SF=41h,AX=F217h/SF=42h,AX=F217h/SF=43h
--------N-21F217SF42-------------------------
INT 21 - Novell NetWare - DELETE BINDERY OBJECT FROM SET
AX = F217h subfn 42h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1640 at AH=E3h/SF=42h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=42h,AX=F217h/SF=41h,AX=F217h/SF=43h
--------N-21F217SF43-------------------------
INT 21 - Novell NetWare - IS BINDERY OBJECT IN SET?
AX = F217h subfn 43h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1642 at AH=E3h/SF=43h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=43h,AX=F217h/SF=41h,AX=F217h/SF=42h
--------N-21F217SF44-------------------------
INT 21 - Novell NetWare - CLOSE BINDERY
AX = F217h subfn 44h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1643 at AH=E3h/SF=44h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=44h,AX=F217h/SF=45h
--------N-21F217SF45-------------------------
INT 21 - Novell NetWare - OPEN BINDERY
AX = F217h subfn 45h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1644 at AH=E3h/SF=45h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=45h,AX=F217h/SF=44h
--------N-21F217SF46-------------------------
INT 21 - Novell NetWare - GET BINDERY ACCESS LEVEL
AX = F217h subfn 46h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1645 at AH=E3h/SF=46h)
ES:DI -> reply buffer (see #1877)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=46h,AX=F217h/SF=45h
Format of NetWare "Get Bindery Access Level" reply packet:
Offset Size Description (Table 1877)
00h BYTE security levels
01h DWORD (big-endian) object ID
SeeAlso: #1645,#1646 at AH=E3h/SF=46h
--------N-21F217SF47-------------------------
INT 21 - Novell NetWare - SCAN BINDERY OBJECT TRUSTEE PATHS
AX = F217h subfn 47h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1647 at AH=E3h/SF=47h)
ES:DI -> reply buffer (see #1878)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=47h,AX=F216h/SF=0Ch,AX=F217h/SF=48h
Format of NetWare "Scan Bindery Object Trustee Paths" reply packet:
Offset Size Description (Table 1878)
00h WORD (big-endian) next sequence number
02h DWORD (big-endian) object ID
06h BYTE trustee directory rights (see #1537 at AH=E2h/SF=03h)
07h BYTE length of trustee path
08h N BYTEs trustee path
SeeAlso: #1647,#1648 at AH=E3h/SF=47h
--------N-21F217SF48-------------------------
INT 21 - Novell NetWare - GET BINDERY OBJECT ACCESS LEVEL
AX = F217h subfn 48h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1879)
ES:DI -> reply buffer (see #1880)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=45h,AX=F217h/SF=46h
Format of NetWare "Get Bindery Object Access Level" request packet:
Offset Size Description (Table 1879)
00h WORD length of following data (max ABh)
02h BYTE 48h (subfunction "Get Bindery Object Access Level")
03h DWORD object ID
SeeAlso: #1880
Format of NetWare "Get Bindery Object Access Level" reply packet:
Offset Size Description (Table 1880)
00h BYTE object access level
SeeAlso: #1879
--------N-21F217SF49-------------------------
INT 21 - Novell NetWare - IS STATION A MANAGER?
AX = F217h subfn 49h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1881)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=43h
Format of NetWare "Is Station A Manager?" request packet:
Offset Size Description (Table 1881)
00h WORD length of following data
02h BYTE 49h (subfunction "Is Station A Manager?")
03h DWORD object ID
--------N-21F217SF4A-------------------------
INT 21 - Novell NetWare - KEYED VERIFY BINDERY OBJECT PASSWORD
AX = F217h subfn 4Ah
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1882)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=4Bh
Format of NetWare "Keyed Verify Bindery Object Password" request packet:
Offset Size Description (Table 1882)
00h WORD length of following data
02h BYTE 4Ah (subfunction "Keyed Verify Bindery Object Password")
03h 8 BYTEs key
0Bh WORD type
0Dh BYTE length of object's name
0Eh N BYTEs object name
SeeAlso: #1883
--------N-21F217SF4B-------------------------
INT 21 - Novell NetWare - KEYED CHANGE BINDERY OBJECT PASSWORD
AX = F217h subfn 4Bh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1883)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=4Ah
Format of NetWare "Keyed Change Bindery Object Password" request packet:
Offset Size Description (Table 1883)
00h WORD length of following data
02h BYTE 4Bh (subfunction "Keyed Change Bindery Object Password")
03h 8 BYTEs key
0Bh WORD type
0Dh BYTE length of object name
0Eh N BYTEs object name
BYTE length of new password
N BYTEs new password
SeeAlso: #1636
--------N-21F217SF4C-------------------------
INT 21 - Novell NetWare - LIST RELATIONS OF AN OBJECT
AX = F217h subfn 4Ch
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1884)
ES:DI -> reply buffer (see #1885)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=39h
Format of NetWare "List Relations Of An Object" request packet:
Offset Size Description (Table 1884)
00h WORD length of following data
02h BYTE 4Ch (subfunction "List Relations Of An Object")
03h DWORD last bindery ID seen (set to FFFFFFFFh on first call)
07h WORD object type
09h BYTE length of object's name
0Ah N BYTEs object's name
BYTE length of property name
N BYTEs property name
SeeAlso: #1885
Format of NetWare "List Relations Of An Object" reply packet:
Offset Size Description (Table 1885)
00h WORD number of relations returned
02h var relations
SeeAlso: #1884
--------N-21F217SF64-------------------------
INT 21 - Novell NetWare v2.1+ - CREATE QUEUE
AX = F217h subfn 64h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1650 at AH=E3h/SF=64h)
ES:DI -> reply buffer (see #1886)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=64h,AX=F217h/SF=65h,AX=F217h/SF=66h
Format of NetWare "Create Queue" reply packet:
Offset Size Description (Table 1886)
00h DWORD (big-endian) object ID of queue
SeeAlso: #1650,#1651
--------N-21F217SF65-------------------------
INT 21 - Novell NetWare v2.1+ - DESTROY QUEUE
AX = F217h subfn 65h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1652 at AH=E3h/SF=65h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=65h,AX=F217h/SF=64h,AX=F217h/SF=66h
--------N-21F217SF66-------------------------
INT 21 - Novell NetWare v2.1+ - READ QUEUE CURRENT STATUS (OLD)
AX = F217h subfn 66h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1653 at AH=E3h/SF=64h)
ES:DI -> reply buffer (see #1887)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=66h,AX=F217h/SF=64h,AX=F217h/SF=67h
Format of NetWare "Read Queue Current Status (Old)" reply packet:
Offset Size Description (Table 1887)
00h DWORD (big-endian) object ID of queue
04h BYTE status of queue (see #1655)
05h BYTE number of jobs in queue (00h-FAh)
06h BYTE number of servers attached to queue (00h-19h)
07h 25 DWORDs list of object IDs of attached servers
6Bh 25 BYTEs list of attached servers' stations
84h BYTE (call) maximum number of servers to return
SeeAlso: #1653,#1654 at AH=E3h/SF=66h
--------N-21F217SF67-------------------------
INT 21 - Novell NetWare v2.1+ - SET QUEUE CURRENT STATUS (OLD)
AX = F217h subfn 67h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1656 at AH=E3h/SF=67h)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=67h,AX=F217h/SF=66h,AX=F217h/SF=68h
--------N-21F217SF68-------------------------
INT 21 - Novell NetWare v2.1+ - CREATE QUEUE JOB AND FILE (OLD)
AX = F217h subfn 68h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1658 at AH=E3h/SF=68h)
ES:DI -> reply buffer (see #1888)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=68h,AX=F217h/SF=67h,AX=F217h/SF=69h
Format of NetWare "Create Queue Job And File (Old)" reply packet:
Offset Size Description (Table 1888)
00h BYTE client station
01h BYTE client task number
02h DWORD (big-endian) object ID of client
06h DWORD (big-endian) object ID of target server
0Ah 6 BYTEs target execution time (year,month,day,hour,minute,second)
10h 6 BYTEs job entry time (year,month,day,hour,minute,second)
16h WORD (big-endian) job number
18h WORD (big-endian) job type
1Ah BYTE job position
1Bh BYTE job control flags (see #1668)
1Ch 14 BYTEs ASCIZ job file name
2Ah 6 BYTEs job file handle
30h BYTE server station
31h BYTE server task number
32h DWORD (big-endian) object ID of server or 00000000h
SeeAlso: #1658,#1660
--------N-21F217SF69-------------------------
INT 21 - Novell NetWare v2.1+ - CLOSE FILE AND START QUEUE JOB (OLD)
AX = F217h subfn 69h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1661 at AH=E3h/SF=69h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=69h,AX=F217h/SF=6Ah,AX=F217h/SF=7Fh
--------N-21F217SF6A-------------------------
INT 21 - Novell NetWare v2.1+ - REMOVE JOB FROM QUEUE (OLD)
AX = F217h subfn 6Ah
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1663 at AH=E3h/SF=6Ah)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Ah,AX=F217h/SF=68h,AX=F217h/SF=69h
--------N-21F217SF6B-------------------------
INT 21 - Novell NetWare v2.1+ - GET QUEUE JOB LIST (OLD)
AX = F217h subfn 6Bh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1664 at AH=E3h/SF=6Bh)
ES:DI -> reply buffer (see #1889)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Bh,AX=F217h/SF=6Ah,AX=F217h/SF=6Ch
SeeAlso: AX=F217h/SF=81h
Format of NetWare "Get Queue Job List (old)" reply packet:
Offset Size Description (Table 1889)
00h WORD (big-endian) job count
02h N WORDs (big-endian) list of job numbers by position in queue
SeeAlso: #1664,#1665 at AH=E3h/SF=6Bh
--------N-21F217SF6C-------------------------
INT 21 - Novell NetWare v2.1+ - READ QUEUE JOB ENTRY (OLD)
AX = F217h subfn 6Ch
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1666 at AH=E3h/SF=6Ch)
ES:DI -> reply buffer (see #1890)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Ch,AX=F217h/SF=6Bh,AX=F217h/SF=6Dh
Format of NetWare "Read Queue Job Entry (old)" reply packet:
Offset Size Description (Table 1890)
00h BYTE client station number
01h BYTE client task number
02h DWORD object ID of client
06h DWORD (big-endian) object ID of target server
FFFFFFFFh if any server acceptable
0Ah 6 BYTEs target execution time (year,month,day,hour,minute,second)
FFFFFFFFFFFFh if serviced as soon as possible
10h 6 BYTEs job entry time (year,month,day,hour,minute,second)
16h WORD (big-endian) job number
18h WORD (big-endian) job type
1Ah BYTE job position
1Bh BYTE job control flags (see #1668)
1Ch 14 BYTEs ASCIZ job filename
2Ah 6 BYTEs job file handle
30h BYTE server station
31h BYTE server task number
32h DWORD object ID of server
36h 50 BYTEs ASCIZ job description string
68h 152 BYTEs client record area
SeeAlso: #1666,#1667
--------N-21F217SF6D-------------------------
INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY (OLD)
AX = F217h subfn 6Dh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1669 at AH=E3h/SF=6Dh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=7Bh,AH=E3h/SF=6Dh,AX=F217h/SF=6Ch
--------N-21F217SF6E-------------------------
INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB POSITION
AX = F217h subfn 6Eh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1670 at AH=E3h/SF=6Eh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=F217h/SF=6Dh,AH=E3h/SF=6Eh
--------N-21F217SF6F-------------------------
INT 21 - Novell NetWare v2.1+ - ATTACH QUEUE SERVER TO QUEUE
AX = F217h subfn 6Fh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1672 at AH=E3h/SF=6Fh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=6Fh,AX=F217h/SF=D2h
--------N-21F217SF70-------------------------
INT 21 - Novell NetWare v2.1+ - DETACH QUEUE SERVER FROM QUEUE
AX = F217h subfn 70h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1673 at AH=E3h/SF=70h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=70h,AX=F217h/SF=6Fh
--------N-21F217SF71-------------------------
INT 21 - Novell NetWare v2.1+ - SERVICE QUEUE JOB AND OPEN FILE
AX = F217h subfn 71h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1674 at AH=E3h/SF=71h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Notes: the caller must be on a workstation which is security-equivalent to a
member of the queue's Q_USERS, Q_OPERATORS, or Q_SERVERS properties
SeeAlso: AH=E3h/SF=71h,AX=F217h/SF=70h,AX=F217h/SF=72h
--------N-21F217SF72-------------------------
INT 21 - Novell NetWare v2.1+ - FINISH SERVICING QUEUE JOB (OLD)
AX = F217h subfn 72h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1675 at AH=E3h/SF=72h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=72h,AX=F217h/SF=71h,AX=F217h/SF=73h
SeeAlso: AX=F217h/SF=83h
--------N-21F217SF73-------------------------
INT 21 - Novell NetWare v2.1+ - ABORT SERVICING QUEUE JOB (OLD)
AX = F217h subfn 73h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1676 at AH=E3h/SF=73h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=73h,AX=F217h/SF=72h,AX=F217h/SF=84h
--------N-21F217SF74-------------------------
INT 21 - Novell NetWare v2.1+ - CHANGE TO CLIENT RIGHTS (OLD)
AX = F217h subfn 74h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1678 at AH=E3h/SF=74h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Desc: temporarily assume the login identity of the client submitting the
job being serviced
SeeAlso: AH=F2h"NetWare",AH=E3h/SF=74h,AX=F217h/SF=85h
--------N-21F217SF75-------------------------
INT 21 - Novell NetWare v2.1+ - RESTORE QUEUE SERVER RIGHTS
AX = F217h subfn 75h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1679 at AH=E3h/SF=75h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=75h,AX=F217h/SF=74h
--------N-21F217SF76-------------------------
INT 21 - Novell NetWare - READ QUEUE SERVER CURRENT STATUS (OLD)
AX = F217h subfn 76h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1680 at AH=E3h/SF=76h)
ES:DI -> reply buffer (see #1891)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=76h,AX=F217h/SF=74h,AX=F217h/SF=77h
Format of NetWare "Read Queue Server Current Status (old)" reply packet:
Offset Size Description (Table 1891)
00h 64 BYTEs server status record (format depends on server)
first four bytes should contain estimated "price" for an
average job
SeeAlso: #1680,#1681 at AH=E3h/SF=76h
--------N-21F217SF77-------------------------
INT 21 - Novell NetWare - SET QUEUE SERVER CURRENT STATUS
AX = F217h subfn 77h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1682 at AH=E3h/SF=77h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=77h,AX=F217h/SF=76h
--------N-21F217SF78-------------------------
INT 21 - Novell NetWare - GET QUEUE JOB FILE SIZE (OLD)
AX = F217h subfn 78h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1684 at AH=E3h/SF=78h)
ES:DI -> reply buffer (see #1892)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=78h,AX=F217h/SF=71h,AX=F217h/SF=79h
Format of NetWare "Get Queue Job File Size (old)" reply packet:
Offset Size Description (Table 1892)
00h DWORD (big-endian) object ID of queue
04h WORD (big-endian) job number
06h DWORD (big-endian) size of job file in bytes
SeeAlso: #1684,#1685 at AH=E3h/SF=78h
--------N-21F217SF79-------------------------
INT 21 - Novell NetWare - CREATE QUEUE JOB AND FILE
AX = F217h subfn 79h
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1893)
ES:DI -> reply buffer (see #1894)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=7Ah,AX=F217h/SF=7Bh
Format of NetWare "Create Queue Job And File" request packet:
Offset Size Description (Table 1893)
00h WORD length of following data
02h BYTE 79h (subfunction "Create Queue Job And File")
03h DWORD queue ID
07h 280 BYTEs queue job structure (see #1898)
SeeAlso: #1894,#1895,#1897
Format of NetWare "Create Queue Job And File" reply packet:
Offset Size Description (Table 1894)
00h 10 BYTEs reserved for future use
0Ah DWORD client station
0Eh DWORD client task
12h DWORD client ID
16h DWORD target server ID
1Ah 6 BYTEs target execution time year,month,day,hour,minute,second
(FFFFFFFFFFFFh = first opportunity)
20h 6 BYTEs job entry time
(set by queue manager)
26h DWORD job number (1-999) assigned by queue manager
2Ah WORD job type
2Ch WORD position of job in queue (0001h = first, etc.)
2Eh WORD job control flags (see #1668 at AH=E3h/SF=6Ch)
30h 14 BYTEs ASCIZ job file name
3Eh DWORD job file handle (set by queue manager)
42h DWORD server station (set by queue manager)
46h DWORD server task number (set by queue manager)
4Ah DWORD server object ID (set by queue manager)
SeeAlso: #1893,#1898
--------N-21F217SF7A-------------------------
INT 21 - Novell NetWare - READ QUEUE JOB ENTRY
AX = F217h subfn 7Ah
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1895)
ES:DI -> reply buffer (see #1896)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=79h,AX=F217h/SF=7Bh
Format of NetWare "Read Queue Job Entry" request packet:
Offset Size Description (Table 1895)
00h WORD length of following data
02h BYTE 7Ah (subfunction "Read Queue Job Entry")
03h DWORD queue ID
07h DWORD job entry number
SeeAlso: #1896,#1893,#1897
Format of NetWare "Read Queue Job Entry" reply packet:
Offset Size Description (Table 1896)
00h 280 BYTEs job structure (see #1898)
SeeAlso: #1895
--------N-21F217SF7B-------------------------
INT 21 - Novell NetWare v2.1+ - CHANGE QUEUE JOB ENTRY
AX = F217h subfn 7Bh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1897)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=6Dh,AX=F217h/SF=79h,AX=F217h/SF=7Dh
Format of NetWare "Change Queue Job Entry" request packet:
Offset Size Description (Table 1897)
00h WORD length of following data
02h BYTE 7Bh (subfunction "Change Queue Job Entry")
03h DWORD queue ID
07h 280 BYTEs job structure (see #1898)
SeeAlso: #1893,#1895
Format of NetWare v3.11+ job structure:
Offset Size Description (Table 1898)
00h WORD record-in-use flag
02h DWORD -> previous record
06h DWORD -> next record
0Ah DWORD client station connection number
0Eh DWORD client task number
(set by queue manager)
12h DWORD client object ID
16h DWORD target server object ID
1Ah 6 BYTEs target execution time year,month,day,hour,minute,second
(FFFFFFFFFFFFh = first opportunity)
20h 6 BYTEs job entry time
(set by queue manager)
26h DWORD job number (1-999) assigned by queue manager
2Ah WORD job type
2Ch WORD position of job in queue (0001h = first, etc.)
2Eh WORD job control flags (see #1668 at AH=E3h/SF=6Ch)
30h 14 BYTEs ASCIZ job file name
3Eh DWORD job file handle (set by queue manager)
42h DWORD server station (set by queue manager)
46h DWORD server task number (set by queue manager)
4Ah DWORD server object ID (set by queue manager)
4Eh 50 BYTEs ASCIZ job description string
80h 152 BYTEs client record area
SeeAlso: #1897,#1659
--------N-21F217SF7D-------------------------
INT 21 - Novell NetWare - READ QUEUE CURRENT STATUS
AX = F217h subfn 7Dh
CX = length of request packet in bytes
DX = length of reply buffer in bytes
DS:SI -> request packet (see #1899)
ES:DI -> reply buffer (see #1900)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=66h,AX=F217h/SF=79h,AX=F217h/SF=7Bh
SeeAlso: AX=F217h/SF=7Eh
Format of NetWare "Read Queue Current Status" request packet:
Offset Size Description (Table 1899)
00h WORD length of following data
02h BYTE 7Dh (subfunction "Read Queue Current Status")
03h DWORD (big-endian) object ID of queue
SeeAlso: #1900,#1901
Format of NetWare "Read Queue Current Status" reply packet:
Offset Size Description (Table 1900)
00h DWORD queue ID
04h DWORD queue status
bit 0: no more jobs can be added
bit 1: no more queue servers can be attached
bit 2: attached queu servers can not service queue jobs
08h DWORD current number of jobs in queue
0Ch DWORD number of servers attached to queue
10h N DWORDs attached server IDs
SeeAlso: #1899,#1654 at AH=E3h/SF=66h
--------N-21F217SF7E-------------------------
INT 21 - Novell NetWare - SET QUEUE CURRENT STATUS
AX = F217h subfn 7Eh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1901)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=7Dh
Format of NetWare "Set Queue Current Status" request packet:
Offset Size Description (Table 1901)
00h WORD length of following data
02h BYTE 7Eh (subfunction "Set Queue Current Status")
03h DWORD queue ID
07h DWORD queue status
bit 0: no more jobs can be added
bit 1: no more queue servers can be attached
bit 2: attached queu servers can not service queue jobs
SeeAlso: #1899
--------N-21F217SF7F-------------------------
INT 21 - Novell NetWare - CLOSE FILE AND START QUEUE JOB
AX = F217h subfn 7Fh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1902)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=69h,AX=F217h/SF=80h,AX=F217h/SF=81h
Format of NetWare "Close File And Start Queue Job" request packet:
Offset Size Description (Table 1902)
00h WORD length of following data
02h BYTE 7Fh (subfunction "Close File And Start Queue Job")
03h DWORD queue ID
07h DWORD job number
--------N-21F217SF80-------------------------
INT 21 - Novell NetWare - REMOVE JOB FROM QUEUE
AX = F217h subfn 80h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1903)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=6Ah,AX=F217h/SF=7Fh
Format of NetWare "Remove Job From Queue" request packet:
Offset Size Description (Table 1903)
00h WORD length of following data
02h BYTE 80h (subfunction "Remove Job From Queue")
03h DWORD queue ID
07h DWORD job number (returned when job was added to queue)
--------N-21F217SF81-------------------------
INT 21 - Novell NetWare - GET QUEUE JOB LIST
AX = F217h subfn 81h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1904)
ES:DI -> reply buffer (see #1905)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=6Bh
Format of NetWare "Get Queue Job List" request packet:
Offset Size Description (Table 1904)
00h WORD length of following data
02h BYTE 81h (subfunction "Get Queue Job List")
03h DWORD queue ID
07h DWORD address of next job in queue
SeeAlso: #1905
Format of NetWare "Get Queue Job List" reply packet:
Offset Size Description (Table 1905)
00h DWORD total jobs in queue
04h DWORD length of job number list (max 125)
08h N DWORDs list of job numbers in queue
SeeAlso: #1904
--------N-21F217SF82-------------------------
INT 21 - Novell NetWare v2.1+ - CHANGE JOB PRIORITY
AX = F217h subfn 82h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1906)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell"
Format of NetWare "Change Job Priority" request packet:
Offset Size Description (Table 1906)
00h WORD length of following data
02h BYTE 82h (subfunction "Change Job Priority")
03h DWORD queue ID
07h DWORD job number
0Bh DWORD priority
--------N-21F217SF83-------------------------
INT 21 - Novell NetWare v3.1+ - FINISH SERVICING QUEUE JOB
AX = F217h subfn 83h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1686 at AH=E3h/SF=83h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=83h,AX=F217h/SF=72h,AX=F217h/SF=84h
--------N-21F217SF84-------------------------
INT 21 - Novell NetWare v3.1+ - ABORT SERVICING QUEUE JOB
AX = F217h subfn 84h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1688 at AH=E3h/SF=84h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Desc: inform the Queue Management System (QMS) that the queue server is
unable to service a previously-accepted job
SeeAlso: AH=F2h"Novell",AH=E3h/SF=84h,AX=F217h/SF=73h,AX=F217h/SF=83h
--------N-21F217SF85-------------------------
INT 21 - Novell NetWare v3.1+ - CHANGE TO CLIENT RIGHTS
AX = F217h subfn 85h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1907)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Desc: temporarily assume the login identity of the client submitting the
job being serviced
SeeAlso: AH=F2h"NetWare",AH=E3h/SF=74h,AX=F217h/SF=74h
Format of NetWare "Change to Client Rights" request packet:
Offset Size Description (Table 1907)
00h WORD length of following data
02h BYTE 85h (subfunction "Change to Client Rights")
03h DWORD queue object ID
07h DWORD job number
SeeAlso: #1678
--------N-21F217SF86-------------------------
INT 21 - Novell NetWare v3.1+ - READ QUEUE SERVER CURRENT STATUS
AX = F217h subfn 86h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1908)
ES:DI -> reply buffer (see #1909)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=76h,AX=F217h/SF=77h,AX=F217h/SF=7Dh
Format of NetWare "Read Queue Server Current Status" request packet:
Offset Size Description (Table 1908)
00h WORD length of following data
02h BYTE 86h (subfunction "Read Queue Server Current Status")
03h DWORD queue ID
07h DWORD server ID
0Bh DWORD connection ID
SeeAlso: #1909
Format of NetWare "Read Queue Server Current Status" request packet:
Offset Size Description (Table 1909)
00h 64 BYTEs server status record
SeeAlso: #1908
--------N-21F217SF87-------------------------
INT 21 - Novell NetWare v3.1+ - GET QUEUE JOB FILE SIZE
AX = F217h subfn 87h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1910)
ES:DI -> reply buffer (see #1911)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=78h
Format of NetWare "Get Queue Job File Size" request packet:
Offset Size Description (Table 1910)
00h WORD length of following data
02h BYTE 87h (subfunction "Get Queue Job File Size")
???
SeeAlso: #1911
Format of NetWare "Get Queue Job File Size" request packet:
Offset Size Description (Table 1911)
00h ???
SeeAlso: #1910
--------N-21F217SF96-------------------------
INT 21 - Novell NetWare - GET ACCOUNT STATUS
AX = F217h subfn 96h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1691 at AH=E3h/SF=96h)
ES:DI -> reply buffer (see #1912)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=96h,AX=F217h/SF=97h,AX=F217h/SF=98h
Format of NetWare "Get Account Status" reply packet:
Offset Size Description (Table 1912)
00h DWORD (big-endian) account balance
04h DWORD (big-endian) credit limit
signed number indicating lowest allowable account balance
06h 120 BYTEs reserved
80h DWORD (big-endian) object ID, server 1
84h DWORD (big-endian) hold amount, server 1
...
F6h DWORD (big-endian) object ID, server 16
FAh DWORD (big-endian) hold amount, server 16
Note: the reply buffer lists the servers which have placed holds on a portion
of the account balance, and the amount reserved by each
SeeAlso: #1691,#1692 at AH=E3h/SF=96h
--------N-21F217SF97-------------------------
INT 21 - Novell NetWare - SUBMIT ACCOUNT CHARGE
AX = F217h subfn 97h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1693 at AH=E3h/SF=97h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=97h,AX=F217h/SF=96h,AX=F217h/SF=98h
--------N-21F217SF98-------------------------
INT 21 - Novell NetWare - SUBMIT ACCOUNT HOLD
AX = F217h subfn 98h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1694 at AH=E3h/SF=98h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=98h,AX=F217h/SF=97h,AX=F217h/SF=99h
--------N-21F217SF99-------------------------
INT 21 - Novell NetWare - SUBMIT ACCOUNT NOTE
AX = F217h subfn 99h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1696 at AH=E3h/SF=99h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=99h,AX=F217h/SF=96h,AX=F217h/SF=98h
--------N-21F217SFC8-------------------------
INT 21 - Novell NetWare - CHECK CONSOLE PRIVILEGES
AX = F217h subfn C8h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1697 at AH=E3h/SF=C8h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=C8h,AX=F217h/SF=C9h,AX=F217h/SF=D1h
--------N-21F217SFC9-------------------------
INT 21 - Novell NetWare - GET FILE SERVER DESCRIPTION STRINGS
AX = F217h subfn C9h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1698 at AH=E3h/SF=C9h)
ES:DI -> reply buffer (see #1913)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=C9h,AX=F217h/SF=C8h,AX=F217h/SF=CAh
Format of NetWare "Get File Server Description Strings" reply packet:
Offset Size Description (Table 1913)
00h var ASCIZ name of company distributing this copy of NetWare
var ASCIZ version and revision
9 BYTEs ASCIZ revision date (mm/dd/yy)
var ASCIZ copyright notice
SeeAlso: #1698,#1699 at AH=E3h/SF=C9h
--------N-21F217SFCA-------------------------
INT 21 - Novell NetWare - SET FILE SERVER DATE AND TIME
AX = F217h subfn CAh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1700 at AH=E3h/SF=CAh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CAh,AX=F217h/SF=C8h,AX=F217h/SF=CBh
--------N-21F217SFCB-------------------------
INT 21 - Novell NetWare - DISABLE FILE SERVER LOGIN
AX = F217h subfn CBh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1701 at AH=E3h/SF=CBh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CBh,AX=F217h/SF=C8h,AX=F217h/SF=CCh
--------N-21F217SFCC-------------------------
INT 21 - Novell NetWare - ENABLE FILE SERVER LOGIN
AX = F217h subfn CCh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1703 at AH=E3h/SF=CCh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CCh,AX=F217h/SF=C8h,AX=F217h/SF=CBh
--------N-21F217SFCD-------------------------
INT 21 - Novell NetWare - GET FILE SERVER LOGIN STATUS
AX = F217h subfn CDh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1704 at AH=E3h/SF=CDh)
ES:DI -> reply buffer (see #1914)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CDh,AX=F217h/SF=CBh,AX=F217h/SF=CCh
Format of NetWare "Get File Server Login Status" reply packet:
Offset Size Description (Table 1914)
00h BYTE login state (00h disabled, 01h enabled)
SeeAlso: #1704,#1705 at AH=E3h/SF=CDh
--------N-21F217SFCE-------------------------
INT 21 - Novell NetWare - PURGE ALL ERASED FILES
AX = F217h subfn CEh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1706 at AH=E3h/SF=CEh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CEh,AX=F244h
--------N-21F217SFCF-------------------------
INT 21 - Novell NetWare - DISABLE TRANSACTION TRACKING
AX = F217h subfn CFh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1707 at AH=E3h/SF=CFh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=CFh,AX=F217h/SF=D0h
--------N-21F217SFD0-------------------------
INT 21 - Novell NetWare - ENABLE TRANSACTION TRACKING
AX = F217h subfn D0h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1709 at AH=E3h/SF=D0h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D0h,AX=F217h/SF=CFh
--------N-21F217SFD1-------------------------
INT 21 - Novell NetWare - SEND CONSOLE BROADCAST
AX = F217h subfn D1h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1710 at AH=E3h/SF=D1h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D1h,AX=F217h/SF=D2h
--------N-21F217SFD2-------------------------
INT 21 - Novell NetWare v3+ - CLEAR CONNECTION NUMBER (LOGOUT STATION)
AX = F217h subfn D2h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1711 at AH=E3h/SF=D2h)
ES:DI ignored
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D2h,AX=F217h/SF=D1h,AX=F217h/SF=FEh
--------N-21F217SFD3-------------------------
INT 21 - Novell NetWare - DOWN FILE SERVER
AX = F217h subfn D3h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1714 at AH=E3h/SF=D3h)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D3h,AX=F217h/SF=D2h
--------N-21F217SFD4-------------------------
INT 21 - Novell NetWare - GET FILE SYSTEM STATISTICS
AX = F217h subfn D4h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1715 at AH=E3h/SF=D4h)
ES:DI -> reply buffer (see #1915)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D4h,AX=F217h/SF=D6h,AX=F217h/SF=D9h
Format of NetWare "Get File System Statistics" reply packet:
Offset Size Description (Table 1915)
00h DWORD clock ticks since system started
04h WORD maximum open files set by configuration
06h WORD maximum files open concurrently
08h WORD current number of open files
0Ah DWORD total files opened
0Eh DWORD total file read requests
12h DWORD total file write requests
16h WORD current changed FATs
18h WORD total changed FATs
1Ah WORD number of FAT write errors
1Ch WORD number of fatal FAT write errors
1Eh WORD number of FAT scan errors
20h WORD maximum concurrently-indexed files
22h WORD current number of indexed files
24h WORD number of attached indexed files
26h WORD number of indexed files available
Note: all fields are big-endian
SeeAlso: #1715,#1716 at AH=E3h/SF=D4h
--------N-21F217SFD5-------------------------
INT 21 - Novell NetWare - GET TRANSACTION TRACKING STATISTICS
AX = F217h subfn D5h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1717 at AH=E3h/SF=D5h)
ES:DI -> reply buffer (see #1916)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D5h,AX=F217h/SF=D0h
Format of NetWare "Get Transaction Tracking Statistics" reply packet:
Offset Size Description (Table 1916)
00h DWORD (big-endian) clock ticks since system started
04h BYTE transaction tracking supported if nonzero
(all following fields are invalid if zero)
05h BYTE transaction tracking enabled
06h WORD (big-endian) transaction volume number
08h WORD (big-endian) maximum simultaneous transactions configured
0Ah WORD (big-endian) maximum simultaneous transactions since startup
0Ch WORD (big-endian) current transactions in progress
0Eh DWORD (big-endian) total transactions performed
12h DWORD (big-endian) total write transactions
16h DWORD (big-endian) total transactions backed out
1Ah WORD (big-endian) number of unfilled backout requests
1Ch WORD (big-endian) disk blocks used for transaction tracking
1Eh DWORD (big-endian) blocks allocated for tracked-file FATs
22h DWORD (big-endian) number of file size changes during a transaction
26h DWORD (big-endian) number of file truncations during a transaction
2Ah BYTE number of records following
2Bh Active Transaction Records [array]
Offset Size Description
00h BYTE logical connection number
01h BYTE task number
SeeAlso: #1717,#1718 at AH=E3h/SF=D5h
--------N-21F217SFD6-------------------------
INT 21 - Novell NetWare - GET DISK CACHE STATISTICS
AX = F217h subfn D6h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1719 at AH=E3h/SF=D6h)
ES:DI -> reply buffer (see #1917)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D6h,AX=F217h/SF=D5h,AX=F217h/SF=D8h
Format of NetWare "Get Disk Cache Statistics" reply packet:
Offset Size Description (Table 1917)
00h DWORD clock ticks since system started
04h WORD number of cache buffers
06h WORD size of cache buffer in bytes
08h WORD number of dirty cache buffers
0Ah DWORD number of cache read requests
0Eh DWORD number of cache write requests
12h DWORD number of cache hits
16h DWORD number of cache misses
1Ah DWORD number of physical read requests
1Eh DWORD number of physical write requests
22h WORD number of physical read errors
24h WORD number of physical write errors
26h DWORD cache get requests
2Ah DWORD cache full write requests
2Eh DWORD cache partial write requests
32h DWORD background dirty writes
36h DWORD background aged writes
3Ah DWORD total cache writes
3Eh DWORD number of cache allocations
42h WORD thrashing count
44h WORD number of times LRU block was dirty
46h WORD number of reads on cache blocks not yet filled by writes
48h WORD number of times a fragmented write occurred
4Ah WORD number of cache hits on unavailable block
4Ch WORD number of times a cache block was scrapped
Note: all fields are big-endian
SeeAlso: #1719,#1720 at AH=E3h/SF=D6h
--------N-21F217SFD7-------------------------
INT 21 - Novell NetWare - GET DRIVE MAPPING TABLE
AX = F217h subfn D7h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1721 at AH=E3h/SF=D7h)
ES:DI -> reply buffer (see #1918)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=EF00h,AX=EF01h,AX=EF02h,AH=F2h"Novell",AH=E3h/SF=D7h
Format of NetWare "Get Drive Mapping Table" reply packet:
Offset Size Description (Table 1918)
00h DWORD (big-endian) clock tick elapsed since system started
04h BYTE fault tolerance (SFT) level
05h BYTE number of logical drives attached to server
06h BYTE number of physical drives attached to server
07h 5 BYTEs disk channel types (00h none, 01h XT, 02h AT, 03h SCSI,
04h disk coprocessor drive, 32h-FFh value-added drive types)
0Ch WORD (big-endian) number of outstanding controller commands
0Eh 32 BYTEs drive mapping table (FFh = no such drive)
2Eh 32 BYTEs drive mirror table (secondary physical drive, FFh = none)
4Eh 32 BYTEs dead mirror table (last drive mapped to, FFh if never mirrored)
6Eh BYTE physical drive being remirrored (FFh = none)
6Fh BYTE reserved
70h DWORD (big-endian) remirrored block
74h 60 BYTEs SFT error table (internal error counters)
SeeAlso: #1721,#1722 at AH=E3h/SF=D7h
--------N-21F217SFD8-------------------------
INT 21 - Novell NetWare - GET PHYSICAL DISK STATISTICS
AX = F217h subfn D8h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1723 at AH=E3h/SF=D8h)
ES:DI -> reply buffer (see #1919)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D8h,AX=F217h/SF=D9h
Format of NetWare "Get Physical Disk Statistics" request packet:
Offset Size Description (Table 1919)
00h DWORD (big-endian) clock ticks since system started
04h BYTE physical disk channel
05h BYTE flag: drive removable if nonzero
06h BYTE physical drive type
07h BYTE drive number within controller
08h BYTE controller number
09h BYTE controller type
0Ah DWORD (big-endian) size of drive in 4K disk blocks
0Eh WORD (big-endian) number of cylinders on drive
10h BYTE number of heads
11h BYTE number of sectors per track
12h 64 BYTEs ASCIZ drive make and model
52h WORD (big-endian) number of I/O errors
56h DWORD (big-endian) start of Hot Fix table
58h WORD (big-endian) size of Hot Fix table
5Ah WORD (big-endian) number of Hot Fix blocks available
5Ch BYTE flag: Hot Fix disabled if nonzero
SeeAlso: #1723,#1724 at AH=E3h/SF=D8h
--------N-21F217SFD9-------------------------
INT 21 - Novell NetWare - GET DISK CHANNEL STATISTICS
AX = F217h subfn D9h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1725 at AH=E3h/SF=D9h)
ES:DI -> reply buffer (see #1920)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=D9h,AX=F217h/SF=D8h
Format of NetWare "Get Disk Channel Statistics" reply packet:
Offset Size Description (Table 1920)
00h DWORD (big-endian) clock ticks since system started
04h WORD (big-endian) channel run state (see #1727)
06h WORD (big-endian) channel synchronization state (see #1728)
08h BYTE driver type
09h BYTE major version of driver
0Ah BYTE minor version of driver
0Bh 65 BYTEs ASCIZ driver description
4Ch WORD (big-endian) first I/O address used
4Eh WORD (big-endian) length of first I/O address
50h WORD (big-endian) second I/O address used
52h WORD (big-endian) length of second I/O address
54h 3 BYTEs first shared memory address
57h 2 BYTEs length of first shared memory address
59h 3 BYTEs second shared memory address
5Ch 2 BYTEs length of second shared memory address
5Eh BYTE first interrupt number in-use flag
5Fh BYTE first interrupt number used
60h BYTE second interrupt number in-use flag
61h BYTE second interrupt number used
62h BYTE first DMA channel in-use flag
63h BYTE first DMA channel used
64h BYTE second DMA channel in-use flag
65h BYTE second DMA channel used
66h BYTE flags
67h BYTE reserved
68h 80 BYTEs ASCIZ configuration description
SeeAlso: #1725,#1726 at AH=E3h/SF=D9h
--------N-21F217SFDA-------------------------
INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S TASK INFORMATION
AX = F217h subfn DAh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1729 at AH=E3h/SF=DAh)
ES:DI -> reply buffer (see #1921)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DAh,AX=F217h/SF=EAh
Format of NetWare "Get Connection's Task Information" reply packet:
Offset Size Description (Table 1921)
00h BYTE lock status of connection (see #1731)
01h var Lock Status Information (see #1732)
N BYTE number of records following
N+1 Active Task Information Records [array]
Offset Size Description
00h BYTE task number (01h-FFh)
01h BYTE task state
00h normal task
01h in TTS explicit transaction
02h in TTS implicit transaction
04h shared fileset lock active
SeeAlso: #1936,#1729,#1730 at AH=E3h/SF=DAh
--------N-21F217SFDB-------------------------
INT 21 - Novell NetWare v2.2+ - GET CONNECTION'S OPEN FILES (OLD)
AX = F217h subfn DBh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1733 at AH=E3h/SF=DBh)
ES:DI -> reply buffer (see #1922)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DBh,AX=F217h/SF=EBh
Format of NetWare "Get Connection's Open Files (old)" reply packet:
Offset Size Description (Table 1922)
00h WORD next request record (place in "last record" field on next call)
0000h if no more records
02h BYTE number of records following
03h var array of File Information Records (see #1735 at AH=E3h/SF=DBh)
SeeAlso: #1733,#1734 at AH=E3h/SF=DBh
--------N-21F217SFDC-------------------------
INT 21 - Novell NetWare v2.2+ - GET CONNECTIONS USING A FILE (OLD)
AX = F217h subfn DCh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1738 at AH=E3h/SF=DCh)
ES:DI -> reply buffer (see #1923)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DCh,AX=F217h/SF=ECh
Format of NetWare "Get Connections Using A File (old)" reply packet:
Offset Size Description (Table 1923)
00h WORD (big-endian) count of tasks which have opened or logged file
02h WORD (big-endian) count of tasks which have opened file
04h WORD (big-endian) count of opens for reading
06h WORD (big-endian) count of opens for writing
08h WORD (big-endian) deny read count
0Ah WORD (big-endian) deny write count
0Ch WORD next request record (place in "last record" field on next call)
0000h if no more records
0Eh BYTE locked flag
00h not locked exclusively
else locked exclusively
0Fh BYTE number of records following
10h var array of File Usage Information Records
(see #1740 at AH=E3h/SF=DCh)
SeeAlso: #1738,#1739 at AH=E3h/SF=DCh
--------N-21F217SFDD-------------------------
INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY CONNECTN AND FILE (OLD)
AX = F217h subfn DDh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1742 at AH=E3h/SF=DDh)
ES:DI -> reply buffer (see #1924)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DDh,AX=F217h/SF=DEh,AX=F217h/SF=EDh
Format of NetWare "Get Phys Record Locks By Conn & File (old)" reply packet:
Offset Size Description (Table 1924)
00h WORD next request record (place in "last record" on next call)
0000h if no more records
02h BYTE number of physical record locks
03h BYTE number of records following
04h var array of Physical Record Lock Info records
(see #1744 at AH=E3h/SF=DDh)
SeeAlso: #1742,#1743 at AH=E3h/SF=DDh
--------N-21F217SFDE-------------------------
INT 21 - Novell NetWare - GET PHYSICAL RECORD LOCKS BY FILE (OLD)
AX = F217h subfn DEh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1746 at AH=E3h/SF=DEh)
ES:DI -> reply buffer (see #1925)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DEh,AX=F217h/SF=EEh
Format of NetWare "Get Physical Record Locks By File (old)" reply packet:
Offset Size Description (Table 1925)
00h WORD next request record (place in "last record" on next call)
0000h if no more records
02h BYTE number of physical record locks
03h BYTE number of records following
04h var array of Physical Record Lock Info records (see #1748)
SeeAlso: #1746,#1747 at AH=E3h/SF=DEh
--------N-21F217SFDF-------------------------
INT 21 - Novell NetWare - GET LOGICAL RECORDS BY CONNECTION (OLD)
AX = F217h subfn DFh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1749 at AH=E3h/SF=DFh)
ES:DI -> reply buffer (see #1926)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=DFh,AX=F217h/SF=EFh
Format of NetWare "Get Logical Records By Connection (old)" reply packet:
Offset Size Description (Table 1926)
00h WORD next request record (place in "last record" field on next call)
0000h if no more locked records
02h BYTE number of records following
03h var array of Logical Lock Information Records
(see #1751 at AH=E3h/SF=DFh)
SeeAlso: #1749,#1750 at AH=E3h/SF=DFh
--------N-21F217SFE0-------------------------
INT 21 - Novell NetWare - GET LOGICAL RECORD INFORMATION (OLD)
AX = F217h subfn E0h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1752 at AH=E3h/SF=E0h)
ES:DI -> reply buffer (see #1927)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E0h,AX=F217h/SF=F0h
Format of NetWare "Get Logical Record Information (Old)" reply packet:
Offset Size Description (Table 1927)
00h WORD (big-endian) number of logical connections logging the record
02h WORD (big-endian) number of logical connections with shareable lock
04h WORD (big-endian) next request record (place in "last record" field
on next call)
06h BYTE locked exclusively if nonzero
07h BYTE number of records following
08h var array of Task Information Records (see #1754 at AH=E3h/SF=E0h)
SeeAlso: #1752,#1753 at AH=E3h/SF=E0h
--------N-21F217SFE1-------------------------
INT 21 - Novell NetWare - GET CONNECTION'S SEMAPHORES (OLD)
AX = F217h subfn E1h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1755 at AH=E3h/SF=E1h)
ES:DI -> reply buffer (see #1928)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E1h,AX=F217h/SF=F1h
Format of NetWare "Get Connection's Semaphores (old)" reply packet:
Offset Size Description (Table 1928)
00h WORD next request record (place in "last record" field on next call)
02h BYTE number of records following
03h var array of Semaphore Information Records
(see #1757 at AH=E3h/SF=E1h)
SeeAlso: #1755,#1756 at AH=E3h/SF=E1h
--------N-21F217SFE2-------------------------
INT 21 - Novell NetWare - GET SEMAPHORE INFORMATION (OLD)
AX = F217h subfn E2h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1758 at AH=E3h/SF=E2h)
ES:DI -> reply buffer (see #1929)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E2h,AX=F217h/SF=F2h
Format of NetWare "Get Semaphore Information (old)" reply packet:
Offset Size Description (Table 1929)
00h WORD next request record (place in "last record" on next call)
0000h if no more
02h WORD (big-endian) number of logical connections opening semaphore
04h BYTE semaphore value (-127 to 128)
05h BYTE number of records following
06h var array of Semaphore Information records (see #1760)
SeeAlso: #1758,#1759 at AH=E3h/SF=E2h
--------N-21F217SFE3-------------------------
INT 21 - Novell NetWare - GET LAN DRIVER'S CONFIGURATION INFORMATION
AX = F217h subfn E3h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1761 at AH=E3h/SF=E3h)
ES:DI -> reply buffer (see #1930)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E3h,AX=F217h/SF=E7h,AX=F217h/SF=E8h
Format of NetWare "Get Lan Driver's Configuration Information" reply packet:
Offset Size Description (Table 1930)
00h 4 BYTEs network number
04h 6 BYTEs node number
0Ah BYTE LAN driver installed (00h no--remaining fields invalid)
0Bh BYTE option number selected at configuration time
0Ch 160 BYTEs configuration text
ASCIZ hardware type
ASCIZ hardware settings
SeeAlso: #1761,#1762 at AH=E3h/SF=E3h
--------N-21F217SFE5-------------------------
INT 21 - Novell NetWare - GET CONNECTION'S USAGE STATISTICS
AX = F217h subfn E5h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1763 at AH=E3h/SF=E5h)
ES:DI -> reply buffer (see #1931)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E5h,AX=F217h/SF=EAh
Format of NetWare "Get Connection's Usage Statistics" reply packet:
Offset Size Description (Table 1931)
00h DWORD (big-endian) clock ticks since server started
04h 6 BYTEs bytes read
0Ah 6 BYTEs bytes written
10h DWORD (big-endian) total request packets
SeeAlso: #1763,#1764 at AH=E3h/SF=E5h
--------N-21F217SFE6-------------------------
INT 21 - Novell NetWare - GET OBJECT'S REMAINING DISK SPACE
AX = F217h subfn E6h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1765 at AH=E3h/SF=E6h)
ES:DI -> reply buffer (see #1932)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E6h,AX=F216h/SF=20h,AX=F216h/SF=23h
Format of NetWare "Get Object's Remaining Disk Space" reply packet:
Offset Size Description (Table 1932)
00h DWORD (big-endian) clock ticks elapsed since server started
04h DWORD (big-endian) object ID
08h DWORD (big-endian) 4K disk blocks available to user
0Ch BYTE restrictions (00h enforced, FFh not enforced)
SeeAlso: #1765,#1766 at AH=E3h/SF=E6h
--------N-21F217SFE7-------------------------
INT 21 - Novell NetWare - GET FILE SERVER LAN I/O STATISTICS
AX = F217h subfn E7h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1767 at AH=E3h/SF=E7h)
ES:DI -> reply buffer (see #1933)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E7h,AX=F217h/SF=11h,AX=F217h/SF=F5h
Format of NetWare "Get File Server Lan I/O Statistics" reply packet:
Offset Size Description (Table 1933)
00h DWORD clock ticks since system started
04h WORD total routing buffers
06h WORD maximum routing buffers used
08h WORD current routing buffers used
0Ah DWORD total file service packets
0Eh WORD number of file service packets buffered
10h WORD number of invalid connection packets
12h WORD packets with bad logical connection numbers
14h WORD number of packets received during processing
16h WORD number of requests reprocessed
18h WORD packets with bad sequence numbers
1Ah WORD number of duplicate replies sent
1Ch WORD number of acknowledgements sent
1Eh WORD number of packets with bad request types
20h WORD requests to attach to ws for which a request is being processed
22h WORD requests to attach from ws which is already attaching
24h WORD number of forged detach requests
26h WORD detach requests with bad connection number
28h WORD requests to detach from ws for which requests pending
2Ah WORD number of cancelled replies
2Ch WORD packets discarded due to excessive hop count
2Eh WORD packets discarded due to unknown net
30h WORD incoming packets discarded for lack of DGroup buffer
32h WORD outgoing packets discarded due to lack of buffer
34h WORD received packets destined for B,C, or D side drivers
36h DWORD number of NetBIOS packets propagated through net
3Ah DWORD total number of non-file-service packets
3Eh DWORD total number of routed packets
Note: all fields are big-endian
SeeAlso: #1767,#1768 at AH=E3h/SF=E7h
--------N-21F217SFE8-------------------------
INT 21 - Novell NetWare - GET FILE SERVER MISC INFORMATION
AX = F217h subfn E8h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1769 at AH=E3h/SF=E8h)
ES:DI -> reply buffer (see #1934)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E8h,AX=F217h/SF=11h,AX=F217h/SF=F5h
Format of NetWare "Get File Server Misc Information" reply packet:
Offset Size Description (Table 1934)
00h DWORD (big-endian) clock ticks since system started
04h BYTE CPU type
00h Motorola 68000
01h Intel 8086, 8088, or V20
02h Intel 80286+
05h BYTE reserved
06h BYTE number of service processes in server
07h BYTE server utilization in percent
08h WORD (big-endian) maximum bindery objects set by configuration
0000h = unlimited
0Ah WORD (big-endian) maximum number of bindery objects used
0Ch WORD (big-endian) current number of bindery objects in use
0Eh WORD (big-endian) total server memory in KB
10h WORD (big-endian) wasted server memory in KB
normally 0000h
12h WORD number of records following (01h-03h)
14h var array of Dynamic Memory Information records (see #1771)
SeeAlso: #1769,#1770 at AH=E3h/SF=E8h
--------N-21F217SFE9-------------------------
INT 21 - Novell NetWare - GET VOLUME INFORMATION
AX = F217h subfn E9h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1772 at AH=E3h/SF=E9h)
ES:DI -> reply buffer (see #1935)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AH=E3h/SF=E9h,AX=F212h,AX=F216h/SF=15h
Format of NetWare "Get Volume Information" reply packet:
Offset Size Description (Table 1935)
00h DWORD (big-endian) elapsed system time
04h BYTE volume number
05h BYTE logical drive number
06h WORD (big-endian) sectors per block
08h WORD (big-endian) starting block
0Ah WORD (big-endian) total blocks on volume
0Ch WORD (big-endian) blocks available on volume
0Eh WORD (big-endian) total directory slots
10h WORD (big-endian) directory slots available
12h WORD (big-endian) maximum directory entries actually used
14h BYTE flag: volume hashed if nonzero
15h BYTE flag: volume cached if nonzero
16h BYTE flag: volume removable if nonzero
17h BYTE flag: volume mounted if nonzero
18h 16 BYTEs NUL-padded volume name
SeeAlso: #1772,#1773 at AH=E3h/SF=E9h
--------N-21F217SFEA-------------------------
INT 21 - Novell NetWare v3.11+ - GET CONNECTION'S TASK INFORMATION
AX = F217h subfn EAh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1936)
ES:DI -> reply buffer (see #1921)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DAh
Format of NetWare "Get Connection's Task Information" request packet:
Offset Size Description (Table 1936)
00h WORD length of following data
02h BYTE EAh (subfunction "Get Connection's Task Information")
03h WORD connection number
SeeAlso: #1921,#1729 at AH=E3h/SF=DAh
--------N-21F217SFEB-------------------------
INT 21 - Novell NetWare v3+ - GET CONNECTION'S OPEN FILES
AX = F217h subfn EBh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1937)
ES:DI -> reply buffer (see #1938)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DBh
Format of NetWare "Get Connection's Open Files" request buffer:
Offset Size Description (Table 1937)
00h WORD 0005h (length of following data)
02h BYTE EBh (subfunction "Get Connection's Open Files")
03h WORD target connection number
05h WORD last record seen (set to 0000h for first call)
Note: connection numbers greater than the maximum supported by the server
can cause ABENDs
SeeAlso: #1938
Format of NetWare "Get Connection's Open Files" reply buffer:
Offset Size Description (Table 1938)
00h WORD next request record
02h WORD number of records returned (max 28)
04h 29N BYTEs array of connection records (see #1939)
SeeAlso: #1937
Format of NetWare connection record:
Offset Size Description (Table 1939)
00h WORD task number
02h BYTE lock type
03h BYTE access control
04h BYTE lock flag
05h BYTE volume number
06h DWORD parent directory entry number
0Ah DWORD directory entry number
0Eh BYTE fork count
0Fh BYTE data stream type / name space (see #2075)
10h BYTE file name length
11h 12 BYTEs file name
SeeAlso: #1938
--------N-21F217SFEC-------------------------
INT 21 - Novell NetWare v3+ - GET CONNECTIONS USING A FILE
AX = F217h subfn ECh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1940)
ES:DI -> reply buffer (see #1941)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DCh
Format of NetWare "Get Connections Using a File" request buffer:
Offset Size Description (Table 1940)
00h WORD 0009h (length of following data)
02h BYTE ECh (subfunction "Get Connections Using a File")
03h BYTE data stream type
04h BYTE volume number
05h DWORD directory entry number
09h WORD last record seen (0000h for first call)
SeeAlso: #1941
Format of NetWare "Get Connections Using a File" reply buffer:
Offset Size Description (Table 1941)
00h WORD next request record
02h WORD use count
04h WORD open count
06h WORD number of times open for reading
08h WORD number of times open for writing
0Ah WORD Deny Read count
0Ch WORD Deny Write count
0Eh BYTE flag: locked
0Fh BYTE fork count
10h WORD number of records returned (max 70)
12h 7N BYTEs returned records (see #1942)
SeeAlso: #1940
Format of returned record:
Offset Size Description (Table 1942)
00h WORD connection number
02h WORD task number
04h BYTE lock type
05h BYTE access flag
06h BYTE lock flag
SeeAlso: #1941
--------N-21F217SFED-------------------------
INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY CONNECTION AND FILE
AX = F217h subfn EDh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1943)
ES:DI -> reply buffer (see #1944)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DDh,AX=F217h/SF=EEh
Format of NetWare "Get Phys Record Locks By Conn And File" request packet:
Offset Size Description (Table 1943)
00h WORD length of following data
02h BYTE EDh (subfunction "Get Physical Record Locks By Connection
And File")
03h WORD target connection number
05h BYTE last record seen (set to 00h before first call)
06h BYTE volume number
07h DWORD directory entry number
0Bh N BYTEs filename
SeeAlso: #1944
Format of NetWare "Get Physical Record Locks By Connect And File" reply packet:
Offset Size Description (Table 1944)
00h WORD next record (place in last-seen field on next call)
02h WORD number of locks returned
04h 11N BYTEs lock records
Offset Size Description
00h WORD (big-endian) task number
02h BYTE lock status
03h DWORD (big-endian) record start offset
07h DWORD (big-endian) record end offset
SeeAlso: #1943
--------N-21F217SFEE-------------------------
INT 21 - Novell NetWare v3+ - GET PHYSICAL RECORD LOCKS BY FILE
AX = F217h subfn EEh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1945)
ES:DI -> reply buffer (see #1946)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DEh
Format of NetWare "Get Physical Record Locks by File" request buffer:
Offset Size Description (Table 1945)
00h WORD 0009h (length of following data)
02h BYTE EEh (subfunction "Get Physical Record Locks by File")
03h BYTE data stream number
04h BYTE volume number
05h DWORD directory entry number
09h WORD last record seen (0000h for first call)
SeeAlso: #1946
Format of NetWare "Get Physical Record Locks by File" reply buffer:
Offset Size Description (Table 1946)
00h WORD next request record
02h WORD number of locks
04h 17N BYTEs array of lock records, one per lock (see #1947)
SeeAlso: #1945
Format of NetWare lock record:
Offset Size Description (Table 1947)
00h WORD logged count
02h WORD number of shareable locks
04h DWORD start offset of record
08h DWORD end offset of record
0Ch WORD logical connection number
0Eh WORD task number
10h BYTE lock type
SeeAlso: #1946
--------N-21F217SFEF-------------------------
INT 21 - Novell NetWare v3+ - GET LOGICAL RECORDS BY CONNECTION
AX = F217h subfn EFh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1948)
ES:DI -> reply buffer (see #1949)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=DFh
Format of NetWare "Get Logical Records By Connection" request packet:
Offset Size Description (Table 1948)
00h WORD length of following data
02h BYTE EFh (subfunction "Get Logical Records By Connection")
03h WORD target connection number
05h WORD last record seen (set to 0000h before first call)
SeeAlso: #1949
Format of NetWare "Get Logical Records By Connection" request packet:
Offset Size Description (Table 1949)
00h WORD next record (place in last-seen field on next call)
02h WORD number of records returned
04h Logical Lock Information records (see #1751 at AH=E3h/SF=DFh)
SeeAlso: #1948
--------N-21F217SFF0-------------------------
INT 21 - Novell NetWare v3+ - GET LOGICAL RECORD INFORMATION
AX = F217h subfn F0h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1950)
ES:DI -> reply buffer (see #1951)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=E0h,AX=F217h/SF=EFh
Format of NetWare "Get Logical Record Information" request packet:
Offset Size Description (Table 1950)
00h WORD length of following data
02h BYTE F0h (subfunction "Get Logical Record Information")
03h WORD last record seen
05h BYTE length of logical record name
06h N BYTEs logical record name (case-sensitive)
SeeAlso: #1951
Format of NetWare "Get Logical Record Information" request packet:
Offset Size Description (Table 1951)
00h WORD number of connections logging record
02h WORD number of shareable locks
04h BYTE flag: locked exclusively if nonzero
05h WORD next request record (place in last-seen field on next call)
07h BYTE number of records returned
08h logical record information records [array]
Offset Size Description
00h WORD connection number
02h BYTE task number
03h BYTE lock status
SeeAlso: #1950
--------N-21F217SFF1-------------------------
INT 21 - Novell NetWare v3+ - GET CONNECTION'S SEMAPHORES
AX = F217h subfn F1h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1952)
ES:DI -> reply buffer (see #1953)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=E1h
Format of NetWare "Get Connection's Semaphores" request packet:
Offset Size Description (Table 1952)
00h WORD length of following data
02h BYTE F1h (subfunction "Get Connection's Semaphores")
03h WORD connection number
05h WORD last record seen (set to 0000h before first call)
SeeAlso: #1953
Format of NetWare "Get Connection's Semaphores" reply packet:
Offset Size Description (Table 1953)
00h WORD next record (place in last-seen field on next call)
02h WORD number of semaphores returned
04h BYTEs semaphore information records [packed array] (see #1954)
SeeAlso: #1952
Format of NetWare semaphore information record:
Offset Size Description (Table 1954)
00h WORD semaphore's current value
02h WORD number of connections using semaphore
04h WORD task number
06h BYTE length of semaphore's name
07h N BYTEs semaphore name
SeeAlso: #1953
--------N-21F217SFF2-------------------------
INT 21 - Novell NetWare v3+ - GET SEMAPHORE INFORMATION
AX = F217h subfn F2h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1955)
ES:DI -> reply buffer (see #1956)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F217h/SF=E2h
Format of NetWare "Get Semaphore Information" request buffer:
Offset Size Description (Table 1955)
00h WORD length of following data (max 84h)
02h BYTE F2h (subfunction "Get Semaphore Information")
03h WORD last record seen (0000h on first call)
05h BYTE length of semaphore name (max 128)
06h N BYTEs semaphore name
SeeAlso: #1956
Format of NetWare "Get Semaphore Information" reply buffer:
Offset Size Description (Table 1956)
00h WORD next request record
02h WORD open count
04h BYTE value of semaphore
05h WORD number of records returned
07h 2N WORDs list of logical connection number/task number pairs
SeeAlso: #1955
--------N-21F217SFF3-------------------------
INT 21 - Novell NetWare v3+ - MAP DIRECTORY NUMBER TO PATH
AX = F217h subfn F3h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1957)
ES:DI -> reply buffer (see #1958)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F217h/SF=F4h
Format of NetWare "Map Directory Number to Path" request buffer:
Offset Size Description (Table 1957)
00h WORD 0007h (length of following data)
02h BYTE F3h (subfunction "Map Directory Number to Path")
03h BYTE volume number
04h DWORD directory entry number
08h BYTE name space type
SeeAlso: #1958
Format of NetWare "Map Directory Number to Path" reply buffer:
Offset Size Description (Table 1958)
00h BYTE directory path length
01h N BYTEs directory path (NetWare style, separated by length descriptors
rather than slashes or backslashes)
SeeAlso: #1957
--------N-21F217SFF4-------------------------
INT 21 - Novell NetWare v3+ - CONVERT PATH TO DIRECTORY ENTRY
AX = F217h subfn F4h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1959)
ES:DI -> reply buffer (see #1960)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F217h/SF=F3h
Format of NetWare "Convert Path to Directory Entry" request packet:
Offset Size Description (Table 1959)
00h WORD length of following data
02h BYTE F4h (subfunction "Convert Path to Directory Entry")
03h BYTE directory handle or 00h for none
04h BYTE length of directory path
05h N BYTEs directory path (must be fully qualified if no handle specified)
SeeAlso: #1960
Format of NetWare "Convert Path to Directory Entry" reply packet:
Offset Size Description (Table 1960)
00h BYTE volume number
01h DWORD directory entry number
SeeAlso: #1959
--------N-21F217SFF5-------------------------
INT 21 - Novell NetWare - GET FILE SERVER EXTENDED MISC INFORMATION
AX = F217h subfn F5h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1961)
ES:DI -> reply buffer (see #1962)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=11h,AX=F217h/SF=C9h,AX=F217h/SF=E8h
Format of NetWare "Get File Server Extended Misc Information" request packet:
Offset Size Description (Table 1961)
00h WORD length of following data
02h BYTE F5h (subfunction "Get File Server Extended Misc Information")
03h BYTE length of reply buffer
SeeAlso: #1962
Format of NetWare "Get File Server Extended Misc Information" reply packet:
Offset Size Description (Table 1962)
00h DWORD system interval marker
(up-time in clock ticks, wraps to 0 on reaching FFFFFFFFh)
04h BYTE processor type
00h Motorola 680x0
01h Intel 8088/8086
02h 80286
05h BYTE reserved for future use
06h BYTE number of service processes
07h BYTE server utilization percentage
08h WORD maximum bindery objects set by configuration
0Ah WORD actual maximum bindery objects
0Ch WORD current number of bindery objects
0Eh WORD (big-endian) total server memory
10h WORD (big-endian) wasted server memory
12h WORD (big-endian) number of dynamic memory areas
14h DWORD (big-endian) total space in dynamic memory area
18h DWORD maximum dynamic space used
1Ch DWORD dynamic space currently used
SeeAlso: #1961
--------N-21F217SFF6-------------------------
INT 21 - Novell NetWare - GET VOLUME EXTENDED INFORMATION
AX = F217h subfn F6h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1963)
ES:DI -> reply buffer (see #1964)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=E8h
Format of NetWare "Get Volume Extended Information" request packet:
Offset Size Description (Table 1963)
00h WORD length of following data
02h BYTE F6h (subfunction "Get Volume Extended Information")
03h BYTE volume number
04h BYTE size of reply buffer
SeeAlso: #1964
Format of NetWare "Get Volume Extended Information" reply packet:
Offset Size Description (Table 1964)
00h DWORD system interval
(up-time in clock ticks, wraps to 0 on reaching FFFFFFFFh)
04h BYTE volume number
05h BYTE logical drive number
06h WORD number of 512-byte sectors per disk block
08h DWORD starting block number of volume
0Ch WORD total number of disk blocks
0Eh WORD number of free disk blocks
10h WORD total number of directory entries
12h WORD number of available directory entries
14h WORD maximum directory entries ever used
16h BYTE flag: volume is hashed in memory if nonzero
17h BYTE flag: volume is cached if nonzero
18h BYTE flag: volume is removable if nonzero
19h BYTE flag: volume is mounted if nonzero
1Ah 16 BYTEs volume name (null-padded)
SeeAlso: #1963
--------N-21F217SFFE-------------------------
INT 21 - Novell NetWare v4 - CLEAR CONNECTION NUMBER GREATER THAN 250
AX = F217h subfn FEh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1965)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=E3h/SF=D2h,AX=F217h/SF=D2h
Format of NetWare "Clear Connection Number" request buffer:
Offset Size Description (Table 1965)
00h WORD length of following data
02h BYTE FEh (subfunction "Clear Connection Number")
03h DWORD connection number
SeeAlso: #1711
--------N-21F21B-----------------------------
INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET (OLD)
AX = F21Bh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2168 at AX=F26Eh)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Eh,AH=C2h"NetWare"
--------N-21F21E-----------------------------
INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD
AX = F21Eh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1966)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=5Ch,AH=BEh"NetWare",AH=F2h"Novell",AX=F20Bh,AX=F21Fh
Format of NetWare "Clear Physical Record" request packet:
Offset Size Description (Table 1966)
00h BYTE reserved for future use
01h 6 BYTEs NetWare file handle
07h DWORD starting offset of locked region
0Bh DWORD length of locked region
SeeAlso: #1967
--------N-21F21F-----------------------------
INT 21 - Novell NetWare - CLEAR PHYSICAL RECORD SET
AX = F21Fh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1967)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=5Ch,AH=C4h"NetWare",AH=F2h"Novell",AX=F20Eh,AX=F21Eh
Format of NetWare "Clear Physical Record Set" request packet:
Offset Size Description (Table 1967)
00h BYTE lock flag (00h = not locked)
SeeAlso: #1966
--------N-21F220SF00-------------------------
INT 21 - Novell NetWare - OPEN SEMAPHORE (OLD)
AX = F220h subfn 00h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1968)
ES:DI -> reply buffer (see #1969)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C500h,AX=F220h/SF=01h,AX=F220h/SF=03h
Format of NetWare "Open Semaphore (old)" request packet:
Offset Size Description (Table 1968)
00h BYTE 00h (subfunction "Open Semaphore (old)")
01h BYTE initial value of semaphore ( >= 0)
02h BYTE length of semaphore's name (max 512)
03h N BYTEs semaphore name
SeeAlso: #1969,#1970
Format of NetWare "Open Semaphore (old)" reply packet:
Offset Size Description (Table 1969)
00h DWORD semaphore handle
04h BYTE number of processes using semaphore (including caller)
SeeAlso: #1968,#1971
--------N-21F220SF01-------------------------
INT 21 - Novell NetWare - EXAMINE SEMAPHORE (OLD)
AX = F220h subfn 01h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1970)
ES:DI -> reply buffer (see #1971)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C501h,AX=F220h/SF=00h,AX=F220h/SF=03h
Format of NetWare "Close Semaphore (old)" request packet:
Offset Size Description (Table 1970)
00h BYTE 01h (subfunction "Examine Semaphore (old)")
01h DWORD semaphore handle
SeeAlso: #1971,#1968
Format of NetWare "Close Semaphore (old)" request packet:
Offset Size Description (Table 1971)
00h BYTE current semaphore value
01h BYTE number of processes using semaphore (including caller)
SeeAlso: #1970,#1969
--------N-21F220SF02-------------------------
INT 21 - Novell NetWare - WAIT ON SEMAPHORE (OLD)
AX = F220h subfn 02h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1972)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C502h,AX=F220h/SF=00h,AX=F220h/SF=03h
Format of NetWare "Wait on Semaphore (old)" request packet:
Offset Size Description (Table 1972)
00h BYTE 02h (subfunction "Wait on Semaphore (old)")
01h DWORD semaphore handle
05h WORD timeout in 1/18s (0000h = return immediately)
SeeAlso: #1970,#1973
--------N-21F220SF03-------------------------
INT 21 - Novell NetWare - SIGNAL SEMAPHORE (OLD)
AX = F220h subfn 03h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1973)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C503h,AX=F220h/SF=02h,AX=F220h/SF=04h
Format of NetWare "Signal Semaphore (old)" request packet:
Offset Size Description (Table 1973)
00h BYTE 03h (subfunction "Signal Semaphore (old)")
01h DWORD semaphore handle
SeeAlso: #1972,#1974
--------N-21F220SF04-------------------------
INT 21 - Novell NetWare - CLOSE SEMAPHORE (OLD)
AX = F220h subfn 04h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1974)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C504h,AX=F220h/SF=00h,AX=F220h/SF=01h
SeeAlso: AX=F26Fh/SF=01h
Format of NetWare "Close Semaphore (old)" request packet:
Offset Size Description (Table 1974)
00h BYTE 04h (subfunction "Close Semaphore (old)")
01h DWORD semaphore handle
SeeAlso: #1973,#2171
--------N-21F222SF00-------------------------
INT 21 - Novell NetWare - TTS IS AVAILABLE
AX = F222h subfn 00h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1975)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C702h,AX=F222h/SF=01h,AX=F222h/SF=05h
Format of NetWare "TTS Is Available" request packet:
Offset Size Description (Table 1975)
00h BYTE 00h (subfunction "TTS Is Available")
--------N-21F222SF01-------------------------
INT 21 - Novell NetWare - TTS BEGIN TRANSACTION
AX = F222h subfn 01h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1976)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C700h,AX=F222h/SF=02h,AX=F222h/SF=03h
Format of NetWare "TTS Begin Transaction" request packet:
Offset Size Description (Table 1976)
00h BYTE 01h (subfunction "TTS Begin Transaction")
SeeAlso: #1977,#1979
--------N-21F222SF02-------------------------
INT 21 - Novell NetWare - TTS END TRANSACTION
AX = F222h subfn 02h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1977)
ES:DI -> reply buffer (see #1978)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C701h,AX=F222h/SF=01h,AX=F222h/SF=04h
Format of NetWare "TTS End Transaction" request packet:
Offset Size Description (Table 1977)
00h BYTE 02h (subfunction "TTS End Transaction")
SeeAlso: #1978,#1976
Format of NetWare "TTS End Transaction" reply packet:
Offset Size Description (Table 1978)
00h DWORD transaction number
SeeAlso: #1977,#1980
--------N-21F222SF03-------------------------
INT 21 - Novell NetWare - TTS ABORT TRANSACTION
AX = F222h subfn 03h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1979)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C703h,AX=F222h/SF=01h,AX=F222h/SF=02h
SeeAlso: AX=F220h/SF=04h
Format of NetWare "TTS Abort Transaction" request packet:
Offset Size Description (Table 1979)
00h BYTE 03h (subfunction "TTS Abort Transaction")
SeeAlso: #1976,#1977
--------N-21F222SF04-------------------------
INT 21 - Novell NetWare - TTS TRANSACTION STATUS
AX = F222h subfn 04h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1980)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C704h,AX=F222h/SF=02h,AX=F222h/SF=03h
Format of NetWare "TTS Transaction Status" request packet:
Offset Size Description (Table 1980)
00h BYTE 04h (subfunction "TTS Transaction Status")
01h DWORD transaction number
SeeAlso: #1977,#1978
--------N-21F222SF05-------------------------
INT 21 - Novell NetWare - TTS GET APPLICATION THRESHOLDS
AX = F222h subfn 05h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1981)
ES:DI -> reply buffer (see #1982)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C705h,AX=F222h/SF=06h,AX=F222h/SF=07h
Format of NetWare "TTS Get Application Thresholds" request packet:
Offset Size Description (Table 1981)
00h BYTE 05h (subfunction "TTS Get Application Thresholds")
SeeAlso: #1982,#1983
Format of NetWare "TTS Get Application Thresholds" request packet:
Offset Size Description (Table 1982)
00h BYTE logical lock threshold
01h BYTE physical lock threshold
SeeAlso: #1981,#1983
--------N-21F222SF06-------------------------
INT 21 - Novell NetWare - TTS SET APPLICATION THRESHOLDS
AX = F222h subfn 06h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1983)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C706h,AX=F222h/SF=05h,AX=F222h/SF=08h
Format of NetWare "TTS Set Application Thresholds" request packet:
Offset Size Description (Table 1983)
00h BYTE 06h (subfunction "TTS Set Application Thresholds")
01h BYTE logical lock threshold before implicit transaction started
02h BYTE physical lock threshold before implicit transaction started
SeeAlso: #1982,#1986
--------N-21F222SF07-------------------------
INT 21 - Novell NetWare - TTS GET WORKSTATION THRESHOLDS
AX = F222h subfn 07h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1984)
ES:DI -> reply buffer (see #1985)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C707h,AX=F222h/SF=05h,AX=F222h/SF=08h
Format of NetWare "TTS Get Workstation Thresholds" request packet:
Offset Size Description (Table 1984)
00h BYTE 07h (subfunction "TTS Get Workstation Thresholds")
SeeAlso: #1985
Format of NetWare "TTS Get Workstation Thresholds" reply packet:
Offset Size Description (Table 1985)
00h BYTE logical lock threshold
01h BYTE physical lock threshold
SeeAlso: #1984
--------N-21F222SF08-------------------------
INT 21 - Novell NetWare - TTS SET WORKSTATION THRESHOLDS
AX = F222h subfn 08h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1986)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C708h,AX=F222h/SF=06h,AX=F222h/SF=07h
Format of NetWare "TTS Set Workstation Thresholds" request packet:
Offset Size Description (Table 1986)
00h BYTE 08h (subfunction "TTS Set Workstation Thresholds")
01h BYTE logical lock threshold before implicit transaction started
02h BYTE physical lock threshold before implicit transaction started
SeeAlso: #1983
--------N-21F222SF09-------------------------
INT 21 - Novell NetWare - TTS GET CONTROL FLAGS
AX = F222h subfn 09h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1987)
ES:DI -> reply buffer (see #1988)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C702h,AX=F222h/SF=07h,AX=F222h/SF=0Ah
Format of NetWare "TTS Get Transaction Bits" request packet:
Offset Size Description (Table 1987)
00h BYTE 09h (subfunction "TTS Get Transaction Bits")
SeeAlso: #1988
Format of NetWare "TTS Get Transaction Bits" reply packet:
Offset Size Description (Table 1988)
00h BYTE TTS control flags
bit 0: forced (automatic) record locking enabled
bits 1-7: reserved
SeeAlso: #1987
--------N-21F222SF0A-------------------------
INT 21 - Novell NetWare - TTS SET CONTROL FLAGS
AX = F222h subfn 0Ah
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1989)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=C702h,AX=F222h/SF=08h,AX=F222h/SF=09h
Format of NetWare "TTS Set Transaction Bits" request packet:
Offset Size Description (Table 1989)
00h BYTE 0Ah (subfunction "TTS Set Transaction Bits")
01h BYTE TTS control flags
bit 0: forced (automatic) record locking enabled
bits 1-7: reserved
--------N-21F223SF01-------------------------
INT 21 - Novell NetWare v2+ - AFP CREATE DIRECTORY
AX = F223h subfn 01h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1990)
ES:DI -> reply buffer (see #1991)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=02h,AX=F223h/SF=0Dh
Format of NetWare "AFP Create Directory" request packet:
Offset Size Description (Table 1990)
00h WORD (big-endian) length of following data
02h BYTE 01h (subfunction "AFP Create Directory")
03h BYTE volume number
04h DWORD AFP entry ID
08h BYTE reserved for future use
09h 32 BYTEs Finder information
29h BYTE path length
2Ah N BYTEs AFP-style directory pathname (relative to AFP entry ID)
SeeAlso: #1991,#1992,#2018
Format of NetWare "AFP Create Directory" reply packet:
Offset Size Description (Table 1991)
00h DWORD new directory ID
SeeAlso: #1990,#2019
--------N-21F223SF02-------------------------
INT 21 - Novell NetWare v2+ - AFP CREATE FILE
AX = F223h subfn 02h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1992)
ES:DI -> reply buffer (see #1993)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=02h,AX=F223h/SF=03h,AX=F223h/SF=0Dh
Format of NetWare "AFP Create File" request packet:
Offset Size Description (Table 1992)
00h WORD (big-endian) length of following data
02h BYTE 01h (subfunction "AFP Create Directory")
03h BYTE volume number
04h DWORD AFP entry ID
08h BYTE flag: delete existing file? (00h no, 01h yes)
09h 32 BYTEs Finder information
29h BYTE path length
2Ah N BYTEs AFP-style directory pathname (relative to AFP entry ID)
SeeAlso: #1990,#1993,#1994,#2020
Format of NetWare "AFP Create File" reply packet:
Offset Size Description (Table 1993)
00h DWORD new file's AFP entry ID
SeeAlso: #1992,#2021
--------N-21F223SF03-------------------------
INT 21 - Novell NetWare v2+ - AFP DELETE FILE
AX = F223h subfn 03h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #1994)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Note: directories may be deleted if they are empty
SeeAlso: AH=F2h"Novell",AX=F223h/SF=02h,AX=F223h/SF=0Dh
Format of NetWare "AFP Delete File" request packet:
Offset Size Description (Table 1994)
00h WORD (big-endian) length of following data
02h BYTE 03h (subfunction "AFP Delete File")
03h BYTE volume number
04h DWORD AFP entry ID
08h BYTE path length
09h N BYTEs AFP-style pathname (relative to AFP entry ID)
SeeAlso: #1992
--------N-21F223SF04-------------------------
INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM FILENAME
AX = F223h subfn 04h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1995)
ES:DI -> reply buffer (see #1996)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=06h,AX=F223h/SF=0Ch,AX=F223h/SF=12h
Format of NetWare "AFP Get Entry ID from Name" request packet:
Offset Size Description (Table 1995)
00h WORD (big-endian) length of following data
02h BYTE 04h (subfunction "AFP Get Entry ID from Name")
03h BYTE volume number
04h DWORD AFP entry ID
08h BYTE path length
09h N BYTEs AFP-style pathname (relative to AFP entry ID)
SeeAlso: #1996,#2002
Format of NetWare "AFP Get Entry ID from Name" reply packet:
Offset Size Description (Table 1996)
00h DWORD AFP entry ID corresponding to specified file/directory
SeeAlso: #1995,#2003
--------N-21F223SF05-------------------------
INT 21 - Novell NetWare v2+ - AFP GET FILE INFORMATION
AX = F223h subfn 05h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #1997)
ES:DI -> reply buffer (see #1999)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=09h,AX=F223h/SF=13h
Format of NetWare "AFP Get File Information" request packet:
Offset Size Description (Table 1997)
00h WORD (big-endian) length of following data
02h BYTE 05h (subfunction "AFP Get File Information")
03h BYTE volume number
04h DWORD AFP entry ID
08h WORD request bitmap
0Ah BYTE path length
0Bh N BYTEs AFP-style pathname (relative to AFP entry ID)
SeeAlso: #1999
Bitfields for NetWare AFP request bitmap:
Bit(s) Description (Table 1998)
0 return AFP entry ID
1 return data fork length
2 return resource fork length
3 return number of contained files/subdirectories
4 return owner ID
5 return short name
6 return access rights
7 ??? (unused?)
8 return attributes
9 return parent directory ID
10 return creation date
11 return last-access date
12 return last-modified date and time
13 return last-backup date and time
14 return Finder information
15 return long name
SeeAlso: #1997,#2024,#2025
Format of NetWare "AFP Get File Information" reply packet:
Offset Size Description (Table 1999)
00h DWORD AFP entry ID for specified file
04h DWORD AFP entry ID for specified file's parent directory
08h WORD directory/file attributes (see #2000)
0Ah DWORD length of data fork
0Eh DWORD length of resource fork
12h WORD total files and subdirectories contained within entry
always 0000h if entry is a file
14h WORD creation date in AFP format
16h WORD last-access date in AFP format
18h WORD last-modified date in AFP format
1Ah WORD last-modified time in AFP format
1Ch WORD last-backup date in AFP format
1Eh WORD last-backup time in AFP format
20h 32 BYTEs Finder information
40h 32 BYTEs long filename
60h DWORD NetWare object ID of owner
64h 12 BYTEs short filename (MS-DOS 8.3 format)
70h WORD access privileges (see #2001)
SeeAlso: #1997,#2026
Bitfields for NetWare AFP file/directory attributes:
Bit(s) Description (Table 2000)
0 search mode
1 search mode
2 search mode
3 (undefined)
4 transaction
5 index
6 read audit
7 write audit
8 read-only
9 hidden
10 system
11 execute-only
12 subdirectory
13 archive
14 (undefined)
15 shareable file
SeeAlso: #1999,#2010,#2025
Bitfields for NetWare AFP access privileges:
Bit(s) Description (Table 2001)
8 read (files)
9 write (files)
10 open (files)
11 create (files)
12 delete (files)
13 parental (directories): create/delete/rename subdirectories
14 search (directories)
15 modify file status flags
SeeAlso: #1999,#2025,#2015
--------N-21F223SF06-------------------------
INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM NETWARE HANDLE
AX = F223h subfn 06h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2002)
ES:DI -> reply buffer (see #2003)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=0Ch,AX=F223h/SF=12h
Format of NetWare "AFP Get Entry ID from NetWare Handle" request packet:
Offset Size Description (Table 2002)
00h WORD (big-endian) length of following data
02h BYTE 06h (subfunction "AFP Get Entry ID from NetWare Handle")
03h 6 BYTEs NetWare file handle
SeeAlso: #2003,#1995
Format of NetWare "AFP Get Entry ID from NetWare Handle" reply packet:
Offset Size Description (Table 2003)
00h BYTE volume number
01h DWORD AFP entry ID corresponding to same file as NetWare handle
05h BYTE fork indicator (00h data fork, 01h resource fork)
SeeAlso: #2002,#1996
--------N-21F223SF07-------------------------
INT 21 - Novell NetWare v2+ - AFP RENAME
AX = F223h subfn 07h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2004)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=03h,AX=F223h/SF=08h
Format of NetWare "AFP Rename" request packet:
Offset Size Description (Table 2004)
00h WORD (big-endian) length of following data
02h BYTE 07h (subfunction "AFP Rename")
03h BYTE volume number
04h DWORD source AFP entry ID
08h DWORD destination AFP entry ID
0Ch BYTE source path length
0Dh N BYTEs AFP-style source path (relative to source AFP entry ID)
BYTE destination path length
N BYTEs AFP-style destination path (relative to destination entry ID)
Note: the file may be moved from one directory to another without being
renamed by setting the destination path to the empty string
--------N-21F223SF08-------------------------
INT 21 - Novell NetWare v2+ - AFP OPEN FILE FORK
AX = F223h subfn 08h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2005)
ES:DI -> reply buffer (see #2006)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=05h,AX=F223h/SF=09h
Format of NetWare "AFP Open File Fork" request packet:
Offset Size Description (Table 2005)
00h WORD (big-endian) length of following data
02h BYTE 08h (subfunction "AFP Open File Fork")
03h BYTE volume number
04h DWORD AFP entry ID
08h BYTE fork indicator (00h = data fork, 01h = resource fork)
09h BYTE access mode
bit 0: read
bit 1: write
bit 2: deny read access to others
bit 3: deny write access to others
bit 4: compatibility mode (should be set)
0Ah BYTE path length
0Bh N BYTEs AFP-style pathname (relative to AFP entry ID)
SeeAlso: #2006
Format of NetWare "AFP Open File Fork" reply packet:
Offset Size Description (Table 2006)
00h DWORD AFP entry ID for newly-opened file fork
04h DWORD length of opened fork
08h 6 BYTEs NetWare file handle
SeeAlso: #2005
--------N-21F223SF09-------------------------
INT 21 - Novell NetWare v2+ - AFP SET FILE INFORMATION
AX = F223h subfn 09h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2007)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=05h,AX=F223h/SF=0Ah,AX=F223h/SF=13h
Format of NetWare "AFP Set File Information" request packet:
Offset Size Description (Table 2007)
00h WORD (big-endian) length of following data
02h BYTE 09h (subfunction "AFP Set File Information")
03h BYTE volume number
04h DWORD AFP entry ID
08h WORD request bitmap (see #2008)
0Ah WORD directory/file attributes (see #2023)
0Ch WORD creation date in AFP format
0Eh WORD last-access date in AFP format
10h WORD last-modified date in AFP format
12h WORD last-modified time in AFP format
14h WORD last-backup date in AFP format
16h WORD last-backup time in AFP format
18h 32 BYTEs Finder information
38h BYTE path length
39h N BYTEs AFP-style pathname (relative to AFP entry ID)
SeeAlso: #2022
Bitfields for NetWare AFP request bitmap:
Bit(s) Description (Table 2008)
8 set attributes
10 set creation date
11 set last-access date
12 set last-modified date
13 set last-backup date
14 set Finder information
SeeAlso: #2007,#2022
--------N-21F223SF0A-------------------------
INT 21 - Novell NetWare v2+ - AFP SCAN FILE INFORMATION
AX = F223h subfn 0Ah
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2009)
ES:DI -> reply buffer (see #2011)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=03h,AX=F223h/SF=08h
Format of NetWare "AFP Scan File Information" request packet:
Offset Size Description (Table 2009)
00h WORD (big-endian) length of following data
02h BYTE 0Ah (subfunction "AFP Scan File Information")
03h BYTE volume number
04h DWORD AFP entry ID
08h DWORD AFP last-seen ID (from previous call)
FFFFFFFFh on first call
0Ch WORD number of entries to return (max. 4)
0Eh WORD search bitmap (see #2010)
10h WORD request bitmap (see #1998)
12h BYTE path length
13h N BYTEs AFS-style directory path (relative to AFP entry ID)
SeeAlso: #2011,#2024
Bitfields for NetWare AFP search bitmap:
Bit(s) Description (Table 2010)
8 hidden files and directories
9 system files and directories
10 subdirectories
11 files
SeeAlso: #2009,#2024,#1998,#2000
Format of NetWare "AFP Scan File Information" reply packet:
Offset Size Description (Table 2011)
00h WORD number of entries returned
02h 120N BYTEs file information records (see #2012)
SeeAlso: #2009
Format of NetWare AFP file information:
Offset Size Description (Table 2012)
00h DWORD AFP entry ID
04h DWORD parent directory's AFP entry ID
08h WORD directory/file attributes (see #2000)
0Ah DWORD length of data fork
0Eh DWORD length of resource fork
12h WORD total files and subdirectories contained within entry
always 0000h if entry is a file
14h WORD creation date in AFP format
16h WORD last-access date in AFP format
18h WORD last-modified date in AFP format
1Ah WORD last-modified time in AFP format
1Ch WORD last-backup date in AFP format
1Eh WORD last-backup time in AFP format
20h 32 BYTEs Finder information
40h 32 BYTEs long filename
60h DWORD NetWare object ID of owner
64h 12 BYTEs short filename (MS-DOS 8.3 format)
70h WORD access privileges (see #2001)
SeeAlso: #2011
--------N-21F223SF0B-------------------------
INT 21 - Novell NetWare v2+ - AFP ALLOCATE TEMPORARY DIRECTORY HANDLE
AX = F223h subfn 0Bh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2013)
ES:DI -> reply buffer (see #2014)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=0Dh
Format of NetWare "AFP Alloc Temporary Directory Handle" request packet:
Offset Size Description (Table 2013)
00h WORD (big-endian) length of following data
02h BYTE 0Bh (subfunction "AFT Alloc Temporary Directory Handle")
03h BYTE volume number
04h DWORD AFP entry ID
08h BYTE path length
09h N BYTEs AFP-style pathname
SeeAlso: #2014
Format of NetWare "AFP Alloc Temporary Directory Handle" request packet:
Offset Size Description (Table 2014)
00h BYTE directory handle
01h BYTE NetWare access rights (see #2015)
SeeAlso: #2013
Bitfields for NetWare AFP access rights:
Bit(s) Description (Table 2015)
0 read
1 write
2 open
3 create
4 delete
5 parental: create/delete/rename subdirectories
6 search
7 modify file status flags
SeeAlso: #2014,#2001
--------N-21F223SF0C-------------------------
INT 21 - Novell NetWare v2+ - AFP GET ENTRY ID FROM PATHNAME
AX = F223h subfn 0Ch
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2016)
ES:DI -> reply buffer (see #2017)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=06h,AX=F223h/SF=12h
Format of NetWare "AFP Get Entry ID from Path Name" request packet:
Offset Size Description (Table 2016)
00h WORD (big-endian) length of following data
02h BYTE 0Ch (subfunction "AFP Get Entry ID from Path Name")
03h BYTE NetWare directory handle
04h BYTE path length
05h N BYTEs pathname
SeeAlso: #2017
Format of NetWare "AFP Get Entry ID from Path Name" reply packet:
Offset Size Description (Table 2017)
00h DWORD AFP entry ID corresponding to specified file
SeeAlso: #2016
--------N-21F223SF0D-------------------------
INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE DIRECTORY
AX = F223h subfn 0Dh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2018)
ES:DI -> reply buffer (see #2019)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=01h,AX=F223h/SF=0Eh
Format of NetWare "AFP 2.0 Create Directory" request buffer:
Offset Size Description (Table 2018)
00h WORD (big-endian) length of following data
02h BYTE 0Dh (subfunction "AFP 2.0 Create Directory")
03h BYTE volume number
04h DWORD AFP entry ID
08h BYTE reserved for future use
09h 32 BYTEs Finder information
29h 6 BYTEs ProDOS information
2Fh BYTE path length
30h var AFS-style directory path (relative to AFP entry)
SeeAlso: #2019,#1990
Format of NetWare "AFP 2.0 Create Directory" reply buffer:
Offset Size Description (Table 2019)
00h DWORD new directory ID
SeeAlso: #2018,#1991
--------N-21F223SF0E-------------------------
INT 21 - Novell NetWare v2+ - AFP 2.0 CREATE FILE
AX = F223h subfn 0Eh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2020)
ES:DI -> reply buffer (see #2021)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=0Dh
Format of NetWare "AFP 2.0 Create File" request packet:
Offset Size Description (Table 2020)
00h WORD (big-endian) length of following data
02h BYTE 0Eh (function "AFP 2.0 Create File")
03h BYTE volume number
04h DWORD AFP entry ID
08h BYTE flag: delete existing file? (00h no, 01h yes)
09h 32 BYTEs Finder information
29h 6 BYTEs ProDOS information
2Fh BYTE path length
30h var AFP-style pathname (relative to AFP entry ID)
SeeAlso: #2021,#1992
Format of NetWare "AFP 2.0 Create File" reply packet:
Offset Size Description (Table 2021)
00h DWORD new file ID
SeeAlso: #2020,#1993
--------N-21F223SF10-------------------------
INT 21 - Novell NetWare v2+ - AFP 2.0 SET FILE INFORMATION
AX = F223h subfn 10h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2022)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=09h,AX=F223h/SF=11h
Format of NetWare "AFP 2.0 Set File Information" request packet:
Offset Size Description (Table 2022)
00h WORD (big-endian) length of following data
02h BYTE 10h (subfunction "AFS 2.0 Set File Information")
03h BYTE volume number
04h DWORD AFP entry ID
08h WORD request bitmap (see #2008)
0Ah WORD directory/file attributes (see #2023)
0Ch WORD creation date in AFP format
0Eh WORD last-access date in AFP format
10h WORD last-modified date in AFP format
12h WORD last-modified time in AFP format
14h WORD last-backup date in AFP format
16h WORD last-backup time in AFP format
18h 32 BYTEs Finder information
38h 6 BYTEs ProDOS information
3Eh BYTE path length
3Fh N BYTEs AFP-style pathname (relative to AFP entry ID)
SeeAlso: #2007
Bitfields for NetWare AFP directory/file attributes:
Bit(s) Description (Table 2023)
0 read-only
1 hidden
2 system
3 execute-only
4 subdirectory
5 archive
7 shareable file
SeeAlso: #2022
--------N-21F223SF11-------------------------
INT 21 - Novell NetWare v2+ - AFP 2.0 SCAN FILE INFORMATION
AX = F223h subfn 11h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2024)
ES:DI -> reply buffer (see #2025)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=0Dh,AX=F223h/SF=10h
Format of NetWare "AFP 2.0 Scan File Information" request packet:
Offset Size Description (Table 2024)
00h WORD (big-endian) length of following data
02h BYTE 11h (subfunction "AFP 2.0 Scan File Information")
03h BYTE volume number
04h DWORD AFP entry ID
08h DWORD AFP last-seen ID (from previous call)
FFFFFFFFh on first call
0Ch WORD number of entries to return (max. 4)
0Eh WORD search bitmap (see #2010)
10h WORD request bitmap (see #1998)
12h BYTE path length
13h N BYTEs AFS-style directory path (relative to AFP entry ID)
SeeAlso: #2025
Format of NetWare "AFP 2.0 Scan File Information" reply packet:
Offset Size Description (Table 2025)
00h WORD number of entries returned
02h 120N BYTEs file information records (see #2026)
SeeAlso: #2024
Format of NetWare AFP 2.0 file information:
Offset Size Description (Table 2026)
00h DWORD AFP entry ID
04h DWORD parent directory's AFP entry ID
08h WORD directory/file attributes (see #2000)
0Ah DWORD length of data fork
0Eh DWORD length of resource fork
12h WORD total files and subdirectories contained within entry
always 0000h if entry is a file
14h WORD creation date in AFP format
16h WORD last-access date in AFP format
18h WORD last-modified date in AFP format
1Ah WORD last-modified time in AFP format
1Ch WORD last-backup date in AFP format
1Eh WORD last-backup time in AFP format
20h 32 BYTEs Finder information
40h 32 BYTEs long filename
60h DWORD NetWare object ID of owner
64h 12 BYTEs short filename (MS-DOS 8.3 format)
70h WORD access privileges (see #2001)
72h 6 BYTEs ProDOS information
SeeAlso: #2025,#1998,#1999
--------N-21F223SF12-------------------------
INT 21 - Novell NetWare v2+ - AFP GET DOS FILENAME FROM ENTRY ID
AX = F223h subfn 12h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2027)
ES:DI -> reply buffer (see #2028)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=06h
Format of NetWare "AFP Get DOS Name from Entry ID" request packet:
Offset Size Description (Table 2027)
00h WORD (big-endian) length of following data
02h BYTE 12h (subfunction "AFP Get DOS Name From Entry ID")
03h BYTE volume number
04h DWORD AFP entry ID
SeeAlso: #2028
Format of NetWare "AFP Get DOS Name from Entry ID" reply packet:
Offset Size Description (Table 2028)
00h BYTE length of DOS pathname
01h N BYTEs pathname corresponding to AFP entry ID
SeeAlso: #2027
--------N-21F223SF13-------------------------
INT 21 - Novell NetWare v2+ - AFP GET MACINTOSH INFORMATION ON DELETED FILE
AX = F223h subfn 13h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2029)
ES:DI -> reply buffer (see #2030)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=05h,AX=F223h/SF=09h
Format of NetWare "AFP Get Macintosh Info on Deleted File" request packet:
Offset Size Description (Table 2029)
00h WORD (big-endian) length of following data
02h BYTE 13h (subfunction "AFP Get Macintosh Info on Deleted File")
03h BYTE volume number
04h DWORD server's DOS directory entry index
SeeAlso: #2030
Format of NetWare "AFP Get Macintosh Info on Deleted File" reply packet:
Offset Size Description (Table 2030)
00h 32 BYTEs Finder information
20h 6 BYTEs ProDOS information
26h DWORD size of resource fork
2Ah BYTE length of filename
2Bh N BYTEs filename
SeeAlso: #2029
--------N-21F23D-----------------------------
INT 21 - Novell NetWare - COMMIT FILE
AX = F23Dh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2035)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=3Eh,AH=F2h"Novell",AX=F23Eh,AX=F243h
--------N-21F23E-----------------------------
INT 21 - Novell NetWare - FILE SEARCH INITIALIZE (FindFirst)
AX = F23Eh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2031)
ES:DI -> reply buffer (see #2032)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=4Eh,AH=F2h"Novell",AX=F23Fh,AX=F242h
Format of NetWare "File Search Initialize" request packet:
Offset Size Description (Table 2031)
00h BYTE directory handle
01h BYTE length of directory path
02h N BYTEs path of directory to search, in VOLUME:DIRECTORY/... format
SeeAlso: #2032,#2033
Format of NetWare "File Search Initialize" reply packet:
Offset Size Description (Table 2032)
00h BYTE volume number
01h WORD directory ID
03h WORD search sequence number
05h BYTE directory access rights
SeeAlso: #2031,#2034
--------N-21F23F-----------------------------
INT 21 - Novell NetWare - FILE SEARCH CONTINUE (FindNext)
AX = F23Fh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2033)
ES:DI -> reply buffer (see #2034)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=4Eh,AH=F2h"Novell",AX=F23Eh,AX=F242h
Format of NetWare "File Search Continue" request packet:
Offset Size Description (Table 2033)
00h BYTE volume number
02h WORD directory ID from File Search Initialize
04h WORD search sequence (set to FFFFh before first call)
06h BYTE search attributes
07h BYTE length of search directory path
08h N BYTEs name of search directory in VOLUME:DIRECTORY/.../DIR format
SeeAlso: #2034
Format of NetWare "File Search Continue" reply packet:
Offset Size Description (Table 2034)
00h WORD next search sequence
02h WORD directory ID from File Search Initialize
04h WORD reserved for future use
06h 14 BYTEs filename
14h BYTE file attributes
15h BYTE file mode
16h DWORD file length
2Ah WORD creation date
2Ch WORD last-access date
2Eh WORD last-modification date
30h WORD last-modification time
SeeAlso: #2033
--------N-21F242-----------------------------
INT 21 - Novell NetWare - CLOSE FILE
AX = F242h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2035)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=3Eh,AH=F2h"Novell",AX=F23Eh,AX=F243h,AX=F24Ah
Format of NetWare "Commit/Close File" request packet:
Offset Size Description (Table 2035)
00h BYTE reserved (0)
01h 6 BYTEs NetWare file handle
--------N-21F243-----------------------------
INT 21 - Novell NetWare - CREATE FILE
AX = F243h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2036)
ES:DI -> reply buffer (see #2037)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=3Ch,AH=F2h"Novell",AX=F23Eh,AX=F242h,AX=F24Ah,AX=F24Dh
Format of NetWare "Create File" request packet:
Offset Size Description (Table 2036)
00h BYTE directory handle
01h BYTE file attributes
02h BYTE length of filename
03h N BYTEs filename in DOS format
SeeAlso: #2037
Format of NetWare "Create File" reply packet:
Offset Size Description (Table 2037)
00h 6 BYTEs NetWare file handle
06h WORD reserved
08h 14 BYTEs DOS-format filename
16h BYTE file attributes
17h BYTE file execute type
18h DWORD file length
1Ch WORD creation date
1Eh WORD last-access date
20h WORD last-modification date
22h WORD last-modification time
SeeAlso: #2036
--------N-21F244-----------------------------
INT 21 - Novell NetWare - FILE SERVICES - ERASE FILE
AX = F244h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2039)
ES:DI ignored
Return: AL = status (see #2038)
Note: this function only marks the file for deletion; use AH=E2h/SF=CEh to
actually delete all marked files
SeeAlso: AH=13h,AH=41h,AH=E2h/SF=0Bh,AH=E3h/SF=CEh
(Table 2038)
Values for NetWare function status:
00h successful
98h nonexistent volume
9Bh invaid directory handle
9Ch invalid path
FFh no files found
SeeAlso: #1782,#2546 at INT 2F/AX=7A20h/BX=0000h
Format of NetWare "Erase Files" request packet:
Offset Size Description (Table 2039)
00h BYTE directory handle
01h BYTE search attributes (see #1107 at AX=4301h)
02h BYTE length of filespec
03h N BYTEs ASCIZ filespec (may include wildcards)
--------N-21F247-----------------------------
INT 21 - Novell NetWare - GET CURRENT FILE SIZE
AX = F247h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2040)
ES:DI -> reply buffer (see #2041)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=42h,AH=F2h"Novell",AX=F23Eh,AX=F242h,AX=F24Ah,AX=F24Dh
Format of NetWare "Get Current Size of File" request packet:
Offset Size Description (Table 2040)
00h BYTE reserved for future use
01h 6 BYTEs NetWare file handle
SeeAlso: #2041
Format of NetWare "Get Current Size of File" reply packet:
Offset Size Description (Table 2041)
00h DWORD current size of file
SeeAlso: #2040
--------N-21F24A-----------------------------
INT 21 - Novell NetWare - COPY FROM ONE FILE TO ANOTHER
AX = F24Ah
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2042)
ES:DI -> reply buffer (see #2043)
Return: AX = status (see #2038)
Note: this function only marks the file for deletion; use AH=E2h/SF=CEh to
actually delete all marked files
SeeAlso: AH=F2h"Novell",AX=F243h,AX=F247h,AH=F3h"NetWare"
Format of NetWare "Copy from One File to Another" request packet:
Offset Size Description (Table 2042)
00h BYTE reserved for future use
01h 6 BYTEs source NetWare file handle
07h 6 BYTEs destination NetWare file handle
0Dh DWORD source file offset
11h DWORD destination file offset
15h DWORD number of bytes to copy
SeeAlso: #2043
Format of NetWare "Copy from One File to Another" reply packet:
Offset Size Description (Table 2043)
00h DWORD number of bytes actually copied
SeeAlso: #2042
--------N-21F24D-----------------------------
INT 21 - Novell NetWare - CREATE NEW FILE
AX = F24Dh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2044)
ES:DI -> reply buffer (see #2045)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=6C00h,AH=F2h"Novell",AX=F23Eh,AX=F242h,AX=F243h
Format of NetWare "Create New File" request packet:
Offset Size Description (Table 2044)
00h BYTE directory handle
01h BYTE file attributes
02h BYTE length of filename
03h N BYTEs filename in DOS format
SeeAlso: #2045
Format of NetWare "Create New File" reply packet:
Offset Size Description (Table 2045)
00h 6 BYTEs NetWare file handle
06h WORD reserved
08h 14 BYTEs DOS-format filename
16h BYTE file attributes
17h BYTE file execute type
18h DWORD file length
1Ch WORD creation date
1Eh WORD last-access date
20h WORD last-modification date
22h WORD last-modification time
SeeAlso: #2044
--------N-21F24E-----------------------------
INT 21 - Novell NetWare v2+ - ALLOW TASK ACCESS TO FILE
AX = F24Eh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2046)
ES:DI -> reply buffer (see #2047)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Desc: allow calling task to gain access to an already-open file belonging
to another task of the same client
Note: the caller receives the same access rights as the owning task, and
must use the returned new handle to access the file
SeeAlso: AH=F2h"NetWare",AX=F244h
Format of NetWare "Allow Task Access to File" request packet:
Offset Size Description (Table 2046)
00h BYTE reserved for future use
01h 6 BYTEs NetWare file handle
SeeAlso: #2047
Format of NetWare "Allow Task Access to File" reply packet:
Offset Size Description (Table 2047)
00h 6 BYTEs new file handle
SeeAlso: #2046
--------N-21F256SF01-------------------------
INT 21 - Novell NetWare - CLOSE EXTENDED ATTRIBUTE HANDLE
AX = F256h subfn 01h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2048)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=02h,AX=F256h/SF=04h,AX=F256h/SF=05h
Format of NetWare "Close Extended Attribute Handle" request packet:
Offset Size Description (Table 2048)
00h BYTE 01h (subfunction "Close Extended Attribute Handle")
01h WORD reserved for future use
03h DWORD extended attribute handle
--------N-21F256SF02-------------------------
INT 21 - Novell NetWare - WRITE EXTENDED ATTRIBUTE
AX = F256h subfn 02h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2049)
ES:DI -> reply buffer (see #2050)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=03h,AX=F256h/SF=05h
Format of NetWare "Write Extended Attribute" request packet:
Offset Size Description (Table 2049)
00h BYTE 02h (subfunction "Write Extended Attribute")
01h WORD flags (see #2060)
03h 8 BYTEs extended attribute handle structure (see #2061)
0Bh DWORD write size
0Fh DWORD write position
13h DWORD access flag
17h WORD length of value
19h WORD key length
1Bh N BYTEs key
N BYTEs value
SeeAlso: #2049,#2051
Format of NetWare "Write Extended Attribute" reply packet:
Offset Size Description (Table 2050)
00h DWORD error code
04h DWORD number of bytes written
08h DWORD new extended attribute handle
SeeAlso: #2049
--------N-21F256SF03-------------------------
INT 21 - Novell NetWare - READ EXTENDED ATTRIBUTE
AX = F256h subfn 03h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2051)
ES:DI -> reply buffer (see #2052)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=04h,AX=F256h/SF=05h
Format of NetWare "Read Extended Attribute" request packet:
Offset Size Description (Table 2051)
00h BYTE 03h (subfunction "Read Extended Attribute")
01h WORD flags (see #2060)
03h 8 BYTEs extended attribute handle structure (see #2061)
0Bh DWORD read position
0Fh DWORD inspect size
13h WORD key length
15h N BYTEs key
SeeAlso: #2052,#2049
Format of NetWare "Read Extended Attribute" reply packet:
Offset Size Description (Table 2052)
00h DWORD error code
04h DWORD total extended attribute value length
08h DWORD new extended attribute handle
0Ch DWORD access flag
10h WORD value length
12h N BYTEs EA value
SeeAlso: #2051
--------N-21F256SF04-------------------------
INT 21 - Novell NetWare - ENUMERATE EXTENDED ATTRIBUTES
AX = F256h subfn 04h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2053)
ES:DI -> reply buffer (see #2054)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=02h,AX=F256h/SF=05h
Format of NetWare "Enumerate Extended Attributes" request packet:
Offset Size Description (Table 2053)
00h BYTE 04h (subfunction "Enumerate Extended Attributes")
01h WORD flags (see #2060)
03h 8 BYTEs extended attribute handle structure (see #2061)
0Bh DWORD inspect size
0Fh WORD enumeration sequence
11h WORD key length
13h N BYTEs key
SeeAlso: #2054
Format of NetWare "Enumerate Extended Attributes" reply packet:
Offset Size Description (Table 2054)
00h DWORD error code
04h DWORD total extended attributes
08h DWORD total extended attribute data size
0Ch DWORD total extended attribute key size
10h DWORD new extended attribute handle
---information level 0---
14h 2 WORDs reserved
---information level 1---
14h WORD number of enumerated extended attribute structures
16h var EA structure level 1
---information level 6---
14h WORD reserved
16h var EA structure level 6
---information level 7---
14h WORD number of enumerated extended attribute structures
16h var EA structure level 7
SeeAlso: #2053
Format of NetWare Extended Attribute structure level 1:
Offset Size Description (Table 2055)
00h DWORD length of EA value
04h WORD length of EA key
06h DWORD access flag
0Ah N BYTEs key
SeeAlso: #2054,#2056,#2057
Format of NetWare Extended Attribute structure level 6:
Offset Size Description (Table 2056)
00h DWORD length of EA value
04h WORD length of EA key
06h DWORD access flag
0Ah DWORD key extents
0Eh DWORD value extents
12h N BYTEs key
SeeAlso: #2054,#2055,#2057
Format of NetWare Extended Attribute structure level 7:
Offset Size Description (Table 2057)
00h BYTE key length
01h N BYTEs key
BYTE 00h
SeeAlso: #2054,#2055,#2056
--------N-21F256SF05-------------------------
INT 21 - Novell NetWare - DUPLICATE EXTENDED ATTRIBUTES
AX = F256h subfn 05h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2058)
ES:DI -> reply buffer (see #2059)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F256h/SF=01h,AX=F256h/SF=02h,AX=F256h/SF=04h
Format of NetWare "Duplicate Extended Attributes" request packet:
Offset Size Description (Table 2058)
00h BYTE 05h (subfunction "Duplicate Extended Attributes")
01h WORD source flags (see #2060)
03h WORD destination flags (see #2060)
05h 8 BYTEs source extended attribute structure (see #2061)
0Dh 8 BYTEs destination extended attribute structure (see #2061)
SeeAlso: #2059
Format of NetWare "Duplicate Extended Attributes" reply packet:
Offset Size Description (Table 2059)
00h DWORD number duplicated
04h DWORD data size duplicated
08h DWORD key size duplicated
SeeAlso: #2058
Bitfields for NetWare extended attribute flags:
Bit(s) Description (Table 2060)
1-0 extended attribute handle structure type
00 volume number and directory entry number
01 NetWare file handle
10 extended attribute handle
11 not used
2 close handle on error
6-4 information level (0,1,6,7)
7 not used
SeeAlso: #2058,#2061
Format of NetWare extended attribute structure:
Offset Size Description (Table 2061)
---type 0---
00h DWORD volume number
04h DWORD directory entry number
---type 1---
00h DWORD NetWare file handle
04h 4 BYTEs unused
---type 2---
00h DWORD extended attribute handle
04h 4 BYTEs unused
SeeAlso: #2060
--------N-21F257SF01-------------------------
INT 21 - Novell NetWare - OPEN/CREATE FILE OR SUBDIRECTORY
AX = F257h subfn 01h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2062)
ES:DI -> reply buffer (see #2063)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=6C00h,AX=F257h/SF=02h,AX=F257h/SF=04h
Format of NetWare "Open/Create File or Subdirectory" request packet:
Offset Size Description (Table 2062)
00h BYTE 01h (subfunction "Open/Create File or Subdirectory")
01h BYTE name space (see #2075)
02h BYTE open/create mode
03h WORD search attributes
05h DWORD return information mask
09h DWORD create attributes
0Dh WORD desired access rights (see #2065)
0Fh NetWare handle/path structure
SeeAlso: #2063
Format of NetWare "Open/Create File or Subdirectory" reply packet:
Offset Size Description (Table 2063)
00h DWORD file handle
04h BYTE open/create action
00h open
01h replace
03h create
05h BYTE reserved
SeeAlso: #2062
Format of NetWare Handle/Path structure:
Offset Size Description (Table 2064)
00h BYTE volume number
01h DWORD directory base or short handle
05h BYTE handle flag
00h short directory handle
01h directory base
FFh no handle
06h BYTE path component count
07h N BYTEs path component
Bitfields for NetWare desired access rights:
Bit(s) Description (Table 2065)
0 read-only mode
1 write-only
2 deny read
3 deny write
4 compatibility mode
6 write-through mode
SeeAlso: #2062
--------N-21F257SF02-------------------------
INT 21 - Novell NetWare - INITIALIZE SEARCH
AX = F257h subfn 02h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2066)
ES:DI -> reply buffer (see #2067)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=4Eh,AH=F2h"Novell",AX=F257h/SF=01h,AX=F257h/SF=03h
Format of NetWare "Initialize Search" request packet:
Offset Size Description (Table 2066)
00h BYTE 02h (subfunction "Initialize Search")
01h BYTE name space (see #2075)
02h BYTE reserved for future use
03h NetWare Handle/Path structure (see #2064)
SeeAlso: #2067
Format of NetWare "Initialize Search" reply packet:
Offset Size Description (Table 2067)
00h 9 BYTEs search sequence
BYTE volume number
DWORD directory number
DWORD current directory number
SeeAlso: #2066
--------N-21F257SF03-------------------------
INT 21 - Novell NetWare - SCAN NAMESPACE ENTRY INFO
AX = F257h subfn 03h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2068)
ES:DI -> reply buffer (see #2069)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=04h,AX=F257h/SF=05h
Format of NetWare "Search for File or Subdirectory" request packet:
Offset Size Description (Table 2068)
00h BYTE 03h (subfunction "Search for File or Subdirectory")
???
SeeAlso: #2069
Format of NetWare "Search for File or Subdirectory" reply packet:
Offset Size Description (Table 2069)
00h ???
SeeAlso: #2068
--------N-21F257SF04-------------------------
INT 21 - Novell NetWare - RENAME OR MOVE FILE OR SUBDIRECTORY
AX = F257h subfn 04h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2070)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=56h,AH=F2h"Novell",AX=F257h/SF=02h,AX=F257h/SF=03h,AX=F257h/SF=05h
Format of NetWare "Rename or Move File or Subdirectory" request packet:
Offset Size Description (Table 2070)
00h BYTE 04h (subfunction "Rename or Move File or Subdirectory")
01h BYTE name space (see #2075)
02h BYTE rename flags
bit 0: rename successful
bit 1: compatibility mode
03h WORD search attributes
05h source NetWare Handle Path
destination NetWare Handle Path
--------N-21F257SF05-------------------------
INT 21 - Novell NetWare - SCAN FILE OR SUBDIRECTORY FOR TRUSTEES
AX = F257h subfn 05h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2071)
ES:DI -> reply buffer (see #2072)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=04h,AX=F257h/SF=06h
Format of NetWare "Scan File or Subdirectory for Trustees" request packet:
Offset Size Description (Table 2071)
00h BYTE 05h (subfunction "Scan File or Subdirectory for Trustees")
01h BYTE name space (see #2075)
02h BYTE reserved for future use
03h DWORD scan sequence (set to 00000000h before first call)
07h NetWare Handle/Path structure (see #2064)
SeeAlso: #2072
Format of NetWare "Scan File or Subdirectory for Trustees" reply packet:
Offset Size Description (Table 2072)
00h DWORD next scan sequence or FFFFFFFFh if no more
04h WORD number of trustee object IDs returned
06h trustee structure
SeeAlso: #2071
--------N-21F257SF06-------------------------
INT 21 - Novell NetWare v3+ - GET INFORMATION ABOUT FILE OR DIRECTORY
AX = F257h subfn 06h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2073)
ES:DI -> reply buffer (see #2076)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AH=F2h"Novell",AX=F257h/SF=02h,AX=F257h/SF=05h,AX=F257h/SF=07h
Format of NetWare "Get NS Entry Info" request buffer:
Offset Size Description (Table 2073)
00h BYTE 06h (subfunction "Get NS Entry Info")
01h BYTE name space (see #2075)
02h BYTE destination name space
03h WORD search attributes
05h DWORD return information mask (see #2074)
09h BYTE volume number
0Ah DWORD directory base
0Eh BYTE handle flag
00h first byte of dir base is dir handle; ignore volume number
01h dir base = unique ID, volume number set
FFh volume number and dir base ignored, volume part of path
0Fh BYTE number of path components
10h N BYTEs list of path components (each a counted string)
SeeAlso: #2076
Bitfields for return information mask:
Bit(s) Description (Table 2074)
0 include filename
1 data stream space allocated info
2 attributes info
3 data stream size info
4 total space allocated for all data streams
5 extended attributes info
6 archive info
7 modify info
8 create info
9 name space info
10 directory info
11 rights info
(Table 2075)
Values for NetWare name space:
00h DOS
01h Macintosh
02h NFS
03h FTAM
04h OS/2
SeeAlso: #2073,#2081
Format of NetWare "Get NS Entry Info" reply buffer:
Offset Size Description (Table 2076)
00h 72 BYTEs reserved
48h DWORD creator's name space number
4Ch 257 BYTEs reserved
SeeAlso: #2073
--------N-21F257SF07-------------------------
INT 21 - Novell NetWare - MODIFY FILE OR SUBDIRECTORY DOS INFORMATION
AX = F257h subfn 07h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2077)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=04h,AX=F257h/SF=08h
Format of NetWare "Modify File or Subdirectory DOS Information" request packet:
Offset Size Description (Table 2077)
00h BYTE 07h (subfunction "Modify File or Subdirectory DOS Information")
01h BYTE name space (see #2075)
02h BYTE reserved for future use
03h WORD search attributes
05h DWORD modify DOS mask
09h Modify DOS information structure
--------N-21F257SF08-------------------------
INT 21 - Novell NetWare - DELETE FILE/DIRECTORY
AX = F257h subfn 08h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2078)
ES:DI -> reply buffer (see #2079)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=01h,AX=F257h/SF=07h
Format of NetWare "Delete File/Directory" request packet:
Offset Size Description (Table 2078)
00h BYTE 08h (subfunction "Delete File/Directory")
???
SeeAlso: #2079
Format of NetWare "Delete File/Directory" reply packet:
Offset Size Description (Table 2079)
00h ???
SeeAlso: #2078
--------N-21F257SF09-------------------------
INT 21 - Novell NetWare - SET SHORT DIRECTORY HANDLE
AX = F257h subfn 09h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2080)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=0Ch
Format of NetWare "Set Short Directory Handle" request packet:
Offset Size Description (Table 2080)
00h BYTE 09h (subfunction "Set Short Directory Handle")
01h BYTE name space (see #2075)
02h BYTE data stream
03h BYTE destination directory handle
04h BYTE reserved for future use
05h NetWare Handle/Path structure (see #2064)
--------N-21F257SF0A-------------------------
INT 21 - Novell NetWare v3+ - ADD TRUSTEE SET TO FILE OR SUBDIRECTORY
AX = F257h subfn 0Ah
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2081)
ES:DI ignored
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F257h/SF=0Bh
Format of NetWare "Add Trustee Set" request packet:
Offset Size Description (Table 2081)
00h BYTE 0Ah (subfunction "Add Trustee Set to File or Subdirectory")
01h BYTE name space (see #2075)
02h 2 BYTEs reserved
04h WORD trustee rights (see #1829)
06h WORD object ID count
08h NetWare Handle/Path structure (see #2064)
6 BYTEs trustee structure (see #2082)
Format of NetWare trustee structure:
Offset Size Description (Table 2082)
00h DWORD object ID
04h WORD trustee rights
SeeAlso: #2081
--------N-21F257SF0B-------------------------
INT 21 - Novell NetWare - DELETE TRUSTEE
AX = F257h subfn 0Bh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2083)
ES:DI -> reply buffer (see #2084)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=0Ah
Format of NetWare "Delete Trustee" request packet:
Offset Size Description (Table 2083)
00h BYTE 0Bh (subfunction "Delete Trustee")
???
SeeAlso: #2084
Format of NetWare "Delete Trustee" reply packet:
Offset Size Description (Table 2084)
00h ???
SeeAlso: #2083
--------N-21F257SF0C-------------------------
INT 21 - Novell NetWare v2+ - ALLOCATE SHORT DIRECTORY HANDLE
AX = F257h subfn 0Ch
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2085)
ES:DI -> reply buffer (see #2086)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Note: unlike "Alloc Permanent Directory Handle", this function does not
automatically map a drive
SeeAlso: AH=F2h"Novell",AX=F223h/SF=04h,AX=F223h/SF=05h,AX=F223h/SF=09h
Format of NetWare "Allocate Short Directory Handle" request packet:
Offset Size Description (Table 2085)
00h BYTE 0Ch (subfunction "Allocate Short Directory Handle")
01h BYTE name space (see #2075)
02h 2 BYTEs reserved for future use
04h WORD allocation mode
bits 1-0: 00 permanent handle
01 temporary handle
10 special temporary handle
11 reserved
06h NetWare Handle/Path structure (see #2064)
SeeAlso: #2086
Format of NetWare "Allocate Short Directory Handle" reply packet:
Offset Size Description (Table 2086)
00h BYTE new directory handle
01h BYTE volume number
02h DWORD reserved for future use
SeeAlso: #2085
--------N-21F257SF10-------------------------
INT 21 - Novell NetWare - SCAN SALVAGEABLE FILES
AX = F257h subfn 10h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2087)
ES:DI -> reply buffer (see #2088)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Bh,AX=F257h/SF=11h,AX=F257h/SF=12h
Format of NetWare "Scan Salvageable Files" request packet:
Offset Size Description (Table 2087)
00h BYTE 10h (subfunction "Scan Salvageable Files")
01h BYTE name space
02h BYTE data stream
03h DWORD return information mask
07h DWORD last sequence (set to FFFFFFFFh before first call)
0Bh NetWare Handle/Path structure (see #2064)
SeeAlso: #2088,#1811
Format of NetWare "Scan Salvageable Files" reply packet:
Offset Size Description (Table 2088)
00h DWORD next sequence number
04h WORD deletion time
06h WORD deletion date
08h DWORD ID of deletor
0Ch DWORD volume number
10h DWORD directory entry number
14h NetWare Information Structure
SeeAlso: #2087,#1812
--------N-21F257SF11-------------------------
INT 21 - Novell NetWare - RECOVER SALVAGEABLE FILE
AX = F257h subfn 11h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2089)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Ch,AX=F257h/SF=10h,AX=F257h/SF=12h
Format of NetWare "Recover Salvageable File" request packet:
Offset Size Description (Table 2089)
00h BYTE 11h (subfunction "Recover Salvageable File")
01h BYTE name space
02h BYTE reserved for future use
03h DWORD sequence number
07h DWORD volume number
0Bh DWORD scan directory base
0Fh BYTE new file name length
10h N BYTEs new file name
SeeAlso: #2090,#1813
--------N-21F257SF12-------------------------
INT 21 - Novell NetWare - PURGE SALVAGEABLE FILE
AX = F257h subfn 12h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2090)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F216h/SF=1Dh,AX=F257h/SF=10h,AX=F257h/SF=11h
Format of NetWare "Purge Salvageable File" request packet:
Offset Size Description (Table 2090)
00h BYTE 12h (subfunction "Purge Salvageable File")
01h BYTE name space
02h BYTE reserved
03h DWORD sequence number
07h DWORD volume number
0Bh DWORD directory entry number
SeeAlso: #2089
--------N-21F257SF13-------------------------
INT 21 - Novell NetWare - GET NAMESPACE INFORMATION
AX = F257h subfn 13h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2091)
ES:DI -> reply buffer (see #2092)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=12h,AX=F257h/SF=15h
Format of NetWare "Get Namespace Information" request packet:
Offset Size Description (Table 2091)
00h BYTE 13h (subfunction "Get Namespace Information")
01h BYTE source name space (see #2075)
02h BYTE destination name space
03h BYTE reserved for future use
04h BYTE volume number
05h DWORD directory base
09h DWORD namespace information mask
SeeAlso: #2092
Format of NetWare "Get Namespace Information" reply packet:
Offset Size Description (Table 2092)
00h var namespace-specific information
SeeAlso: #2091
--------N-21F257SF15-------------------------
INT 21 - Novell NetWare - GET PATH STRING FROM SHORT DIRECTORY HANDLE
AX = F257h subfn 15h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2093)
ES:DI -> reply buffer (see #2094)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=13h,AX=F257h/SF=16h
Format of NetWare "Get Path String from Short Directory Handle" request packet:
Offset Size Description (Table 2093)
00h BYTE 15h (subfunction "Get Path String from Short Directory Handle")
01h BYTE name space (see #2075)
02h BYTE short directory handle
SeeAlso: #2094
Format of NetWare "Get Path String from Short Directory Handle" reply packet:
Offset Size Description (Table 2094)
00h BYTE length of path
01h N BYTEs full directory path
SeeAlso: #2093
--------N-21F257SF16-------------------------
INT 21 - Novell NetWare - GENERATE DIRECTORY BASE AND VOLUME NUMBER
AX = F257h subfn 16h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2095)
ES:DI -> reply buffer (see #2096)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=15h,AX=F257h/SF=17h
Format of NetWare "Generate Directory Base and Volume Number" request packet:
Offset Size Description (Table 2095)
00h BYTE 16h (subfunction "Generate Directory Base and Volume Number")
01h BYTE name space (#2802)
02h 3 BYTEs reserved for future use
05h NetWare Handle/Path structure (see #2064)
SeeAlso: #2096
Format of NetWare "Generate Directory Base and Volume Number" reply packet:
Offset Size Description (Table 2096)
00h DWORD namespace directory base
04h DWORD DOS directory base
08h BYTE volume number
SeeAlso: #2095
--------N-21F257SF17-------------------------
INT 21 - Novell NetWare - GET NAME SPACE INFORMATION FORMAT
AX = F257h subfn 17h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2097)
ES:DI -> reply buffer (see #2098)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=18h,AX=F257h/SF=19h
Format of NetWare "Get Name Space Information Format" request packet:
Offset Size Description (Table 2097)
00h BYTE 17h (subfunction "Get Name Space Information Format")
01h BYTE name space (see #2075)
02h BYTE volume number
SeeAlso: #2098
Format of NetWare "Get Name Space Information Format" reply packet:
Offset Size Description (Table 2098)
00h DWORD fixed bitmask
04h DWORD variable bitmask
08h DWORD huge bitmask
0Ch WORD fixed bits defined
0Eh WORD variable bits defined
10h WORD huge bits defined
12h 128 BYTEs field lengths
SeeAlso: #2097
--------N-21F257SF18-------------------------
INT 21 - Novell NetWare - GET NAME SPACES LOADED
AX = F257h subfn 18h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2099)
ES:DI -> reply buffer (see #2100)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=17h,AX=F257h/SF=19h,AX=F257h/SF=1Ah
SeeAlso: AX=F216h/SF=2Fh
Format of NetWare "Get Name Spaces Loaded" request packet:
Offset Size Description (Table 2099)
00h BYTE 18h (subfunction "Get Name Spaces Loaded")
01h 2 BYTEs reserved for future use
03h BYTE volume number
SeeAlso: #2100
Format of NetWare "Get Name Spaces Loaded" reply packet:
Offset Size Description (Table 2100)
00h WORD number of namespace elements
02h WORD number of namespace elements loaded
04h N BYTEs loaded name spaces (each byte contains number of one loaded
name space)
SeeAlso: #2099
--------N-21F257SF19-------------------------
INT 21 - Novell NetWare - WRITE NAME SPACE INFO
AX = F257h subfn 19h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2101)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=17h,AX=F257h/SF=18h
Format of NetWare "Write Name Space Info" request packet:
Offset Size Description (Table 2101)
00h BYTE 19h (subfunction "Write Name Space Info")
01h BYTE source name space (see #2075)
02h BYTE destination name space
03h BYTE volume number
04h DWORD directory entry number
08h DWORD namespace information bitmask
0Ch 512 BYTEs namespace-specific informatin
--------N-21F257SF1A-------------------------
INT 21 - Novell NetWare - READ EXTENDED NAME SPACE INFO
AX = F257h subfn 1Ah
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2102)
ES:DI -> reply buffer (see #2103)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=18h,AX=F257h/SF=19h,AX=F257h/SF=1Bh
Format of NetWare "Read Extended Name Space Info" request packet:
Offset Size Description (Table 2102)
00h BYTE 1Ah (subfunction "Read Extended Name Space Info")
01h BYTE name space (see #2075)
02h BYTE volume number
03h DWORD directory base
07h DWORD huge mask
0Bh 16 BYTEs huge state information
SeeAlso: #2103
Format of NetWare "Read Extended Name Space Info" reply packet:
Offset Size Description (Table 2103)
00h 16 BYTEs next huge state information
10h DWORD huge data length
14h N BYTEs huge data
SeeAlso: #2102
--------N-21F257SF1B-------------------------
INT 21 - Novell NetWare - WRITE EXTENDED NAME SPACE INFO
AX = F257h subfn 1Bh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2104)
ES:DI -> reply buffer (see #2105)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=17h,AX=F257h/SF=18h,AX=F257h/SF=1Ah
Format of NetWare "Write Extended Name Space Info" request packet:
Offset Size Description (Table 2104)
00h BYTE 1Bh (subfunction "Write Extended Name Space Info")
01h BYTE name space (see #2075)
02h BYTE volume number
03h DWORD directory entry number
07h DWORD huge mask
0Bh 16 BYTEs huge state information
1Bh DWORD huge data length
1Fh N BYTEs huge data
SeeAlso: #2105
Format of NetWare "Write Extended Name Space Info" request packet:
Offset Size Description (Table 2105)
00h 16 BYTEs next huge state information
10h DWORD huge data used
SeeAlso: #2104
--------N-21F257SF1C-------------------------
INT 21 - Novell NetWare - GET NS FULL PATH STRING
AX = F257h subfn 1Ch
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2106)
ES:DI -> reply buffer (see #2107)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Note: this call returns the path in reverse order (root directory last)
SeeAlso: AH=F2h"Novell",AX=F257h/SF=03h,AX=F257h/SF=15h
Format of NetWare "Get NS Full Path String" request packet:
Offset Size Description (Table 2106)
00h BYTE 1Ch (subfunction "Get NS Full Path String")
01h BYTE source name space
02h BYTE destination name space
03h 10 BYTEs path cookie (see #2108)
04h NetWare Handle/Path structure (see #2064)
SeeAlso: #2107
Format of NetWare "Get NS Full Path String" reply packet:
Offset Size Description (Table 2107)
00h 10 BYTEs next path cookie (see #2108)
0Ah WORD size of path component(s) in packet
0Ch WORD number of path components in packet
0Eh path components
SeeAlso: #2106
Format of NetWare path cookie:
Offset Size Description (Table 2108)
00h WORD flags
bit 0: last component is a filename
02h DWORD cookie1
06h DWORD cookie2
Note: "cookie1" and "cookie2" are to be set to FFFFFFFFh initially; if
"cookie2" is FFFFFFFFh on return, all path components have been
transferred
SeeAlso: #2106,#2107
--------N-21F257SF1D-------------------------
INT 21 - Novell NetWare - GET EFFECTIVE DIRECTORY RIGHTS
AX = F257h subfn 1Dh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2109)
ES:DI -> reply buffer (see #2110)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AX=F216h/SF=03h,AX=F257h/SF=06h,AX=F257h/SF=0Ch,AX=F257h/SF=15h
Format of NetWare "Get Effective Directory Rights" request packet:
Offset Size Description (Table 2109)
00h BYTE 1Dh (subfunction "Get Effective Directory Rights")
01h BYTE name space (see #2075)
02h BYTE destination name space (see #2075)
03h WORD search attributes
05h DWORD return information mask
09h NetWare Handle/Path structure (see #2064)
SeeAlso: #2110
Format of NetWare "Get Effective Directory Rights" reply packet:
Offset Size Description (Table 2110)
00h WORD caller's effective rights
02h NetWare Information Structure
SeeAlso: #2109
--------N-21F258SF01-------------------------
INT 21 - Novell NetWare v4+ - GET VOLUME AUDITING STATISTICS
AX = F258h subfn 01h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2111)
ES:DI -> reply buffer (see #2112)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F268h/SF=C8h
Format of NetWare "Get Volume Auditing Statistics" request buffer:
Offset Size Description (Table 2111)
00h BYTE 01h (function "Get Volume Auditing Statistics")
01h DWORD volume
SeeAlso: #2112
Format of NetWare "Get Volume Auditing Statistics" reply buffer:
Offset Size Description (Table 2112)
00h WORD auditing version (date)
02h WORD audit file version (date)
04h DWORD auditing enabled flag
08h DWORD audit file's size
0Ch DWORD audit configuration file's size
10h DWORD maximum audit file size
14h DWORD audit file size threshold
18h DWORD number of audit records
1Ch DWORD number of history records
SeeAlso: #2111,#2164
--------N-21F258SF02-------------------------
INT 21 - Novell NetWare - ADD AUDIT PROPERTY
AX = F258h subfn 02h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2113)
ES:DI -> reply buffer (see #2114)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F217h/SF=39h,AX=F258h/SF=06h,AX=F258h/SF=08h
Format of NetWare "Add Audit Property" request packet:
Offset Size Description (Table 2113)
00h BYTE 02h (subfunction "Add Audit Property")
???
SeeAlso: #2114
Format of NetWare "Add Audit Property" reply packet:
Offset Size Description (Table 2114)
00h ???
SeeAlso: #2113
--------N-21F258SF03-------------------------
INT 21 - Novell NetWare - LOGIN AS VOLUME AUDITOR
AX = F258h subfn 03h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2115)
ES:DI -> reply buffer (see #2116)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=04h,AX=F258h/SF=0Dh
Format of NetWare "Login As Volume Auditor" request packet:
Offset Size Description (Table 2115)
00h BYTE 03h (subfunction "Login As Volume Auditor")
???
SeeAlso: #2116
Format of NetWare "Login As Volume Auditor" reply packet:
Offset Size Description (Table 2116)
00h ???
SeeAlso: #2115
--------N-21F258SF04-------------------------
INT 21 - Novell NetWare - CHANGE AUDITOR PASSWORD
AX = F258h subfn 04h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2117)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=03h
Format of NetWare "Change Auditor Password" request packet:
Offset Size Description (Table 2117)
00h BYTE 04h (subfunction "Change Auditor Password")
???
--------N-21F258SF05-------------------------
INT 21 - Novell NetWare - CHECK AUDIT ACCESS
AX = F258h subfn 05h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2118)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=02h,AX=F258h/SF=08h
Format of NetWare "Check Audit Access" request packet:
Offset Size Description (Table 2118)
00h BYTE 05h (subfunction "Check Audit Access")
???
--------N-21F258SF06-------------------------
INT 21 - Novell NetWare - REMOVE AUDIT PROPERTY
AX = F258h subfn 06h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2119)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=02h,AX=F258h/SF=05h
Format of NetWare "Remove Audit Property" request packet:
Offset Size Description (Table 2119)
00h BYTE 06h (subfunction "Remove Audit Property")
???
--------N-21F258SF07-------------------------
INT 21 - Novell NetWare - DISABLE AUDITING ON VOLUME
AX = F258h subfn 07h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2120)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=08h,AX=F258h/SF=09h
Format of NetWare "Disable Auditing on Volume" request packet:
Offset Size Description (Table 2120)
00h BYTE 07h (subfunction "Disable Auditing on Volume")
???
--------N-21F258SF08-------------------------
INT 21 - Novell NetWare - ENABLE AUDITING ON VOLUME
AX = F258h subfn 08h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2121)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=07h,AX=F258h/SF=09h
Format of NetWare "Enable Auditing on Volume" request packet:
Offset Size Description (Table 2121)
00h BYTE 08h (subfunction "Enable Auditing on Volume")
???
--------N-21F258SF09-------------------------
INT 21 - Novell NetWare - IS USER AUDITED?
AX = F258h subfn 09h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2122)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=07h,AX=F258h/SF=08h
Format of NetWare "Is User Audited?" request packet:
Offset Size Description (Table 2122)
00h BYTE 09h (subfunction "Is User Audited?")
???
--------N-21F258SF0A-------------------------
INT 21 - Novell NetWare - READ AUDITING BITMAP
AX = F258h subfn 0Ah
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2123)
ES:DI -> reply buffer (see #2124)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Bh,AX=F258h/SF=10h
Format of NetWare "Read Auditing Bitmap" request packet:
Offset Size Description (Table 2123)
00h BYTE 0Ah (subfunction "Read Auditing Bitmap")
???
SeeAlso: #2124,#2125
Format of NetWare "Read Auditing Bitmap" reply packet:
Offset Size Description (Table 2124)
00h ???
SeeAlso: #2123,#2126
--------N-21F258SF0B-------------------------
INT 21 - Novell NetWare - READ AUDIT CONFIG HEADER
AX = F258h subfn 0Bh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2125)
ES:DI -> reply buffer (see #2126)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Ah,AX=F258h/SF=11h
Format of NetWare "Read Audit Configuration Header" request packet:
Offset Size Description (Table 2125)
00h BYTE 0Bh (subfunction "Read Audit Configuration Header")
???
SeeAlso: #2126,#2123
Format of NetWare "Read Audit Configuration Header" reply packet:
Offset Size Description (Table 2126)
00h ???
SeeAlso: #2125,#2124
--------N-21F258SF0D-------------------------
INT 21 - Novell NetWare - LOGOUT AS VOLUME AUDITOR
AX = F258h subfn 0Dh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2127)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=03h
Format of NetWare "Logout as Volume Auditor" request packet:
Offset Size Description (Table 2127)
00h BYTE 0Dh (subfunction "Logout as Volume Auditor")
???
--------N-21F258SF0E-------------------------
INT 21 - Novell NetWare - RESET AUDITING FILE
AX = F258h subfn 0Eh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2128)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Ah,AX=F258h/SF=0Fh
Format of NetWare "Reset Auditing File" request packet:
Offset Size Description (Table 2128)
00h BYTE 0Eh (subfunction "Reset Auditing File")
???
--------N-21F258SF0F-------------------------
INT 21 - Novell NetWare - RESET AUDIT HISTORY FILE
AX = F258h subfn 0Fh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2129)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Eh
Format of NetWare "Reset Audit History File" request packet:
Offset Size Description (Table 2129)
00h BYTE 0Fh (subfunction "Reset Audit History File")
???
--------N-21F258SF10-------------------------
INT 21 - Novell NetWare - WRITE AUDITING BITMAP
AX = F258h subfn 10h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2130)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Ah,AX=F258h/SF=11h
Format of NetWare "Write Auditing Bitmap" request packet:
Offset Size Description (Table 2130)
00h BYTE 10h (subfunction "Write Auditing Bitmap")
???
SeeAlso: #2131
--------N-21F258SF11-------------------------
INT 21 - Novell NetWare - WRITE AUDIT CONFIG HEADER
AX = F258h subfn 11h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2131)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=0Bh,AX=F258h/SF=10h
Format of NetWare "Write Audit Configuration Header" request packet:
Offset Size Description (Table 2131)
00h BYTE 11h (subfunction "Write Audit Configuration Header")
???
SeeAlso: #2130
--------N-21F258SF13-------------------------
INT 21 - Novell NetWare - GET AUDITING FLAGS
AX = F258h subfn 13h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2132)
ES:DI -> reply buffer (see #2133)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=05h
Format of NetWare "Get Auditing Flags" request packet:
Offset Size Description (Table 2132)
00h BYTE 13h (subfunction "Get Auditing Flags")
???
SeeAlso: #2133
Format of NetWare "Get Auditing Flags" reply packet:
Offset Size Description (Table 2133)
00h ???
SeeAlso: #2132
--------N-21F258SF14-------------------------
INT 21 - Novell NetWare - CLOSE OLD AUDITING FILE
AX = F258h subfn 14h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2134)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=15h
Format of NetWare "Close Old Auditing File" request packet:
Offset Size Description (Table 2134)
00h BYTE 14h (subfunction "Close Old Auditing File")
???
SeeAlso: #2135
--------N-21F258SF15-------------------------
INT 21 - Novell NetWare - DELETE OLD AUDITING FILE
AX = F258h subfn 15h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2135)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=14h
Format of NetWare "Delete Old Auditing File" request packet:
Offset Size Description (Table 2135)
00h BYTE 15h (subfunction "Delete Old Auditing File")
???
SeeAlso: #2134
--------N-21F258SF16-------------------------
INT 21 - Novell NetWare - CHECK AUDIT LEVEL TWO ACCESS
AX = F258h subfn 16h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2136)
ES:DI -> reply buffer
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F258h/SF=05h
Format of NetWare "Check Audit Level Two Access" request packet:
Offset Size Description (Table 2136)
00h BYTE 16h (subfunction "Check Audit Level Two Access")
???
--------N-21F25ASF01-------------------------
INT 21 - Novell NetWare - GET DATA MIGRATION INFO
AX = F25Ah subfn 01h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2137)
ES:DI -> reply buffer (see #2138)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=80h,AX=F25Ah/SF=86h
Format of NetWare "Get Data Migration Information" request packet:
Offset Size Description (Table 2137)
00h WORD length of following data
02h BYTE 01h (subfunction "Get Data Migration Information")
SeeAlso: #2138
Format of NetWare "Get Data Migration Information" reply packet:
Offset Size Description (Table 2138)
00h ???
SeeAlso: #2137
--------N-21F25ASF80-------------------------
INT 21 - Novell NetWare - MOVE FILE DATA TO DATA MIGRATION
AX = F25Ah subfn 80h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2139)
ES:DI -> reply buffer (see #2140)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=82h,AX=F25Ah/SF=85h
Format of NetWare "Move File Data to Data Migration" request packet:
Offset Size Description (Table 2139)
00h WORD length of following data
02h BYTE 80h (subfunction "Move File Data to Data Migration")
03h DWORD volume number
07h DWORD directory entry number
0Bh DWORD name space (see #2075)
0Fh DWORD support module ID
13h DWORD save key flag
00000010h to save key when file is demigrated
SeeAlso: #2140
Format of NetWare "Move File Data to Data Migration" reply packet:
Offset Size Description (Table 2140)
00h DWORD volume-unique ID
SeeAlso: #2139
--------N-21F25ASF81-------------------------
INT 21 - Novell NetWare - DATA MIGRATION FILE INFORMATION
AX = F25Ah subfn 81h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2141)
ES:DI -> reply buffer (see #2142)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=80h,AX=F25Ah/SF=82h,AX=F25Ah/SF=83h
Format of NetWare "Data Migration File Information" request packet:
Offset Size Description (Table 2141)
00h WORD length of following data
02h BYTE 81h (subfunction "Data Migration File Information")
03h DWORD volume number
07h DWORD directory entry number
0Bh DWORD name space (see #2075)
SeeAlso: #2142
Format of NetWare "Data Migration File Information" reply packet:
Offset Size Description (Table 2142)
00h DWORD support module ID
04h DWORD estimate restoration time
08h DWORD bitmask of supported data streams
SeeAlso: #2141
--------N-21F25ASF82-------------------------
INT 21 - Novell NetWare - VOLUME DATA MIGRATION STATUS
AX = F25Ah subfn 82h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2143)
ES:DI -> reply buffer (see #2144)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=01h,AX=F25Ah/SF=83h,AX=F25Ah/SF=84h
Format of NetWare "Volume Data Migration Status" request packet:
Offset Size Description (Table 2143)
00h WORD length of following data
02h BYTE 82h (subfunction "Volume Data Migration Status")
03h DWORD volume number
07h DWORD support module ID
SeeAlso: #2144
Format of NetWare "Volume Data Migration Status" request packet:
Offset Size Description (Table 2144)
00h DWORD number of migrated files
04h DWORD total size required to restore all migrated files
08h DWORD total space used on migration device
0Ch DWORD limbo space (demigrated files with save-key flag set)
10h DWORD total space including limbo space
14h DWORD number of files in limbo
SeeAlso: #2143
--------N-21F25ASF83-------------------------
INT 21 - Novell NetWare - GET MIGRATION OR STATUS INFORMATION
AX = F25Ah subfn 83h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2145)
ES:DI -> reply buffer (see #2146)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=82h,AX=F25Ah/SF=84h,AX=F25Ah/SF=85h
Format of NetWare "Get Migration or Status Information" request packet:
Offset Size Description (Table 2145)
00h WORD length of following data
02h BYTE 83h (subfunction "Get Migration or Status Information")
SeeAlso: #2146
Format of NetWare "Get Migration or Status Information" request packet:
Offset Size Description (Table 2146)
00h DWORD presence flag
FFFFFFFFh if Data Migration NLM is loaded and running
04h DWORD major version
08h DWORD minor version
0Ch DWORD flag: has support module registered with Data Migrator?
SeeAlso: #2145
--------N-21F25ASF84-------------------------
INT 21 - Novell NetWare - DATA MIGRATION SUPPORT MODULE INFORMATION
AX = F25Ah subfn 84h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2147)
ES:DI -> reply buffer (see #2148)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=82h,AX=F25Ah/SF=83h,AX=F25Ah/SF=86h
Format of NetWare "Data Migration Support Module Information" request packet:
Offset Size Description (Table 2147)
00h WORD length of following data
02h BYTE 84h (subfunction "Data Migration Support Module Information")
03h DWORD information level
0000h get data migration NLM info
0001h get loaded support modules
0002h get name of support module
07h DWORD support module ID
SeeAlso: #2148
Format of NetWare "Data Migration Support Module Information" request packet:
Offset Size Description (Table 2148)
---information level 0---
00h DWORD read/write access status
04h DWORD length of Specific Device Information block (max 384)
08h DWORD space available on support module
0Ch DWORD amount of space used
10h BYTE length of support module's name
11h 14 BYTEs support module name
1Fh 128 BYTEs support module information
---information level 1---
00h DWORD number of support modules
04h 32 BYTEs support module IDs
---information level 2---
00h BYTE length of module name
01h 32 BYTEs support module name
SeeAlso: #2147
--------N-21F25ASF85-------------------------
INT 21 - Novell NetWare - MOVE FILE DATA FROM DATA MIGRATION
AX = F25Ah subfn 85h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2149)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=80h,AX=F25Ah/SF=83h,AX=F25Ah/SF=86h
Format of NetWare "Move File Data From Data Migration" request packet:
Offset Size Description (Table 2149)
00h WORD length of following data
02h BYTE 85h (subfunction "Move File Data from Data Migration")
03h DWORD volume number
07h DWORD directory entry number
0Bh DWORD name space (see #2075)
SeeAlso: #2140
--------N-21F25ASF86-------------------------
INT 21 - Novell NetWare - GET OR SET DEFAULT SUPPORT MODULE
AX = F25Ah subfn 86h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2150)
ES:DI -> reply buffer (see #2151)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F25Ah/SF=01h,AX=F25Ah/SF=80h,AX=F25Ah/SF=84h
Format of NetWare "Get or Set Default Support Module" request packet:
Offset Size Description (Table 2150)
00h WORD length of following data
02h BYTE 86h (subfunction "Get or Set Default Support Module")
03h DWORD direction
00h get default support module
01h set default support module
07h DWORD new module ID if setting
SeeAlso: #2151
Format of NetWare "Get or Set Default Support Module" request packet:
Offset Size Description (Table 2151)
00h DWORD support module ID
SeeAlso: #2150
--------N-21F268SF01-------------------------
INT 21 - Novell NetWare v4+ - GET TREE NAME
AX = F268h subfn 01h
CX = length of request buffer in bytes (0001h)
DX = length of reply buffer in bytes (0064h)
DS:SI -> request buffer (see #2152)
ES:DI -> reply buffer (see #2153)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F268h/SF=04h
Format of NetWare "Get Tree Name" request buffer:
Offset Size Description (Table 2152)
00h BYTE 01h (subfunction "Get Tree Name")
Format of NetWare "Get Tree Name" reply buffer:
Offset Size Description (Table 2153)
00h DWORD Ping version
04h DWORD length of tree name
08h 32 BYTEs tree name, padded with underscores ('_')
28h 60 BYTEs ???
--------N-21F268SF04-------------------------
INT 21 - Novell NetWare v4+ - GET BINDERY CONTEXT
AX = F268h subfn 04h
CX = length of request buffer in bytes (0001h)
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2154)
ES:DI -> reply buffer (see #2155)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F268h/SF=01h,AX=F268h/SF=C8h
Format of NetWare "Get Bindery Context" request buffer:
Offset Size Description (Table 2154)
00h BYTE 04h (subfunction "Get Bindery Context")
Format of NetWare "Get Bindery Context" reply buffer:
Offset Size Description (Table 2155)
00h DWORD length (max 200)
04h N WORDs Unicode bindery context string
--------N-21F268SF05-------------------------
INT 21 - Novell NetWare v4+ - MONITOR NDS CONNECTION
AX = F268h subfn 05h
CX = length of request buffer in bytes (0001h)
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2156)
ES:DI -> reply buffer (unused???)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
Format of NetWare "Monitor NDS Connection" request buffer:
Offset Size Description (Table 2156)
00h BYTE 05h (subfunction "Monitor NDS Connection"
--------N-21F268SF16-------------------------
INT 21 - Novell NetWare v4+ - NDS LIST PARTITIONS
AX = F268h subfn 16h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2157)
ES:DI -> reply buffer (see #2158)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Note: the length specified in CX must be exactly 13 bytes more than the
length field at offset 09h in the request buffer for this function
to be successful
SeeAlso: AX=F268h/SF=35h
Format of NetWare "NDS List Partitions" request buffer:
Offset Size Description (Table 2157)
00h BYTE 02h
01h DWORD ??? (FFFFFFFFh)
05h DWORD ??? (00000202h)
09h DWORD length (00000018h)
0Dh DWORD ??? (00000000h)
11h DWORD function (00000016h) (subfunction "NDS List Partitions")
15h DWORD ??? (00000400h)
19h DWORD API version (00000000h)
1Dh DWORD ??? (00000000h)
21h DWORD iteration (FFFFFFFFh)
SeeAlso: #2158,#2159
Format of NetWare "NDS List Partitions" reply buffer:
Offset Size Description (Table 2158)
00h DWORD length
04h DWORD ???
08h DWORD return code
0Ch DWORD iteration
10h 1000 BYTEs returned data
SeeAlso: #2157
--------N-21F268SF35-------------------------
INT 21 - Novell NetWare v4+ - NDS GET SERVER NAME AND ADDRESS
AX = F268h subfn 35h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2159)
ES:DI -> reply buffer (see #2160)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Note: the length specified in CX must be exactly 13 bytes more than the
length field at offset 09h in the request buffer for this function
to be successful
SeeAlso: AX=F268h/SF=16h
Format of NetWare "NDS Get Server Name and Address" request buffer:
Offset Size Description (Table 2159)
00h BYTE 02h
01h DWORD ??? (FFFFFFFFh)
05h DWORD ??? (00000202h)
09h DWORD length (0000000Ch)
0Dh DWORD ??? (00000000h)
11h DWORD function (00000035h) (subfunc "NDS Get Server Name and Addr")
15h DWORD ??? (00000400h)
SeeAlso: #2157,#2160
Format of NetWare "NDS Get Server Name and Address" reply buffer:
Offset Size Description (Table 2160)
00h DWORD length
04h DWORD ???
08h DWORD return code
0Ch DWORD length of name
10h N WORDs Unicode server name string
var padding
DWORD ??? (00000001h)
DWORD ??? (00000000h)
DWORD ??? (0000000Ch)
12 BYTEs server's IPX address
SeeAlso: #2159
--------N-21F268SF3D-------------------------
INT 21 - Novell NetWare v4+ - NDS LOGOUT
AX = F268h subfn 3Dh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2161)
ES:DI -> reply buffer (see #2162)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F217h/SF=14h
Format of NetWare "NDS Logout" request buffer:
Offset Size Description (Table 2161)
00h BYTE 02h
01h DWORD ??? (FFFFFFFFh)
05h DWORD ??? (00000202h)
09h DWORD length (0000000Ch)
0Dh DWORD ??? (00000000h)
11h DWORD function (0000003Dh) (subfunction "NDS Logout")
15h DWORD ??? (00000000h)
SeeAlso: #2162
Format of NetWare "NDS Logout" reply buffer:
Offset Size Description (Table 2162)
00h DWORD length
04h DWORD ???
08h DWORD return code
SeeAlso: #2161
--------N-21F268SFC8-------------------------
INT 21 - Novell NetWare v4+ - GET DS AUDITING STATISTICS
AX = F268h subfn C8h
CX = length of request buffer in bytes (0001h)
DX = length of reply buffer in bytes (0020h)
DS:SI -> request buffer (see #2163)
ES:DI -> reply buffer (see #2164)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F258h/SF=01h,AX=F268h/SF=01h,AX=F268h/SF=04h
Format of NetWare "Get DS Auditing Statistics" request buffer:
Offset Size Description (Table 2163)
00h BYTE C8h (subfunction "Get DS Auditing Statistics")
SeeAlso: #2164
Format of NetWare "Get DS Auditing Statistics" reply buffer:
Offset Size Description (Table 2164)
00h WORD auditing version (date)
02h WORD audit file version (date)
04h DWORD auditing enabled flag
08h DWORD audit file's size
0Ch DWORD audit configuration file's size
10h DWORD maximum audit file size
14h DWORD audit file size threshold
18h DWORD number of audit records
1Ch DWORD number of history records
SeeAlso: #2112,#2163
--------N-21F269-----------------------------
INT 21 - Novell NetWare - LOG FILE
AX = F269h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2165)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F203h,AX=F26Ah,AH=EBh"NetWare"
Format of NetWare "Log File" request packet:
Offset Size Description (Table 2165)
00h BYTE directory handle
01h BYTE lock flag
00h log only
01h log and lock
02h WORD lock timeout in clock ticks (0000h = don't wait)
04h BYTE length of filename
05h N BYTEs filename
--------N-21F26A-----------------------------
INT 21 - Novell NetWare - LOCK FILE SET
AX = F26Ah
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2166)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F204h,AX=F269h,AH=CBh"NetWare"
Format of NetWare "Lock File Set" request packet:
Offset Size Description (Table 2166)
00h WORD lock timeout in clock ticks (0000h = don't wait)
--------N-21F26C-----------------------------
INT 21 - Novell NetWare - LOCK LOGICAL RECORD SET
AX = F26Ch
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2167)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F20Ah,AX=F26Ah,AH=CBh"NetWare"
Format of NetWare "Lock Logical Record Set" request packet:
Offset Size Description (Table 2167)
00h BYTE lock flag
00h shareable lock
01h exclusive lock
01h WORD lock timeout in clock ticks (0000h = don't wait)
--------N-21F26E-----------------------------
INT 21 - Novell NetWare - LOCK PHYSICAL RECORD SET
AX = F26Eh
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2168)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F21Bh,AX=F26Ch,AH=C2h"NetWare"
Format of NetWare "Lock Physical Record Set" request packet:
Offset Size Description (Table 2168)
00h BYTE lock flag
00h exclusive lock
02h shareable lock
01h WORD lock timeout in clock ticks (0000h = don't wait)
--------N-21F26FSF00-------------------------
INT 21 - Novell NetWare - OPEN SEMAPHORE
AX = F26Fh subfn 00h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2169)
ES:DI -> reply buffer (see #2170)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=01h,AX=F26Fh/SF=02h
Format of NetWare "Open Semaphore" request packet:
Offset Size Description (Table 2169)
00h BYTE 00h (subfunction "Open Semaphore")
01h BYTE initial semaphore value
02h BYTE length of semaphore's name
03h N BYTEs semaphore name
SeeAlso: #2170
Format of NetWare "Open Semaphore" request packet:
Offset Size Description (Table 2170)
00h DWORD semaphore handle
04h BYTE number of clients using semaphore (including caller)
SeeAlso: #2169
--------N-21F26FSF01-------------------------
INT 21 - Novell NetWare - CLOSE SEMAPHORE
AX = F26Fh subfn 01h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2171)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=00h,AX=F26Fh/SF=03h,AX=F220h/SF=04h
Format of NetWare "Close Semaphore" request packet:
Offset Size Description (Table 2171)
00h BYTE 01h (subfunction "Close Semaphore")
01h DWORD semaphore handle
SeeAlso: #1974
--------N-21F26FSF02-------------------------
INT 21 - Novell NetWare - WAIT ON SEMAPHORE
AX = F26Fh subfn 02h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2172)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=00h,AX=F26Fh/SF=04h
Format of NetWare "Wait on Semaphore" request packet:
Offset Size Description (Table 2172)
00h BYTE 02h (subfunction "Wait on Semaphore")
01h DWORD semaphore handle
05h WORD timeout in clock ticks (0000h = no wait)
--------N-21F26FSF03-------------------------
INT 21 - Novell NetWare - SIGNAL SEMAPHORE
AX = F26Fh subfn 03h
CX = length of request packet in bytes
DX = 0000h (no reply packet)
DS:SI -> request packet (see #2173)
ES:DI ignored
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=02h,AX=F26Fh/SF=04h
Format of NetWare "Signal Semaphore" request packet:
Offset Size Description (Table 2173)
00h BYTE 03h (subfunction "Signal Semaphore")
01h DWORD semaphore handle
--------N-21F26FSF04-------------------------
INT 21 - Novell NetWare - EXAMINE SEMAPHORE
AX = F26Fh subfn 04h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2174)
ES:DI -> reply buffer (see #2175)
Return: AX = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
SeeAlso: AH=F2h"Novell",AX=F26Fh/SF=02h,AX=F26Fh/SF=03h
Format of NetWare "Examine Semaphore" request packet:
Offset Size Description (Table 2174)
00h BYTE 04h (subfunction "Examine Semaphore")
01h DWORD semaphore handle
SeeAlso: #2175
Format of NetWare "Examine Semaphore" reply packet:
Offset Size Description (Table 2175)
00h BYTE semaphore's current value
01h BYTE number of clients using semaphore
SeeAlso: #2174
--------N-21F272-----------------------------
INT 21 - Novell NetWare v4+ - GET FILE SERVER UTC TIME
AX = F272h
CX = length of request buffer in bytes (0003h)
DX = length of reply buffer in bytes (0064h)
DS:SI -> request buffer (see #2176)
ES:DI -> reply buffer (see #2177)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get File Server UTC Time" request buffer:
Offset Size Description (Table 2176)
00h BYTE ??? (00h)
01h BYTE ??? (01h)
02h BYTE ??? (01h)
SeeAlso: #2177
Format of NetWare "Get File Server UTC Time" reply buffer:
Offset Size Description (Table 2177)
00h DWORD seconds
04h DWORD ???
04h DWORD ??? (00000204h)
04h DWORD ??? (00000000h)
04h DWORD ??? (00000000h)
04h DWORD ??? (FFFFFFFFh)
04h DWORD ??? (00000000h)
SeeAlso: #2176
--------N-21F27BSF01-------------------------
INT 21 - Novell NetWare v4+ - GET CACHE INFORMATION
AX = F27Bh subfn 01h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2178)
ES:DI -> reply buffer (see #2179)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F27Bh/SF=02h
Format of NetWare "Get Cache Information" request buffer:
Offset Size Description (Table 2178)
00h WORD 0001h (length of following data)
02h BYTE 01h (subfunction "Get Cache Information")
SeeAlso: #2179
Format of NetWare "Get Cache Information" reply buffer:
Offset Size Description (Table 2179)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD "readExistingBlockCount"
0Ch DWORD "readExistingWriteWaitCount"
10h DWORD "readExistingPartialReadCount"
14h DWORD "readExistingReadErrorCount"
18h DWORD "writeBlockCount"
1Ch DWORD "writeEntireBlockCount"
20h DWORD "getDiskCount"
24h DWORD "getDiskNeedToAllocCount"
28h DWORD "getDiskSomeoneBeatMeCount"
2Ch DWORD "getDiskPartialReadCount"
30h DWORD "getDiskReadErrorCount"
34h DWORD "getAsyncDiskCount"
38h DWORD "getAsyncDiskNeedToAlloc"
3Ch DWORD "getAsyncDiskSomeoneBeatMe"
40h DWORD "errorDoingAsyncReadCount"
44h DWORD "getDiskNoReadCount"
48h DWORD "getDiskNoReadAllocCount"
4Ch DWORD "getDiskNoReadSomeoneBeatMeCount"
50h DWORD "diskWriteCount"
54h DWORD "diskWriteAllocCount"
58h DWORD "diskWriteSomeoneBeatMeCount"
5Ch DWORD "writeErrorCount"
60h DWORD "waitOnSemaphoreCount"
64h DWORD "allocBlockWaitForSomeoneCount"
68h DWORD "allocBlockCount"
6Ch DWORD "allocBlockWaitCount"
70h DWORD original number of cache buffers
74h DWORD current number of cache buffers
78h DWORD cache dirty-block threshold
7Ch DWORD "waitNodeCount"
80h DWORD "waitNodeAllocFailureCount"
84h DWORD "moveCacheNodeCount"
88h DWORD "moveCacheNodeFromAvailCount"
8Ch DWORD "accelerateCacheNodeWriteCount"
90h DWORD "removeCacheNodeCount"
94h DWORD "removeCacheNodeFromAvailCount"
98h DWORD number of cache checks
9Ch DWORD number of cache hits
A0h DWORD number of dirty-cache checks
A4h DWORD number of dirty-cache hits
A8h DWORD "cacheUsedWhileChecking"
ACh DWORD "waitForDirtyBlocksDecreaseCount"
B0h DWORD "allocBlockFromAvailCount"
B4h DWORD "allocBlockFromLRUCount"
B8h DWORD "allocBlockAlreadyWaiting"
BCh DWORD "LRUSittingTime"
C0h DWORD maximum byte count
C4h DWORD minimum number of cache buffers
C8h DWORD minimum cache report threshold
D0h DWORD "allocWaitingCount"
D4h DWORD number of dirty cache blocks
D8h DWORD "cacheDirtyWaitTime"
DCh DWORD "maxDirtyTime"
E0h DWORD number of directory cache buffers
E4h DWORD "cacheByteToBlockShiftFactor"
SeeAlso: #2178
--------N-21F27BSF02-------------------------
INT 21 - Novell NetWare v4+ - GET SERVER INFORMATION
AX = F27Bh subfn 02h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2180)
ES:DI -> reply buffer (see #2181)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F27Bh/SF=01h
Format of NetWare "Get Server Information" request buffer:
Offset Size Description (Table 2180)
00h WORD 0001h (length of following data)
02h BYTE 02h (subfunction "Get Server Information")
SeeAlso: #2181
Format of NetWare "Get Server Information" reply buffer:
Offset Size Description (Table 2181)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD current NCP stations in use
0Ch DWORD peak NCP stations in use
10h DWORD total NCP requests
14h DWORD server utilization
18h DWORD number of cancelled replies
1Ch DWORD "writeHeldOffCount"
20h DWORD "writeHeldOffWithDuplicateRequest"
24h DWORD number of invalid request types
28h DWORD "beingAbortedCount"
2Ch DWORD "alreadyDoingReallocCount"
30h DWORD "deAllocInvalidSlotCount"
34h DWORD "deAllocBeingProcessedCount"
38h DWORD "deAllocForgedPacketCount"
3Ch DWORD "startStationErrorCount"
40h DWORD number of invalid slot numbers
44h DWORD "beingProcessedCount"
48h DWORD number of forged packets
4Ch DWORD number still transmitting
50h DWORD "reExecuteRequestCount"
54h DWORD number of invalid sequence numbers
58h DWORD "duplicateIsBeingSentAlreadyCnt"
5Ch DWORD number of positive acknowledgements sent
60h DWORD number of duplicate replies sent
64h DWORD number of times out of memory for station control
68h DWORD number of times out of available connections
6Ch DWORD "reallocSlotCount"
70h DWORD "reallocSlotCameTooSoonCount"
74h WORD number of times maximum hop count exceeded
76h WORD number of unknown networks
78h WORD "NoSpaceForService"
7Ah WORD number of times out of receive buffers
7Ch WORD "notMyNetwork"
7Eh DWORD number of NetBIOS packets propagated
82h DWORD total number of packets serviced
86h DWORD total number of packets routed
SeeAlso: #2180
--------N-21F27BSF04-------------------------
INT 21 - Novell NetWare v4+ - GET USER INFORMATION
AX = F27Bh subfn 04h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2182)
ES:DI -> reply buffer (see #2183)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get User Information" request buffer:
Offset Size Description (Table 2182)
00h WORD 0005h (length of following data)
02h BYTE 04h (subfunction "Get User Information")
03h DWORD connection number
SeeAlso: #2183
Format of NetWare "Get User Information" reply buffer:
Offset Size Description (Table 2183)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD connection number
0Ch DWORD use count
10h BYTE connection service type
11h 7 BYTEs login time
18h DWORD status
1Ch DWORD expiration time
20h DWORD object type
24h BYTE transaction flag
25h BYTE logical lock threshold
26h BYTE record lock threshold
27h BYTE file write flags
28h BYTE file write state
29h BYTE (filler)
2Ah WORD file lock count
2Ch WORD record lock count
2Eh 6 BYTEs total number of bytes read
34h 6 BYTEs total number of bytes written
3Ah DWORD total requests
3Eh DWORD held requests
42h 6 BYTEs held bytes read
48h 6 BYTEs held bytes written
4Eh BYTE length of user name
4Fh N BYTEs user name
SeeAlso: #2182
--------N-21F27BSF06-------------------------
INT 21 - Novell NetWare v4+ - GET IPX/SPX Information
AX = F27Bh subfn 06h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2184)
ES:DI -> reply buffer (see #2185)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get IPX/SPX Information" request buffer:
Offset Size Description (Table 2184)
00h WORD 0001h (length of following data)
02h BYTE 06h (subfunction "Get IPX/SPX Information")
SeeAlso: #2185
Format of NetWare "Get IPX/SPX Information" reply buffer:
Offset Size Description (Table 2185)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD number of IPX packets sent
0Ch WORD number of malformed IPX packets
0Eh DWORD number of IPX Get-ECB requests
12h DWORD number of failed IPX Get-ECB requests
16h DWORD number of IPX AES events
1Ah WORD number of postponed IPX AES events
1Ch WORD maximum number of sockets (from configuration)
1Eh WORD maximum number of open sockets
20h WORD number of failed IPX socket opens
22h DWORD number of IPX "listen" ECBs
24h WORD number of failed IPX EBC cancels
26h WORD number of failed IPX Get-Local-Target requests
28h WORD maximum number of SPX connections (from configuration)
2Ah WORD maximum number of SPX connections used
2Ch WORD number of SPX Establish-Connection requests
2Eh WORD number of failed SPX Establish-Connection requests
30h WORD total number of SPX "listen-connect" requests
32h WORD number of failed SPX "listen-connect" requests
34h DWORD number of SPX sends
38h DWORD number of SPX "window-choke"s
3Ch WORD number of bad SPX sends
3Eh WORD number of failed SPX sends
40h WORD number of aborted SPX connections
42h DWORD number of SPX packet listens
46h WORD number of bad SPX packet listens
48h DWORD number of incoming SPX packets
4Ch WORD number of bad incoming SPX packets
4Eh WORD number of supressed SPX packets
50h WORD "SPXNoSesListenECBCount"
52h WORD "SPXWatchDogDestSesCount"
SeeAlso: #2184
--------N-21F27BSF08-------------------------
INT 21 - Novell NetWare v4+ - GET CPU INFORMATION
AX = F27Bh subfn 08h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2186)
ES:DI -> reply buffer (see #2187)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get CPU Information" request buffer:
Offset Size Description (Table 2186)
00h WORD 0005h (length of following data)
02h BYTE 08h (subfunction "Get CPU Information")
03h DWORD CPU number
SeeAlso: #2187
Format of NetWare "Get CPU Information" reply buffer:
Offset Size Description (Table 2187)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD number of CPUs
0Ch DWORD page table owner flag
10h DWORD CPU type flag
14h DWORD coprocessor flag
18h DWORD bus type flag
1Ch DWORD I/O engine flag
20h DWORD filesystem engine flag
24h DWORD non-dedicated flag
28h 201 BYTEs counted string: CPU string;number of coprocessors;bus string
SeeAlso: #2186
--------N-21F27BSF09-------------------------
INT 21 - Novell NetWare v4+ - GET VOLUME SWITCH INFORMATION
AX = F27Bh subfn 09h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2188)
ES:DI -> reply buffer (see #2189)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get Volume Switch Information" request buffer:
Offset Size Description (Table 2188)
00h WORD 0005h (length of following data)
02h BYTE 09h (subfunction "Get Volume Switch Information")
03h DWORD starting item number
SeeAlso: #2189
Format of NetWare "Get Volume Switch Information" reply buffer:
Offset Size Description (Table 2189)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD total LFS counters
0Ch DWORD current LFS counters
10h DWORD "readFile"
14h DWORD "writeFile"
18h DWORD "deleteFile"
1Ch DWORD "renMove"
20h DWORD "openFile"
24h DWORD "createFile"
28h DWORD "createAndOpenFile"
2Ch DWORD "closeFile"
30h DWORD "scanDeleteFile"
34h DWORD "salvageFile"
38h DWORD "purgeFile"
3Ch DWORD "migrateFile"
40h DWORD "deMigrateFile"
44h DWORD "createDir"
48h DWORD "deleteDir"
4Ch DWORD "directoryScans"
50h DWORD "mapPathToDirNum"
54h DWORD "modifyDirEntry"
58h DWORD "getAccessRights"
5Ch DWORD "getAccessRightsFromIDs"
60h DWORD "mapDirNumToPath"
64h DWORD "getEntryFromPathStrBase"
68h DWORD "getOtherNSEntry"
6Ch DWORD "getExtDirInfo"
70h DWORD "getParentDirNum"
74h DWORD "addTrusteeR"
78h DWORD "scanTrusteeR"
7Ch DWORD "delTrusteeR"
80h DWORD "purgeTrust"
84h DWORD "findNextTrustRef"
88h DWORD "scanUserRestNodes"
8Ch DWORD "addUserRest"
90h DWORD "deleteUserRest"
94h DWORD "rtnDirSpaceRest"
98h DWORD "getActualAvailDskSp"
9Ch DWORD "cntOwnedFilesAndDirs"
A0h DWORD "migFileInfo"
A4h DWORD "volMigInfo"
A8h DWORD "readMigFileData"
ACh DWORD "getVolusageStats"
B0h DWORD "getActualVolUsageStats"
B4h DWORD "getDirUsageStats"
B8h DWORD "NMFileReadsCount"
BCh DWORD "NMFileWritesCount"
C0h DWORD "mapPathToDirNumOrPhantom"
C4h DWORD "stationsHasAccessRgtsGntedBelow"
C8h DWORD "gtDataSteamLensFromPathStrBase"
CCh DWORD "checkAndGetDirectoryEntry"
D0h DWORD "getDeletedEntry"
D4h DWORD "getOriginalNameSpace"
D8h DWORD "getActualFileSize"
DCh DWORD "verifyNameSpaceNumber"
E0h DWORD "verifyDataStreamNumber"
E4h DWORD "checkVolumeNumber"
E8h DWORD "commitFile"
ECh DWORD "VMGetDirectoryEntry"
F0h DWORD "createDMFileEntry"
F4h DWORD "renameNameSpaceEntry"
F8h DWORD "logFile"
FCh DWORD "releaseFile"
100h DWORD "clearFile"
104h DWORD "setVolumeFlag"
108h DWORD "clearVolumeFlag"
10Ch DWORD "getOriginalInfo"
110h DWORD "createMigratedDir"
114h DWORD "F3OpenCreate"
118h DWORD "F3InitFileSearch"
11Ch DWORD "F3ContinueFileSearch"
120h DWORD "F3RenameFile"
124h DWORD "F3ScanForTrustees"
128h DWORD "F3ObtainFileInfo"
12Ch DWORD "F3ModifyInfo"
130h DWORD "F3EraseFile"
134h DWORD "F3SetDirHandle"
138h DWORD "F3AddTrustees"
13Ch DWORD "F3DeleteTrustees"
140h DWORD "F3AllocDirHandle"
144h DWORD "F3ScanSalvagedFiles"
148h DWORD "F3RecoverSalvagedFiles"
14Ch DWORD "F3PurgeSalvageableFile"
150h DWORD "F3GetNSSpecificInfo"
154h DWORD "F3ModifyNSSpecificInfo"
158h DWORD "F3SearchSet"
15Ch DWORD "F3GetDirBase"
160h DWORD "F3QueryNameSpaceInfo"
164h DWORD "F3GetNameSpaceList"
168h DWORD "F3GetHugeInfo"
16Ch DWORD "F3SetHugeInfo"
170h DWORD "F3GetFullPathString"
174h DWORD "F3GetEffectiveDirectoryRights"
SeeAlso: #2188
--------N-21F27BSF0A-------------------------
INT 21 - Novell NetWare v4+ - GET LOADED NLMs
AX = F27Bh subfn 0Ah
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2190)
ES:DI -> reply buffer (see #2191)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get NLMs Loaded" request buffer:
Offset Size Description (Table 2190)
00h WORD 0005h (length of following data)
02h BYTE 0Ah (subfunction "Get NLMs Loaded")
03h DWORD first NLM number to report
SeeAlso: #2191
Format of NetWare "Get NLMs Loaded" reply buffer:
Offset Size Description (Table 2191)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD total number of NLMs
0Ch DWORD number of NLM numbers following (max 50)
10h 50 DWORDs NLM numbers
SeeAlso: #2190
--------N-21F27BSF0B-------------------------
INT 21 - Novell NetWare v4+ - GET NLM INFORMATION
AX = F27Bh subfn 0Bh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2192)
ES:DI -> reply buffer (see #2193)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get NLM Information" request buffer:
Offset Size Description (Table 2192)
00h WORD 0005h (length of following data)
02h BYTE 0Bh (subfunction "Get NLM Information")
03h DWORD NLM number
SeeAlso: #2193
Format of NetWare "Get NLM Information" reply buffer:
Offset Size Description (Table 2193)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD identification number
0Ch DWORD flags
10h DWORD NLM type (see #2194)
14h DWORD parent identifier
18h DWORD major version
1Ch DWORD minor version
20h DWORD revision
24h DWORD year
28h DWORD month
2Ch DWORD day
30h DWORD bytes available for allocation
34h DWORD "allocFreeCount"
38h DWORD last garbage collection
3Ch DWORD message language
40h DWORD number of referenced public identifiers
44h 200 BYTEs NLM strings: filename, NLM name, copyright
SeeAlso: #2192
(Table 2194)
Values for NetWare NLM type:
0001h LAN
0002h DSK
0003h NAM
0004h utility NLM
0005h MSL
0006h operating system NLM
0007h paged NLM
0008h HAM
0009h CDM
000Ah file system NLM
000Bh real mode NLM
000Ch hidden NLM
SeeAlso: #2193
--------N-21F27BSF0D-------------------------
INT 21 - Novell NetWare v4+ - GET OS VERSION INFORMATION
AX = F27Bh subfn 0Dh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2195)
ES:DI -> reply buffer (see #2196)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get OS Version Information" request buffer:
Offset Size Description (Table 2195)
00h WORD 0001h (length of following data)
02h BYTE 0Dh (subfunction "Get OS Version Information")
SeeAlso: #2196
Format of NetWare "Get OS Version Information" reply buffer:
Offset Size Description (Table 2196)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h BYTE operating system major version
09h BYTE operating system minor version
0Ah BYTE operating system revision number
0Bh BYTE accounting version
0Ch BYTE VAP version
0Dh BYTE queueing version
0Eh BYTE security restrictions level
0Fh BYTE bridging support
10h DWORD maximum number of volumes
14h DWORD number of connection slots
18h DWORD maximum number of logged-in connections
1Ch DWORD maximum number of name spaces
20h DWORD maximum number of LANs
24h DWORD maximum number of media types
28h DWORD maximum number of protocols
2Ch DWORD maximum subdirectory tree depth
30h DWORD maximum number of data streams
34h DWORD maximum number of spooled printers
38h DWORD serial number
3Ch WORD application number
SeeAlso: #2195
--------N-21F27BSF14-------------------------
INT 21 - Novell NetWare v4+ - GET ACTIVE LAN BOARD LIST
AX = F27Bh subfn 14h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2197)
ES:DI -> reply buffer (see #2198)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get Active LAN Board List" request buffer:
Offset Size Description (Table 2197)
00h WORD 0005h (length of following data)
02h BYTE 14h (subfunction "Get Active LAN Board List")
03h DWORD start number
SeeAlso: #2198
Format of NetWare "Get Active LAN Board List" reply buffer:
Offset Size Description (Table 2198)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD maximum number of LANs
0Ch DWORD number of LAN board numbers returned
10h 50 DWORDs board numbers
SeeAlso: #2197
--------N-21F27BSF15-------------------------
INT 21 - Novell NetWare v4+ - GET LAN CONFIGURATION
AX = F27Bh subfn 15h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2199)
ES:DI -> reply buffer (see #2200)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F27Bh/SF=16h
Format of NetWare "Get LAN Configuration" request buffer:
Offset Size Description (Table 2199)
00h WORD 0005h (length of following data)
02h BYTE 15h (subfunction "Get LAN Configuration")
03h DWORD LAN board number
SeeAlso: #2200
Format of NetWare "Get LAN Configuration" reply buffer:
Offset Size Description (Table 2200)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h BYTE driver configuration major version
09h BYTE driver configuration minor version
0Ah 6 BYTEs driver node address
10h WORD driver mode flags
12h WORD driver board number
14h WORD driver board instance
16h DWORD driver maximum size
1Ah DWORD driver maximum receive size
1Eh DWORD driver receive size
22h 3 DWORDs reserved
2Eh WORD driver card ID
30h WORD driver transport time
32h DWORD driver source routing
36h WORD driver line speed
38h WORD driver reserved
3Ah BYTE driver major version
3Bh BYTE driver minor version
3Ch WORD driver flags
3Eh WORD driver send retries
40h DWORD driver link
44h WORD driver sharing flags
46h WORD driver slot
48h 4 WORDs driver I/O port and lengths
50h DWORD driver memory decode 0
54h WORD driver length 0
56h DWORD driver memory decode 1
5Ah WORD driver length 1
5Ch 2 BYTEs driver's interrupts
5Eh 2 BYTEs driver's DMA usage
60h 18 BYTEs driver's logical name
72h 14 BYTEs driver I/O reserved
80h 128 BYTEs driver card name
100h 40 BYTEs driver media type
128h 180 BYTEs driver custom variables
SeeAlso: #2199
--------N-21F27BSF16-------------------------
INT 21 - Novell NetWare v4+ - GET LAN COMMON COUNTERS
AX = F27Bh subfn 16h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2201)
ES:DI -> reply buffer (see #2202)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F27Bh/SF=15h
Format of NetWare "Get LAN Common Counters" request buffer:
Offset Size Description (Table 2201)
00h WORD 0009h (length of following data)
02h BYTE 16h (subfunction "Get LAN Common Counters")
03h DWORD LAN board number
07h DWORD starting block number (set to 00000000h for first call)
SeeAlso: #2202
Format of NetWare "Get LAN Common Counters" reply buffer:
Offset Size Description (Table 2202)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h BYTE statistics major version
09h BYTE statistics minor version
0Ah DWORD number of generic counters
0Eh DWORD number of counter blocks
12h DWORD number of custom variables
16h DWORD next counter block number
1Ah DWORD "notSupportedMask"
1Eh DWORD total number of packets tranmitted
22h DWORD total number of packets received
26h DWORD number of times no ECBs were available
2Ah DWORD number of transmitted packets which were too large
2Eh DWORD number of transmitted packets which were too small
32h DWORD number of packet receive overflows
36h DWORD number of received packets which were too large
3Ah DWORD number of received packets which were too small
3Eh DWORD number of miscellaneous transmitted-packet errors
42h DWORD number of miscellaneous received-packet errors
46h DWORD number of times transmission retried
4Ah DWORD number of checksum errors
4Eh DWORD number of hardware receive mismatches
52h 50 BYTEs reserved
SeeAlso: #2201
--------N-21F27BSF29-------------------------
INT 21 - Novell NetWare v4+ - GET PROTOCOL STACK BY BOARD
AX = F27Bh subfn 29h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2203)
ES:DI -> reply buffer (see #2204)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get Protocol Stack by Board" request buffer:
Offset Size Description (Table 2203)
00h WORD 0005h (length of following data)
02h BYTE 29h (subfunction "Get Protocol Stack by Board")
03h DWORD LAN board number
SeeAlso: #2204
Format of NetWare "Get Protocol Stack by Board" reply buffer:
Offset Size Description (Table 2204)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h WORD number of stacks listed (max 50)
0Ah 50 DWORDs protocol identifiers
SeeAlso: #2203
--------N-21F27BSF33-------------------------
INT 21 - Novell NetWare v4+ - GET ROUTER INFO
AX = F27Bh subfn 33h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2205)
ES:DI -> reply buffer (see #2206)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F27Bh/SF=35h
Format of NetWare "Get Router Info" request buffer:
Offset Size Description (Table 2205)
00h WORD 0005h (length of following data)
02h BYTE 33h (function "Get Router Info")
03h DWORD network number
SeeAlso: #2206
Format of NetWare "Get Router Info" reply buffer:
Offset Size Description (Table 2206)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD network number
0Ch WORD hops to net
0Eh WORD network status
10h WORD time to net
SeeAlso: #2205,#2207
--------N-21F27BSF35-------------------------
INT 21 - Novell NetWare v4+ - GET KNOWN NETWORKS INFO
AX = F27Bh subfn 35h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2207)
ES:DI -> reply buffer (see #2208)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F27Bh/SF=33h,AX=F27Bh/SF=38h
Format of NetWare "Get Router Info" request buffer:
Offset Size Description (Table 2207)
00h WORD 0005h (length of following data)
02h BYTE 35h (function "Get Known Networks Info")
03h DWORD start number (00000000h)
SeeAlso: #2208
Format of NetWare "Get Router Info" reply buffer:
Offset Size Description (Table 2208)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD number of records following (max 20)
0Ch var array of network info records
Offset Size Description
00h WORD network number
04h WORD hops to net
06h WORD network status
08h WORD time to net
SeeAlso: #2205,#2207
--------N-21F27BSF38-------------------------
INT 21 - Novell NetWare v4+ - GET KNOWN SERVERS INFO
AX = F27Bh subfn 38h
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2209)
ES:DI -> reply buffer (see #2210)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
SeeAlso: AX=F27Bh/SF=35h
Format of NetWare "Get Known Servers" request buffer:
Offset Size Description (Table 2209)
00h WORD 0009h (length of following data)
02h BYTE 38h (function "Get Known Servers")
03h DWORD start number
07h DWORD server type
SeeAlso: #2210
Format of NetWare "Get Known Servers" reply buffer:
Offset Size Description (Table 2210)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD number of records following (max 20)
0Ch var server record(s)
Offset Size Description
00h DWORD network number
04h 6 BYTEs node number
0Ah WORD socket number
0Ch WORD hops to server
0Eh 48 BYTEs object name
SeeAlso: #2209
--------N-21F27BSF3C-------------------------
INT 21 - Novell NetWare v4+ - GET SERVER SET COMMANDS INFO
AX = F27Bh subfn 3Ch
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2211)
ES:DI -> reply buffer (see #2212)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get Server Set Commands Info" request packet:
Offset Size Description (Table 2211)
00h WORD 0005h (length of following data)
02h BYTE 3Ch (subfunction "Get Server Set Commands Info")
03h DWORD start sequence number
SeeAlso: #2212
Format of NetWare "Get Server Set Commands Info" packet:
Offset Size Description (Table 2212)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD number of set commands
0Ch DWORD next sequence number
10h DWORD set command type
14h DWORD set command category
18h DWORD set command flags
1Ch BYTE length of set command name
1Dh N BYTEs set command name
BYTE number of set command values
N BYTEs set command values
SeeAlso: #2211
--------N-21F27BSF3D-------------------------
INT 21 - Novell NetWare v4+ - GET SERVER SET CATEGORIES
AX = F27Bh subfn 3Dh
CX = length of request buffer in bytes
DX = length of reply buffer in bytes
DS:SI -> request buffer (see #2213)
ES:DI -> reply buffer (see #2214)
Return: AL = status (see #2546 at INT 2F/AX=7A20h/BX=0000h)
reply buffer filled
Format of NetWare "Get Server Set Categories" request packet:
Offset Size Description (Table 2213)
00h WORD 0005h (length of following data)
02h BYTE 3Dh (subfunction "Get Server Set Categories")
03h DWORD start sequence number
SeeAlso: #2214
Format of NetWare "Get Server Set Categories" reply packet:
Offset Size Description (Table 2214)
00h DWORD current server time
04h BYTE vconsole version
05h BYTE vconsole revision
06h WORD reserved
08h DWORD number of set categories
0Ch DWORD next sequence number
10h BYTE length of category name
11h N BYTEs category name
SeeAlso: #2213
--------v-21F2AA-----------------------------
INT 21 - VIRUS - "PcVrsDs" - INSTALLATION CHECK
AX = F2AAh
Return: AH = AAh if resident
SeeAlso: AH=F1h"VIRUS",AH=F3h"VIRUS"
--------N-21F3-------------------------------
INT 21 - Novell NetWare - FILE SERVICES - FILE SERVER FILE COPY
AH = F3h
ES:DI -> request buffer (see #2215)
Return: AL = status/error code
CX:DX = number of bytes copied
Notes: this function is supported by Advanced NetWare 2.0+
both source and destination must be on the same file server
SeeAlso: AH=3Ch,AH=3Fh"DOS"
Format of NetWare "File Server File Copy" request buffer:
Offset Size Description (Table 2215)
00h WORD source file handle (as returned by AH=3Ch or AH=3Dh)
02h WORD destination file handle
04h DWORD starting offset in source
08h DWORD starting offset in destination
0Ch DWORD number of bytes to copy
--------T-21F3-------------------------------
INT 21 - DoubleDOS - ADD CHARACTER TO KEYBOARD BUFFER OF CURRENT JOB
AH = F3h
AL = character
Return: AL = 00h successful
01h buffer full (128 characters)
SeeAlso: AH=E3h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
SeeAlso: AH=F8h"DoubleDOS"
--------v-21F3-------------------------------
INT 21 - VIRUS - "Carfield" - INSTALLATION CHECK
AH = F3h
Return: AX = 0400h if resident
SeeAlso: AH=D5h"Carfield",AX=F2AAh,AH=F7h"VIRUS"
--------T-21F400-----------------------------
INT 21 - DoubleDOS - INSTALLATION CHECK/PROGRAM STATUS
AX = F400h
Return: AL = program status
00h if DoubleDOS not present
01h if running in visible DoubleDOS partition
02h if running in the invisible DoubleDOS partition
SeeAlso: AX=E400h,AH=F5h"DoubleDOS"
--------T-21F5-------------------------------
INT 21 - DoubleDOS - OTHER PROGRAM STATUS
AH = F5h
Return: AL = program status
00h no program in other partition
01h program in other partition is running
02h program in other partition is suspended
SeeAlso: AH=E5h"DoubleDOS",AX=F400h"DoubleDOS"
--------v-21F7-------------------------------
INT 21 - VIRUS - "GP1" - INSTALLATION CHECK
AH = F7h
Return: AX = 0300h if resident
SeeAlso: AH=F0h"VIRUS",AH=F9h"VIRUS"
--------D-21F8-------------------------------
INT 21 - DOS v2.11-2.13 - SET OEM INT 21 HANDLER
AH = F8h
DS:DX -> OEM INT 21 handler for functions F9h to FFh
FFFFh:FFFFh disables OEM handler
Notes: this function is known to be supported by Toshiba T1000 ROM MS-DOS
v2.11, Sanyo MS-DOS v2.11, and TI Professional Computer DOS v2.13
calls to AH=F9h through AH=FFH will return AL=00h if no handler set
handler is called with all registers exactly as set by caller, and
should exit with IRET
SeeAlso: AH=F9h"OEM"
--------T-21F8-------------------------------
INT 21 - DoubleDOS - SET/RESET KEYBOARD CONTROL FLAGS
AH = F8h
AL = program for which to set flags
00h this program
01h other program
DX = keyboard control flags (see #1776 at AH=E8h"DoubleDOS")
Return: DX = previous flags
Notes: disabling Ctrl-PrtSc will allow the program to intercept the keystroke;
disabling any of the other keystrokes disables them completely
this function is identical to AH=E8h
SeeAlso: AH=E8h"DoubleDOS",AH=F1h"DoubleDOS",AH=F2h"DoubleDOS"
SeeAlso: AH=F3h"DoubleDOS"
--------D-21F9-------------------------------
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
AH = F9h
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FAh"OEM"
--------T-21F9-------------------------------
INT 21 - DoubleDOS - SET TIMESHARING PRIORITY
AH = F9h
AL = priority
00h visible program gets 70%, invisible gets 30% (default)
01h visible program gets 50%, invisible gets 50%
02h visible program gets 30%, invisible gets 70%
03h Top program gets 70%, bottom program gets 30%
04h Top program gets 30%, bottom program gets 70%
05h get current priority
Return: AL = priority setting
Note: identical to AH=E9h
SeeAlso: AH=E9h"DoubleDOS",AH=FAh"DoubleDOS",AH=FBh"DoubleDOS"
--------v-21F9-------------------------------
INT 21 - VIRUS - "Satans-Bug" - INSTALLATION CHECK
AH = F9h
Return: AX = AC0Ah if resident
SeeAlso: AH=F7h"VIRUS",AH=FBh"VIRUS",AX=FEDCh"VIRUS"
--------D-21FA-------------------------------
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
AH = FAh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=F9h"OEM",AH=FBh"OEM"
--------T-21FA-------------------------------
INT 21 - DoubleDOS - TURN OFF TASK SWITCHING
AH = FAh
Return: task switching turned off
SeeAlso: AH=EAh"DoubleDOS",AH=F9h"DoubleDOS",AH=FBh"DoubleDOS"
SeeAlso: INT FA"DoubleDOS"
--------v-21FA-------------------------------
INT 21 - VIRUS - "Cinderella 2" - INSTALLATION CHECK
AH = FAh
Return: AH = F9h if resident
SeeAlso: AH=F0h"VIRUS",AX=FBA0h"VIRUS"
--------v-21FA--DX5945-----------------------
INT 21 U - PC Tools v7+ VDEFEND, VSAFE, VWATCH - API
AH = FAh
DX = 5945h
AL = function (00h-02h for VDEFEND, 00h-07h for VSAFE and VWATCH)
Return: varies by function
Note: this API is identical to the API on INT 13/AH=FAh and INT 16/AH=FAh,
so it is listed in its entirety only under INT 16/AX=FA00h and
following
SeeAlso: INT 13/AX=FA00h,INT 16/AX=FA00h
--------D-21FB-------------------------------
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
AH = FBh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FAh"OEM",AH=FCh"OEM"
--------T-21FB-------------------------------
INT 21 - DoubleDOS - TURN ON TASK SWITCHING
AH = FBh
Return: task switching turned on
SeeAlso: AH=EBh"DoubleDOS",AH=F9h"DoubleDOS",AH=FAh"DoubleDOS"
SeeAlso: INT FB"DoubleDOS"
--------v-21FB-------------------------------
INT 21 - VIRUS - "Cinderella" - INSTALLATION CHECK
AH = FBh
Return: AH = 00h if resident
SeeAlso: AH=F9h"VIRUS",AH=FAh"VIRUS",AX=FB0Ah
--------v-21FB0A-----------------------------
INT 21 - VIRUS - "dBASE" - INSTALLATION CHECK
AX = FB0Ah
Return: AX = 0AFBh if resident
SeeAlso: AH=FBh"VIRUS",AX=FBA0h"VIRUS",AH=FCh"VIRUS"
--------v-21FBA0-----------------------------
INT 21 - VIRUS - "Groove" - INSTALLATION CHECK
AX = FBA0h
Return: AX = 0ABFh if resident
SeeAlso: AX=FB0Ah"VIRUS",AH=FCh"VIRUS"
--------D-21FC-------------------------------
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
AH = FCh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FBh"OEM",AH=FDh"OEM"
--------T-21FC-------------------------------
INT 21 - DoubleDOS - GET VIRTUAL SCREEN ADDRESS
AH = FCh
Return: ES = segment of virtual screen
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.
Notes: screen address can change if task-switching is on!
identical to AH=ECh
SeeAlso: AH=ECh"DoubleDOS",INT FC"DoubleDOS"
--------v-21FC-------------------------------
INT 21 - VIRUS - "Troi" - INSTALLATION CHECK
AH = FCh
Return: AL = A5h if resident
SeeAlso: AX=FBA0h"VIRUS",AX=FC03h"VIRUS",AH=FDh"VIRUS"
--------v-21FC03-----------------------------
INT 21 - VIRUS - "Invisible" - INSTALLATION CHECK
AX = FC03h
Return: AX = 03FCh if resident
SeeAlso: AH=FCh"VIRUS",AH=FDh"VIRUS"
--------D-21FD-------------------------------
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
AH = FDh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FCh"OEM",AH=FEh"OEM"
--------v-21FD-------------------------------
INT 21 - VIRUS - "Border" - INSTALLATION CHECK
AH = FDh
Return: AH = 13h if resident
SeeAlso: AH=FCh"VIRUS",AX=FDACh"VIRUS",AH=FEh"VIRUS"
--------s-21FD12BX3457-----------------------
INT 21 - Gravis UltraSound - MegaEm/MEGA_EM - INSTALLATION CHECK
AX = FD12h
BX = 3457h
Return: AX = 5678h if installed
BX = 1235h if v1.x or v2.x installed
CL = interrupt vector used by MegaEm (default 81h)
BX = 1237h if v3.x installed
CL = interrupt vector used by MegaEm (default 81h)
DX = version number
Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
emulator for the Gravis UltraSound
SeeAlso: INT 2F/AX=CD00h/BX=464Fh,INT 7E/AX=00FEh"SBOS",INT 81/AX=0200h
--------v-21FDAC-----------------------------
INT 21 - VIRUS - "Delwin" - INSTALLATION CHECK
AX = FDACh
Return: AX = 02E3h if resident
SeeAlso: AH=FDh"VIRUS",AH=FEh"VIRUS"
--------D-21FE-------------------------------
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
AH = FEh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FDh"OEM",AH=FFh"OEM"
--------T-21FE-------------------------------
INT 21 - DoubleDOS - GIVE AWAY TIME TO OTHER TASKS
AH = FEh
AL = number of 55ms time slices to give away
Return: returns after giving away time slices
SeeAlso: AH=EEh"DoubleDOS",INT FE"DoubleDOS"
--------v-21FE-------------------------------
INT 21 - VIRUS - "483" - INSTALLATION CHECK
AH = FEh
Return: AH = 00h if resident
SeeAlso: AX=FDACh"VIRUS",AX=FE01h
--------v-21FE01-----------------------------
INT 21 - VIRUS - "Flip" - INSTALLATION CHECK
AX = FE01h
Return: AX = 01FEh if resident
SeeAlso: AH=FEh"VIRUS",AX=FE02h
--------v-21FE02-----------------------------
INT 21 - VIRUS - "2468"/"Tequila" - INSTALLATION CHECK
AX = FE02h
Return: AX = 01FDh if resident
SeeAlso: AX=FE01h,AX=FE03h,AX=FEDCh"VIRUS"
--------v-21FE03-----------------------------
INT 21 - VIRUS - "2468"/"Tequila" - DISPLAY VIRUS MESSAGE
AX = FE03h
SeeAlso: AX=FE02h,AX=FEADh
--------v-21FEAD------------------------
INT 21 - VIRUS - "Shifting Objective" - INSTALLATION CHECK
AX = FEADh
Return: AX = D00Dh if resident
SeeAlso: AX=FE03h,AX=FEDCh"VIRUS"
--------d-21FEDC-----------------------------
INT 21 - PCMag PCMANAGE/DCOMPRES - INSTALLATION CHECK
AX = FEDCh
Return: AX = CDEFh if installed
Program: the PCMANAGE/DCOMPRES combination from PC Magazine permits
infrequently-used files to be compressed to save space and
transparently expanded when accessed
SeeAlso: AH=DCh,INT 2D/AL=10h"dLite"
--------v-21FEDC-----------------------------
INT 21 - VIRUS - "Black Monday" - INSTALLATION CHECK
AX = FEDCh
Return: AL = DCh if resident
SeeAlso: AX=FE02h,AX=FEFEh
--------v-21FEFE-----------------------------
INT 21 - VIRUS - "CIDER" - INSTALLATION CHECK
AX = FEFEh
Return: SI = 1994h if resident
SeeAlso: AX=FEDCh"VIRUS",AH=FFh"VIRUS"
--------D-21FF-------------------------------
INT 21 - DOS v2.11-2.13 - OEM FUNCTION
AH = FFh
Return: AL = 00h if no OEM function handler installed (see AH=F8h"OEM")
SeeAlso: AH=F8h"OEM",AH=FEh"OEM"
--------K-21FF-------------------------------
INT 21 - CED (Command EDitor) - INSTALLABLE COMMANDS
AH = FFh
AL = subfunction
00h add installable command
BL = mode
bit 0 = 1 callable from DOS prompt
bit 1 = 1 callable from application
DS:SI -> CR-terminated command name
ES:DI -> FAR routine entry point
01h remove installable command
DS:SI -> CR-terminated command name
02h reserved, may be used to test for CED installation
Return: CF clear if successful
CF set on error
AX = error code
01h invalid function
02h command not found (subfunction 01h only)
08h insufficient memory (subfunction 00h only)
0Eh bad data (subfunction 00h only)
AH = FFh if CED not installed
Program: CED is a shareware DOS command-line enhancer by Christopher J. Dunford
SeeAlso: AX=0A00h
--------E-21FF-------------------------------
INT 21 - DJ GO32.EXE 80386+ DOS extender - DOS EXTENSIONS
AH = FFh
AL = function
01h create file
02h open file
03h get file statistics
04h get time of day
05h set time of day
06h stat
07h system
Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
SeeAlso: INT 10/AH=FFh"GO32"
--------K-21FF-------------------------------
INT 21 - DOSED.COM - INSTALLATION CHECK
AH = FFh
DS:SI -> "DOSED"
ES = 0000h
Return: ES:DI -> "DOSED" if installed
Program: DOSED is a free DOS commandline editor/history buffer by Sverre H.
Huseby
--------v-21FF-------------------------------
INT 21 - VIRUS - "Sunday", "Tumen 0.5", "Hero" - INSTALLATION CHECK
AH = FFh
Return: AH = 00h if "Tumen 0.5" or "Hero" resident
AX = 0400h if "Sunday" resident
SeeAlso: AX=FEDCh"VIRUS",AX=FF01h"VIRUS"
--------E-21FF-------------------------------
INT 21 UP - Rational Systems DOS/4GW - API
AH = FFh
DH = function (00h-17h) (also see separate entries below)
DL = subfunction or argument
Return: CF clear if valid function number
AX = status???
CF set if invalid function
SeeAlso: INT 15/AX=BFDCh
--------E-21FF--DH00-------------------------
INT 21 UP - Rational Systems DOS/4GW - GET VERSION???
AH = FFh
DH = 00h
DL = ??? (78h seen)
Return: CF clear
EAX = 4734FFFFh (high word is byte-swapped "4G") if DOS/4G installed
Note: Quarterdeck's DESQview/X X Toolkit library uses this call to determine
whether the direct-mapped linear 4GB segment's selector is 34h or 38h
SeeAlso: INT 21/AH=FFh/DH=00h"DOS/4GW"
--------E-21FF--DH02-------------------------
INT 21 UP - Rational Systems DOS/4GW - SET ???
AH = FFh
DH = 02h
DL = ???
Return: CF clear
--------E-21FF--DH05-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 05h
BX = ???
Return: ???
--------E-21FF--DH06-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 06h
BX = ???
Return: ???
--------E-21FF--DH07-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 07h
BX = ???
Return: ???
--------E-21FF--DH08-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 08h
BX = ???
CX = ???
ES = ???
Return: ???
--------E-21FF--DH09-------------------------
INT 21 UP - Rational Systems DOS/4GW - GET ???
AH = FFh
DH = 09h
Return: ES:BX -> ???
--------E-21FF--DH0A-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Ah
AL = ???
BX = ???
CX = ???
Return: ES = ??? or 0000h
--------E-21FF--DH0B-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Bh
AL = ???
BX = ???
CX = ???
Return: ???
--------E-21FF--DH0C-------------------------
INT 21 UP - Rational Systems DOS/4GW - GET/SET ???
AH = FFh
DH = 0Ch
DL = ??? (00h or 01h)
Return: CF clear if successful
AL = previous value of ???
CF set on error (DL out of range)
AX = FFFFh
--------E-21FF--DH0D-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Dh
???
Return: ???
--------E-21FF--DH0E-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Eh
Return: DX:AX -> XBRK structure (see #0432 at INT 15/AX=BF02h)
BX = ???
CX = ???
SeeAlso: INT 15/AX=BF02h
--------E-21FF--DH0F-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 0Fh
???
Return: ???
--------E-21FF--DH10-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 10h
AL = ???
BX = ???
CX = ???
DI = ???
SI = ???
Return: ???
Note: among other things, frees two memory blocks via INT 21/AH=49h
--------E-21FF--DH11-------------------------
INT 21 UP - Rational Systems DOS/4GW - NOP
AH = FFh
DH = 11h
--------E-21FF--DH12-------------------------
INT 21 UP - Rational Systems DOS/4GW - EXCHANGE ??? POINTERS
AH = FFh
DH = 12h
DS:SI -> new ???
ES:DI -> new ???
Return: DS:SI -> previous ???
ES:DI -> previous ???
--------E-21FF--DH13-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 13h
AL = ???
ES = ???
Return: ???
--------E-21FF--DH14-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 14h
BX = ???
CX = ???
Return: CF clear
AX = ???
DX = ???
--------E-21FF--DH15-------------------------
INT 21 UP - Rational Systems DOS/4GW - GET ??? FUNCTIONS
AH = FFh
DH = 15h
Return: CF clear
DX:AX -> FAR function for ???
CX:BX -> FAR function for ???
SI:DI -> FAR function for ???
--------E-21FF--DH16-------------------------
INT 21 UP - Rational Systems DOS/4GW - GET ???
AH = FFh
DH = 16h
Return: AX = ???
--------E-21FF--DH17-------------------------
INT 21 UP - Rational Systems DOS/4GW - ???
AH = FFh
DH = 17h
AL = ???
DL = ???
Return: ???
--------N-21FF00-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET SYSTEM INFORMATION
AX = FF00h
CL = what to get
00h user information (see #2216)
01h drive mapping (see #2217)
02h printer server(s)
05h local DOS drive number
Return: ES:BX -> desired information
Program: TopWare Network Operating System is manufactured by Grand Computer
Company
Note: this call is only supported on Workstations, not on the server
SeeAlso: AX=FF04h,INT 2F/AX=FF00h
Format of TopWare user information:
Offset Size Description (Table 2216)
00h BYTE node ID
01h 15 BYTEs user name
10h WORD user number
12h BYTE group number
Format of TopWare drive mapping [array]:
Offset Size Description (Table 2217)
00h BYTE bits 6-0: drive number (1=A:, etc.)
bit 7: this is a server drive
01h 3 BYTEs mapping drive (for example, "C:\")
04h 64 BYTEs current directory
--------E-21FF00DX0078-----------------------
INT 21 - Rational Systems DOS/4G - INSTALLATION CHECK
AX = FF00h
DX = 0078h
Return: AL <> 00h if installed
GS = segment of kernel if nonzero
SeeAlso: INT 15/AX=BF02h
--------v-21FF01-----------------------------
INT 21 - VIRUS - "Drop" - INSTALLATION CHECK
AX = FF01h
Return: AX = 01FFh if resident
SeeAlso: AH=FEh"VIRUS",AX=FF0Fh"FLU_SHOT"
--------N-21FF04-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET/SET DEFAULT FILE PROTECTION ATTRIBS
AX = FF04h
CL = function
00h get protections
Return: BH = read attribute
BL = write attribute
01h set protections
BH = read attribute
BL = write attribute
Note: this function is supported only on Workstations, not on the server
SeeAlso: AX=FF00h"TopWare"
--------v-21FF0F-----------------------------
INT 21 - FLU_SHOT+ v1.83 - INSTALLATION CHECK
AX = FF0Fh
Return: AX = 0101h if resident
Program: FLU_SHOT+ is an antivirus/antitrojan program by Ross M. Greenberg and
Software Concepts Design
Note: the "PSQR/1720" virus calls this function to determine whether
FLU_SHOT+ is present
SeeAlso: AH=FFh"VIRUS",AX=FF10h"VIRUS"
--------v-21FF10-----------------------------
INT 21 - VIRUS - "Twins" - INSTALLATION CHECK
AX = FF10h
Return: AL = 07h if resident
SeeAlso: AX=FF0Fh,AX=FFFEh
--------N-21FF80DHFF-------------------------
INT 21 - TopWare Network OS v5.10+ - SEND MESSAGE
AX = FF80h
DH = FFh
DL = destination address (FFh for broadcast)
CX = message length (max 2000)
DS:SI -> message to be sent (see #2218)
Return: nothing
Program: TopWare Network Operating System is manufactured by Grand Computer
Company
Notes: this function is supported on both Workstations and the server
there is no guarantee that the message will be received correctly, or
at all, by the destination
Format of TopWare message:
Offset Size Description (Table 2218)
00h BYTE type code
07h TopSend
11h user application
other reserved for TopWare
01h var data
Note: sending messages with a type code other than 11h will cause
unpredictable results
--------N-21FF82-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET STATION ADDRESS
AX = FF82h
Return: AL = station address
Note: this function is supported on both Workstations and the server
SeeAlso: AX=FF91h
--------N-21FF8C-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET STATUS OF TopShow/Emulated FUNCTION
AX = FF8Ch
BL = subfunction
00h get TopShow status
FFh get Emulated status
Return: AL = status
00h not installed
01h already installed
--------N-21FF8D-----------------------------
INT 21 - TopWare Network OS v5.10+ - CALL TopShow FUNCTION
AX = FF8Dh
CH = monochrome flag (01h monochrome, 00h not monochrome)
CL = screen mode of station to be viewed (see #2219)
BL = graphic page number for monochrome
Return: AL = status (00h successful, else failed)
SeeAlso: AX=FF8Eh,AX=FFCFh
(Table 2219)
Values for TopWare screen mode:
00h text mode
01h 720x348
02h 640x408
03h 720x352
04h 640x390
05h reserved
--------N-21FF8E-----------------------------
INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
AX = FF8Eh
Return: AL = 00h (successful, TopShow removed)
SeeAlso: AX=FF8Dh
--------N-21FF91-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET FILE SERVER STATION NUMBER
AX = FF91h
Return: AL = station number of file server
SeeAlso: AX=FF82h
--------N-21FF97-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM STATION NUMBER (server only)
AX = FF97h
Return: AL = maximum station number
SeeAlso: AX=FF98h
--------N-21FF98-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET MAXIMUM FILE NUMBER (server only)
AX = FF98h
Return: AL = maximum file
SeeAlso: AX=FF97h
--------N-21FF9A-----------------------------
INT 21 - TopWare Network OS v5.10+ - RECEIVE OF USER-DEFINED PACKETS
AX = FF9Ah
ES:BX -> buffer for user-defined packet (see #2220)
Return: nothing
Format of TopWare user-defined packet:
Offset Size Description (Table 2220)
00h BYTE FFh
01h WORD (call) length of data field plus 3
(ret) length of received message (0000h if none received)
03h BYTE destination ID (FFh for broadcast message)
04h BYTE sending station ID
05h BYTE type code (11h; all other codes reserved for TopWare)
06h N BYTEs received message
--------N-21FF9F-----------------------------
INT 21 - TopWare Network OS v5.10+ - ENABLE/DISABLE TopTerm SERVICE
AX = FF9Fh
CL = new state (00h disable [disregard TopTerm packets], 01h enable)
Return: AL = status (00h successful, FFh failed)
Note: this function is only supported by Workstations, not the server
--------N-21FFB0-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET SPOOLER PRINTING PRIORITY
AX = FFB0h
Return: AL = priority status (see #2221)
SeeAlso: AX=FFB1h
Bitfields for TopWare printer priority status:
Bit(s) Description (Table 2221)
2 LPT3 has high priority
1 LPT2 has high priority
0 LPT1 has high priority
--------N-21FFB1-----------------------------
INT 21 - TopWare Network OS v5.10+ - SET SPOOLER PRINTING PRIORITY
AX = FFB1h
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
CH = new priority (00h normal, 01h high)
Return: nothing
SeeAlso: AX=FFB0h
--------N-21FFB3-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET DEFAULT START-OF-JOB FORMFEED STATUS
AX = FFB3h
Return: AL = starting formfeed status (see #2222)
SeeAlso: AX=FFB4h,AX=FFC0h
Bitfields for TopWare printer start-of-job formfeed status:
Bit(s) Description (Table 2222)
2 LPT3 has formfeed enabled
1 LPT2 has formfeed enabled
0 LPT1 has formfeed enabled
--------N-21FFB4-----------------------------
INT 21 - TopWare Network OS v5.10+ - SET DEFAULT START-OF-JOB FORMFEED STATUS
AX = FFB4h
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
CH = new formfeed status (00h off, 01h on)
Return: nothing
SeeAlso: AX=FFB3h,AX=FFC1h
--------N-21FFBB-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET PRINTER SERVER STATION ADDRESS
AX = FFBBh
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
Return: AL = current mapping printer server station number
00h if local
SeeAlso: AX=FFBCh
--------N-21FFBC-----------------------------
INT 21 - TopWare Network OS v5.10+ - CANCEL TopShow FUNCTION
AX = FFBCh
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
CL = printer server station address or 00h for local printer
Return: AL = status (00h successful, else failed)
SeeAlso: AX=FFBBh
--------N-21FFBD-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET CURRENT AUTOPRINT TIME
AX = FFBDh
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
Return: AX = current AutoPrint timeout in clock ticks
SeeAlso: AX=FFBEh
--------N-21FFBE-----------------------------
INT 21 - TopWare Network OS v5.10+ - SET AUTOPRINT TIME
AX = FFBEh
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
BX = timeout in clock ticks
SeeAlso: AX=FFBDh
--------N-21FFBF-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET LOGON USER INFORMATION
AX = FFBFh
DX:BX -> buffer for logon information (see #2223)
Return: AL = status (00h successful, else failed)
AH = number of logged-in stations
Format of TopWare logon information:
Offset Size Description (Table 2223)
00h BYTE station address
01h 15 BYTEs username
--------N-21FFC0-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET DEFAULT END-OF-JOB FORMFEED STATUS
AX = FFC0h
Return: AL = ending formfeed status (see #2224)
SeeAlso: AX=FFB3h,AX=FFC1h
Bitfields for TopWare printer end-of-job formfeed status:
Bit(s) Description (Table 2224)
2 LPT3 has formfeed enabled
1 LPT2 has formfeed enabled
0 LPT1 has formfeed enabled
--------N-21FFC1-----------------------------
INT 21 - TopWare Network OS v5.10+ - SET DEFAULT END-OF-JOB FORMFEED STATUS
AX = FFC1h
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
CH = new formfeed status (00h off, 01h on)
Return: nothing
SeeAlso: AX=FFB4h,AX=FFC0h
--------N-21FFC2-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET DEFAULT COPIES OF SPOOLING FILE
AX = FFC2h
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
Return: AL = default number of copies printed
SeeAlso: AX=FFC7h
--------N-21FFC3-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET SHARING STATUS OF PRINTER SERVER
AX = FFC3h
Return: AL = sharing status of printers (see #2225)
FFh if not a printer server
Bitfields for TopWare printer sharing status:
Bit(s) Description (Table 2225)
2 LPT3 is shared
1 LPT2 is shared
0 LPT1 is shared
--------N-21FFC4-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET/SET LPT PORT ON PRINT SERVER
AX = FFC4h
BL = subfunction
00h get
Return: AL = mapped printer port on print server
01h set
CL = network printer port (00h LPT1, 01h LPT2, 02h LPT3)
CH = local printer (00h LPT1, 01h LPT2, 02h LPT3)
--------N-21FFC6-----------------------------
INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT FILE HEADER
AX = FFC6h
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
CL = header state (00h off, 01h on)
SeeAlso: AX=FFC8h
--------N-21FFC7-----------------------------
INT 21 - TopWare Network OS v5.10+ - SET DEFAULT PRINT COPIES
AX = FFC7h
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
CL = new default number of copies to print
SeeAlso: AX=FFC2h
--------N-21FFC8-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET DEFAULT PRINT FILE HEADER STATUS
AX = FFC8h
Return: AL = header status for printers (see #2226)
SeeAlso: AX=FFC6h
Bitfields for TopWare print header status:
Bit(s) Description (Table 2226)
2 LPT3 has headers enabled
1 LPT2 has headers enabled
0 LPT1 has headers enabled
--------N-21FFC9-----------------------------
INT 21 - TopWare Network OS v5.10+ - SET PRINTER SHARING
AX = FFC9h
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
CL = new sharing state (00h off, 01h on)
Return: AL = status (00h successful, FFh not printer server)
--------N-21FFCA-----------------------------
INT 21 - TopWare Network OS v5.10+ - MOVE FILE FROM ONE PRINT SERVER TO ANOTHER
AX = FFCAh
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
CL = original printer server station address
BL = target printer server station address
DS:DX -> filename (12 bytes)
Return: AL = status (00h successful, else failed)
SeeAlso: AX=FFCBh
--------N-21FFCB-----------------------------
INT 21 - TopWare Network OS v5.10+ - DELETE FILE FROM SPOOLING QUEUE
AX = FFCBh
CH = printer number (00h LPT1, 01h LPT2, 02h LPT3)
CL = printer server station address
DS:DX -> filename (12 bytes)
Return: AL = status (00h successful, else failed)
SeeAlso: AX=FFCAh
--------N-21FFCC-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET PRINT SERVER'S SPOOLING QUEUE STATUS
AX = FFCCh
CL = printer server station address
BH = start item number of spooling file for print server
BL = number of the item to be retrieved
DS:DX -> buffer for queued file information (see #2227)
Return: AL = status
00h successful
AH = number of spool files
DS:DX buffer filled
nonzero failed
Format of TopWare queued file information buffer [16-item array, one element]:
Offset Size Description (Table 2227)
00h 12 BYTEs filename
0Ch DWORD size
10h WORD date
12h WORD time
14h 15 BYTEs username
23h BYTE count
24h BYTE flag: header
25h BYTE print number
--------N-21FFCD-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET STATUS OF ALL PRINT SERVERS
AX = FFCDh
DS:DX -> buffer for server status (see #2228)
Return: AL = status
00h successful
AH = number of print servers
nonzero failed
Format of TopWare server status:
Offset Size Description (Table 2228)
00h BYTE station address
01h 15 BYTEs username
10h BYTE flag: 01h printer is shared, 00h sharing disabled
11h BYTE number of files pending in queue
--------N-21FFCF-----------------------------
INT 21 - TopWare Network OS v5.10+ - CALL TopLook FUNCTION
AX = FFCFh
DH = page number (0-2, 2 is text mode)
DL = type
00h look at specific screen
01h AutoLook on
FFh AutoLook off
BH = station number wishing to look
BL = station number to be looked at
CH = monochrome flag (01h monochrome, 00h not monochrome)
CL = screen mode (see #2219)
Return: AL = status (00h successful, nonzero failed)
SeeAlso: AX=FF8Dh
--------N-21FFD6-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET KEYCARD SERIAL NUMBER AND MAX USERS
AX = FFD6h
ES:BX -> 12-byte buffer for keycard serial number
Return: CX = maximum number of users
ES:BX buffer filled
--------N-21FFD7-----------------------------
INT 21 - TopWare Network OS v5.10+ - GET NETWORK PROTECTION ATTRIBUTES STATUS
AX = FFD7h
Return: AL = status (00h disabled, 01h enabled)
--------N-21FFE3DL00-------------------------
INT 21 - TopWare Network OS v5.10+ - INITIATE ACCESS TO SPECIFIC PACKET TYPE
AX = FFE3h
DL = 00h
BX = packet type for Ethernet header (IP = 0800h, ARP = 0806h, etc.)
ES:DI -> receive routine (see #2230)
Return: CF clear if successful
AX = handle number
CF set on error
DH = error code (03h,05h,09h,0Ah,11h) (see #2229)
SeeAlso: AX=FFE3h/DL=01h
(Table 2229)
Values for TopWare error code:
01h invalid handle
03h no interfaces of the specified type found
05h bad packet type
09h insufficient space
0Ah type already being accessed
0Ch unable to send packet (usually hardware error)
11h invalid function
(Table 2230)
Values TopWare receive routine is called with:
AX = function
0000h request packet buffer
CX = packet size
Return: ES:DI -> buffer or 0000h:0000h to discard packet
0001h packet copied
CX = packet size
DS:SI -> copied packet (same as returned ES:DI above)
--------N-21FFE3DL01-------------------------
INT 21 - TopWare Network OS v5.10+ - END ACCESS TO SPECIFIC PACKET TYPE
AX = FFE3h
DL = 01h
BX = handle returned by AX=FFE3h/DL=00h
Return: CF clear if successful
CF set on error
DH = error code (01h,11h) (see #2229)
Note: the specified access handle will no longer be valid after this call
SeeAlso: AX=FFE3h/DL=00h
--------N-21FFE3DL02-------------------------
INT 21 - TopWare Network OS v5.10+ - SEND PACKET
AX = FFE3h
DL = 02h
CX = length of data buffer
DS:SI -> buffer containing data
Return: CF clear if successful
CF set on error
DH = error code (0Ch,11h) (see #2229)
--------N-21FFE3DL03-------------------------
INT 21 - TopWare Network OS v5.10+ - GET LOCAL NETWORK INTERFACE ADDRESS
AX = FFE3h
DL = 03h
ES:DI -> 6-byte buffer for address
SeeAlso: AX=FFE3h/DL=00h
--------v-21FFFE-----------------------------
INT 21 - VIRUS - "08/15"/"Many Fingers" - INSTALLATION CHECK
AX = FFFEh
Return: AX = 0815h if resident
SeeAlso: AX=FF10h,AX=FFFEh/BX=0000h
--------v-21FFFEBX0000-----------------------
INT 21 - VIRUS - "Anti-Thunderbyte/LEMMING" - INSTALLATION CHECK
AX = FFFEh
BX = 0000h
Return: BX = FFFFh if resident
SeeAlso: AX=FFFEh,AX=FFFFh
--------v-21FFFF-----------------------------
INT 21 - VIRUS - "Ontario", "Year 1992"/"B1M92" - INSTALLATION CHECK
AX = FFFFh
Return: AX = 0000h if "Ontario" resident
AX = 1992h if "Year 1992"/"B1M92" resident
SeeAlso: AX=FF0Fh,AX=FFFFh/CX=0000h,INT 6B"VIRUS"
--------v-21FFFFCX0000-----------------------
INT 21 - VIRUS - "Revenge" - INSTALLATION CHECK
AX = FFFFh
CX = 0000h
Return: CX = 0006h if resident
SeeAlso: AX=FFFFh,INT 6B"VIRUS"
--------D-22---------------------------------
INT 22 - DOS 1+ - PROGRAM TERMINATION ADDRESS
Desc: this vector specifies the address of the routine which is to be given
control after a program is terminated; it should never be called
directly, since it does not point at an interrupt handler
Notes: this vector is restored from the DWORD at offset 0Ah in the PSP during
termination, and then a FAR JMP is performed to the address in INT 22
normally points at the instruction immediately following INT 21/AH=4Bh
call which loaded the current program
SeeAlso: INT 20,INT 21/AH=00h,INT 21/AH=31h,INT 21/AH=4Ch
--------G-22---------------------------------
INT 22 - COMTROL HOSTESS i/ISA DEBUGGER - CHANGE FIRMWARE DEBUGGING PORT
AL = new firmware debugging port
Return: ???
SeeAlso: INT 21"COMTROL",INT 23"COMTROL"
--------D-23---------------------------------
INT 23 - DOS 1+ - CONTROL-C/CONTROL-BREAK HANDLER
---DOS 1.x---
Return: AH = 00h abort program
if all registers preserved, restart DOS call
---DOS 2+---
CF clear
Return: all registers preserved
return via RETF with CF set or (MS-DOS 1,DR DOS) RETF 2 with CF set
DOS will abort program with errorlevel 0
else (RETF/RETF 2 with CF clear or IRET with CF ignored)
interrupted DOS call is restarted
Notes: this interrupt is invoked whenever DOS detects a ^C or ^Break; it
should never be called directly
MS-DOS 1.25 also invokes INT 23 on a divide overflow (INT 00)
MS-DOS remembers the stack pointer before calling INT 23, and if it is
not the same on return, pops and discards the top word; this is what
permits a return with RETF as well as IRET or RETF 2
MS-DOS 2.1+ ignores the returned CF if SP is the same on return as it
was when DOS called INT 23, so RETF 2 will not terminate the program
Novell DOS 7 always pops a word if CF is set on return, so one should
not return with RETF 2 and CF set or IRET with the stored flags' CF
set
any DOS call may safely be made within the INT 23 handler, although
the handler must check for a recursive invocation if it does
call DOS
SeeAlso: INT 1B
--------G-23---------------------------------
INT 23 - COMTROL HOSTESS i/ISA DEBUGGER - GET CONFIGURATION INFORMATION
AL = query type
00h get old config map
Return: AX = old config map
01h get dual-ported RAM map
Return: BX:AX = dual-ported RAM map
02h get SCC port map
Return: BX:AX = SCC port map
SeeAlso: INT 22"COMTROL",INT 26"COMTROL"
--------D-24---------------------------------
INT 24 C - DOS 1+ - CRITICAL ERROR HANDLER
Notes: invoked when a critical (usually hardware) error is encountered by DOS
(see #2231); should never be called directly
when DOS terminates a program, it copies the previous value of the
INT 24 vector out of the PSP (see #1066) and into the interrupt
vector table
SeeAlso: INT 21/AH=95h
(Table 2231)
Values critical error handler is called with:
AH = type and processing flags (see #2232)
AL = drive number if AH bit 7 clear
BP:SI -> device driver header (see #1332 at INT 21/AH=52h)
(BP:[SI+4] bit 15 set if character device)
DI low byte contains error code if AH bit 7 set (see #2233)
STACK: DWORD return address for INT 24 call
WORD flags pushed by INT 24
WORD original AX on entry to INT 21
WORD BX
WORD CX
WORD DX
WORD SI
WORD DI
WORD BP
WORD DS
WORD ES
DWORD return address for INT 21 call
WORD flags pushed by INT 21
Return: AL = action code (see #2234)
SS,SP,DS,ES,BX,CX,DX preserved
Notes: the only DOS calls the handler may make are INT 21/AH=01h-0Ch,30h,59h
if the handler returns to the application by popping the stack, DOS
will be in an unstable state until the first call with AH > 0Ch
for DOS 3.1+, IGNORE (AL=00h) is turned into FAIL (AL=03h) on network
critical errors
if IGNORE specified but not allowed, it is turned into FAIL
if RETRY specified but not allowed, it is turned into FAIL
if FAIL specified but not allowed, it is turned into ABORT
(DOS 3.0+) if a critical error occurs inside the critical error
handler, the DOS call is automatically failed (AL set to 03h and
the INT 24 call skipped)
Bitfields for critical error type and processing flags:
Bit(s) Description (Table 2232)
7 clear = disk I/O error
set = -- if block device, bad FAT image in memory
-- if char device, error code in DI
6 unused
5 Ignore allowed (DOS 3.0+)
4 Retry allowed (DOS 3.0+)
3 Fail allowed (DOS 3.0+)
2-1 disk area of error
00 = DOS area 01 = FAT
10 = root dir 11 = data area
0 set if write, clear if read
(Table 2233)
Values for critical error code:
00h write-protection violation attempted
01h unknown unit for driver
02h drive not ready
03h unknown command given to driver
04h data error (bad CRC)
05h bad device driver request structure length
06h seek error
07h unknown media type
08h sector not found
09h printer out of paper
0Ah write fault
0Bh read fault
0Ch general failure
0Dh (DOS 3.0+) sharing violation
0Eh (DOS 3.0+) lock violation
0Fh invalid disk change
10h (DOS 3.0+) FCB unavailable
11h (DOS 3.0+) sharing buffer overflow
12h (DOS 4.0+) code page mismatch
13h (DOS 4.0+) out of input
14h (DOS 4.0+) insufficient disk space
(Table 2234)
Values for critical error handler action code:
00h ignore error and continue processing request
01h retry operation
02h terminate program as though INT 21/AH=4Ch called (INT 20h for DOS 1.x)
03h fail system call in progress (DOS 3+)
--------D-25---------------------------------
INT 25 - DOS 1+ - ABSOLUTE DISK READ (except partitions > 32M)
AL = drive number (00h = A:, 01h = B:, etc)
CX = number of sectors to read (not FFFFh)
DX = starting logical sector number (0000h - highest sector on drive)
DS:BX -> buffer for data
Return: CF clear if successful
CF set on error
AH = status (see #2235)
AL = error code (same as passed to INT 24 in DI)
AX = 0207h if more than 64K sectors on drive -- use new-style call
may destroy all other registers except segment registers
Notes: original flags are left on stack, and must be popped by caller
this call bypasses the DOS filesystem
examination of CPWIN386.CPL indicates that if this call fails with
error 0408h on an old-style (<32M) call, one should retry the
call with the high bit of the drive number in AL set
Novell DOS 7 decides whether the old-style or new-style (>32M) version
of INT 25 must be used solely on the basis of the partition's size,
thus forcing use of the new-style call even for data in the first
32M of the partition
BUGS: DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an
invalid drive number
DR DOS 3.41 will return with a jump instead of RETF, leaving the
wrong number of bytes on the stack; use the huge-partition version
(INT 25/CX=FFFFh) for all partition sizes under DR DOS 3.41
SeeAlso: INT 13/AH=02h,INT 25/CX=FFFFh,INT 26,INT 21/AX=7305h
(Table 2235)
Values for disk I/O status:
80h device failed to respond (timeout)
40h seek operation failed
20h controller failed
10h data error (bad CRC)
08h DMA failure
04h requested sector not found
03h write-protected disk (INT 26 only)
02h bad address mark
01h bad command
--------D-25----CXFFFF-----------------------
INT 25 - DOS 3.31+ - ABSOLUTE DISK READ (32M-2047M hard-disk partition)
CX = FFFFh
AL = drive number (0=A, 1=B, etc)
DS:BX -> disk read packet (see #2236)
Return: CF clear if successful
CF set on error
AH = status (see #2235)
AL = error code (same as passed to INT 24 in DI)
may destroy all other registers except segment registers
Notes: partition is potentially >32M (and requires this form of the call) if
bit 1 of the device attribute word in the device driver is set
original flags are left on stack, and must be removed by caller
this call bypasses the DOS filesystem
for FAT32 drives (which may be up to 2TB in size), use INT 21/AX=7305h
SeeAlso: INT 13/AH=02h,INT 25,INT 26/CX=FFFFh,INT 21/AX=7305h
Format of disk read packet:
Offset Size Description (Table 2236)
00h DWORD sector number
04h WORD number of sectors to read
06h DWORD transfer address
SeeAlso: #2240
--------k-25CDCD-----------------------------
INT 25 - Stacker - GET DEVICE DRIVER ADDRESS
AX = CDCDh
DS:BX -> buffer for address (see #2237)
CX = 0001h
DX = 0000h
Return: AX = CDCDh if Stacker installed
DS:BX buffer filled
Note: not supported by Stacker Anywhere; to obtain the Stacker device
driver address and to detect drives controlled by all versions
of Stacker, INT 21/AX=4404h"Stacker" or lookup via the CDS and DPB
should be preferred (see INT 21/AH=52h)
Stacker Anywhere does not link its built-in device driver into
the standard device driver chain, but it can be found via CDS/DPB
SeeAlso: INT 21/AX=4404h"Stacker"
Format of Stacker v2+ driver address buffer:
Offset Size Description (Table 2237)
00h WORD signature CDCDh
02h WORD ??? 0001h
04h DWORD pointer to Stacker signature at device driver offset 1Ah
(see #2238)
Format of Stacker v2+ device driver:
Offset Size Description (Table 2238)
00h DWORD pointer to next driver, offset=FFFFh if last driver
FFFFh:FFFFh for Stacker Anywhere
04h WORD device attributes (see #1333,#1334)
06h WORD device strategy entry point
08h WORD device interrupt entry point
0Ah BYTE number of subunits (drives) supported by driver
0 for Stacker Anywhere
0Bh 7 BYTEs signature "STAC-CD" for Stacker and Stacker Anywhere
12h 7 BYTEs ???
19h BYTE always = 01h ?? (Stacker Anywhere points here)
1Ah WORD signature A55Ah (all other Stacker versions point here)
1Ch WORD Stacker version * 64h
0C8h = 200, 012Ch = 300, 0190h = 400 (also Stacker Anywhere)
1Eh WORD offset of volume-specific information offset table
(list of WORDs, one per drive, containing offsets to various
information)
20h 56 BYTEs n/a
58h BYTE volume number, set after INT 21/AX=4404h, INT 21/AX=4408h
(use to index into volume-specific info offset table,
should be set to FFh before and tested for change after)
59h 19 BYTEs n/a
6Ch 4 BYTEs ASCII string "SWAP"
70h 26 BYTEs drive mapping table (one byte for each drive A: through Z:)
(only used for drives swapped by SSWAP.COM; other drives
compressed by Stacker can be found with the standard device
driver header signature (see INT 21/AH=52h)
---Stacker 4, Stacker Anywhere---
8Ah 40 BYTEs ???
B2h 4 BYTEs ASCII string "SWP2"
B6h 26 BYTEs drive table ???
D0h 150 BYTEs ???
166h 60 BYTEs LZSINFO structure (see #2494 at INT 2F/AX=4A12h)
SeeAlso: #2239,#1332 at INT 21/AH=52h
Format of Stacker boot record:
Offset Size Description (Table 2239)
1F0h 8 BYTEs Stacker signature (first byte is CDh)
1F8h DWORD pointer to start of Stacker device driver
1FCh WORD Stacker volume number
1FEh WORD ???
SeeAlso: #2238
--------c-25--FFSI4358-----------------------
INT 25 - PC-CACHE.SYS - INSTALLATION CHECK
AL = FFh
SI = 4358h
Return: SI = 6378h if installed
CX = segment of device driver PC-CACHE.SYS
DX = version (major in DH, minor in DL)
Program: PC-CACHE.SYS is a small device driver used by PC-Cache v5.x to obtain
access to certain disk drivers for devices such as Bernoulli drives
SeeAlso: INT 13/AH=A0h
--------D-26---------------------------------
INT 26 - DOS 1+ - ABSOLUTE DISK WRITE (except partitions > 32M)
AL = drive number (00h = A:, 01h = B:, etc)
CX = number of sectors to write (not FFFFh)
DX = starting logical sector number (0000h - highest sector on drive)
DS:BX -> data to write
Return: CF clear if successful
CF set on error
AH = status (see #2235)
AL = error code (same as passed to INT 24 in DI)
AX = 0207h if more than 64K sectors on drive -- use new-style call
may destroy all other registers except segment registers
Notes: original flags are left on stack, and must be popped by caller
this call bypasses the DOS filesystem, though DOS 5+ invalidates any
disk buffers referencing sectors which are written with this call
examination of CPWIN386.CPL indicates that if this call fails with
error 0408h on an old-style (<32M) call, one should retry the
call with the high bit of the drive number in AL set
Novell DOS 7 decides whether the old-style or new-style (>32M) version
of INT 26 must be used solely on the basis of the partition's size,
thus forcing use of the new-style call even for data in the first
32M of the partition
BUGS: DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an
invalid drive number
DR DOS 3.41 will return with a jump instead of RETF, leaving the
wrong number of bytes on the stack; use the huge-partition version
(INT 26/CX=FFFFh) for all partition sizes under DR DOS 3.41
SeeAlso: INT 13/AH=03h,INT 25,INT 26/CX=FFFFh,INT 21/AX=7305h
--------D-26----CXFFFF-----------------------
INT 26 - DOS 3.31+ - ABSOLUTE DISK WRITE (32M-2047M hard-disk partition)
CX = FFFFh
AL = drive number (0=A, 1=B, etc)
DS:BX -> disk write packet (see #2240)
Return: CF clear if successful
CF set on error
AH = status (see #2235)
AL = error code (same as passed to INT 24 in DI)
may destroy all other registers except segment registers
Notes: partition is potentially >32M (and requires this form of the call) if
bit 1 of the device attribute word in the device driver is set
original flags are left on stack, and must be removed by caller
this call bypasses the DOS filesystem, though DOS 5+ invalidates any
disk buffers referencing sectors which are written with this call
for FAT32 drives (which may be up to 2TB in size), use INT 21/AX=7305h
SeeAlso: INT 13/AH=03h,INT 25/CX=FFFFh,INT 26,INT 21/AX=7305h
Format of disk write packet:
Offset Size Description (Table 2240)
00h DWORD sector number
04h WORD number of sectors to read
06h DWORD transfer address
SeeAlso: #2236
--------G-26---------------------------------
INT 26 - COMTROL HOSTESS i/ISA DEBUGGER - ENTER/EXIT EXTENDED ADDRESSING MODE
???
Return: ???
SeeAlso: INT 23"COMTROL",INT 27"COMTROL"
--------D-27---------------------------------
INT 27 - DOS 1+ - TERMINATE AND STAY RESIDENT
DX = number of bytes to keep resident (max FFF0h)
CS = segment of PSP
Return: never
Notes: this is an obsolete call
INT 22, INT 23, and INT 24 are restored from the PSP
does not close any open files
the minimum number of bytes which will remain resident is 110h for
DOS 2.x and 60h for DOS 3.0+; there is no minimum for DOS 1.x, which
implements this service in COMMAND.COM rather than the DOS kernel
SeeAlso: INT 21/AH=31h
--------G-27---------------------------------
INT 27 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE REMOTE TURBO DEBUGGER KERNEL
???
Return: ???
Desc: invoke a copy of the remote Turbo Debugger kernel on the Hostess i
controller
SeeAlso: INT 20"COMTROL",INT 26"COMTROL"
--------D-28---------------------------------
INT 28 C - DOS 2+ - DOS IDLE INTERRUPT
SS:SP = top of MS-DOS stack for I/O functions
Return: all registers preserved
Desc: This interrupt is invoked each time one of the DOS character input
functions loops while waiting for input. Since a DOS call is in
progress even though DOS is actually idle during such input waits,
hooking this function is necessary to allow a TSR to perform DOS
calls while the foreground program is waiting for user input. The
INT 28h handler may invoke any INT 21h function except functions
00h through 0Ch.
Notes: under DOS 2.x, the critical error flag (the byte immediately after the
InDOS flag) must be set in order to call DOS functions 50h/51h from
the INT 28h handler without destroying the DOS stacks.
calls to INT 21/AH=3Fh,40h from within an INT 28 handler may not use a
handle which refers to CON
at the time of the call, the InDOS flag (see INT 21/AH=34h) is normally
set to 01h; if larger, DOS is truly busy and should not be reentered
the default handler is an IRET instruction
supported in OS/2 compatibility box
the _MS-DOS_Programmer's_Reference_ for DOS 5.0 incorrectly documents
this interrupt as superseded
SeeAlso: INT 21/AH=34h,INT 2A/AH=84h,INT 2F/AX=1680h
--------U-289999-----------------------------
INT 28 u - PCXDUMP v9.00+ - INSTALLATION CHECK
AX = 9999h
Return: AX = AAAAh if installed
CX = version number * 100 (example: 03A2h = 930 = v9.30)
DL = interrupt used by the dump function (see #2241)
(00h if call not available)
BX = CS of PCXDUMP's INT 28 handler (undocumented)
ES = segment of PCXDUMP's memory block (v9.30, undocumented)
Program: PCXDUMP is a shareware screen grabber saving in PCX format
Notes: if DL<>00h a dump can be requested by calling INT DL as shown
below (the user can choose the interrupt number at installation
time); if DL=00h the dump function can be called only by hotkeys
(this is the default)
(Table 2241)
Call PCXDUMP screen-dump function with:
INT xx
AX = 1234h
BX = dump type
0000h Color dump
0001h Immediate color dump
0002h Black/White dump
0003h Immediate B/W dump
0004h Inverted B/W dump
0005h Gray scaled dump
0006h Inverted gray scaled dump
0007h Text screen dump to text file
0008h Text screen dump to ansi file
Return: nothing
Notes: if BX=0001h, 0003h, 0007h or 0008h the whole screen will be
dumped; the other valid values will draw a selection frame
on the screen except in text modes (text modes allow only
full screen dumps)
this function doesn't perform the dump, it only requests it;
the dump will be performed after a few milliseconds if it's
safe to do so, thus the author recommends putting a 60 ms delay
after this call
--------D-29---------------------------------
INT 29 C - DOS 2+ - FAST CONSOLE OUTPUT
AL = character to display
Return: nothing
BX may be destroyed by some versions of DOS 3.3
Notes: automatically called when writing to a device with bit 4 of its device
driver header set (see also INT 21/AH=52h)
COMMAND.COM v3.2 and v3.3 compare the INT 29 vector against the INT 20
vector and assume that ANSI.SYS is installed if the segment is larger
the default handler under DOS 2.x and 3.x simply calls INT 10/AH=0Eh
the default handler under DESQview 2.2 understands the <Esc>[2J
screen-clearing sequence, calls INT 10/AH=0Eh for all others
SeeAlso: INT 21/AH=52h,INT 2F/AX=0802h,INT 79"AVATAR.SYS"
--------U-29E60DCL0E-------------------------
INT 29 - ShowGFX - INSTALLATION CHECK
AX = E60Dh
CL = 0Eh
DX = C0DEh
Return: DX = DEC0h
Program: ShowGFX is a PCBoard graphics driver by Solar Designer
--------!---Section--------------------------
Interrupt List, part 10 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------N-2A00-------------------------------
INT 2A - NETWORK - INSTALLATION CHECK
AH = 00h
Return: AH <> 00h if installed
CF set if NetWare v2.15 NetBIOS emulator installed
Note: supported by PC LAN Program, LAN Manager, LANtastic, NetWare, 10NET,
etc.
SeeAlso: INT 5C"NetBIOS"
--------N-2A0000-----------------------------
INT 2A - AT&T Starlan Extended NetBIOS (var length names) - INSTALLATION CHECK
AX = 0000h
Return: AH = DDh
SeeAlso: INT 5B"Extended NetBIOS"
--------N-2A01-------------------------------
INT 2A - NETWORK (Microsoft,LANtastic) - EXECUTE NETBIOS REQUEST,NO ERROR RETRY
AH = 01h
ES:BX -> NCB (see #2920 at INT 5C"NetBIOS")
Return: AL = NetBIOS error code
AH = status
00h no error
01h error occurred
SeeAlso: AH=04h,AX=0500h,INT 5B"Extended NetBIOS",INT 5C"NetBIOS"
--------N-2A02-------------------------------
INT 2A - NETWORK (Microsoft) - SET NET PRINTER MODE
AH = 02h
???
Return: ???
--------N-2A0300-----------------------------
INT 2A - NETWORK - CHECK DIRECT I/O
AX = 0300h
DS:SI -> ASCIZ device name (may be full path or only drive specifier--
must include the colon)
Return: CF clear if direct physical addressing (INT 13,INT 25) permissible
CF set if access via files only
Notes: do not use direct disk accesses if this function returns CF set or the
device is redirected (INT 21/AX=5F02h)
use AH=00h to determine whether the network is installed; if not,
direct physical access is allowed
may take some time to execute, so programs which need to check
frequently should save the result of the first call
this function is called by the DOS kernel on INT 25 and INT 26
supported by PC LAN Program, LAN Manage, LANtastic, NetWare, 10NET,
etc.
SeeAlso: INT 13/AH=02h,INT 13/AH=03h,INT 25,INT 26,INT 21/AX=5F02h
--------N-2A04-------------------------------
INT 2A - NETWORK - EXECUTE NetBIOS REQUEST
AH = 04h
AL = error retry
00h automatically retry request on errors 09h, 12h, and 21h
(see #2919 at INT 5C"NetBIOS")
01h no retry
02h ???
ES:BX -> Network Control Block (see #2920 at INT 5C"NetBIOS")
Return: AX = 0000h if successful
AH = 01h on error
AL = error code
Notes: invokes either INT 5B or INT 5C as appropriate
supported by PC LAN Program, LANtastic, LAN Manager, NetWare, 10NET,
etc.
NetWare 2.15 NetBIOS emulator returns CF clear if successful, CF set
on error
PC LAN Program defines any non-zero return value in AH as an error
indicator for subfunction 00h, and any non-zero return value in AX
as an error indicator for subfunction 01h
SeeAlso: AH=00h,AH=01h,AX=0500h,INT 5B"Extended NetBIOS",INT 5C"NetBIOS"
--------N-2A0500-----------------------------
INT 2A - NETWORK - GET NETWORK RESOURCE AVAILABILITY
AX = 0500h
Return: AX reserved
BX = number of network names available
CX = number of network control blocks available
DX = number of network sessions available
Notes: supported by PC LAN Program, LAN Manager, LANtastic, NetWare, 10NET,
etc.
the application should call this function before using any network
resources, and maintain its own count to avoid exceeding the
network's resource limits
SeeAlso: AH=00h,AH=01h,AH=04h,INT 5C"NetBIOS"
--------N-2A06-------------------------------
INT 2A - NETBIOS, LANtastic - NETWORK PRINT-STREAM CONTROL
AH = 06h
AL = function
01h set concatenation mode
all printer output put in one job until return to DOS prompt
02h set truncation mode (default)
printer open/close or BIOS/DOS output switch starts new job
03h flush printer output and start new print job
Return: CF set on error
AX = error code
CF clear if successful
Notes: subfunction 03h is equivalent to Ctrl/Alt/keypad-*
supported by PC LAN Program, LANtastic, NetWare, 10NET, etc.
LANtastic v4.x no longer supports this call
this function sets the printer mode for all redirected printers
SeeAlso: INT 21/AX=5D08h,INT 21/AX=5D09h,INT 2F/AX=1125h
--------N-2A07-------------------------------
INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
AH = 07h
???
Return: ???
Program: PC Network is an early networking package which was renamed the
IBM PC Local Area Network Program (PC LAN Program) as of v1.10
SeeAlso: AH=86h
--------N-2A2001-----------------------------
INT 2A - MS Networks or NETBIOS - ???
AX = 2001h
???
Return: ???
Note: intercepted by DESQview 2.x
--------N-2A2002-----------------------------
INT 2A - NETWORK - ???
AX = 2002h
???
Return: ???
Note: called by MS-DOS 3.30-6.00 APPEND
--------N-2A2003-----------------------------
INT 2A - NETWORK - ???
AX = 2003h
???
Return: ???
Note: called by MS-DOS 3.30-6.00 APPEND
--------N-2A4147DX0000-----------------------
INT 2A U - NetSoft DOS-NET v1.20+ - INSTALLATION CHECK
AX = 4147h ('AG')
DX = 0000h
Return: DX = 4147h if installed
DS:SI -> configuration data (see #2242)
Program: DOS-NET is a shareware networking package by Albert Graham
Note: this call is supported by CLIENT.COM, SERVER.COM, ROUTER.COM, and
NETDOS.COM
SeeAlso: INT 65/DX=4147h,INT 65/DX=4741h
Format of DOS-NET v1.20 configuration data area:
Offset Size Description (Table 2242)
00h BYTE ???
01h BYTE interrupt number used by DOS-NET APIs
02h WORD function number to place in AX for above interrupt
04h BYTE minor version as two BCD digits (e.g. 20h for v1.20)
05h BYTE major version number (01h for v1.20)
06h 2 BYTEs ???
08h WORD ??? (used by ARCNET.COM)
bit 15: ??? (set by MACTEST.COM)
0Ah WORD ??? (used by NDIS.COM and ODI.COM)
0Ch 22 BYTEs ???
24h DWORD -> ??? function (set by PROTECT.COM)
28h 12 BYTEs ???
34h DWORD -> ??? function (set by FASTVIEW.COM)
38h DWORD -> ??? function (set by FASTVIEW.COM)
58h DWORD -> ??? (offsets 04h and 1Ah from value are used by NETFILES)
???
7Ch WORD ???
7Eh WORD ??? (may be high half of a DWORD at 7Ch)
???
A8h DWORD -> ??? (used by SM.COM)
???
114h WORD ???
116h WORD ??? (may be high half of a DWORD at 114h)
???
1BDh BYTE ??? flags
bit 0: ???
bit 6: ???
???
1E1h BYTE ???
???
208h WORD ??? (used by SM.COM, MACTEST)
282h WORD ???
284h 2 BYTEs ???
286h WORD ??? flags
bit 0: ???
???
31Eh WORD ???
320h WORD ??? (used by NDIS.COM and ODI.COM)
322h 8 BYTEs ???
32Ah WORD ??? (used by NDIS.COM and ODI.COM)
???
33Eh 4 BYTEs ??? (used by ODI.COM)
342h N BYTEs ??? (used by NDIS.COM)
???
3CFh BYTE ??? flags
bit 2: ???
3D2h BYTE installed-component flags
bit 0: PROTECT installed
bit 1: NETCACHE installed
bit 3: SM.COM installed
bit 7: NETDEBUG installed
3D3h BYTE installed-component flags
bit 0: NETFILES installed
bit 6: FASTVIEW installed
???
3FFh BYTE ??? (used by NDIS.COM)
400h BYTE ???
401h BYTE ??? (used by SM.COM)
402h BYTE ??? (used by SM.COM)
???
448h BYTE ???
449h BYTE ??? (used by MACTEST)
44Ah BYTE ??? (used by PROTECT)
44Bh BYTE ???
44Ch BYTE ???
44Dh BYTE ??? (used by SM.COM)
44Eh BYTE ??? (used by SM.COM, MACTEST)
???
--------N-2A7802-----------------------------
INT 2A - NETWORK - PC LAN PROG v1.31+ - GET LOGGED ON USER NAME
AX = 7802h
ES:DI -> 8-byte buffer to be filled
Return: AL = 00h if no user logged on to Extended Services
AL <> 00h if user logged on to Extended Services
buffer at ES:DI filled with name, padded to 8 chars with blanks.
--------D-2A80-------------------------------
INT 2A CU - NETWORK - BEGIN DOS CRITICAL SECTION
AH = 80h
AL = critical section number (00h-0Fh) (see #2243)
Notes: normally hooked to avoid interrupting a critical section, rather than
called
the handler should ensure that none of the critical sections are
reentered, usually by suspending a task which attempts to reenter
an active critical section
the DOS kernel does not invoke critical sections 01h and 02h unless it
is patched. DOS 3.1+ contains a zero-terminated list of words
beginning at offset -11 from the Swappable Data Area
(see #1373 at INT 21/AX=5D06h); each word contains the offset within
the DOS data segment of a byte which must be changed from C3h (RET)
to 50h (PUSH AX) under DOS 3.x or from 00h to a nonzero value under
DOS 4.0+ to enable use of critical sections. For DOS 4.0+, all
words in this list point at the byte at offset 0D0Ch.
MS Windows patches the DOS kernel's calls to INT 2A/AH=80h-81h into
far calls to its own handler, and does not reflect the calls back
to INT 2A unless SYSTEM.INI contains ReflectDOSInt2A=1 or
ModifyDOSInt2A=0 in the [386Enh] section
Novell NETX does not issue INT 2A/AH=80h and INT 2A/AH=81h calls when
it intercepts INT 21 calls and processes them itself
SeeAlso: AH=81h,AH=82h,AX=8700h,INT 21/AX=5D06h,INT 21/AX=5D0Bh
(Table 2243)
Values for DOS critical section number:
01h DOS kernel, SHARE.EXE, DOSMGR
apparently for maintaining the integrity of DOS/SHARE/NET
data structures
02h DOS kernel, DOSMGR
ensures that no multitasking occurs while DOS is calling an
installable device driver
05h network redirector
06h DOS 4.x only IFSFUNC
08h ASSIGN.COM
0Ah MSCDEX, CORELCDX
0Fh IBM PC LAN server (while intercepting INT 10/AH=06h,07h,0Eh)
--------D-2A81-------------------------------
INT 2A CU - NETWORK - END DOS CRITICAL SECTION
AH = 81h
AL = critical section number (00h-0Fh) (see #2243)
Notes: normally hooked rather than called
the handler should reawaken any tasks which were suspended due to an
attempt to enter the specified critical section
MS Windows patches the DOS kernel's calls to INT 2A/AH=80h-81h into
far calls to its own handler, and does not reflect the calls back
to INT 2A unless SYSTEM.INI contains ReflectDOSInt2A=1 or
ModifyDOSInt2A=0 in the [386Enh] section
SeeAlso: AH=80h,AH=82h,AX=8700h
--------D-2A82-------------------------------
INT 2A CU - NETWORK - END DOS CRITICAL SECTIONS 0 THROUGH 7
AH = 82h
Notes: called by the INT 21h function dispatcher for function 0 and functions
greater than 0Ch except 59h, and on process termination
the handler should reawaken any tasks which were suspended due to an
attempt to enter one of the critical sections 0 through 7
SeeAlso: AH=81h
--------N-2A84-------------------------------
INT 2A CU - NETWORK - KEYBOARD BUSY LOOP
AH = 84h
Note: similar to DOS's INT 28h, called from inside the DOS keyboard input
loop (i.e. INT 21/AH=07h or INT 21/AH=08h) to allow the network
software to process requests
SeeAlso: INT 28
--------N-2A86-------------------------------
INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
AH = 86h
???
Return: ???
SeeAlso: AH=07h,AH=C4h
--------P-2A8700-----------------------------
INT 2A CU - PRINT - BEGIN BACKGROUND PRINTING
AX = 8700h
CF clear
Return: CF clear if OK to print in background now
CF set if background printing not allowed at this time
Desc: used to inform interested programs that PRINT is about to start its
background processing, and allow those programs to postpone the
processing if necessary
Notes: when PRINT gains control and wants to begin printing, it calls this
function. If CF is clear on return, PRINT begins its background
processing, and calls AX=8701h when it is done. If CF is set on
return, PRINT will relinquish control immediately, and will not
call AX=8701h
PCVENUS (an early network shell by IBM and CMU) hooks this call to
prevent background printing while its own code is active
SeeAlso: AH=80h,AH=81h,AX=8701h
--------P-2A8701-----------------------------
INT 2A CU - PRINT - END BACKGROUND PRINTING
AX = 8701h
Desc: used to inform interested programs that PRINT has completed its
background processing
Note: called by PRINT after it has performed some background printing; not
called if AX=8700h returned with CF set.
SeeAlso: AX=8700h
--------N-2A89-------------------------------
INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
AH = 89h
AL = ??? (ASSIGN uses 08h)
???
Return: ???
--------I-2A90-------------------------------
INT 2A U - IBM PC 3270 EMULATION PROGRAM - ???
AH = 90h
???
Return: ???
Note: the LANtastic redirector and SERVER.EXE use this function with AL=01h,
03h-07h,0Ch-11h
--------N-2AC2-------------------------------
INT 2A U - Network - ???
AH = C2h
AL = subfunction
07h ???
08h ???
BX = 0001h
???
Return: ???
Note: this function is called by the DOS 3.30-6.00 APPEND
--------N-2AC4-------------------------------
INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
AH = C4h
AL = subfunction
07h ???
08h ???
BX = ???
???
Return: ???
SeeAlso: AH=86h
--------N-2AD800-----------------------------
INT 2A U - Novell NetWare Lite - SERVER - SET ???
AX = D800h
Return: nothing
Desc: sets ??? flag, and sets ??? to initial value
Note: called by CLIENT
SeeAlso: AX=D801h,AX=D850h
--------N-2AD801-----------------------------
INT 2A U - Novell NetWare Lite - SERVER - RESET ???
AX = D801h
Return: nothing
Desc: clears the ??? flag set by AX=D800h
Note: called by CLIENT
SeeAlso: AX=D800h,AX=D850h
--------N-2AD850-----------------------------
INT 2A U - Novell NetWare Lite - CLIENT - INCREMENT ???
AX = D850h
Return: nothing
Desc: increments an internal byte-sized counter
Note: this function is intercepted by DV/X 1.10 PEERSERV.DVR and the
Advanced NetWare 4.0 DOS Requester
SeeAlso: AX=D851h
--------N-2AD851-----------------------------
INT 2A U - Novell NetWare Lite - CLIENT - RESET ???
AX = D851h
Return: nothing
Desc: resets an internal byte-sized counter to zero
Note: this function is intercepted by DV/X 1.10 PEERSERV.DVR and the
Advanced NetWare 4.0 DOS Requester
SeeAlso: AX=D850h
--------N-2AD852-----------------------------
INT 2A U - Novell NetWare - DOS Requester v1.03 - ???
AX = D852h
Return: ???
Note: calls the NetWare Lite SERVER installation check, and sets ??? pointer
SeeAlso: AX=D853h,INT 2F/AX=D880h
--------N-2AD853-----------------------------
INT 2A U - Novell NetWare - DOS Requester v1.03 - ???
AX = D853h
Return: ???
Note: clears the pointer set by AX=D852h
SeeAlso: AX=D852h
--------N-2AE0-------------------------------
INT 2A U - PC Network 1.00 - ???
AH = E0h
AL = subfunction??? (01h,02h, maybe others)
???
Return: ???
Note: called by PCNet 1.00 NET.COM, a shell program from which others are run
--------N-2AFF90-----------------------------
INT 2A - PC/TCP PREDIR.EXE - ???
AX = FF90h
Return: AX = ???
Note: PREDIR.EXE is the network printer redirector included as part of the
PC/TCP system by FTP Software, Inc.
--------N-2AFF91-----------------------------
INT 2A - PC/TCP PREDIR.EXE - ???
AX = FF91h
BX = ???
Return: AX = status???
--------N-2AFF92-----------------------------
INT 2A - PC/TCP PREDIR.EXE - INSTALLATION CHECK
AX = FF92h
Return: AX = 0000h if installed
BX = redirected printer port (FFFFh if no printers redirected)
CX = version (CH = major, CL = minor)
Note: PREDIR.EXE is the network printer redirector included as part of the
PC/TCP system by FTP Software, Inc.
--------N-2AFF93-----------------------------
INT 2A - PC/TCP PREDIR.EXE - ???
AX = FF93h
Return: AX = ???
--------N-2AFF94-----------------------------
INT 2A - PC/TCP PREDIR.EXE - ???
AX = FF94h
BX = ???
CX = ???
DX = ???
Return: AX = ???
Note: PREDIR.EXE is the network printer redirector included as part of the
PC/TCP system by FTP Software, Inc.
--------N-2AFF95-----------------------------
INT 2A - PC/TCP PREDIR.EXE - GET CONFIGURATION STRINGS
AX = FF95h
CX = what to get
0000h ??? (returned pointer to "C:\COMMAND.COM")
0001h spooling program
0002h ???
0003h spool file name
0004h swap file name
Return: AX = status
0000h successful
BX:DX -> ASCIZ configuration string
--------N-2AFF96-----------------------------
INT 2A - PC/TCP PREDIR.EXE - SET PRINT JOB TERMINATION CONFIGURATION
AX = FF96h
CX = what to set
0000h ???
0001h print-on-hotkey state
0002h print-on-exit state
0003h print job timeout in clock ticks
0004h print-on-EOF state
BX = new value (0000h disabled, 0001h enabled except for timeout)
Return: AX = ???
SeeAlso: AX=FF97h
Note: PREDIR.EXE is the network printer redirector included as part of the
PC/TCP system by FTP Software, Inc.
--------N-2AFF97-----------------------------
INT 2A - PC/TCP PREDIR.EXE - GET PRINT JOB TERMINATION CONFIGURATION
AX = FF97h
CX = what to get
0000h ???
0001h print-on-hotkey state
0002h print-on-exit state
0003h print job timeout in clock ticks
0004h print-on-EOF state
Return: AX = status
0000h successful
BX = old value (0000h disabled, 0001 enabled except for timeout)
SeeAlso: AX=FF96h
--------D-2B---------------------------------
INT 2B - DOS 2+ - RESERVED
Note: this vector is not used in MS-DOS versions <= 6.22, and points at an
IRET instruction
--------D-2B---------------------------------
INT 2B - IBM ROM-DOS v4.0 - ???
AH = function
00h ??? (modifies data in IBMBIO.COM)
01h internal operations
02h ???
AL = index (00h-0Ch)
Return: AX = ??? or (CMOS 2Dh and CMOS 2Eh)
03h get ??? data
Return: AX = (CMOS 2Dh and CMOS 2Eh)
BX = FFFFh
other does nothing
Note: function 03h is called by ROMSHELL.COM; if BX != 0, then the ES:DI from
INT 2F/AX=1982h points at valid data
SeeAlso: INT 2F/AX=1982h
--------D-2C---------------------------------
INT 2C - DOS 2+ - RESERVED
Note: this vector is not used in DOS versions <= 6.00, and points at an IRET
--------O-2C---------------------------------
INT 2C - STARLITE architecture - KERNEL API
Note: STARLITE is an architecture by General Software for a series of MS-DOS
compatible operating systems (OEM DOS, NETWORK DOS, and SMP DOS) to
be released in 1991. The interrupt number is subject to change
before the actual release.
--------m-2C---------------------------------
INT 2C R - Cloaking - CALL PROTECTED-MODE PASSALONG CHAIN
Notes: when this interrupt is invoked in V86 mode, RM386 will invoke the first
in a chain of protected-mode handlers, and will only pass execution
to the V86-mode INT 2C handler if none of the handlers in the
passalong chain handle the call instead. This is the method by which
the real-mode stub of a cloaked application communicates with the
protected-mode portion.
the cloaking host calls the passalong chain with EAX=58494E33h ('WIN3')
when MS Windows starts up and with EAX=334E4958h ('3NIW') when
Windows shuts down; between these two broadcasts, the additional
Windows-only Cloaking services are available
this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
memory manager included in Helix Software's Netroom
SeeAlso: INT 2C/AX=0009h,INT 2F/AX=4310h"Cloaking"
--------m-2C0000-----------------------------
INT 2C P - Cloaking - ALLOCATE GDT SELECTOR
AX = 0000h
EBX = base address
CL = access mode byte
CH = extended access mode byte (omit limit field)
EDX = segment limit
Return: CF clear if successful
AX = selector
CF set on error
AX = error code (see #2244)
Notes: this INT 2C interface is used by Netroom's DPMI.EXE v3.00
to access extended memory, set the base address to the desired
physical address plus 400000h (4M)
this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
memory manager included in Helix Software's Netroom
SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=0004h,AX=0005h,INT 31/AH=57h,#0427
(Table 2244)
Values for Cloaking error code:
0001h no more selectors
0002h not a GDT ring 0 selector
0003h invalid selector (out of range, not user selector)
0004h selector not allocated
--------m-2C0001-----------------------------
INT 2C P - Cloaking - FREE GDT SELECTOR
AX = 0001h
SI = selector
Return: CF clear if successful
CF set on error
AX = error code (see #2244)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0000h,INT 2F/AX=4310h"Cloaking"
--------m-2C0002-----------------------------
INT 2C P - Cloaking - SET SEGMENT BASE ADDRESS
AX = 0002h
SI = selector
EBX = new physical base addres
Return: CF clear if successful
CF set on error
AX = error code (see #2244)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0000h,AX=0003h,AX=0004h,INT 31/AX=0007h,#0427
--------m-2C0003-----------------------------
INT 2C P - Cloaking - SET SEGMENT LIMIT
AX = 0003h
SI = selector
EBX = new limit
Return: CF clear if successful
CF set on error
AX = error code (see #2244)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0000h,AX=0002h,AX=0004h,INT 31/AX=0008h
--------m-2C0004-----------------------------
INT 2C P - Cloaking - SET SEGMENT ACCESS MODE
AX = 0004h
SI = selector
CL = new access mode byte (see #0428)
Return: CF clear if successful
CF set on error
AX = error code (see #2244)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0005h,INT 31/AX=0009h
--------m-2C0005-----------------------------
INT 2C P - Cloaking - SET SEGMENT EXTENDED ACCESS MODE
AX = 0005h
SI = selector
CL = new extended access mode byte (limit field ignored) (see #2245)
Return: CF clear if successful
CF set on error
AX = error code (see #2244)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0004h,INT 31/AX=0009h
Bitfields for extended access mode byte:
Bit(s) Description (Table 2245)
7 4K granularity instead of byte granularity
6 32-bit code segment
5 reserved (0)
4 segment available to system
SeeAlso: #0429
--------m-2C0006-----------------------------
INT 2C P - Cloaking - GET PROTECTED-MODE INTERRUPT VECTOR
AX = 0006h
CL = vector (00h-7Fh)
Return: CF clear
DX:EBX -> current interrupt handler
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0007h,INT 31/AX=0204h
--------m-2C0007-----------------------------
INT 2C P - Cloaking - SET PROTECTED-MODE INTERRUPT VECTOR
AX = 0007h
CL = vector (00h-7Fh)
DX:EBX -> interrupt handler
Return: CF clear
Notes: this function was first introduced with RM386 (RAM-MAN/386) v6.00
the IDT entry's type remains unchanged
SeeAlso: AX=0006h,INT 31/AX=0205h
--------m-2C0008-----------------------------
INT 2C P - Cloaking - GET PASSALONG ADDRESS
AX = 0008h
Return: CF clear
DX:EBX = current passalong address
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0009h,AX=002Ch,INT 2F/AX=4310h"Cloaking"
--------m-2C0009-----------------------------
INT 2C P - Cloaking - SET PASSALONG ADDRESS
AX = 0009h
DX:EBX = new value for passalong address (see #2246)
Return: CF clear
Notes: when an INT 2C instruction is executed in V86 mode, the Cloaking host
calls the passalong address. The handler should check whether the
upcall is of interest to it, and if not it should jump to the old
passalong address (retrieved with AX=0008h before the handler was
installed). The final handler should return with CF clear to cause
the interrupt to be reflected back to V86 mode if none of the
passalong handlers is triggered
this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0008h,AX=002Dh,INT 2C"PASSALONG CHAIN"
(Table 2246)
Values Cloaking passalong address is called with:
EAX = CS:IP of byte following INT 2C instruction invoking passalong
SS:EBX -> caller registers (see #2247)
CF clear
others undefined
Return: CF clear: pass along to V86-mode INT 2C handler
CF set: return immediately to V86 mode
Format of Cloaking caller registers:
Offset Size Description (Table 2247)
00h DWORD EDI
04h DWORD ESI
08h DWORD EBP
0Ch DWORD reserved (ESP from PUSHAD instruction)
10h DWORD EBX
14h DWORD EDX
18h DWORD ECX
1Ch DWORD EAX
20h DWORD error code
24h DWORD EIP
28h WORD CS
2Ah WORD padding
2Ch DWORD EFLAGS
30h DWORD ESP
34h WORD SS
36h WORD padding
--remainder not available if protected-mode ring3 trap---
38h WORD ES
3Ah WORD padding
3Ch WORD DS
3Eh WORD padding
40h WORD FS
42h WORD padding
44h WORD GS
46h WORD padding
--------m-2C000A-----------------------------
INT 2C P - Cloaking - GET BASE ADDRESS OF GDT SELECTOR
AX = 000Ah
SI = selector
Return: CF clear if successful
EBX = segment base address
CF set on error
AX = error code (see #2244)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
memory manager included in Helix Software's Netroom
SeeAlso: AX=0000h,AX=0002h,AX=000Bh
--------m-2C000B-----------------------------
INT 2C P - Cloaking - GET SELECTOR LIMIT
AX = 000Bh
SI = selector
Return: CF clear if successful
EBX = segment base address
CF set on error
AX = error code (see #2244)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=000Ah,INT 2F/AX=4310h"Cloaking"
--------m-2C---------------------------------
INT 2C P - RM386 v6.00 - CLOAKING - RESERVED FOR CLOAKED BIOS USE UNDER WINDOWS
AX = function (000Ch-001Fh)
--------m-2C000F-----------------------------
INT 2C P - Cloaking v1.01 - "Simulate_Shell_Event"
AX = 000Fh
ECX = event code (see #2248)
DX = subfunction for event
EDX high word = boost value (see #2249)
SI:EDI -> completion procedure
Return: CF clear if successful (event scheduled)
CF set on error
Note: this function is only available while MS Windows is running
SeeAlso: AX=0011h,AX=0012h,INT 2F/AX=1605h,INT 2F/AX=4310h"Cloaking"
(Table 2248)
Values for Cloaking shell event code:
0414h Hot key event
subevent 0000h: Alt-Space
subevent 0001h: Alt-Enter
subevent 0002h: Dir-VM
0415h Switch context
subevent 0000h for DOS VM context, nonzero for System VM context
0416h Clipboard event
0417h Termination event
subevent 0000h for normal termination, nonzero for error
0418h Display message
subevent 0000h for normal message, nonzero for system model ASAP
0419h Crash
041Ah Paste complete
subevent 0000h: normal
subevent 0001h: cancelled by user
subevent 0002h: cancelled
041Bh Contention event
041Ch Screen switch
subevent 0000h: forward
subevent 0001h: back
041Dh Filesystem change
041Eh Check Focus
041Fh Panic
Bitfields for boost value:
Bit(s) Description (Table 2249)
0 boost system VM until focus changes
1 boost system VM on Switcher screen
2 boost system VM until response
3 boost system VM during clipboard activity
4 boost system VM during print screen
5 boost system VM during update
--------m-2C0011-----------------------------
INT 2C P - Cloaking v1.01 - "Switch_VMs_and_Call_back"
AX = 0011h
EBX = handle of VM to be made active
SI:EDI -> 32-bit FAR completion procedure
Return: CF clear if successful (scheduled)
CF set on error
Notes: this function is only available while MS Windows is running
the completion procedure is called with CF clear if the specified
VM has been made active, or with CF set on error
SeeAlso: AX=000Fh,AX=0012h
--------m-2C0012-----------------------------
INT 2C P - Cloaking v1.01 - "Query_Current_VM"
AX = 0012h
Return: CF clear
EBX = handle of active VM
ESI = handle of system VM
ECX = VM status flags (see #2250)
EDX = shell flags (see #2251)
Note: this function is only available while MS Windows is running in enhanced
mode
SeeAlso: AX=000Fh,AX=0011h,AX=0013h
Bitfields for VM status flags:
Bit(s) Description (Table 2250)
0 in exclusive mode
1 runs in background
2 being created
3 suspended
4 not executable
5 executing in protected mode
6 contains PM application
7 32-bit PM application
8 called from VxD
9 high priority background
10 blocked on semaphore
11 awakening
12 has pageable V86
13 has locked V86
14 is scheduled
15 idle
16 closing
Bitfields for shell flags:
Bit(s) Description (Table 2251)
2 windowed
5 Alt-Tab reserved
6 Alt-Esc reserved
7 Alt-Space reserved
8 Alt-PrtSc reserved
9 Alt-Enter reserved
10 Alt-PrtSc reserved
11 PrtSc reserved
12 polling enabled
13 no HMA
14 has shortcut key
15 locked EMS handles
16 locked XMS handles
17 fast paste enabled
18 locked V86 memory
30 close-on-exit enabled
--------m-2C0013-----------------------------
INT 2C P - Cloaking v1.01 - "Issue_System_Modal_Message"
AX = 0013h
EDX = message box flags (see #2252)
DS:ECX -> ASCIZ message text
DS:EDI -> ASCIZ caption
Return: CF clear
EAX = response code
Note: this function is only available while MS Windows is running in enhanced
mode
SeeAlso: AX=000Fh,AX=0012h
Bitfields for message box flags:
Bit(s) Description (Table 2252)
3-0 response codes (see #2253)
7-4 icon codes
1 = Warning hand
2 = exclamation mark
4 = asterisk
9-8 default response (0 = first button, 1 = second, 2 = third)
12 message is system model
15 don't change focus
29 hang with interrupts enabled
30 do not window
31 execute ASAP
(Table 2253)
Values for response codes:
00h OK
01h OK, Cancel
02h Abort, Retry, Ignore
03h Yes, No, Cancel
04h Yes, No
05h Retry, Cancel
--------m-2C001D-----------------------------
INT 2C P - Cloaking v1.01 - GET INT 2C API HANDLER ENTRY POINT
AX = 001Dh
Return: CF clear
DX:EBX = selector:offset of Cloaking host INT 2C handler
Desc: get the Cloaking host's entry point to bypass any other programs
which may have hooked INT 2C in protected mode
Note: the returned entry point must be called with a simulated INT, i.e.
a PUSHD must precede the far call to the handler
SeeAlso: INT 2F/AX=4310h"Cloaking"
--------m-2C001E-----------------------------
INT 2C P - Cloaking v1.01 - CLEAR CRITICAL SECTION
AX = 001Eh
Return: CF clear
Desc: allow MS Windows to switch to another VM after having prevented it
by invoking a critical section
SeeAlso: AX=001Fh,INT 15/AX=101Ch,INT 2F/AX=1682h
--------m-2C001F-----------------------------
INT 2C P - Cloaking v1.01 - SET CRITICAL SECTION
AX = 001Fh
Return: CF clear
Desc: prevent MS Windows from switching to another VM
SeeAlso: AX=001Eh,INT 15/AX=101Bh,INT 2F/AX=1681h
--------m-2C0020-----------------------------
INT 2C P - Cloaking - GET SIZE OF PROTECTED-MODE STATE
AX = 0020h
Return: EAX = number of bytes required for storing state
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0021h,AX=0022h
--------m-2C0021-----------------------------
INT 2C P - Cloaking - SAVE PROTECTED-MODE STATE
AX = 0021h
ES:EDI -> buffer for protected-mode state
Return: CF clear
buffer filled
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0020h,AX=0022h
--------m-2C0022-----------------------------
INT 2C P - Cloaking - RESTORE PROTECTED-MODE STATE
AX = 0022h
DS:ESI -> buffer containing previously-saved protected-mode state
Return: CF clear if successful
state restored
CF set on error (invalid buffer contents)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0020h,AX=0021h
--------m-2C0023-----------------------------
INT 2C P - Cloaking - ISSUE PROTECTED-MODE XMS CALL
AX = 0023h
Notes: not currently implemented--NOP in RM386 v6.00
this function was first introduced with RM386 (RAM-MAN/386) v6.00
--------m-2C0024-----------------------------
INT 2C P - Cloaking - SET V86-MODE STACK
AX = 0024h
DX:EBX = new value for V86-mode SS:ESP
Return: nothing
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
--------m-2C0025-----------------------------
INT 2C P - Cloaking - CALL V86-MODE PROCEDURE
AX = 0025h
DS:EBX -> client register structure (see #2247)
Return: CF clear if successful
client register structure updated
CF set if no more nested procedure call space available
Notes: this call uses the V86-mode stack supplied in the client structure, and
calls the routine specified by CS:IP in the client structure
this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0026h,AX=0027h,INT 31/AX=0301h
--------m-2C0026-----------------------------
INT 2C P - Cloaking - CALL V86-MODE INTERRUPT HANDLER
AX = 0026h
DS:EBX -> client register structure (see #2247)
CX = interrupt number
Return: CF clear if successful
client register structure updated
CF set if no more nested procedure call space available
Notes: this call uses the V86-mode stack supplied in the client structure
this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0025h,AX=0027h,INT 31/AX=0300h
--------m-2C0027-----------------------------
INT 2C P - Cloaking - CHAIN TO V86-MODE INTERRUPT HANDLER
AX = 0027h
DS:EBX -> client register structure (see #2247)
Return: CF clear if successful
client register structure updated
CF set if no more nested procedure call space available
Notes: this call uses the V86-mode stack supplied in the client structure,
and jumps to the address specified by CS:IP in the client structure
this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0025h,AX=0026h
--------m-2C0028-----------------------------
INT 2C P - Cloaking - GET ESP0 FROM TSS
AX = 0028h
Return: CF clear
EAX = TSS's ESP0
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
memory manager included in Helix Software's Netroom
--------m-2C0029-----------------------------
INT 2C P - Cloaking - SET SECONDARY STACK
AX = 0029h
DX:EBX = new value for SS:ESP of ring 3 secondary stack
Return: CF clear
Desc: inform RM386 of the ring 3 interrupt stack location
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
--------m-2C002A-----------------------------
INT 2C P - Cloaking - SET 8259 IRQ BASE VECTORS
AX = 002Ah
BL = base vector of master interrupt controller
CL = base vector of slave interrupt controller
Notes: this call merely informs RM386 that the caller has changed the
interrupt mappings
this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: INT 67/AX=DE0Bh
--------m-2C002BCH81-------------------------
INT 2C P - Cloaking - PROTECTED-MODE VIRTUAL DMA SERVICES
AX = 002Bh
CH = 81h
CL = subfunction (02h-0Ch)
other registers as appropriate for subfunction
Return: varies by function
CF set on error
Notes: these functions are equivalent to the INT 4B/AX=81xxh subfunctions
with the same numbers
this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: INT 4B/AX=8102h,INT 4B/AX=810Ch
--------m-2C002C-----------------------------
INT 2C P - Cloaking - GET PORT-TRAPPING PASSALONG
AX = 002Ch
Return: CF clear
DX:EBX = current I/O trapping passalong address
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0008h,AX=002Dh
--------m-2C002D-----------------------------
INT 2C P - Cloaking - SET PORT-TRAPPING PASSALONG
AX = 002Dh
DX:EBX = new I/O trapping passalong address (see #2254)
Return: CF clear
Notes: RM386 calls the passalong address whenever an access to a monitored
I/O port is attempted; the handler should check whether it is a port
that it is interested in, and if not call the previous passalong
address (which was retrieved with AX=002Ch before installing the
new handler)
this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=0009h,AX=002Ch,INT 67/AX=5DEAh
(Table 2254)
Values Cloaking port-trapping passalong address is called with:
EAX = CS:IP of faulting instruction (unless executing in protected-mode
ring 3)
SS:EBX -> caller register structure (see #2247)
check EFLAGS V86-mode bit for type
CX = first two bytes of I/O instruction which was trapped
DX = port to which I/O is being performed
CF clear
Return: CF clear if RM386 should perform I/O operation
CF set if I/O should be skipped
Note: RM386 skips the trapped I/O instruction, so the passalong handler
should not modify the client CS:EIP
--------m-2C002E-----------------------------
INT 2C P - Cloaking - TRAP I/O PORT
AX = 002Eh
DX = port number to trap
Return: CF clear if successful
CF set on error (port out of range or reserved)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=002Fh,AX=0030h
--------m-2C002F-----------------------------
INT 2C PU - Cloaking - UNTRAP I/O PORT
AX = 002Fh
DX = port number for which to cancel trapping
Return: CF clear if successful
CF set on error (port out of range or reserved)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=002Eh,AX=0030h
--------m-2C0030-----------------------------
INT 2C PU - Cloaking - GET TRAPPING STATE OF SPECIFIED PORT
AX = 0030h
DX = port number
Return: CF clear if successful
BX = current state (0000h not trapped, 0001h trapped)
CF set on error (port out of range or reserved)
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
SeeAlso: AX=002Eh,AX=002Fh
--------m-2C0031-----------------------------
INT 2C PU - RM386 v6.00 - BUG
AX = 0031h
Program: RM386 (RAM-MAN/386) is the memory manager included in Helix
Software's Netroom
Note: due to a fencepost error, RM386 v6.00 will branch unpredictably if
invoked with this function
--------m-2C0031-----------------------------
INT 2C P - Cloaking v1.01 - ALLOCATE V86 CALLBACK
AX = 0031h
DX:EBX = CS:EIP of protected-mode routine to be invoked by callback
Return: CF clear if successful
EBX = CS:IP of V86-mode callback handler
CF set on error
SeeAlso: AX=0032h
--------m-2C0032-----------------------------
INT 2C P - Cloaking v1.01 - FREE V86 CALLBACK
AX = 0032h
EBX = CS:IP of V86-mode callback handler
Return: CF clear if successful
CF set on error
AX = error code
0005h invalid callback address
0006h callback already free
SeeAlso: AX=0032h
--------m-2C0033-----------------------------
INT 2C P - Cloaking v1.01 - REGISTER CLOAKING CLIENT
AX = 0033h
DS:EDX -> client registration structure (see #2255)
Return: CF clear if successful
CF set on error (linked list corrupt)
SeeAlso: AX=0034h,#2465 at INT 2F/AX=4310h"Cloaking"
Format of client registration structure:
Offset Size Description (Table 2255)
00h PWORD link to next structure
06h PWORD link to previous structure
0Ch 2 BYTEs client version (major, minor)
0Eh 20 BYTEs client name
22h DWORD physical address of client start
26h DWORD client's total size in bytes
Note: the link area should not be modified once the structure has been
used for the registration call
--------m-2C0034-----------------------------
INT 2C P - Cloaking v1.01 - UNREGISTER CLOAKING CLIENT
AX = 0034h
DS:EDX -> client registration structure (see #2255)
Return: CF clear if successful
CF set on error (linked list corrupt)
Note: the client must unregister before freeing the XMS block containing
its registration structure(s)
SeeAlso: AX=0033h,#2465 at INT 2F/AX=4310h"Cloaking"
--------D-2D---------------------------------
INT 2D - DOS 2+ - RESERVED
Note: this vector is not used in DOS versions <= 6.00, and points at an IRET
BUG: RM386 v6.00-6.02 (as distributed with Helix's Netroom v3.x) contains
a stack bug in its protected-mode INT 2D handler which causes a crash
when INT 2D is invoked from V86 mode
--------t-2D---------------------------------
INT 2D - ALTERNATE MULTIPLEX INTERRUPT SPECIFICATION (AMIS) [v3.6]
AH = multiplex number
AL = function
00h installation check
01h get private entry point
02h uninstall
03h request popup
04h determine chained interrupts
05h get hotkey list
06h get device-driver information
07h-0Fh reserved for future enhancements
Return: AL = 00h (not implemented)
other application-dependent
other registers vary by function (also see individual entries below)
Return: varies by function
Notes: programs should not use fixed multiplex numbers; rather, a program
should scan all multiplex numbers from 00h to FFh, remembering the
first unused multiplex in case the program is not yet installed.
For multiplex numbers which are in use, the program should compare
the first 16 bytes of the signature string to determine whether it
is already installed on that multiplex number. If not previously
installed, it should use the first free multiplex number.
functions other than 00h are not valid unless a program is installed
on the selected multiplex number
to be considered fully compliant with version 3.6 of the specification,
programs must implement at least functions 00h, 02h (no resident
uninstall code required), and 04h (return value 04h). TSRs that
provide hotkeys with which the user can activate them must also
implement function 05h. TSRs which provide DOS device drivers must
also implement function 06h. The absolute minimum fully-compliant
implementation has an overhead of 64 bytes (80 bytes with function
05h) plus 22 bytes per hooked interrupt (for the interrupt sharing
protocol header and hook list entry).
the signature string and description may be used by memory mappers
to display the installed programs
to be considered fully compliant, users of this specification must
adhere to the IBM interrupt sharing protocol (see #2256), which will
permit removal of TSRs in arbitrary order and interrupt handler
reordering. All TSRs following this specification should be
removable unless they are loaded from CONFIG.SYS, though they need
not keep the code for removing themselves resident; it is acceptable
for a separate program to perform the interrupt unhooking and
memory-freeing steps of removal.
A sample public-domain implementation including example TSRs and
utility programs may be found in a separate package distributed as
AMISLnnn.ZIP (AMISL092.ZIP as of this writing).
Please let me know if you choose to follow this proposal. The
signature and a list of the private API calls you use would be
appreciated, as well.
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
SeeAlso: INT 2D/AL=05h,INT 2D/AL=06h,INT 2F"NOTES"
Format of interrupt sharing protocol interrupt handler entry point:
Offset Size Description (Table 2256)
00h 2 BYTEs short jump to actual start of interrupt handler, immediately
following this data block (EBh 10h)
02h DWORD address of next handler in chain
06h WORD signature 424Bh
08h BYTE EOI flag
00h software interrupt or secondary hardware interrupt handler
80h primary hardware interrupt handler (will issue EOI)
09h 2 BYTEs short jump to hardware reset routine
must point at a valid FAR procedure (may be just RETF)
0Bh 7 BYTEs reserved (0) by IBM for future expansion
Note: when chaining to the prior handler, the interrupt handler must perform
an indirect jump/call using the address at offset 02h in the
ISP header. This permits another AMIS TSR to hook itself into
the chain at a position other than as the first handler to receive
an interrupt.
SeeAlso: INT F1/AH=01h"Common ISDN API",INT F1/AH=06h"CAPI",#3708
--------t-2D--00-----------------------------
INT 2D - AMIS v3.0+ - INSTALLATION CHECK
AL = 00h
AH = multiplex number for program
Return: AL = 00h if free
AL = FFh if multiplex number in use
CX = binary version number (CH = major, CL = minor)
DX:DI -> signature string (see #2257) identifying the program
using the multiplex number
SeeAlso: INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h
Index: installation check;Alternate Multiplex Interrupt Specification
Index: installation check;AMIS|installation check;FASTMOUS
Index: installation check;SPELLER|installation check;Monitor
Index: installation check;NOLPT|installation check;NOTE
Index: installation check;RBkeyswp|installation check;SWITCHAR
Index: installation check;VGABLANK|installation check;EATMEM
Index: installation check;RECALL|installation check;XPTR2
Format of AMIS signature string:
Offset Size Description (Table 2257)
00h 8 BYTEs blank-padded manufacturer's name (possibly abbreviated)
08h 8 BYTEs blank-padded product name
10h 64 BYTEs ASCIZ product description (optional, may be a single 00h)
Note: it is not necessary to reserve a full 64 bytes for the description,
just enough to store the actual ASCIZ string
SeeAlso: #2258
(Table 2258)
Values for AMIS signatures known to be in use:
'Byrial J' 'EKLAVO ' permits keyboard entry of Esperanto accented letters
'CoveSoft' 'Burnout+' shareware screen saver Burnout Plus
'Crynwr ' 'SPELLER ' TSR spelling-checker
'CPH1995 ' 'CDTSR ' resident CD-Audio player
'CPH1996 ' 'DSAPI '
'CSJewell' 'Modula3L' Curtis Jewell's Modula-3 compiler (non-TSR)
'DAISYCHA' 'INDRIVER' Advanced Parallel Port daisy chain driver (vendor name
in product description field, if desired)
(see also INT 2D/AL=DCh)
'DTown SD' 'DTU ' DTown Software Development's DTown Utilities
(see also INT 2D/AL=20h)
'ECLIPSE ' 'PLUMP ' Eclipse Software's printer and plotter spooler
'GraySoft' 'GIPC ' GraySoft's Inter-Process Communications driver
'heathh ' 'Monitor '
'Helge O ' TSRs by Helge Olav Helgesen
'J. Berry' 'RATSR ' RemoteAccess Network Manager workstation module
'JWB ' 'RAMLIGHT' James Birdsall's on-screen RAMdisk activity indicator
'M Better' 'iHPFS ' Marcus Better's HPFS filesystem driver for DOS
'M. Paul ' 'FREEVER ' DOS version-faking TSR by Matthias Paul
'Nildram ' 'ST ' Screen Thief graphics screen grabber
'Pino Nav' 'ALTMENU ' activate any program's menu bar by pressing Alt key
'Pino Nav' 'Keybit ' Pino Navato's KEYBIT Lite Italian keyboard driver v4+
'PowrQuot' 'CAPRILOG'
'PowrQuot' 'CAPRITSR'
'PowrQuot' 'CAPRIWIN'
'R-Ware ' 'dLite ' run-time data decompression TSR
'Ralf B ' 'disaXXYY' RBdisabl -- disable key scancode XX w/ shift states YY
'Ralf B ' 'DUALVGA ' dual-VGA support, screen blanker, and DPMS driver
'Ralf B ' 'FASTMOUS' example TSR included with sample AMIS library code
'Ralf B ' 'NoBreak ' disable Ctrl-@, Ctrl-C, and Ctrl-Break keys
'Ralf B ' 'NOLPT n ' example TSR -- turn LPTn into bit-bucket
'Ralf B ' 'NOTE ' example TSR -- popup note-taker
'Ralf B ' 'RBclock ' RBclock -- on-screen real-time clock
'Ralf B ' 'RBclockE' RBclock -- on-screen elapsed-time clock
'Ralf B ' 'RBdvorak' Dvorak keyboard mapping w/ opt Esc/~, LCtrl/CapsLk swap
'Ralf B ' 'RBkcount' display count of keystrokes on screen
'Ralf B ' 'RBkeyswp' RBkeyswap v3.0+ -- swap Esc/~ and LCtrl/CapsLock keys
'Ralf B ' 'RBnoboot' disable Ctrl-Alt-Del key combination
'Ralf B ' 'ShftCaps' require Shift-CapsLock to turn on CapsLock
'Ralf B ' 'ShftNumL' require Shift-NumLock to turn off NumLock
'Ralf B ' 'SWITCHAR' example TSR -- add switchar() support removed from DOS5
'Ralf B ' 'VGABLANK' VGA-only screen blanker
'Ralf B ' 'WINTAME ' yield CPU when program in Win95 DOS box is idle
'Sally IS' 'Mdisk ' removeable, resizeable RAMdisk
'Sally IS' 'Scr2Tex ' screen dumper with output in (La)Tex format
'SRT ' 'STOPBOOT' reboot preventer by Steve Talbot
'Thaco ' 'NEST ' Eirik Pedersen's programmer's delimiter matcher
'TifaWARE' 'EATMEM ' George A. Theall's public domain memory restrictor for
testing programs (v1.1+)
'TifaWARE' 'RECALL ' public domain commandline editor and history (v1.2+)
'Todd ' 'XPTR2 ' PC-to-Transputer interface by Todd Radel
'WlkngOwl' 'NoiseSYS' NOISE.SYS random-number generator
SeeAlso: #2257
--------t-2D--01-----------------------------
INT 2D - AMIS v3.0+ - GET PRIVATE ENTRY POINT
AL = 01h
AH = multiplex number for program
Return: AL = 00h if all API calls via INT 2D
AL = FFh if entry point supported
DX:BX -> entry point for bypassing interrupt chain
Note: this function is not valid unless a program is installed on the
specified multiplex number; use INT 2D/AL=00h to check
SeeAlso: INT 2D/AL=00h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h
Index: entry point;Alternate Multiplex Interrupt|entry point;AMIS
--------t-2D--02-----------------------------
INT 2D - AMIS v3.0+ - UNINSTALL
AL = 02h
AH = multiplex number for program
DX:BX = return address for successful uninstall (may be ignored by TSR)
Return: AL = status
00h not implemented (makes TSR non-compliant with specification)
01h unsuccessful
02h can not uninstall yet, will do so when able
03h safe to remove, but no resident uninstaller
(TSR still enabled)
BX = segment of memory block with resident code
04h safe to remove, but no resident uninstaller
(TSR now disabled)
BX = segment of memory block with resident code
05h not safe to remove now, try again later
06h disabled, but can not be removed from memory
because loaded from CONFIG.SYS
07h safe to remove, but no resident device-driver
uninstaller. Caller must unlink device
drivers from DOS device chain as well as
unhooking interrupts and freeing memory
BX = segment of memory block with resident code
FFh successful
return at DX:BX with AX destroyed if successful and TSR honors
specific return address
Note: this function is not valid unless a program is installed on the
specified multiplex number; use INT 2D/AL=00h to check
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h
Index: uninstall;Alternate Multiplex Interrupt Specification|uninstall;AMIS
--------t-2D--03-----------------------------
INT 2D - AMIS v3.0+ - REQUEST POP-UP
AL = 03h
AH = multiplex number for program
Return: AL = status
00h not implemented or TSR is not a pop-up
01h can not pop up at this time, try again later
02h can not pop up yet, will do so when able
03h already popped up
04h unable to pop up, user intervention required
BX = standard reason code
0000h unknown failure
0001h interrupt chain passes through memory
which must be swapped out to pop up
0002h swap-in failed
CX = application's reason code if nonzero
FFh TSR popped up and was exited by user
BX = return value
0000h no return value
0001h TSR unloaded
0002h-00FFh reserved
0100h-FFFFh application-dependent
Note: this function is not valid unless a program is installed on the
specified multiplex number; use INT 2D/AL=00h to check
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=04h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h
--------t-2D--04-----------------------------
INT 2D - AMIS v3.0+ - DETERMINE CHAINED INTERRUPTS
AL = 04h
AH = multiplex number for program
BL = interrupt number (except 2Dh)
Return: AL = status
00h not implemented (makes TSR non-compliant with specification)
01h (obsolete) unable to determine
02h (obsolete) interrupt hooked
03h (obsolete) interrupt hooked, address returned
DX:BX -> TSR's interrupt BL handler
04h list of hooked interrupts returned
DX:BX -> interrupt hook list (see #2259)
FFh interrupt not hooked
Notes: BL is ignored if the TSR returns AL=04h; in that case, the caller
needs to scan the return list rather than making additional calls
to this function. If the return is not 00h or 04h, then the caller
must cycle through the remaining interrupt numbers it wishes to
check.
return values 01h through 03h may not be used by AMIS v3.6-compliant
programs; they are included here solely for compatibility with
version 3.3, though they were probably never used in any
implementation
for return values 01h through 03h, since INT 2D is known to be hooked,
the resident code need not test for BL=2Dh (to minimize its size),
and the return value is therefore undefined in that case.
this function is not valid unless a program is installed on the
specified multiplex number; use INT 2D/AL=00h to check
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=05h
SeeAlso: INT 2D/AL=06h
Format of AMIS interrupt hook list [array]:
Offset Size Description (Table 2259)
00h BYTE interrupt number (last entry in array is 2Dh)
01h WORD offset within hook list's segment of the interrupt handler
this will point at the initial short jump of the interrupt
sharing protocol header (see #2256)
SeeAlso: #2260
--------t-2D--05-----------------------------
INT 2D - AMIS v3.5+ - GET HOTKEYS
AL = 05h
AH = multiplex number for program
Return: AL = status
00h not implemented
FFh supported
DX:BX -> hotkey list (see #2260)
Notes: this function is not valid unless a program is installed on the
specified multiplex number; use INT 2D/AL=00h to check
programs which provide hotkeys are required to provide this function
to be fully compliant with this specification
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
SeeAlso: INT 2D/AL=06h
Format of AMIS hotkey list:
Offset Size Description (Table 2260)
00h BYTE type of hotkey checking (see #2261)
01h BYTE number of hotkeys (may be zero if TSR can disable hotkeys)
02h 6N BYTEs array of hotkey definitions
(one per hotkey, first should be primary hotkey)
Offset Size Description
00h BYTE hotkey scan code (00h/80h if shift states only)
hotkey triggers on release if bit 7 set
01h WORD required shift states (see #2262)
03h WORD disallowed shift states (see #2262)
05h BYTE hotkey flags (see #2263)
Notes: except for bit 7, the shift states correspond exactly to the return
values from INT 16/AH=12h. A set bit in the required states word
indicates that the corresponding shift state must be active when the
hotkey's scan code is received for the hotkey to be recognized; a
clear bit means that the corresponding state may be ignored. A set
bit in the disallowed shift states word indicates that the
corresponding shift state must be inactive.
for the disallowed-states word, if one of the "either" bits is set,
then both the corresponding left bit and right bit must be set
examples:
Ctrl-Alt-Del monitoring: 53h 000Ch 0003h 06h
Alt-key tap (DESQview): B8h 0000h 0007h 08h
Shf-Shf-N (NOTE.COM): 31h 0003h 000Ch 00h
Index: hotkeys;AMIS
SeeAlso: #0005
Bitfields for type of AMIS hotkey checking:
Bit(s) Description (Table 2261)
0 checks before chaining INT 09
1 checks after chaining INT 09
2 checks before chaining INT 15/AH=4Fh
3 checks after chaining INT 15/AH=4Fh
4 checks on INT 16/AH=00h,01h,02h
5 checks on INT 16/AH=10h,11h,12h
6 checks on INT 16/AH=20h,21h,22h
7 reserved (0)
SeeAlso: #2260
Bitfields for AMIS shift states:
Bit(s) Description (Table 2262)
0 right shift pressed
1 left shift pressed
2 either control key pressed
3 either Alt key pressed
4 ScrollLock active
5 NumLock active
6 CapsLock active
7 either shift key pressed
8 left control key pressed
9 left Alt key pressed
10 right control key pressed
11 right Alt key pressed
12 ScrollLock pressed
13 NumLock pressed
14 CapsLock pressed
15 SysReq key pressed
Notes: if bit 2 is set, either control key may be pressed for the hotkey; if
bits 8 and 10 are both set, then both control keys must be pressed.
Similarly for bits 3 and 9/11, as well as 7 and 0/1.
the SysReq key is often labeled SysRq
SeeAlso: #2260,#2263
Bitfields for AMIS hotkey flags:
Bit(s) Description (Table 2263)
0 hotkey chained before processing
1 hotkey chained after processing
2 others should pass through this hotkey so that it can be monitored
3 hotkey will not activate if other keys pressed/released before hotkey
press is completed
4 this key is remapped into some other key
5 this key is conditionally chained (sometimes passed on, sometimes
swallowed)
6-7 reserved (0)
SeeAlso: #2260,#2262
--------t-2D--06-----------------------------
INT 2D - AMIS v3.6 - GET DEVICE-DRIVER INFORMATION
AL = 06h
AH = multiplex number for program
Return: AL = number of device driver headers supplied by prog.
AH = device-driver flags (see #2264)
DX:BX -> first device driver header (see #1332)
Program: AMIS is the Alternate Multiplex Interrupt Specification promulgated
by Ralf Brown
Notes: if AL=00h, AH,BX,DX are meaningless and may be destroyed
this function is not valid unless a program is installed on the
specified multiplex number; use INT 2D/AL=00h to check
programs which provide device drivers are required to support this
function to be considered fully compliant with v3.6+ of the
specification
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
SeeAlso: INT 2D/AL=05h
Bitfields for AMIS device-driver information flags:
Bit(s) Description (Table 2264)
0 program loaded from CONFIG.SYS, and thus can not be removed from memory
(leave clear if unable to determine)
1 device driver headers have not been linked into DOS device chain
2 reentrant device driver(s)
--------N-2D--10-----------------------------
INT 2D - RATSR 2.0+ - GET STATUS
AL = 10h
AH = AMIS multiplex number for RATSR
Return: AL = status
01h listening (no connection)
02h receiving \
03h sending > station being monitored
04h initializing receive /
AH = keyboard lock status (00h unlocked, 01h locked)
Program: RATSR is a utility by James Berry provided with
RemoteAccess/Professional, a commercial bulletin board system, that
allows remote control of a station over a network
SeeAlso: INT 2D"AMIS"
--------d-2D--10-----------------------------
INT 2D - dLite 1.0+ - GET PARAMETER BLOCK ADDRESS
AL = 10h
AH = AMIS multiplex number for dLite
Return: CF clear if successful
ES:BX -> parameter block (see #2265)
CF set on error
Program: dLite is a shareware TSR by Rainer Schuetze which transparently
expands compressed files when they are read
SeeAlso: AL=11h"dLite",AL=12h"dLite",INT 21/AX=FEDCh"PCMANAGE"
Format of dLite parameter block:
Offset Size Description (Table 2265)
00h BYTE TSR flags (see #2266)
01h WORD maximum number of programs needing original filesize
03h WORD current number of programs needing original filesize
05h WORD maximum number of files that can be handled by dLite (should
be the same as FILES= in CONFIG.SYS)
07h WORD offset (in the same segment as the parameter block) of the
table of programs needing the original filesize (8 bytes
each, without path or extension, uppercase, and zero \
terminated if shorter than 8 bytes)
Bitfields for dLite TSR flags:
Bit(s) Description (Table 2266)
0 deny FCB access
1 dLite sleeping rather than activated
2 always indicate original filesize when reading directory entries,
rather than only for specified programs
3-7 reserved
SeeAlso: #2265
--------V-2D--10-----------------------------
INT 2D - Burnout Plus v3.00 - GET STATE/CONTROL INFORMATION
AL = 10h
AH = AMIS multiplex number for Burnout Plus
Return: AL = 01h
BX = Burnout Plus status (see #2267)
CX = record of features loaded (see #2268)
ES:DI -> Burnout Plus control structure (see #2269)
Program: Burnout Plus is a DOS screen saver from Cove Software
SeeAlso: INT 14/AX=AA01h,INT 2D"AMIS"
Index: screen saver;Burnout Plus
Bitfields for Burnout Plus status:
Bit(s) Description (Table 2267)
0 screen is blanked
1 MS Windows is active (Burnout Plus deactivated)
2-15 reserved
Bitfields for Burnout Plus features loaded/features enabled:
Bit(s) Description (Table 2268)
0 mouse activity monitor
1 passkey support
2 password support
3 continuous clear
4 software blanking
5 video activity monitor
6 disk activity monitor
7 activating keystroke suppression
SeeAlso: #2269
Format of Burnout Plus control structure:
Offset Size Description (Table 2269)
00h BYTE size of structure in bytes
01h WORD Burnout Plus version
03h WORD screen blanking reset count in clock ticks
05h WORD current countdown value in clock ticks
07h BYTE type of timeout specification
08h BYTE instant-blank hotkey
09h WORD extended status information (see #2270)
the bits for password, passkey, and software blanking are
ignored and cannot be enabled or disabled externally
0Bh WORD features enabled (see #2268)
Note: all fields except the first two may be modified by external programs
to affect the operation of Burnout Plus
Index: hotkeys;Burnout Plus
Bitfields for extended Burnout Plus status information:
Bit(s) Description (Table 2270)
0 Burnout Plus disabled
1 force screen to blank on next clock tick
2 restore screen if currently blanked
3-15 reserved
Note: 1 and 2 are automatically cleared by Burnout Plus after blanking
or restoring the screen
SeeAlso: #2269
--------V-2D--10-----------------------------
INT 2D U - Screen Thief v1.00 - FREE HIGH MEMORY BUFFERS
AL = 10h
AH = AMIS multiplex number for Screen Thief
Return: nothing
Program: Screen Thief is a graphics screen grabber
Note: releases any code and data stored in EMS, DOS UMBs, or XMS UMBs, but
does not release the low-memory stub; this may be used to effect a
partial uninstall if INT 2D/AL=02h fails
SeeAlso: INT D8"Screen Thief"
--------i-2D--10-----------------------------
INT 2D U - RAMLIGHT v1.0 - GET MONITORING INFORMATION
AL = 10h
AH = AMIS multiplex number for RAMLIGHT
Return: ES:BX -> array of fake device driver headers used in monitoring
CX = number of drives being monitored???
--------U-2D--10-----------------------------
INT 2D - DTown Utilities v1.40+ - EXTENDED API INSTALLATION CHECK
AL = 10h
Return: AL = FFh
BL = extended API availability (00h no, 01h API is loaded)
SeeAlso: INT 2D/AL=11h"DTown",INT 2D/AL=20h,INT 2D/AL=50h
--------s-2D--10-----------------------------
INT 2D - CDTSR - GET INTERNAL VARIABLE TABLE
AL = 10h
AH = AMIS multiplex number for CDTSR
Return: CX:DX -> CDTSR internal variable structure (see #2271)
Program: CDTSR is a resident audio CD player by Colin Hill
SeeAlso: INT 2D/AL=11h"CDTSR",INT 2D/AL=12h"CDTSR",INT 2D/AL=13h"CDTSR"
Format of CDTSR internal variable structure:
Offset Size Description (Table 2271)
00h BYTE hotkey scan code (see #0005)
01h BYTE hotkey shift states
02h BYTE flag: repeat
03h BYTE flag: custom repeat
04h BYTE flag: background polling
05h DWORD (read-only) internal timing variable
09h DWORD current track play position, in frames
0Dh DWORD current disk play position, in frames
11h BYTE number of entries in track program
12h BYTE index into track program currently playing (FFh if not playing)
13h 100 BYTEs track program (each byte contains one track number)
77h BYTE saved cursor end scan line
78h BYTE saved cursor start scan line
79h BYTE currently playing track
7Ah BYTE CD driver media-change flag
7Bh WORD video base segment during last popup
7Dh WORD video page offset during last popup
7Fh BYTE currently-selected track
80h DWORD begin of custom repeat, in frames
84h DWORD end of custom repeat, in frames
88h WORD track program index of top list item
--------K-2D--10-----------------------------
INT 2D - KEYBIT Lite v5+ - GET POINTER TO STATUS BYTE
AL = 10h
AH = AMIS multiplex number for KEYBIT Lite
Return: DX:BX -> status byte (see #2272)
Program: KEYBIT Lite is an enhanced Italian keyboard driver by Pino Navato.
SeeAlso: INT 2D"AMIS"
Bitfields for KEYBIT Lite status byte:
Bit(s) Description (Table 2272)
7 KEYBIT Lite active
6 E-mail support active
5-0 reserved
Notes: E-mail support is one of the original features of KEYBIT Lite. It is
the automatic conversion of the 8-bits ASCII chars produced by some
keys available on Italian keyboards to couples of 7-bits chars.
Message editors should always enable e-mail support, they should also
restore its original status before exiting.
The user can change both status bits by hotkeys.
--------K-2D--10-----------------------------
INT 2D - ALTMENU - GET POINTER TO KEY CODE
AL = 10h
AH = AMIS multiplex number for signature 'Pino Nav' 'ALTMENU '
Return: DX:BX -> WORD key code to insert in keyboard buffer on Alt-key tap
Program: Pino Navato's freeware ALTMENU permits activating the menu bar of
any program by pressing the Alt key alone.
Notes: The value in the key code word will be returned in AX by a call to
INT 16/AH=00h after the Alt key is pressed by itself
ALTMENU may be disabled by setting the key code equal to 0000h
SeeAlso: INT 16/AH=00h,INT 2D"AMIS"
--------d-2D--11-----------------------------
INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET ORIGINAL SIZE
AL = 11h
AH = AMIS multiplex number for dLite
BX = file handle
Return: CF clear if successful
DX:AX = size of uncompressed file
CF set on error (not dPressed file)
SeeAlso: AL=10h"dLite",AL=12h"dLite"
--------U-2D--11-----------------------------
INT 2D - DTown Utilities v1.40+ - UTILITY INSTALLATION CHECK
AL = 11h
BL = function
00h get number of installed utilities
Return: BL = number of utilities
01h get installed utilities
DX:DI -> buffer containing one byte for each utility
Return: DX:DI buffer filled with flags (0=no,1=yes) indicating
whether the corresponding utility is loaded
Return: AL = FFh if supported
Note: this function is only available if the extended API has been installed
in the resident portion
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h
--------s-2D--11-----------------------------
INT 2D - CDTSR - REPROGRAM CDTSR
AL = 11h
AH = AMIS multiplex number for CDTSR
Return: nothing
Program: CDTSR is a resident audio CD player by Colin Hill
Desc: reprograms CDTSR based on the values in the internal variable
structure (see #2271), which may have been changed by an application
SeeAlso: INT 2D/AL=10h"CDTSR",INT 2D/AL=12h"CDTSR",INT 2D/AL=13h"CDTSR"
--------d-2D--12-----------------------------
INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET COMPRESSED SIZE
AL = 12h
AH = AMIS multiplex number for dLite
BX = file handle
Return: CF clear if successful
DX:AX = size of compressed file
CF set on error (not dPressed file)
SeeAlso: AL=10h"dLite",AL=11h"dLite"
--------s-2D--12-----------------------------
INT 2D - CDTSR - DISABLE POPUP
AL = 12h
AH = AMIS multiplex number for CDTSR
Return: nothing
SeeAlso: INT 2D/AL=10h"CDTSR",INT 2D/AL=11h"CDTSR",INT 2D/AL=13h"CDTSR"
--------U-2D--12-----------------------------
INT 2D - FREEVER - GET ORIGINAL DOS VERSION INFO
AL = 12h
AH = AMIS multiplex number for FREEVER
Return: AL = FFh if successful
BH = major DOS version
BL = minor DOS version
CH = DOS version flag
CL = OEM number
DH = major DR DOS version number (FFh if unknown)
DL = minor DR DOS version number (FFh if unknown)
Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
to SETVER for any DOS-compatible OS, written by Matthias Paul
SeeAlso: INT 2D/AL=13h"FREEVER",INT 2D/AL=14h"FREEVER",INT 2D/AL=17h"FREEVER"
--------s-2D--13-----------------------------
INT 2D - CDTSR - ENABLE POPUP
AL = 13h
AH = AMIS multiplex number for CDTSR
Return: nothing
Program: CDTSR is a resident audio CD player by Colin Hill
SeeAlso: INT 2D/AL=10h"CDTSR",INT 2D/AL=11h"CDTSR",INT 2D/AL=12h"CDTSR"
--------U-2D--13-----------------------------
INT 2D - FREEVER - SET VERSION NUMBERS
AL = 13h
AH = AMIS multiplex number for FREEVER
BH = new major DOS version
BL = new minor DOS version
CH = new DOS version flag
CL = new DOS revision number
DH = new OEM number
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=15h"FREEVER",INT 2D/AL=17h"FREEVER"
--------U-2D--14-----------------------------
INT 2D - FREEVER - ENABLE TSR
AL = 14h
AH = AMIS multiplex number for FREEVER
Return: AL = FFh if successful
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=15h"FREEVER",INT 2D/AL=16h"FREEVER"
--------U-2D--15-----------------------------
INT 2D - FREEVER - DISABLE TSR
AL = 15h
AH = AMIS multiplex number for FREEVER
Return: AL = FFh if successful
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=14h"FREEVER",INT 2D/AL=16h"FREEVER"
--------U-2D--16-----------------------------
INT 2D - FREEVER - GET TSR STATUS
AL = 16h
AH = AMIS multiplex number for FREEVER
Return: AL = FFh if successful
BL = status
01h resident and active
02h resident and inactive
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=15h"FREEVER",INT 2D/AL=17h"FREEVER"
--------U-2D--17-----------------------------
INT 2D - FREEVER - GET TaskMAX STATUS AT INSTALLATION
AL = 17h
AH = AMIS multiplex number for FREEVER
Return: AL = FFh if successful
BL = status
00h if TaskMAX not loaded before SETDRVER
FFh if TaskMAX was loaded before SETDRVER
Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
to SETVER for any DOS-compatible OS, written by Matthias Paul
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=14h"FREEVER",INT 2D/AL=16h"FREEVER"
--------U-2D--20-----------------------------
INT 2D - DTown Utilities v1.40+ - GET POP-UP HANDLER ADDRESS
AL = 20h
Return: AL = FFh if available
DX:DI -> DTU popup-handler
Program: DTown Utilities is a freeware programmer's utility TSR by Jeroen van
Disseldorp
Note: this function is only available if the extended API has been installed
in the resident portion
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=21h,INT 2D/AL=50h,INT 2D/AL=51h
SeeAlso: INT 03"DTown"
--------U-2D--21-----------------------------
INT 2D - DTown Utilities v1.40+ - POP UP
AL = 21h
BL = which utility to bring up
00h active utility
01h help screen
0Ah ASCII table
0Bh memory view
0Ch CPU status
0Dh calculator
0Eh miscellaneous
0Fh file viewer
10h disassembler
Return: AL = status
00h already active
FFh popped up successfully
BX = 0000h
Note: this function is only available if the extended API has been installed
in the resident portion
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h,INT 2D/AL=50h
--------U-2D--50-----------------------------
INT 2D - DTown Utilities v1.40+ - MEMORY VIEW SET ADDRESS
AL = 50h
CX:DX = new address for start of memory view utility's display
Note: this function is only available if the extended API has been installed
in the resident portion
Return: AL = FFh if supported
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h,INT 2D/AL=21h,INT 2D/AL=51h
--------U-2D--51-----------------------------
INT 2D - DTown Utilities v1.40+ - MEMORY VIEW SET REFERENCE
AL = 51h
BL = reference ("bookmark") number
CX:DX = new address for reference
Return: AL = status
00h invalid index
FFh reference set
Note: this function is only available if the extended API has been installed
in the resident portion
Program: DTown Utilities is a shareware programmer's utility TSR by Jeroen van
Disseldorp
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h,INT 2D/AL=50h
--------b-2D--DC-----------------------------
INT 2D C - DAISY.SYS - BROADCAST: CHAIN RESCANNED
AL = DCh
AH = AMIS multiplex number for signature 'DAISYCHA' 'INDRIVER'
DL = LPT Port Rescanned
Program: DAISY.SYS is a daisy chain manager for parallel port peripherals
conforming to the IEEE 1284.3 Committee's daisy chain specification.
Desc: This Broadcast is sent whenever daisy chain IDs are reassigned to
warn parallel port device drivers that their daisy chain ID may
have been changed.
Note: This function is a callout from DAISY.SYS, NOT a call into DAISY.SYS
SeeAlso: INT 17/AX=0200h"Enhanced Parallel Port",#0557,#2258
--------l-2E---------------------------------
INT 2E U - DOS 2+ - PASS COMMAND TO COMMAND INTERPRETER FOR EXECUTION
DS:SI -> commandline to execute (see #2273)
Return: all registers except CS:IP destroyed
AX = status (4DOS v4.0)
0000h successful
FFFFh error before processing command (not enough memory, etc)
other error number returned by command
Notes: this call allows execution of arbitrary commands (including COMMAND.COM
internal commands) without loading another copy of COMMAND.COM
if COMMAND.COM is the user's command interpreter, the primary copy
executes the command; this allows the master environment to be
modified by issuing a "SET" command, but changes in the master
environment will not become effective until all programs descended
from the primary COMMAND.COM terminate
since COMMAND.COM processes the string as if typed from the keyboard,
the transient portion needs to be present, and the calling program
must ensure that sufficient memory to load the transient portion can
be allocated by DOS if necessary
results are unpredictable if invoked by a program run from a batch file
because this call is not reentrant and COMMAND.COM uses the same
internal variables when processing a batch file
hooked but ignored by 4DOS v3.0 COMMAND.COM replacement unless SHELL2E
has been loaded
the MS-DOS 5 Programmer's Reference calls this "Reload Transient"
Format of DOS commandline:
Offset Size Description (Table 2273)
00h BYTE length of command string, not counting trailing CR
01h var command string
N BYTE 0Dh (CR)
--------O-2E---------------------------------
INT 2E UP - Windows NT - NATIVE API
EAX = function number
EDX = address of parameter block
Return: ???
--------l-2E----BXE22E-----------------------
INT 2E - 4DOS v2.x-3.03 SHELL2E.COM - UNINSTALL
BX = E22Eh
DS:SI -> zero byte
Return: if successful, SHELL2E terminates itself with INT 21/AH=4Ch
----------2F---------------------------------
INT 2F - Multiplex - NOTES
AH = identifier of program which is to handle the interrupt
00h-7Fh reserved for DOS
B8h-BFh reserved for networks
C0h-FFh reserved for applications
AL is the function code
This is a general mechanism for verifying the presence of a TSR and
communicating with it. When searching for a free identifier code for AH
using the installation check (AL=00h), the calling program should set
BX/CX/DX to 0000h and must not depend on any registers other than CS:IP
and SS:SP to be valid on return, since numerous programs now use additional
registers on input and/or output for the installation check.
Notes: Since the multiplex chain is growing so long, and beginning to
experience multiplex number collisions, I have proposed an alternate
multiplex interrupt on INT 2D. If you decide to use the alternate
multiplex, please let me know.
DOS and some other programs return values in the flags register, so
any TSR which chains by calling the previous handler rather than
jumping to it should ensure that the returned flags are preserved
and passed back to the original caller
SeeAlso: INT 2D"ALTERNATE MULTIPLEX"
--------t-2F---------------------------------
INT 2F - BMB Compuscience Canada Utilities Interface - INSTALLATION CHECK
AH = xx (dynamically assigned based upon a search for a multiplex
number which doesn't answer installed)
AL = 00h installation check
ES:DI = EBEBh:BEBEh
Return: AL = 00h not installed
01h not installed, not OK to install
FFh installed; if ES:DI was EBEBh:BEBEh on entry, ES:DI will point
to a string of the form 'MMMMPPPPPPPPvNNNN' where MMMM is a
short form of the manufacturer's name, PPPPPPPP is a product
name and NNNN is the product's version number
--------t-2F---------------------------------
INT 2F - Ross Wentworth's Turbo Pascal POPUP LIBRARY
AH = programmer-selected multiplex number
AL = function
00h installation check
Return: AL = FFh if installed
01h get TSR interrupt vectors
Return: DX:AX -> vector table (see #2274)
02h get TSR code segment
Return: AX = code segment for all interrupt handlers
03h call user exit routine and release TSR's memory
04h get signature string
Return: DX:AX -> counted string containing signature
05h get TSR's INT 2F handler
Return: DX:AX -> INT 2F handler
06h enable/disable TSR
BL = new state (00h disabled, 01h enabled)
07h activate TSR (popup if not disabled)
08h get hotkeys
BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
Return: AX = hotkey (AH = keyflags, AL = scancode)
09h set hotkey
BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
CX = new hotkey (CH = keyflags, CL = scancode)
0Ah-1Fh reserved
Index: installation check;Ross Wentworth POPUP library
Index: hotkeys;Ross Wentworth POPUP library
Format of POPUP vector table entry:
Offset Size Description (Table 2274)
00h BYTE vector number (00h = end of table)
01h DWORD original vector
05h WORD offset of interrupt handler in TSR's code segment
--------t-2F---------------------------------
INT 2F - CiriSOFT Spanish University of Valladolid TSR's Interface
AH = xx (dynamically assigned based upon a search for a multiplex
number from C0h to FFh which doesn't answer installed)
AL = 00h installation check
ES:DI = 1492h:1992h
Return: AL = 00h not installed
01h not installed, not OK to install
FFh installed; and if ES:DI was 1492h:1992h on entry, ES:DI will
point to author_name_ver table (see #2275)
AH = FFh
Note: this interface permits advanced communication with TSRs: it is possible
to make a generic uninstall utility, advanced TSR relocator programs
in order to fit fragmented memory areas, etc.
See also: INT 2D"AMIS",INT 2F"Compuscience"
Index: installation check;CiriSOFT TSR interface
Index: uninstall;CiriSOFT TSR interface
Format of CiriSOFT author_name_ver table:
Offset Size Description (Table 2275)
-16 WORD segment of the start of the resident TSR code (CS in programs
with PSP, XMS upper memory segment if installed as UMB...)
-14 WORD offset of the start of the resident TSR code (frequently 100h
in *.COM programs and 0 in upper memory TSR's).
-12 WORD memory used by TSR (in paragraphs). Knowing the memory area
used by TSR is possible to determine if hooked vectors are
still pointing it (and if it is safe to uninstall).
-10 BYTE characteristics byte (see #2276)
-9 BYTE number of multiplex entry used (redefinition available). Note
that the TSR must use THIS variable in it's INT 2Fh handler.
-8 WORD offset to vector_area table (see #2277)
-6 WORD offset to extra_area table (see #2278,#2276 [bit 7])
-4 4 BYTEs signature string "*##*"
00h var "AUTHOR:PROGRAM_NAME:VERSION",0 (variable length, this area
is used in order to determine if the TSR is already resident
and it's version code; the ':' char is used as delimiter)
Bitfields for CiriSOFT characteristics byte:
Bit(s) Description (Table 2276)
0-2 type
000 normal program (with PSP)
001 upper XMS memory block (needed HIMEM.SYS function to free memory
when uninstalling)
010 device driver (*.SYS)
011 device driver in EXE format
1xx others (reserved)
3-6 reserved
7 set if extra_table defined and supported (see #2278)
SeeAlso: #2275
Format of CiriSOFT vector_area table:
Offset Size Description (Table 2277)
-1 BYTE number of vectors intercepted by TSR
00h BYTE first vector number
01h DWORD first vector pointer before installing the TSR
05h BYTE second vector number
06h DWORD second vector pointer before installing the TSR
0Ah ... (and so on)
Note: the TSR must use these variables to invoke the previous interrupt
handler routines
SeeAlso: #2275
Format of extra_area table (needed only to improve relocation feature):
Offset Size Description (Table 2278)
00h WORD offset to external_ctrl table (see #2279)
0000h if not supported
02h WORD reserved for future use (0)
SeeAlso: #2275
Format of CiriSOFT external_ctrl table:
Offset Size Description (Table 2279)
00h BYTE bit 0: TSR is relocatable (no absolute segment references)
01h WORD offset to a variable which can activate/inhibit the TSR
---And if bit 0 in offset 00h is off:
03h DWORD pointer to ASCIZ pathname for executable file which supports
/SR parameter (silent installation & inhibit)
07h DWORD pointer to first variable to initialize on the copy reloaded
from the previous TSR still resident
0Bh DWORD pointer to last variable (all variables packed in one block)
--------c-2F00-------------------------------
INT 2F U - DOS 2.x only PRINT.COM - SUBMIT FILE FOR PRINTING
AH = 00h
DS:DX -> opened FCB (see #1034 at INT 21/AX=0Fh)
Return: AH = number of files currently in print queue
AL = status
00h file successfully added
01h queue is full
ES:BX -> print queue (10 FCBs; first byte of FFh indicates unused)
ES:DX -> currently-printing FCB (if DX=FFFFh, none printing)
Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler
values in AH other than 00h or 01h cause PRINT to return the number of
files in the queue in AH
SeeAlso: AH=01h"PRINT",AX=0102h
--------P-2F00-------------------------------
INT 2F U - PSPRINT - PRINT JOB CONTROL
AH = 00h
???
Return: ???
--------c-2F0080-----------------------------
INT 2F - DOS 3.1+ PRINT - GIVE PRINT A TIME SLICE
AX = 0080h
Return: after PRINT executes
Notes: PRINT returns AL=01h if AH=00h but AL is not 80h on entry
this function is not supported by the Novell DOS 7 PRINT.COM
--------N-2F00D8-----------------------------
INT 2F - Personal NetWare - VLM - ???
AX = 00D8h
???
Return: ???
Note: hooked by one of the .VLMs loaded by VLM.EXE v1.10, but apparently a
NOP
--------c-2F01-------------------------------
INT 2F U - DOS 2.x only PRINT.COM - REMOVE FILE FROM PRINT QUEUE
AH = 01h
DS:DX -> FCB (see #1034 at INT 21/AH=0Fh) for file to be canceled
Return: AH = number of files currently in print queue
AL = 00h (successful)
ES:BX -> print queue (10 FCBs; first byte of FFh indicates unused)
ES:DX -> currently-printing FCB (if DX=FFFFh, none printing)
Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler
values in AH other than 00h or 01h cause PRINT to return the number of
files in the queue in AH
SeeAlso: AH=00h"PRINT.COM",AX=0103h
--------c-2F0100-----------------------------
INT 2F - DOS 3.0+ PRINT - INSTALLATION CHECK
AX = 0100h
Return: AL = status
00h not installed
01h not installed, but not OK to install
FFh installed
AH = 00h (Novell DOS 7)
SeeAlso: AX=0101h
--------c-2F0100SI20D6-----------------------
INT 2F U - PrintCache 3.1 PRINT.COM - INSTALLATION CHECK
AX = 0100h
SI = 20D6h
DI = 8761h
Return: AX = 00FFh if installed
DI = 0001h if PrintCache's PRINT.COM installed and magic values match
SI = resident code segment
Program: PrintCache PRINT.COM is a DOS PRINT replacement included in
LaserTools' PrintCache memory/disk-based print spooler package
Note: if either of SI or DI differ from the indicated magic values, only AX
will be modified on return, for compatibility with DOS PRINT
SeeAlso: AX=0101h/SI=20D6h,AX=C000h"PCACHE"
--------c-2F0101-----------------------------
INT 2F - DOS 3.0+ PRINT - SUBMIT FILE FOR PRINTING
AX = 0101h
DS:DX -> submit packet (see #2280)
Return: CF clear if successful
AL = status
01h added to queue
9Eh now printing
CF set on error
AX = error code (see #2281,#1366 at INT 21/AH=59h/BX=0000h)
SeeAlso: AX=0102h
Format of PRINT submit packet:
Offset Size Description (Table 2280)
00h BYTE level (must be 00h)
01h DWORD pointer to ASCIZ filename (no wildcards)
(Table 2281)
Values for PRINT error code:
0001h invalid function
0002h file not found
0003h path not found
0004h out of file handles
0005h access denied
0008h print queue full
0009h spooler busy
000Ch name too long
000Fh invalid drive
--------c-2F0101SI20D6-----------------------
INT 2F U - PrintCache v3.1 PRINT.COM - SUBMIT FILE FOR PRINTING
AX = 0101h
SI = 20D6h
DI = 8761h
DS:DX -> submit packet (see #2280)
CL = print options
bit 4: use default options
Return: CF clear if successful
AL = status
01h added to queue
9Eh now printing
CF set on error
AX = error code (see #2281)
Program: PrintCache PRINT.COM is a DOS PRINT replacement included in
LaserTools' PrintCache memory/disk-based print spooler package
Note: if either SI or DI differs from the indicated magic values on entry,
PrintCache will use the default print options for the file for
compatibility with DOS PRINT
SeeAlso: AX=0100h/SI=20D6h,AX=0101h,AH=00h"PRINT",AX=0107h"PrintCache"
--------c-2F0102-----------------------------
INT 2F - DOS 3.0+ PRINT - REMOVE FILE FROM PRINT QUEUE
AX = 0102h
DS:DX -> ASCIZ filename (wildcards allowed)
Return: CF clear if successful
CF set on error
AX = error code (see #2281)
SeeAlso: AX=0101h,AX=0103h,AH=01h"PRINT"
--------c-2F0103-----------------------------
INT 2F - DOS 3.0+ PRINT - CANCEL ALL FILES IN PRINT QUEUE
AX = 0103h
Return: CF clear if successful
CF set on error
AX = error code (see #2281)
SeeAlso: AX=0102h
--------c-2F0104-----------------------------
INT 2F - DOS 3.0+ PRINT - FREEZE PRINT QUEUE TO READ JOB STATUS
AX = 0104h
Return: CF clear if successful
DX = error count since status last read
DS:SI -> print queue
CF set on error
AX = error code (see #2281)
Desc: get the list of print jobs, temporarily suspending PRINT's activities
to avoid changing the list while it is being examined
Notes: the print queue is an array of 64-byte ASCIZ filenames terminated by
an empty filename; the first name is the file currently being printed
printing is stopped until AX=0105h is called to prevent the queue
from changing while the filenames are being read
SeeAlso: AX=0101h,AX=0105h
--------c-2F0105-----------------------------
INT 2F - DOS 3.0+ PRINT - RESTART PRINT QUEUE AFTER STATUS READ
AX = 0105h
Return: CF clear if successful
CF set on error
AX = error code (see #2281)
Desc: restart PRINT's activities once an application finishes examining the
print queue
SeeAlso: AX=0104h
--------c-2F0106-----------------------------
INT 2F - DOS 3.3+ PRINT - GET PRINTER DEVICE
AX = 0106h
Return: CF set if files in print queue
AX = error code 0008h (queue full)
DS:SI -> device driver header (see #1332)
CF clear if print queue empty
AX = 0000h
Desc: determine which device, if any, PRINT is currently using for output
Notes: undocumented prior to the release of MS-DOS 5.0
this function can be used to allow a program to avoid printing to the
printer on which PRINT is currently performing output
SeeAlso: AX=0104h
--------c-2F0107-----------------------------
INT 2F U - PrintCache v3.1 PRINT.COM - SET TRAILING FORM FEEDS
AX = 0107h
CL bit 0: output form feed between print jobs
Return: AL destroyed
SeeAlso: AX=0100h/SI=20D6h,AX=0101h/SI=20D6h
--------N-2F0200-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - INSTALLATION CHECK
AX = 0200h
Return: AL = FFh if installed
Desc: determine whether the PC LAN Program redirector is installed
SeeAlso: AX=0201h,AX=0203h
--------N-2F0201-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 0201h
Return: nothing???
Notes: this function is called by the DOS 3.3+ PRINT.COM
AX=0202h appears to be the opposite function
these functions are supposedly used to signal opening and closing of
printers
SeeAlso: AX=0202h
--------N-2F0202-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 0202h
???
Return: nothing???
Notes: this function is called by the DOS 3.3+ PRINT.COM
these functions are supposedly used to signal opening and closing of
printers
SeeAlso: AX=0201h
--------N-2F0203-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 0203h
Return: nothing???
Notes: this function is called by the DOS 3.3+ PRINT.COM
AX=0204h appears to be the opposite function
these functions are supposedly used to signal opening and closing of
printers
SeeAlso: AX=0200h,AX=0204h
--------N-2F0204-----------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 0204h
???
Return: nothing???
Notes: this function is called by the DOS 3.3+ PRINT.COM
AX=0203h appears to be the opposite function
these functions are supposedly used to signal opening and closing of
printers
SeeAlso: AX=0200h,AX=0203h
--------N-2F---------------------------------
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
AX = 02xxh
???
Return: ???
--------l-2F0500-----------------------------
INT 2F U - DOS 3.0+ CRITICAL ERROR HANDLER - INSTALLATION CHECK
AX = 0500h
Return: AL = status
00h not installed, OK to install
01h not installed, can't install
FFh installed
BX destroyed (MSCDEX v2.21-2.25)
CF clear (MSCDEX v2.21-2.25)
Desc: determine whether a critical error message override is installed
Note: this set of functions allows a user program to partially or completely
override the default critical error handler's message in COMMAND.COM
SeeAlso: AH=05h,INT 24
--------l-2F05-------------------------------
INT 2F CU - DOS 3.0+ CRITICAL ERROR HANDLER - EXPAND ERROR INTO STRING
AH = 05h
---DOS 3.x---
AL = extended error code (not zero)
---DOS 4.0+ ---
AL = error type
01h DOS extended error code
02h parameter error
BX = error code
Return: CF clear if successful
ES:DI -> ASCIZ error message (read-only)
AL = completion state
00h message requires completion with device name, drive, etc.
01h message is complete as returned
CF set if error code can't be converted to string
AX,DI,ES destroyed
other flags corrupted
Notes: called at start of COMMAND.COM's default critical error handler if
installed by a user program, allowing partial or complete overriding
of the default error messages
subfunction 02h is called by many DOS 4 external programs
DR DOS's COMMAND.COM appends additional info ("0 files copied") to the
returned string
SeeAlso: AX=0500h,AX=122Eh,INT 24
--------U-2F0600-----------------------------
INT 2F - DOS 3.0+ ASSIGN - INSTALLATION CHECK
AX = 0600h
Return: AL = status
00h not installed
01h not installed, but not OK to install
FFh installed
Notes: ASSIGN is not a TSR in DR DOS 5.0; it is internally replaced by SUBST
(see INT 21/AH=52h)
undocumented prior to the release of DOS 5.0
SeeAlso: AX=0601h,INT 21/AH=52h
--------U-2F0601-----------------------------
INT 2F U - DOS 3.0+ ASSIGN - GET DRIVE ASSIGNMENT TABLE
AX = 0601h
Return: ES = segment of ASSIGN work area and assignment table
Note: the 26 bytes starting at ES:0103h specify which drive each of A: to Z:
is mapped to. Initially set to 01h 02h 03h....
SeeAlso: AX=0600h,AX=AF14h"WinDOS"
--------D-2F0800-----------------------------
INT 2F U - DRIVER.SYS support - INSTALLATION CHECK
AX = 0800h
Return: AL = status
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
Desc: determine whether the internal support code used by DRIVER.SYS is
present; it is always present in DOS 3.2+
Note: supported by DR DOS 5.0 and Novell DOS 7
--------D-2F0801-----------------------------
INT 2F U - DRIVER.SYS support - ADD NEW BLOCK DEVICE
AX = 0801h
DS:DI -> drive data table (see #2288,#2289,#2290)
Return: AX,BX,SI,ES destroyed
Notes: moves down internal list of drive data tables, copying and modifying
the drive description flags word for tables referencing same physical
drive
the data table is appended to the chain of tables
supported by DR DOS 5.0 and Novell DOS 7
SeeAlso: AX=0803h
--------D-2F0802-----------------------------
INT 2F U - DRIVER.SYS support - EXECUTE DEVICE DRIVER REQUEST
AX = 0802h
ES:BX -> device driver request header (see #2284)
Return: request header updated as per requested operation
STACK: WORD original flags from INT call (left by RETF in device
driver, at least in DOS 5.0-6.22)
Notes: supported by DR DOS 5.0
DOS 3.2 executes this function on any AL value from 02h through F7h;
DOS 4.0+ executes this function on AL=02h and AL=04h-F7h
the command codes (see #2282) and structures described below apply
to all drivers which support the appropriate commands; this call is
just one of a number of ways in which a device driver request may
be invoked
supported by Novell DOS 7
SeeAlso: AX=0800h,AX=0801h,AX=0803h,AX=1510h,INT 21/AH=52h,INT 21/AH=99h
SeeAlso: INT 21/AH=9Ah
(Table 2282)
Values for device driver command code:
00h (0) INIT
01h (1) MEDIA CHECK (block devices)
02h (2) BUILD BPB (block devices)
03h (3) IOCTL INPUT
04h (4) INPUT
05h (5) NONDESTRUCTIVE INPUT, NO WAIT (character devices)
06h (6) INPUT STATUS (character devices)
07h (7) INPUT FLUSH (character devices)
08h (8) OUTPUT
09h (9) OUTPUT WITH VERIFY
0Ah (10) OUTPUT STATUS (character devices)
0Bh (11) OUTPUT FLUSH (character devices)
0Ch (12) IOCTL OUTPUT
0Dh (13) (DOS 3.0+) DEVICE OPEN
0Eh (14) (DOS 3.0+) DEVICE CLOSE
0Fh (15) (DOS 3.0+) REMOVABLE MEDIA (block devices)
10h (16) (DOS 3.0+) OUTPUT UNTIL BUSY (character devices)
11h (17) (European MS-DOS 4.0) STOP OUTPUT (console screen drivers only)
12h (18) (European MS-DOS 4.0) RESTART OUTPUT (console screen drivers only)
13h (19) (DOS 3.2+) GENERIC IOCTL
14h (20) unused
15h (21) (European MS-DOS 4.0) RESET UNCERTAIN MEDIA FLAG
16h (22) unused
17h (23) (DOS 3.2+) GET LOGICAL DEVICE
18h (24) (DOS 3.2+) SET LOGICAL DEVICE
19h (25) (DOS 5.0+) CHECK GENERIC IOCTL SUPPORT
80h (128)(CD-ROM) READ LONG
81h (129)(CD-ROM) reserved
82h (130)(CD-ROM) READ LONG PREFETCH
83h (131)(CD-ROM) SEEK
84h (132)(CD-ROM) PLAY AUDIO
85h (133)(CD-ROM) STOP AUDIO
86h (134)(CD-ROM) WRITE LONG
87h (135)(CD-ROM) WRITE LONG VERIFY
88h (136)(CD-ROM) RESUME AUDIO
Bitfields for device request status:
Bit(s) Description (Table 2283)
15 error
14-11 reserved
10 ??? set by DOS kernel on entry to some driver calls
9 busy
8 done (may be clear on return under European MS-DOS 4.0)
7-0 error code if bit 15 set (see #2285)
Format of device driver request header:
Offset Size Description (Table 2284)
00h BYTE length of request header
01h BYTE subunit within device driver
02h BYTE command code (see #2282)
03h WORD status (filled in by device driver) (see #2283)
---DOS---
05h 4 BYTEs reserved (unused in DOS 2.x and 3.x)
09h DWORD (European MS-DOS 4.0 only) pointer to next request header in
device's request queue
(other versions) reserved (unused in DOS 2.x and 3.x)
---STARLITE architecture---
05h DWORD pointer to next request header
09h 4 BYTEs reserved
---command code 00h---
0Dh BYTE (ret) number of units
0Eh DWORD (call) pointer to DOS device helper function (see #2286)
(European MS-DOS 4.0 only)
(call) pointer past end of memory available to driver (DOS 5+)
(ret) address of first free byte following driver
12h DWORD (call) pointer to commandline arguments
(ret) pointer to BPB array (block drivers) or
0000h:0000h (character drivers)
16h BYTE (DOS 3.0+) drive number for first unit of block driver (0=A)
---European MS-DOS 4.0---
17h DWORD pointer to function to save registers on stack
---DOS 5+ ---
17h WORD (ret) error-message flag
0001h MS-DOS should display error msg on init failure
---command code 01h---
0Dh BYTE media descriptor
0Eh BYTE (ret) media status
00h don't know
01h media has not changed
FFh media has been changed
0Fh DWORD (ret, DOS 3.0+) pointer to previous volume ID if the
OPEN/CLOSE/RM bit in device header is set and disk changed
---command code 02h---
0Dh BYTE media descriptor
0Eh DWORD transfer address
-> scratch sector if NON-IBM FORMAT bit in device header set
-> first FAT sector otherwise
12h DWORD pointer to BPB (set by driver) (see #1349 at INT 21/AH=53h)
---command codes 03h,0Ch---
(see also INT 21/AX=4402h"DOS 2+",INT 21/AX=4403h"DOS")
0Dh BYTE media descriptor (block devices only)
0Eh DWORD transfer address
12h WORD (call) number of bytes to read/write
(ret) actual number of bytes read or written
---command codes 04h,08h,09h (except Compaq DOS 3.31, DR DOS 6)---
0Dh BYTE media descriptor (block devices only)
0Eh DWORD transfer address
12h WORD byte count (character devices) or sector count (block devices)
14h WORD starting sector number (block devices only)
16h DWORD (DOS 3.0+) pointer to volume ID if error 0Fh returned
1Ah DWORD (DOS 4.0+) 32-bit starting sector number (block devices with
device attribute word bit 1 set only) if starting sector
number above is FFFFh (see INT 21/AH=52h)
---command codes 04h,08h,09h (Compaq DOS 3.31, DR DOS 6)---
0Dh BYTE media descriptor (block devices only)
0Eh DWORD transfer address
12h WORD byte count (character devices) or sector count (block devices)
14h DWORD 32-bit starting sector number (block devices only)
Note: to reliably determine which variant of the request block for
functions 04h,08h,09h has been passed to the driver, check
the length field as well as the word at offset 14h. If the
length is 1Eh and 14h=FFFFh, use the DWORD at 1Ah as the
starting sector number; if the length is 18h, use the DWORD
at 14h; otherwise, use the WORD at 14h.
---command code 05h---
0Dh BYTE byte read from device if BUSY bit clear on return
---command codes 06h,07h,0Ah,0Bh,0Dh,0Eh,0Fh---
no further fields
---command code 10h---
0Dh BYTE unused
0Eh DWORD transfer address
12h WORD (call) number of bytes to write
(ret) actual number of bytes written
---command codes 11h,12h---
0Dh BYTE reserved
---command code 15h---
no further fields
---command codes 13h,19h---
0Dh BYTE category code
00h unknown
01h COMn:
03h CON
05h LPTn:
07h mouse (European MS-DOS 4.0)
08h disk
9Eh (STARLITE) Media Access Control driver
0Eh BYTE function code
00h (STARLITE) MAC Bind request
0Fh WORD copy of DS at time of IOCTL call (apparently unused in DOS 3.3)
SI contents (European MS-DOS 4.0)
11h WORD offset of device driver header (see #1332)
DI contents (European MS-DOS 4.0)
13h DWORD pointer to parameter block from INT 21/AX=440Ch or AX=440Dh
---command codes 80h,82h---
0Dh BYTE addressing mode
00h HSG (default)
01h Phillips/Sony Red Book
0Eh DWORD transfer address (ignored for command 82h)
12h WORD number of sectors to read
(if 0 for command 82h, request is an advisory seek)
14h DWORD starting sector number
logical sector number in HSG mode
frame/second/minute/unused in Red Book mode
(HSG sector = minute * 4500 + second * 75 + frame - 150)
18h BYTE data read mode
00h cooked (2048 bytes per frame)
01h raw (2352 bytes per frame, including EDC/ECC)
19h BYTE interleave size (number of sectors stored consecutively)
1Ah BYTE interleave skip factor
(number of sectors between consecutive portions)
---command code 83h---
0Dh BYTE addressing mode
00h HSG (default)
01h Phillips/Sony Red Book
0Eh DWORD transfer address (ignored)
12h WORD number of sectors to read (ignored)
14h DWORD starting sector number (see also above)
---command code 84h---
0Dh BYTE addressing mode
00h HSG (default)
01h Phillips/Sony Red Book
0Eh DWORD starting sector number (see also above)
12h DWORD number of sectors to play
---command codes 85h,88h---
no further fields
---command codes 86h,87h---
0Dh BYTE addressing mode
00h HSG (default)
01h Phillips/Sony Red Book
0Eh DWORD transfer address (ignored in write mode 0)
12h WORD number of sectors to write
14h DWORD starting sector number (also see above)
18h BYTE write mode
00h mode 0 (write all zeros)
01h mode 1 (default) (2048 bytes per sector)
02h mode 2 form 1 (2048 bytes per sector)
03h mode 2 form 2 (2336 bytes per sector)
19h BYTE interleave size (number of sectors stored consecutively)
1Ah BYTE interleave skip factor
(number of sectors between consecutive portions)
(Table 2285)
Values for device driver error code:
00h write-protect violation
01h unknown unit
02h drive not ready
03h unknown command
04h CRC error
05h bad drive request structure length
06h seek error
07h unknown media
08h sector not found
09h printer out of paper
0Ah write fault
0Bh read fault
0Ch general failure
0Dh reserved
0Eh (CD-ROM) media unavailable
0Fh invalid disk change
(Table 2286)
Call European MS-DOS 4.0 device helper function with:
DL = function
00h "SchedClock" called on each timer tick
AL = tick interval in milliseconds
01h "DevDone" device I/O complete
ES:BX -> request header
Note: must update status word first; may be called from
an interrupt handler
02h "PullRequest" pull next request from queue
DS:SI -> DWORD pointer to start of device's request queue
Return: ZF clear if pending request
ES:BX -> request header
ZF set if no more requests
03h "PullParticular" remove specific request from queue
DS:SI -> DWORD pointer to start of device's request queue
ES:BX -> request header
Return: ZF set if request header not found
04h "PushRequest" push the request onto the queue
DS:SI -> DWORD pointer to start of device's request queue
ES:BX -> request header
interrupts disabled
05h "ConsInputFilter" keyboard input check
AX = character (high byte 00h if PC ASCII character)
Return: ZF set if character should be discarded
ZF clear if character should be handled normally
Note: called by keyboard interrupt handler so DOS can scan
for special input characters
06h "SortRequest" push request in sorted order by starting sector
DS:SI -> DWORD pointer to start of device's request queue
ES:BX -> request header
interrupts disabled
07h "SigEvent" send signal on keyboard event
AH = event identifier
Return: AL,FLAGS destroyed
09h "ProcBlock" block on event
AX:BX = event identifier (typically a pointer)
CX = timeout in ms or 0000h for never
DH = interruptable flag (nonzero if pause may be interrupted)
interrupts disabled
Return: after corresponding ProcRun call
CF clear if event wakeup, set if unusual wakeup
ZF set if timeout wakeup, clear if interrupted
AL = wakeup code, nonzero if unusual wakeup
interrupts enabled
BX,CX,DX destroyed
Note: block process and schedules another to run
0Ah "ProcRun" unblock process
AX:BX = event identifier (typically a pointer)
Return: AX = number of processes awakened
ZF set if no processes awakened
BX,CX,DX destroyed
0Bh "QueueInit" initialize/clear character queue
DS:BX -> character queue structure (see #2287)
Note: the queue size field must be set before calling
0Dh "QueueWrite" put a character in the queue
DS:BX -> character queue (see #2287)
AL = character to append to end of queue
Return: ZF set if queue is full
ZF clear if character stored
0Eh "QueueRead" get a character from the queue
DS:BX -> character queue (see #2287)
Return: ZF set if queue is empty
ZF clear if characters in queue
AL = first character in queue
10h "GetDOSVar" return pointer to DOS variable
AL = index of variable
03h current process ID
BX = index into variable if AL specifies an array
CX = expected length of variable
Return: CF clear if successful
DX:AX -> variable
CF set on error
AX,DX destroyed
BX,CX destroyed
Note: the variables may not be modified
14h "Yield" yield CPU if higher-priority task ready to run
Return: FLAGS destroyed
1Bh "CritEnter" begin system critical section
DS:BX -> semaphore (6 BYTEs, initialized to zero)
Return: AX,BX,CX,DX destroyed
1Ch "CritLeave" end system critical section
DS:BX -> semaphore (6 BYTEs, initialized to zero)
Return: AX,BX,CX,DX destroyed
Note: must be called in the context of the process which
called CritEnter on the semaphore
Note: the DWORD pointing at the request queue must be allocated by the driver
and initialized to 0000h:0000h. It always points at the next request
to be executed
Format of European MS-DOS 4.0 character queue:
Offset Size Description (Table 2287)
00h WORD size of queue in bytes
02h WORD index of next character out
04h WORD count of characters in the queue
06h N BYTEs queue buffer
--------D-2F0803-----------------------------
INT 2F U - DOS 4.0+ DRIVER.SYS support - GET DRIVE DATA TABLE LIST
AX = 0803h
Return: DS:DI -> first drive data table in list (see #2288,#2289,#2290)
Note: not available under DR DOS 5.0, but supported by Novell DOS 7 (using
the MS-DOS 4+ data table format)
SeeAlso: AX=0801h
Format of DOS 3.30 drive data table:
Offset Size Description (Table 2288)
00h DWORD pointer to next table (offset FFFFh if last table)
04h BYTE physical unit number (for INT 13)
05h BYTE logical drive number (0=A:)
06h 19 BYTEs BIOS Parameter Block (see also INT 21/AH=53h)
Offset Size Description
00h WORD bytes per sector
02h BYTE sectors per cluster, FFh if unknown
03h WORD number of reserved sectors
05h BYTE number of FATs
06h WORD number of root dir entries
08h WORD total sectors
0Ah BYTE media descriptor, 00h if unknown
0Bh WORD sectors per FAT
0Dh WORD sectors per track
0Fh WORD number of heads
11h WORD number of hidden sectors
19h BYTE flags
bit 6: 16-bit FAT instead of 12-bit FAT
1Ah WORD number of DEVICE OPEN calls without corresponding DEVICE CLOSE
1Ch 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for
fixed media)
27h BYTE terminating null for volume label???
28h BYTE device type (see #1248 at INT 21/AX=440Dh"DOS 3.2+")
29h WORD bit flags describing drive (see #2291)
2Bh WORD number of cylinders
2Dh 19 BYTEs BIOS Parameter Block for highest capacity supported
40h 3 BYTEs ???
43h 9 BYTEs filesystem type???, default = "NO NAME "
(apparently only MS-DOS 3.30 fixed media, nulls for removable
media and PC-DOS 3.30)
4Ch BYTE least-significant byte of last-accessed cylinder number
---removable media---
4Dh DWORD time of last access in clock ticks (FFFFFFFFh if never)
---fixed media---
4Dh WORD partition (FFFFh = primary, 0001h = extended)
4Fh WORD absolute cylinder number of partition's start on physical
drive (always FFFFh if primary partition)
SeeAlso: #2289,#2290
Format of COMPAQ DOS 3.31 drive data table:
Offset Size Description (Table 2289)
00h DWORD pointer to next table (offset FFFFh if last table)
04h BYTE physical unit number (for INT 13)
05h BYTE logical drive number (0=A:)
06h 25 BYTEs BIOS Parameter Block (see #2290)
1Fh 6 BYTEs reserved fields from BPB above???
25h BYTE flags
bit 6: 16-bit FAT instead of 12-bit FAT
bit 5: large volume???
26h WORD device-open count???
28h 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for
fixed media)
33h BYTE terminating null for volume label
34h BYTE device type (see #1248 at INT 21/AX=440Dh"DOS 3.2+")
35h WORD bit flags describing drive (see #2291)
37h WORD number of cylinders
39h 25 BYTEs BIOS parameter block for highest capacity drive supports
52h 6 BYTEs ??? apparently always zeros
58h BYTE least-significant byte of last-accessed cylinder number
---removable media---
59h DWORD time of last access in clock ticks (FFFFFFFFh if never)
---fixed media---
59h WORD partition (FFFFh = primary, 0001h = extended)
5Bh WORD absolute cylinder number of partition's start on physical
drive (always FFFFh if primary partition)
SeeAlso: #2288,#2290
Format of DOS 4.0-7.0 drive data table:
Offset Size Description (Table 2290)
00h DWORD pointer to next table (offset FFFFh if last table)
04h BYTE physical unit number (for INT 13)
05h BYTE logical drive number (0=A:)
06h 25 BYTEs BIOS Parameter Block (see also INT 21/AH=53h)
Offset Size Description
00h WORD bytes per sector
02h BYTE sectors per cluster, FFh if unknown
03h WORD number of reserved sectors
05h BYTE number of FATs
06h WORD number of root dir entries
08h WORD total sectors (refer to offset 15h if zero)
0Ah BYTE media descriptor, 00h if unknown
0Bh WORD sectors per FAT
0Dh WORD sectors per track
0Fh WORD number of heads
11h DWORD number of hidden sectors
15h DWORD total sectors if WORD at 08h is zero
1Fh BYTE flags
bit 6: 16-bit FAT instead of 12-bit
bit 7: unsupportable disk (all accesses will return Not Ready)
20h WORD device-open count
22h BYTE device type (see #1248 at INT 21/AX=440Dh"DOS 3.2+")
23h WORD bit flags describing drive (see #2291)
25h WORD number of cylinders (for partition only, if hard disk)
27h 25 BYTEs BIOS Parameter Block for default (highest) capacity supported
40h 6 BYTEs reserved (part of BPB above)
46h BYTE last track accessed
---removable media---
47h DWORD time of last access in clock ticks (FFFFFFFFh if never)
---fixed media---
47h WORD partition (FFFFh = primary, 0001h = extended)
always 0001h for DOS 5+
49h WORD absolute cylinder number of partition's start on physical drive
(FFFFh if primary partition in DOS 4.x)
------
4Bh 11 BYTEs volume label or "NO NAME " if none (apparently taken from
extended boot record rather than root directory)
56h BYTE terminating null for volume label
57h DWORD serial number
5Bh 8 BYTEs filesystem type ("FAT12 " or "FAT16 ")
63h BYTE terminating null for filesystem type
SeeAlso: #2288,#2289
Bitfields for flags describing drive:
Bit(s) Description (Table 2291)
0 fixed media
1 door lock ("changeline") supported
2 current BPB locked
3 all sectors in a track are the same size
4 physical drive has multiple logical units
5 current logical drive for shared physical drive
6 disk change detected
7 device parameters were changed (set DASD before formatting)
(see #1247 at INT 21/AX=440Dh"DOS 3.2+")
8 disk reformatted (BPB of current media was changed)
9 access flag (fixed media only, disables reads and writes)
(see #1253 at INT 21/AX=440Dh"DOS 3.2+")
--------f-2F1000-----------------------------
INT 2F - SHARE - INSTALLATION CHECK
AX = 1000h
Return: AL = status
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
BUGS: values of AL other than 00h put DOS 3.x SHARE into an infinite loop
(08E9: OR AL,AL
08EB: JNZ 08EB) <- the buggy instruction (DOS 3.3)
values of AL other than described here put PC-DOS 4.00 into the same
loop (the buggy instructions are the same)
Notes: supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
if DOS 4.01 SHARE was automatically loaded, file sharing is in an
inactive state (due to the undocumented /NC flag used by the autoload
code) until this call is made
DOS 5+ chains to the previous handler if AL <> 00h on entry
Windows Enhanced mode hooks this call and reports that SHARE is
installed even when it is not
SeeAlso: AX=1080h,INT 21/AH=52h
--------d-2F1001-----------------------------
INT 2F U - DR DOS 6.0 SHARE internal - SET ???
AX = 1001h
DX:BX -> ???function
Notes: this function is also supported by SuperStor, a disk-compression
program by Addstor which is bundled with DR DOS 6.0, and the
Novell DOS 7 DELWATCH.EXE
the default handler for the pointer set by this call under DELWATCH
simply returns with CF set
SeeAlso: AX=1000h,AX=F800h
--------f-2F1040-----------------------------
INT 2F U - DOS 4 only SHARE internal - ???
AX = 1040h
???
Return: AL = FFh???
SeeAlso: AX=1000h
--------f-2F1080-----------------------------
INT 2F U - DOS 4 only SHARE internal - TURN ON FILE SHARING CHECKS
AX = 1080h
Return: AL = status
F0h successful
FFh checking was already on
Note: DOS 4.x SHARE has dual functions: FCB support for large (>32M) media
and file sharing checks. The undocumented commandline flag /NC can
be used to disable the sharing code.
SeeAlso: AX=1000h,AX=1081h
--------f-2F1081-----------------------------
INT 2F U - DOS 4 only SHARE internal - TURN OFF FILE SHARING CHECKS
AX = 1081h
Return: AL = status
F0h successful
FFh checking was already off
Note: (see AX=1080h)
SeeAlso: AX=1000h,AX=1080h
--------O-2F10FE-----------------------------
INT 2F U - Novell DOS 7 DELWATCH.EXE - INSTALLATION CHECK
AX = 10FEh
Return: AX = 20FFh if installed and active
DX:BX -> private entry point (see #2292)
(Table 2292)
Call DELWATCH private entry point with:
AH = function
00h NOP???
Return: AX = 0000h
CX = 0004h (unsupported function)
01h disable DELWATCH on drive
AL = drive number (00h = A:)
Return: AX = status (0000h if failed, FFFFh if successful)
02h ???
AL = drive number (00h = A:)
???
Return: ???
03h ???
AL = drive number (00h = A:)
CX = ??? (0000h/0001h)
???
Return: ???
04h ???
AL = drive number (00h = A:)
???
Return: ???
05h ???
AL = drive number (00h = A:)
???
Return: ???
06h enable DELWATCH on drive
AL = drive number with bit 7 set (80h = A:, etc.)
BX = maximum files of same name in one directory to save
CX = maximum files to save on this disk
???
Return: AX = status
0000h failed
FFFFh successful
CX = error code on failure
(0004h if AL < 80h on entry)
07h ???
08h set file extensions list
AL = sense (00h exclude named extensions, 01h only named ext.)
DS:BX -> 31-byte ASCIZ extension list (three blank-padded bytes
per extension)
Return: AX = FFFFh (successful)
09h ???
AL = drive number (00h = A:)
???
Return: ???
0Ah ???
AL = drive number (00h = A:)
???
Return: ???
0Bh reset ???
Return: AX = FFFFh (successful)
see also function 0Dh
0Ch check if drive enabled
AL = drive number with bit 7 set (80h = A:, etc.)
Return: AX = state
0000h disabled or error (check CX)
0001h drive enabled
CX = error code (0004h invalid drive number)
0Dh set ???
BX = ???
Return: AX = FFFFh (successful)
see also function 0Bh
0Eh ???
AL = drive number (00h = A:)
???
Return: ???
Return: AX = 0000h, CX = 0001h if DELWATCH busy
registers unchanged if AH >= 0Fh on entry
--------O-2F10FF-----------------------------
INT 2F U - Multiplex - DR DOS 5.0 - ???
AX = 10FFh
ES:BX -> ???
Note: sets pointer in kernel
--------N-2F1100-----------------------------
INT 2F C - NETWORK REDIRECTOR - INSTALLATION CHECK
AX = 1100h
Return: AL = status
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
AH = product identifier (ad hoc by various manufacturers)
00h if PC Tools v8 DRIVEMAP
42h ('B') for Beame&Whiteside BWNFS v3.0a
6Eh ('n') for NetWare Lite v1.1 CLIENT
Notes: this function is called by the DOS 3.1+ kernel
in DOS 4.x only, the 11xx calls are all in IFSFUNC.EXE, not in the
PC LAN Program redirector; DOS 5+ moves the calls back into the
redirector
the PC Network 1.00 redirector (renamed to PC LAN Program in 1.1-1.3)
only supports AL=00h-27h
--------d-2F1100SFDADA-----------------------
INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK
AX = 1100h subfn DADAh
STACK: WORD DADAh
Return: AL = status
00h not installed, OK to install
STACK unchanged
01h not installed, not OK to install
STACK unchanged
FFh installed
STACK: WORD ADADh if MSCDEX installed
DADBh if Lotus CD/Networker installed
Note: although MSCDEX sets the stack word to ADADh on return, any value other
than DADAh is considered to mean that MSCDEX is already installed;
Lotus CD/Networker v4+ uses this feature to fool MSCDEX into
thinking it is already installed when it is in fact CD/Networker
that is installed
Index: installation check;Lotus CD/Networker
Index: Lotus CD/Networker;installation check
--------N-2F1101-----------------------------
INT 2F CU - NETWORK REDIRECTOR - REMOVE REMOTE DIRECTORY
AX = 1101h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=1103h,AX=1105h,INT 21/AH=3Ah,INT 21/AH=60h
--------N-2F1102-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - REMOVE REMOTE DIRECTORY
AX = 1102h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Note: appears to be identical to AX=1101h; MS internal documentation calls
this function "SEQ_RMDIR"
SeeAlso: AX=1101h
--------N-2F1103-----------------------------
INT 2F CU - NETWORK REDIRECTOR - MAKE REMOTE DIRECTORY
AX = 1103h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=1101h,AX=1105h,INT 21/AH=39h,INT 21/AH=60h
--------N-2F1104-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - MAKE REMOTE DIRECTORY
AX = 1104h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Note: appears to be identical to AX=1103h
SeeAlso: AX=1103h
--------N-2F1105-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CHDIR
AX = 1105h
SS = DOS DS
SDA first filename pointer -> fully-qualified directory name
SDA CDS pointer -> current directory structure for drive with dir
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
CDS updated with new path
Notes: this function is called by the DOS 3.1+ kernel
directory string in CDS should not have a terminating backslash unless
the current directory is the root
SeeAlso: AX=1101h,AX=1103h,INT 21/AH=3Bh,INT 21/AH=60h
--------N-2F1106-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CLOSE REMOTE FILE
AX = 1106h
BX = device info word from SFT
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
SFT updated (redirector must decrement open count, which may be
done with INT 2F/AX=1208h)
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=1116h,AX=1201h,AX=1208h,AX=1227h,INT 21/AH=3Eh
--------N-2F1107-----------------------------
INT 2F CU - NETWORK REDIRECTOR - COMMIT REMOTE FILE
AX = 1107h
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
all buffers for file flushed
directory entry updated
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: INT 21/AH=68h,INT 21/AX=5D01h
--------N-2F1108-----------------------------
INT 2F CU - NETWORK REDIRECTOR - READ FROM REMOTE FILE
AX = 1108h
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
CX = number of bytes
SS = DOS DS
SDA DTA field -> user buffer
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
CX = number of bytes read (0000h = end of file)
SFT updated
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=1109h,AX=1229h,INT 21/AH=3Fh"DOS",INT 21/AX=5D06h
--------N-2F1109-----------------------------
INT 2F CU - NETWORK REDIRECTOR - WRITE TO REMOTE FILE
AX = 1109h
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
CX = number of bytes
SS = DOS DS
SDA DTA field -> user buffer
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
CX = number of bytes written
SFT updated
Notes: this function is called by the DOS 3.1+ kernel
PrintCache v3.1 PCACHE.EXE intercepts this function for SFTs where
the Device Driver Header field points at PCACHE, but does not
intercept any other network redirector functions
SeeAlso: AX=1107h,AX=1108h,INT 21/AH=40h,INT 21/AX=5D06h
--------N-2F110A-----------------------------
INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - LOCK REGION OF FILE
AX = 110Ah
BX = file handle
CX:DX = starting offset
SI = high word of size
STACK: WORD low word of size
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
SS = DOS DS
Return: CF set on error
AL = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
STACK unchanged
Notes: this function is called by the DOS 3.10-3.31 kernel
the redirector is expected to resolve lock conflicts
SeeAlso: AX=110Bh,INT 21/AH=5Ch
--------N-2F110A-----------------------------
INT 2F CU - NETWORK REDIRECTOR (DOS 4.0+) - LOCK/UNLOCK REGION OF FILE
AX = 110Ah
BL = function
00h lock
01h unlock
CX = number of lock/unlock parameters (0001h for DOS 4.0-6.1)
DS:DX -> parameter block (see #2293)
ES:DI -> SFT
SFT DPB field -> DPB of drive containing file
SS = DOS DS
Return: CF set on error
AL = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
Notes: this function is called by the DOS 4.0+ kernel
the redirector is expected to resolve lock conflicts
SeeAlso: AX=110Bh,INT 21/AH=5Ch
Format of parameter block entry [array, but currently limited to single entry]:
Offset Size Description (Table 2293)
00h DWORD start offset
04h DWORD size of region
--------N-2F110B-----------------------------
INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - UNLOCK REGION OF FILE
AX = 110Bh
BX = file handle
CX:DX = starting offset
SI = high word of size
STACK: WORD low word of size
ES:DI -> SFT for file
SFT DPB field -> DPB of drive containing file
Return: CF set on error
AL = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
STACK unchanged
Note: this function is called by the DOS 3.1-3.31 kernel; DOS 4.0+ calls
AX=110Ah instead
SeeAlso: AX=110Ah,INT 21/AH=5Ch
--------N-2F110C-----------------------------
INT 2F CU - NETWORK REDIRECTOR - GET DISK INFORMATION
AX = 110Ch
ES:DI -> current directory structure for desired drive
Return: CF clear if data valid
AL = sectors per cluster
AH = media ID byte
BX = total clusters
CX = bytes per sector
DX = number of available clusters
CF set if data invalid
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: INT 21/AH=36h
--------N-2F110D-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - SET REMOTE FILE'S ATTRIBUTES
AX = 110Dh
SDA first filename pointer -> name of file
???
Return: ???
Note: similar to AX=110Eh
SeeAlso: AX=110Eh
--------N-2F110E-----------------------------
INT 2F CU - NETWORK REDIRECTOR - SET REMOTE FILE'S ATTRIBUTES
AX = 110Eh
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file
SDA CDS pointer -> current directory structure for drive with file
STACK: WORD new file attributes
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
STACK unchanged
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=110Dh,AX=110Fh,INT 21/AX=4301h,INT 21/AH=60h
--------N-2F110F-----------------------------
INT 2F CU - NETWORK REDIRECTOR - GET REMOTE FILE'S ATTRIBUTES AND SIZE
AX = 110Fh
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file
SDA CDS pointer -> current directory structure for drive with file
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
AX = file attributes
BX:DI = file size
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=110Eh,INT 21/AX=4300h,INT 21/AH=60h
--------N-2F1110-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GET REMOTE FILE'S ATTRIBUTES AND SIZE
AX = 1110h
SDA first filename pointer -> name of file
???
Return: ???
Note: appears to be similar to AX=110Fh
SeeAlso: AX=110Eh
--------N-2F1111-----------------------------
INT 2F CU - NETWORK REDIRECTOR - RENAME REMOTE FILE
AX = 1111h
SS = DS = DOS DS
SDA first filename pointer = offset of fully-qualified old name
SDA second filename pointer = offset of fully-qualified new name
SDA CDS pointer -> current directory structure for drive with file
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=1112h,INT 21/AH=56h,INT 21/AH=60h
--------N-2F1112-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - RENAME REMOTE FILE
AX = 1112h
SS = DS = DOS DS
SDA first filename pointer -> name of file
???
Return: ???
Note: similar to AX=1111h
SeeAlso: AX=1111h
--------N-2F1113-----------------------------
INT 2F CU - NETWORK REDIRECTOR - DELETE REMOTE FILE
AX = 1113h
SS = DS = DOS DS
SDA first filename pointer -> fully-qualified filename in DOS DS
SDA CDS pointer -> current directory structure for drive with file
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Notes: this function is called by the DOS 3.1+ kernel
the filespec may contain wildcards
SeeAlso: AX=1114h,INT 21/AH=41h,INT 21/AH=60h
--------N-2F1114-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - DELETE REMOTE FILE
AX = 1114h
SDA first filename pointer -> name of file
???
Return: ???
Note: similar to AX=1113h
SeeAlso: AX=1113h
--------N-2F1115-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - OPEN REMOTE FILE
AX = 1115h
SS = DOS DS
ES:DI -> SFT ???
???
Return: ???
Note: similar to AX=1116h
SeeAlso: AX=1116h,AX=112Eh
--------N-2F1116-----------------------------
INT 2F CU - NETWORK REDIRECTOR - OPEN EXISTING REMOTE FILE
AX = 1116h
ES:DI -> uninitialized SFT
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file to open
STACK: WORD file access and sharing modes (see #1090 at INT 21/AH=3Dh)
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
SFT filled (except handle count, which DOS manages itself)
STACK unchanged
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=1106h,AX=1115h,AX=1117h,AX=1118h,AX=112Eh,INT 21/AH=3Dh
SeeAlso: INT 21/AH=60h
--------N-2F1117-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE REMOTE FILE
AX = 1117h
ES:DI -> uninitialized SFT
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file to open
SDA CDS pointer -> current directory structure for drive with file
STACK: WORD file creation mode
low byte = file attributes (see #1089 at INT 21/AH=3Ch)
high byte = 00h normal create, 01h create new file
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
SFT filled (except handle count, which DOS manages itself)
STACK unchanged
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=1106h,AX=1116h,AX=1118h,AX=112Eh,INT 21/AH=3Ch,INT 21/AH=60h
--------N-2F1118-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE FILE WITHOUT CDS
AX = 1118h
ES:DI -> uninitialized SFT
SS = DOS DS
SDA first filename pointer -> fully-qualified name of file
STACK: WORD file creation mode
low byte = file attributes
high byte = 00h normal create, 01h create new file
Return: ???
STACK unchanged
Note: this function is called by the DOS 3.1+ kernel when creating a file
on a drive for which the SDA CDS pointer has offset FFFFh
SeeAlso: AX=1106h,AX=1116h,AX=1117h,AX=112Eh,INT 21/AH=60h
--------N-2F1119-----------------------------
INT 2F CU - NETWORK REDIRECTOR - FIND FIRST FILE WITHOUT CDS
AX = 1119h
SS = DS = DOS DS
[DTA] = uninitialized 21-byte findfirst search data
(see #1312 at INT 21/AH=4Eh)
SDA first filename pointer -> fully-qualified search template
SDA search attribute = attribute mask for search
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
[DTA] = updated findfirst search data
(bit 7 of first byte must be set)
[DTA+15h] = standard directory entry for file (see #1041)
Notes: this function is called by the DOS 3.1+ kernel
DOS 4.x IFSFUNC returns CF set, AX=0003h
SeeAlso: AX=111Ah,AX=111Bh,INT 21/AH=1Ah
--------N-2F111A-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - FIND NEXT FILE WITHOUT CDS
AX = 111Ah
???
Return: CF set
AX = error code (03h for DOS 4.01 IFSFUNC)
Note: use AX=111Ch for DOS 5+
SeeAlso: AX=1119h,AX=111Ch
--------N-2F111B-----------------------------
INT 2F CU - NETWORK REDIRECTOR - FINDFIRST
AX = 111Bh
SS = DS = DOS DS
[DTA] = uninitialized 21-byte findfirst search data
(see #1312 at INT 21/AH=4Eh)
SDA first filename pointer -> fully-qualified search template
SDA CDS pointer -> current directory structure for drive with file
SDA search attribute = attribute mask for search
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
[DTA] = updated findfirst search data
(bit 7 of first byte must be set)
[DTA+15h] = standard directory entry for file (see #1041)
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=1119h,AX=111Ch,INT 21/AH=1Ah,INT 21/AH=4Eh,INT 21/AH=60h
--------N-2F111C-----------------------------
INT 2F CU - NETWORK REDIRECTOR - FINDNEXT
AX = 111Ch
SS = DS = DOS DS
ES:DI -> CDS
ES:DI -> DTA (MSDOS v5.0)
[DTA] = 21-byte findfirst search data
(see #1312 at INT 21/AH=4Eh)
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
[DTA] = updated findfirst search data
(bit 7 of first byte must be set)
[DTA+15h] = standard directory entry for file (see #1041)
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: AX=1119h,AX=111Bh,INT 21/AH=1Ah,INT 21/AH=4Fh
--------N-2F111D-----------------------------
INT 2F CU - NETWORK REDIRECTOR - CLOSE ALL REMOTE FILES FOR PROCESS (ABORT)
AX = 111Dh
SS = DOS DS
SDA PSP segment field = PSP of terminating process
Return: nothing
Notes: used when a process is aborted; the process being terminated is
indicated by the "sharing PSP" field in the SDA (offset 1Ah/1Ch)
this function is called by the DOS 3.1+ kernel
closes all FCBs opened by process
SeeAlso: INT 21/AX=5D04h
--------N-2F111E-----------------------------
INT 2F CU - NETWORK REDIRECTOR - DO REDIRECTION
AX = 111Eh
SS = DOS DS
STACK: WORD function to execute
5F00h get redirection mode
BL = type (03h printer, 04h disk)
Return: BH = state (00h off, 01h on)
5F01h set redirection mode
BL = type (03h printer, 04h disk)
BH = state (00h off, 01h on)
5F02h get redirection list entry
BX = redirection list index
DS:SI -> 16-byte local device name buffer
ES:DI -> 128-byte network name buffer
Return: must set user's BX to device type and CX to
stored parameter value, using AX=1218h to get
stack frame address
5F03h redirect device
BL = device type (see INT 21/AX=5F03h)
CX = stored parameter value
DS:SI -> ASCIZ source device name
ES:DI -> destination ASCIZ network path + ASCIZ passwd
5F04h cancel redirection
DS:SI -> ASCIZ device name or network path
5F05h get redirection list extended entry
BX = redirection list index
DS:SI -> buffer for ASCIZ source device name
ES:DI -> buffer for destination ASCIZ network path
Return: BH = status flag
BL = type (03h printer, 04h disk)
CX = stored parameter value
BP = NETBIOS local session number
5F06h similar to 5F05h???
Return: CF set on error
AX = error code (see #1366 at INT 21/AH=59h/BX=0000h)
STACK unchanged
Notes: this function is called by the DOS 3.1+ kernel on INT 21/AH=5Fh
(including LAN Manager calls)
the PC Network 1.00 redirector does not support function 5F06h
SeeAlso: INT 21/AX=5F00h,INT 21/AX=5F01h,INT 21/AX=5F02h,INT 21/AX=5F03h
SeeAlso: INT 21/AX=5F04h,INT 21/AX=5F05h,INT 21/AX=5F06h
--------N-2F111F-----------------------------
INT 2F CU - NETWORK REDIRECTOR - PRINTER SETUP
AX = 111Fh
STACK: WORD function
5E02h set printer setup
5E03h get printer setup
5E04h set printer mode
5E05h get printer mode
Return: CF set on error
AX = error code (see #1366 at INT 21/AH=59h/BX=0000h)
STACK unchanged
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: INT 21/AX=5E02h,INT 21/AX=5E03h,INT 21/AX=5E04h,INT 21/AX=5E05h
--------N-2F1120-----------------------------
INT 2F CU - NETWORK REDIRECTOR - FLUSH ALL DISK BUFFERS
AX = 1120h
DS = DOS DS
???
Return: CF clear (successful)
Notes: this function is called by the DOS 3.1+ kernel
uses CDS array pointer and LASTDRIVE= entries in DOS list of lists
SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h
--------N-2F1121-----------------------------
INT 2F CU - NETWORK REDIRECTOR - SEEK FROM END OF REMOTE FILE
AX = 1121h
CX:DX = offset (in bytes) from end
ES:DI -> SFT
SFT DPB field -> DPB of drive with file
SS = DOS DS
Return: CF set on error
AL = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
DX:AX = new file position
Note: this function is called by the DOS 3.1+ kernel, but only when seeking
from the end of a file opened with sharing modes set in such a
manner that another process is able to change the size of the file
while it is already open
SeeAlso: AX=1228h,INT 21/AH=42h
--------N-2F1122-----------------------------
INT 2F CU - NETWORK REDIRECTOR - PROCESS TERMINATION HOOK
AX = 1122h
SS = DOS DS
DS = PSP of process about to terminate
Return: ???
Notes: this function is called by the DOS 3.1+ kernel
after calling this function, the kernel calls INT 2F/AX=111Dh
SeeAlso: AX=111Dh,INT 21/AH=4Ch,INT 60/DI=0601h
--------N-2F1123-----------------------------
INT 2F CU - NETWORK REDIRECTOR - QUALIFY REMOTE FILENAME
AX = 1123h
DS:SI -> ASCIZ filename to canonicalize
ES:DI -> 128-byte buffer for qualified name
Return: CF set if not resolved
Notes: called by MS-DOS 3.1+ kernel, but not called by DR DOS 5.0 unless the
filename matches the name of a character device
called first when DOS attempts to resolve a filename (unless inside an
AX=5D00h server call); if this fails, DOS resolves the name locally
SeeAlso: AX=1221h,INT 21/AH=60h
--------N-2F1124-----------------------------
INT 2F CU - NETWORK REDIRECTOR - TURN OFF REMOTE PRINTER
AX = 1124h
ES:DI -> SFT
SS = DOS DS
???
Return: CX = ???
Note: this function is called by the DOS 3.1+ kernel if AX=1126h
returns CF set
SeeAlso: AX=1126h
--------N-2F1125-----------------------------
INT 2F CU - NETWORK REDIRECTOR - REDIRECTED PRINTER MODE
AX = 1125h
STACK: WORD subfunction
5D07h get print stream state
Return: DL = current state
5D08h set print stream state
DL = new state
5D09h finish print job
Return: CF set on error
AX = error code (see #1366 at INT 21/AH=59h/BX=0000h)
STACK unchanged
Note: this function is called by the DOS 3.1+ kernel
SeeAlso: INT 21/AX=5D07h,INT 21/AX=5D08h,INT 21/AX=5D09h
--------N-2F1126-----------------------------
INT 2F CU - NETWORK REDIRECTOR - REMOTE PRINTER ECHO ON/OFF
AX = 1126h
ES:DI -> SFT for file handle 4???
SS = DOS DS???
???
Return: CF set on error
Notes: this function is called by the DOS 3.1+ kernel
called when print echoing (^P, ^PrtSc) changes state and STDPRN has
bit 11 of the device information word in the SFT set
SeeAlso: AX=1124h
--------N-2F1127-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
AX = 1127h
Return: CF set
AX = 0001h (invalid function) (see #1366 at INT 21/AH=59h/BX=0000h)
--------N-2F1127BX4E57-----------------------
INT 2F - NetWare 4.0 - REMOTE FILE COPY
AX = 1127h
BX = 4E57h ('NW') (signature identifying this as a NetWare call)
SI = source file handle
DI = destination file handle
DX:CX = number of bytes to copy, starting at current file position
Return: CF clear if successful
CF set on error
AX = error code (05h,06h,0Bh,11h,3Bh) (see #1366)
DX:CX = number of bytes successfully copied (file position updated)
Notes: this is the only call which may be made directly to the NetWare
redirector from an application
COMMAND.COM's COPY and DOS's XCOPY reportedly call INT 21/AX=1127h in
order to speed up copies between files on the same network server;
if error code 11h (not same device) is returned, the copy is
performed in the usual manner. However, no such calls appear to
be present in MS-DOS 6.22.
--------N-2F1128-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
AX = 1128h
Return: CF set
AX = 0001h (invalid function) (see #1366 at INT 21/AH=59h/BX=0000h)
--------N-2F1129-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
AX = 1129h
Return: CF set
AX = 0001h (invalid function) (see #1366 at INT 21/AH=59h/BX=0000h)
--------N-2F112A-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - CLOSE ALL FILES FOR PROCESS
AX = 112Ah
DS = DOS DS
???
Return: ???
Note: does something to each IFS driver
--------N-2F112B-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GENERIC IOCTL
AX = 112Bh
SS = DOS DS
CX = function/category
DS:DX -> parameter block
STACK: WORD value of AX on entry to INT 21 (440Ch or 440Dh)
???
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Note: this function is called by the DOS 4.0 kernel
--------N-2F112C-----------------------------
INT 2F CU - NETWORK REDIRECTOR (DOS 4.0+) - "UPDATE_CB" - ???
AX = 112Ch
SS = DOS DS
SDA current SFT pointer -> SFT for file
???
Return: CF set on error
Note: called by SHARE in DOS 5.0-6.0
--------N-2F112D-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - EXTENDED ATTRIBUTES
AX = 112Dh
BL = subfunction (value of AL on INT 21)
02h get extended attributes
03h get extended attribute properties
04h set extended attributes
Return: CF clear
else ???
Return: CX = ??? (00h or 02h for DOS 4.01)
ES:DI -> SFT for file
SS = DOS DS
Return: DS = DOS DS
Note: this function is called by the DOS 4.0 kernel on INT 21/AX=5702h,
INT 21/AX=5703h, and INT 21/AX=5704h
SeeAlso: INT 21/AX=5702h,INT 21/AX=5703h,INT 21/AX=5704h,INT 21/AH=6Eh
--------N-2F112E-----------------------------
INT 2F CU - NETWORK REDIRECTOR (DOS 4.0+) - EXTENDED OPEN/CREATE FILE
AX = 112Eh
SS = DS = DOS DS
ES:DI -> uninitialized SFT for file
STACK: WORD file attribute for created/truncated file
low byte = file attributes
high byte = 00h normal create/open, 01h create new file
SDA first filename pointer -> fully-qualified filename
SDA extended file open action = action code
(see #1459 at INT 21/AX=6C00h)
SDA extended file open mode = open mode for file (see INT 21/AX=6C00h)
Return: CF set on error
AX = error code
CF clear if successful
CX = result code
01h file opened
02h file created
03h file replaced (truncated)
SFT initialized (except handle count, which DOS manages itself)
Note: this function is called by the DOS 4.0+ kernel
BUG: this function is not called correctly under some DOS versions
(at least 5.0 and 6.2):
the file attribute on the stack is not correct if the action
code is 11h,
the result code in CX is not passed back to the application.
SeeAlso: AX=1115h,AX=1116h,AX=1117h,INT 21/AX=6C00h
--------N-2F112F-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - IFS IOCTL
AX = 112Fh
SS = DOS DS
STACK: WORD function in low byte
00h ???
DS:SI -> Current Directory Structure???
CL = drive (1=A:)
01h ???
DS:SI -> ???
CL = file handle???
02h ???
DS:SI -> Current Directory Structure???
DI = ???
CX = drive (1=A:)
???
Return: CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
Note: this function is called by the DOS 4.0 kernel
SeeAlso: INT 21/AH=6Bh
--------N-2F1130-----------------------------
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GET IFSFUNC SEGMENT
AX = 1130h
Return: ES = CS of resident IFSFUNC
--------N-2F1180-----------------------------
INT 2F - LAN Manager Enhanced DOS Services - ???
AX = 1180h
???
Return: ???
SeeAlso: AX=1100h,AX=1181h,AX=118Eh
--------N-2F1181-----------------------------
INT 2F - LAN Manager Enhanced DOS Services - SET USER NAME???
AX = 1181h
???
Return: ???
SeeAlso: AX=1100h,AX=1180h
--------N-2F1182-----------------------------
INT 2F - LAN Manager Enhanced DOS Services - INSTALL SERVICE
AX = 1182h
???
Return: ???
SeeAlso: AX=1100h,AX=1180h
--------N-2F1184-----------------------------
INT 2F - LAN Manager Enhanced DOS - ???
AX = 1184h
???
Return: ???
--------N-2F1186-----------------------------
INT 2F - LAN Manager Enhanced DOS - DosReadAsynchNmPipe
AX = 1186h
DS:SI -> stack frame (see #2294)
Return: CF clear if successful
CF set if error
AX = error code
Note: LAN Manager enhance mode adds features beyond the standard redirector
file/printer services
SeeAlso: AX=118Fh,AX=1190h,AX=1191h,INT 21/AX=5F39h
Format of LAN Manager DosReadAsynchNmPipe stack frame:
Offset Size Description (Table 2294)
00h DWORD -> number of bytes read
04h WORD size of buffer
06h DWORD -> buffer
0Ah DWORD -> return code
0Eh DWORD function to call on completion as function( char far *buffer )
12h WORD handle
--------N-2F118A-----------------------------
INT 2F - LAN Manager 2.0+ DOS Enhanced ENCRYPT.EXE - STREAM ENCRYPTION SERVICE
AX = 118Ah
BX = function (0000h or 0001h)
Return: CF clear if successful
AX = 1100h success
CF set if error
AX = 0001h, etc.
SeeAlso: AX=1186h,AH=41h,AH=42h,AH=4Bh
--------N-2F118B-----------------------------
INT 2F - LAN Manager Enhanced DOS - ???
AX = 118Bh
???
Return: ???
--------N-2F118C-----------------------------
INT 2F - LAN Manager Enhanced DOS - ???
AX = 118Ch
???
Return: ???
--------N-2F118E-----------------------------
INT 2F - LAN Manager Enhanced DOS - ???
AX = 118Eh
???
Return: ???
--------N-2F118F-----------------------------
INT 2F - LAN Manager Enhanced DOS - DosWriteAsynchNmPipe
AX = 118Fh
DS:SI -> stack frame (see #2295)
Return: CF clear if successful
CF set if error
AX = error code
SeeAlso: AX=1186h,AX=1191h,INT 21/AX=5F3Ah
Format of LAN Manager DosReadAsynchNmPipe stack frame:
Offset Size Description (Table 2295)
00h DWORD -> number of bytes read
04h WORD Size of buffer
06h DWORD -> buffer
0Ah DWORD -> return code
0Eh DWORD function to call on completion as function( char far *buffer )
12h WORD handle
--------N-2F1190-----------------------------
INT 2F - LAN Manager Enhanced DOS - DosReadAsynchNmPipe2
AX = 1190h
DS:SI -> stack frame (see #2296)
Return: CF clear if successful
CF set if error
AX = error code
SeeAlso: AX=1186h,AX=1191h
Format of LAN Manager DosReadAsynchNmPipe2 stack frame:
Offset Size Description (Table 2296)
00h DWORD -> number of bytes read
04h WORD size of buffer
06h DWORD -> buffer
0Ah DWORD -> return code
0Eh DWORD function to call on completion as function( char far *buffer )
12h WORD handle
14h DWORD ???
--------N-2F1191-----------------------------
INT 2F - LAN Manager Enhanced DOS - DosWriteAsynchNmPipe2
AX = 1191h
DS:SI -> stack frame (see #2297)
Return: CF clear if successful
CF set if error
AX = error code
SeeAlso: AX=118Fh,AX=1190h,INT 21/AX=5F3Ah
Format of LAN Manager DosReadAsynchNmPipe2 stack frame:
Offset Size Description (Table 2297)
00h DWORD -> number of bytes read
04h WORD size of buffer
06h DWORD -> buffer
0Ah DWORD -> return code
0Eh DWORD function to call on completion as function( char far *buffer )
12h WORD handle
14h DWORD ???
--------D-2F1200-----------------------------
INT 2F U - DOS 3.0+ internal - INSTALLATION CHECK
AX = 1200h
Return: AL = FFh (for compatibility with other INT 2F functions)
--------D-2F1201-----------------------------
INT 2F U - DOS 3.0+ internal - CLOSE CURRENT FILE
AX = 1201h
SS = DOS DS (must be using a DOS internal stack)
SDA current SFT pointer -> SFT of file to close
Return: CF set on error
BX???
CX new reference count of SFT
ES:DI -> SFT for file
SeeAlso: AX=1106h,AX=1227h,INT 21/AH=3Eh
--------D-2F1202-----------------------------
INT 2F U - DOS 3.0+ internal - GET INTERRUPT ADDRESS
AX = 1202h
STACK: WORD vector number
Return: ES:BX -> interrupt vector (DWORD containing handler's address)
STACK unchanged
--------D-2F1203-----------------------------
INT 2F U - DOS 3.0+ internal - GET DOS DATA SEGMENT
AX = 1203h
Return: DS = data segment of IBMDOS.COM/MSDOS.SYS
Note: for DOS prior to version 5.0, the data segment is the same as the code
segment
--------D-2F1204-----------------------------
INT 2F U - DOS 3.0+ internal - NORMALIZE PATH SEPARATOR
AX = 1204h
STACK: WORD character to normalize
Return: AL = normalized character (forward slash turned to backslash, all
others unchanged)
ZF set if path separator
STACK unchanged
--------D-2F1205-----------------------------
INT 2F U - DOS 3.0+ internal - OUTPUT CHARACTER TO STANDARD OUTPUT
AX = 1205h
STACK: WORD character to output
Return: STACK unchanged
Note: can be called only from within DOS
--------D-2F1206-----------------------------
INT 2F U - DOS 3.0+ internal - INVOKE CRITICAL ERROR
AX = 1206h
DI = error code
BP:SI -> device driver header (see #1332)
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD value to be passed to INT 24 in AX
Return: AL = 0-3 for Abort, Retry, Ignore, Fail
STACK unchanged
SeeAlso: INT 24
--------D-2F1207-----------------------------
INT 2F U - DOS 3.0+ internal - MAKE DISK BUFFER MOST-RECENTLY USED
AX = 1207h
DS:DI -> disk buffer
Return: nothing
Desc: move the indicated buffer to the end of the disk buffer chain (least-
recently used is first); under DOS 3.3, the buffer is then moved to
the start of the disk buffer chain if it was marked unused
Notes: can be called only from within DOS
this function is nearly the same as AX=120Fh
SeeAlso: AX=120Fh
--------D-2F1208-----------------------------
INT 2F U - DOS 3.0+ internal - DECREMENT SFT REFERENCE COUNT
AX = 1208h
ES:DI -> SFT
Return: AX = original value of reference count
Notes: if the reference count was 1, it is set to FFFFh (since 0 indicates
that the SFT is not in use). It is the caller's responsibility to
set the reference count to zero after cleaning up.
used by network redirectors such as MSCDEX
SeeAlso: AX=1106h
--------D-2F1209-----------------------------
INT 2F U - DOS 3.0+ internal - FLUSH AND FREE DISK BUFFER
AX = 1209h
DS:DI -> disk buffer
Return: disk buffer marked unused, contents written to disk if buffer dirty
Note: can be called only from within DOS
SeeAlso: AX=120Eh,AX=1215h
--------D-2F120A-----------------------------
INT 2F U - DOS 3.0+ internal - PERFORM CRITICAL ERROR INTERRUPT
AX = 120Ah
DS = SS = DOS DS (must be using a DOS internal stack)
STACK: WORD extended error code
Return: AL = user response (0=ignore, 1=retry, 2=abort, 3=fail)
CF clear if retry, set otherwise
STACK unchanged
Notes: can only be called during a DOS function call, as it uses various
fields in the SDA to set up the registers for the INT 24
reportedly sets current DPB's first root directory sector to 1
SeeAlso: INT 24
--------D-2F120B-----------------------------
INT 2F U - DOS 3.0+ internal - SIGNAL SHARING VIOLATION TO USER
AX = 120Bh
ES:DI -> system file table entry for previous open of file
STACK: WORD extended error code (should be 20h--sharing violation)
Return: CF clear if operation should be retried
CF set if operation should not be retried
AX = error code (20h) (see #1366 at INT 21/AH=59h/BX=0000h)
STACK unchanged
Notes: can only be called during a DOS function call
should only be called if an attempt was made to open an already-open
file contrary to the sharing rules
invokes INT 24 if SFT file opened via FCB or in compatibility mode with
inheritance allowed
--------D-2F120C-----------------------------
INT 2F U - DOS 3.0+ internal - OPEN DEVICE AND SET SFT OWNER/MODE
AX = 120Ch
SDA current SFT pointer -> SFT for file
DS = DOS DS
SS = DOS DS (must be using a DOS internal stack)
Return: ES, DI, AX destroyed
Notes: invokes "device open" call on device driver for SFT
changes owner of last-accessed SFT to calling process if it was opened
via FCB
called by network redirectors such as MSCDEX
--------D-2F120D-----------------------------
INT 2F U - DOS 3.0+ internal - GET DATE AND TIME
AX = 120Dh
SS = DOS DS (must be using a DOS internal stack)
Return: AX = current date in packed format (see #1352 at INT 21/AX=5700h)
DX = current time in packed format (see #1351 at INT 21/AX=5700h)
SeeAlso: INT 21/AH=2Ah,INT 21/AH=2Ch
--------D-2F120E-----------------------------
INT 2F U - DOS 3.0+ internal - MARK ALL DISK BUFFERS UNREFERENCED
AX = 120Eh
SS = DOS DS (must be using a DOS internal stack)
Return: DS:DI -> first disk buffer
Notes: clears "referenced" flag on all disk buffers
in DOS 5+, this has become essentially a NOP, invoking the same code
used by AX=1224h (SHARING DELAY)
SeeAlso: AX=1209h,AX=1210h,INT 21/AH=0Dh
--------D-2F120F-----------------------------
INT 2F U - DOS 3.0+ internal - MAKE BUFFER MOST RECENTLY USED
AX = 120Fh
DS:DI -> disk buffer
SS = DOS DS (must be using a DOS internal stack)
Return: DS:DI -> next buffer in buffer list
Desc: move the indicated buffer to the end of the disk buffer chain (least-
recently used is first); under DOS 3.3, the buffer is then moved to
the start of the disk buffer chain if it was marked unused
Note: this function is the same as AX=1207h except that it returns a
pointer to the buffer following the specified buffer in the buffer
chain
SeeAlso: AX=1207h
--------D-2F1210-----------------------------
INT 2F U - DOS 3.0+ internal - FIND UNREFERENCED DISK BUFFER
AX = 1210h
DS:DI -> first disk buffer to check
Return: ZF clear if found
DS:DI -> first unreferenced disk buffer
ZF set if not found
Note: in DOS 5+, this has become essentially a NOP, invoking the same code
used by AX=1224h (SHARING DELAY)
SeeAlso: AX=120Eh
--------D-2F1211-----------------------------
INT 2F U - DOS 3.0+ internal - NORMALIZE ASCIZ FILENAME
AX = 1211h
DS:SI -> ASCIZ filename to normalize
ES:DI -> buffer for normalized filename
Return: destination buffer filled with uppercase filename, with slashes turned
to backslashes
SeeAlso: AX=121Eh,AX=1221h
--------D-2F1212-----------------------------
INT 2F U - DOS 3.0+ internal - GET LENGTH OF ASCIZ STRING
AX = 1212h
ES:DI -> ASCIZ string
Return: CX = length of string
SeeAlso: AX=1225h
--------D-2F1213-----------------------------
INT 2F U - DOS 3.0+ internal - UPPERCASE CHARACTER
AX = 1213h
STACK: WORD character to convert to uppercase
Return: AL = uppercase character
STACK unchanged
--------D-2F1214-----------------------------
INT 2F U - DOS 3.0+ internal - COMPARE FAR POINTERS
AX = 1214h
DS:SI = first pointer
ES:DI = second pointer
Return: ZF set if pointers are equal, ZF clear if not equal
CF clear if pointers equal, CF set if not
--------D-2F1215-----------------------------
INT 2F U - DOS 3.0+ internal - FLUSH BUFFER
AX = 1215h
DS:DI -> disk buffer
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD drives for which to skip buffer
ignore buffer if drive same as high byte, or bytes differ and
the buffer is for a drive OTHER than that given in low byte
Return: STACK unchanged
Note: can be called only from within DOS
SeeAlso: AX=1209h
--------D-2F1216-----------------------------
INT 2F U - DOS 3.0+ internal - GET ADDRESS OF SYSTEM FILE TABLE ENTRY
AX = 1216h
BX = system file table entry number
Return: CF clear if successful
ES:DI -> system file table entry
BX = relative entry number in system file table containing entry
AX destroyed
CF set if BX greater than FILES=
Note: supported by DR DOS 5+
SeeAlso: AX=1220h
--------D-2F1217-----------------------------
INT 2F U - DOS 3.0+ internal - GET CURRENT DIRECTORY STRUCTURE FOR DRIVE
AX = 1217h
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD drive (0 = A:, 1 = B:, etc)
Return: CF set on error
(drive > LASTDRIVE)
CF clear if successful
DS:SI -> current directory structure for specified drive
STACK unchanged
SeeAlso: AX=1219h
--------D-2F1218-----------------------------
INT 2F U - DOS 3.0+ internal - GET CALLER'S REGISTERS
AX = 1218h
Return: DS:SI -> saved caller's AX,BX,CX,DX,SI,DI,BP,DS,ES (on stack)
Note: only valid while within DOS
--------D-2F1219-----------------------------
INT 2F U - DOS 3.0+ internal - SET DRIVE???
AX = 1219h
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD drive (0 = default, 1 = A:, etc)
Return: ???
STACK unchanged
Notes: calls AX=1217h
builds a current directory structure if inside server call
(INT 21/AX=5D00h)
SeeAlso: AX=1217h,AX=121Fh
--------D-2F121A-----------------------------
INT 2F U - DOS 3.0+ internal - GET FILE'S DRIVE
AX = 121Ah
DS:SI -> filename
Return: AL = drive (0 = default, 1 = A:, etc, FFh = invalid)
DS:SI -> filename without leading X: (if present)
SeeAlso: INT 21/AH=19h,INT 21/AH=60h
--------D-2F121B-----------------------------
INT 2F U - DOS 3.0+ internal - SET YEAR/LENGTH OF FEBRUARY
AX = 121Bh
CL = year - 1980
Return: AL = number of days in February
Note: requires DS to be set to the DOS data segment
SeeAlso: INT 21/AH=2Bh"DATE"
--------D-2F121C-----------------------------
INT 2F U - DOS 3.0+ internal - CHECKSUM MEMORY
AX = 121Ch
DS:SI -> start of memory to checksum
CX = number of bytes
DX = initial checksum
SS = DOS DS (must be using a DOS internal stack)
Return: AX, CX destroyed
DX = checksum
DS:SI -> first byte after checksummed range
Notes: used by DOS to determine day count since 1/1/80 given a date
supported by DR DOS 5.0+
SeeAlso: AX=121Dh
--------D-2F121D-----------------------------
INT 2F U - DOS 3.0+ internal - SUM MEMORY
AX = 121Dh
DS:SI -> memory to add up
CX = 0000h
DX = limit
Return: AL = byte which exceeded limit
CX = number of bytes before limit exceeded
DX = remainder after adding first CX bytes
DS:SI -> byte beyond the one which exceeded the limit
Notes: used by DOS to determine year or month given day count since 1/1/80
supported by DR DOS 5.0+
SeeAlso: AX=121Ch
--------D-2F121E-----------------------------
INT 2F U - DOS 3.0+ internal - COMPARE FILENAMES
AX = 121Eh
DS:SI -> first ASCIZ filename
ES:DI -> second ASCIZ filename
Return: ZF set if filenames equivalent, ZF clear if not
Note: supported by DR DOS 5.0+
SeeAlso: AX=1211h,AX=1221h
--------D-2F121F-----------------------------
INT 2F U - DOS 3.0+ internal - BUILD CURRENT DIRECTORY STRUCTURE
AX = 121Fh
SS = DOS DS (must be using a DOS internal stack)
STACK: WORD drive letter
Return: ES:DI -> current directory structure (will be overwritten by next call)
STACK unchanged
--------D-2F1220-----------------------------
INT 2F U - DOS 3.0+ internal - GET JOB FILE TABLE ENTRY
AX = 1220h
BX = file handle
Return: CF set on error
AL = 6 (invalid file handle)
CF clear if successful
ES:DI -> JFT entry for file handle in current process
Notes: the byte pointed at by ES:DI contains the number of the SFT for the
file handle, or FFh if the handle is not open
supported by DR DOS 5.0+
SeeAlso: AX=1216h,AX=1229h
--------D-2F1221-----------------------------
INT 2F U - DOS 3.0+ internal - CANONICALIZE FILE NAME
AX = 1221h
DS:SI -> file name to be fully qualified
ES:DI -> 128-byte buffer for resulting canonical file name
SS = DOS DS (must be using a DOS internal stack)
Return: (see INT 21/AH=60h)
Note: identical to INT 21/AH=60h
SeeAlso: AX=1123h,INT 21/AH=60h
--------D-2F1222-----------------------------
INT 2F U - DOS 3.0+ internal - SET EXTENDED ERROR INFO
AX = 1222h
SS = DOS data segment
SS:SI -> 4-byte records
BYTE error code, FFh = last record
BYTE error class, FFh = don't change
BYTE suggested action, FFh = don't change
BYTE error locus, FFh = don't change
SDA error code set
Return: SI destroyed
SDA error class, error locus, and suggested action fields set
Note: can be called only from within DOS
SeeAlso: AX=122Dh,INT 21/AH=59h/BX=0000h,INT 21/AX=5D0Ah
--------D-2F1223-----------------------------
INT 2F U - DOS 3.0+ internal - CHECK IF CHARACTER DEVICE
AX = 1223h
DS = DOS DS
SS = DOS DS (must be using a DOS internal stack)
SDA+218h (DOS 3.10-3.30) = eight-character blank-padded name
SDA+22Bh (DOS 4.0-6.0) = eight-character blank-padded name
Return: CF set if no character device by that name found
CF clear if found
BH = low byte of device attribute word
Note: can only be called from within DOS
SeeAlso: INT 21/AX=5D06h,INT 21/AX=5D0Bh
--------D-2F1224-----------------------------
INT 2F U - DOS 3.0+ internal - SHARING RETRY DELAY
AX = 1224h
SS = DOS DS (must be using a DOS internal stack)
Return: after delay set by INT 21/AX=440Bh, unless in server call
(INT 21/AX=5D00h)
Note: delay is dependent on the processor speed, and is skipped entirely if
inside a server call
SeeAlso: INT 21/AX=440Bh,INT 21/AH=52h,INT 62/AX=0097h
--------D-2F1225-----------------------------
INT 2F U - DOS 3.0+ internal - GET LENGTH OF ASCIZ STRING
AX = 1225h
DS:SI -> ASCIZ string
Return: CX = length of string
Note: supported by DR DOS 5.0+
SeeAlso: AX=1212h
--------D-2F1226-----------------------------
INT 2F U - DOS 3.3+ internal - OPEN FILE
AX = 1226h
CL = access mode
DS:DX -> ASCIZ filename
SS = DOS DS (must be using a DOS internal stack)
Return: CF set on error
AL = error code (see #1366 at INT 21/AH=59h/BX=0000h)
CF clear if successful
AX = file handle
Notes: can only be called from within DOS
equivalent to INT 21/AH=3Dh
used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
SeeAlso: AX=1227h,INT 21/AH=3Dh
--------D-2F1227-----------------------------
INT 2F U - DOS 3.3+ internal - CLOSE FILE
AX = 1227h
BX = file handle
SS = DOS DS (must be using a DOS internal stack)
Return: CF set on error
AL = 06h invalid file handle
CF clear if successful
Notes: can only be called from within DOS
equivalent to INT 21/AH=3Eh
used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
SeeAlso: AX=1106h,AX=1201h,AX=1226h,INT 21/AH=3Eh
--------D-2F1228BP4200-----------------------
INT 2F U - DOS 3.3+ internal - MOVE FILE POINTER
AX = 1228h
BP = 4200h, 4201h, 4202h (see INT 21/AH=42h)
BX = file handle
CX:DX = offset in bytes
SS = DOS DS (must be using a DOS internal stack)
Return: as for INT 21/AH=42h
Notes: equivalent to INT 21/AH=42h, but may only be called from inside a DOS
function call
sets user stack frame pointer to dummy buffer, moves BP to AX, performs
LSEEK, and restores frame pointer
used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
SeeAlso: INT 21/AH=42h
--------D-2F1229-----------------------------
INT 2F U - DOS 3.3+ internal - READ FROM FILE
AX = 1229h
BX = file handle
CX = number of bytes to read
DS:DX -> buffer
SS = DOS DS (must be using a DOS internal stack)
Return: as for INT 21/AH=3Fh"DOS"
Notes: equivalent to INT 21/AH=3Fh, but may only be called when already inside
a DOS function call
used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
SeeAlso: AX=1226h,INT 21/AH=3Fh"DOS"
--------D-2F122A-----------------------------
INT 2F U - DOS 3.3+ internal - SET FASTOPEN ENTRY POINT
AX = 122Ah
BX = entry point to set (0001h or 0002h)
DS:SI -> FASTOPEN entry point (see #2298,#2299)
(entry point not set if SI = FFFFh for DOS 4.0+)
Return: CF set if specified entry point already set
Notes: entry point in BX is ignored under DOS 3.30
both entry points set to same handler by DOS 4.01
DOS 5.0 and 6.0 only set entry point 1
(Table 2298)
Values DOS 3.30+ FASTOPEN entry point is called with:
AL = 01h Lookup
CX = ??? seems to be offset
DI = ??? seems to be offset
SI = offset in DOS DS of filename
AL = 02h insert file into FASTOPEN cache
AL = 03h delete file from FASTOPEN cache
SI = offset in DOS DS of filename
AL = 04h purge FASTOPEN cache
AH = subfunction (00h,01h,02h)
ES:DI -> ???
CX = ??? (subfunctions 01h and 02h only)
Returns: CF set on error or not installed
Note: function 03h calls function 01h first
SeeAlso: #2299,#2300
(Table 2299)
Values PC-DOS 4.01 FASTOPEN is additionally called with:
AL = 04h ???
AH = 03h
???
AL = 05h ???
AL = 0Bh ???
AL = 0Ch ???
AL = 0Dh ???
AL = 0Eh ???
AL = 0Fh ???
AL = 10h ???
SeeAlso: #2298,#2300
(Table 2300)
Values MS-DOS 5.0-6.0 FASTOPEN is additionally called with:
AL = 04h purge FASTOPEN cache
AH = 03h
???
AL = 05h ???
DL = drive (00h = A:)
???
AL = 06h ???
???
SeeAlso: #2298,#2299
--------D-2F122B-----------------------------
INT 2F U - DOS 3.3+ internal - IOCTL
AX = 122Bh
BP = 44xxh
SS = DOS DS (must be using a DOS internal stack)
additional registers as appropriate for INT 21/AX=44xxh
Return: as for INT 21/AH=44h
Notes: equivalent to INT 21/AH=44h, but may only be called when already inside
a DOS function call
sets user stack frame pointer to dummy buffer, moves BP to AX, performs
IOCTL, and restores frame pointer
used by NLSFUNC in accessing COUNTRY.SYS when invoked by the DOS kernel
SeeAlso: INT 21/AH=44h
--------D-2F122C-----------------------------
INT 2F U - DOS 3.3+ internal - GET DEVICE CHAIN
AX = 122Ch
Return: BX:AX -> header of second device driver (NUL is first) in driver chain
Note: although this function exists in DR DOS 5.0 and Novell DOS 7, it
always returns 0000h:0000h prior to Novell DOS 7 Update 15
SeeAlso: INT 21/AH=52h
--------D-2F122D-----------------------------
INT 2F U - DOS 3.3+ internal - GET EXTENDED ERROR CODE
AX = 122Dh
SS = DOS DS
Return: AX = current extended error code
SeeAlso: AX=1222h,INT 21/AH=59h/BX=0000h
--------D-2F122E-----------------------------
INT 2F U - DOS 4.0+ internal - GET OR SET ERROR TABLE ADDRESSES
AX = 122Eh
DL = subfunction
00h get standard DOS error table (see #2301)
Return: ES:DI -> error table
(DOS 4: errors 00h-12h,50h-5Bh)
(DOS 5: errors 00h-26h,4Fh,51h-59h)
01h set standard DOS error table
ES:DI -> error table
02h get parameter error table (errors 00h-0Ah)
Return: ES:DI -> error table
03h set parameter error table
ES:DI -> error table
04h get critical/SHARE error table (errors 13h-2Bh)
Return: ES:DI -> error table
05h set critical/SHARE error table
ES:DI -> error table
06h get ??? error table
Return: ES:DI -> error table or 0000h:0000h
07h set ??? error table
ES:DI -> error table
08h get error message retriever (see #2302)
Return: ES:DI -> FAR procedure to fetch error message
09h set ??? error table
ES:DI -> error table
Notes: if the returned segment on a "get" is 0001h, then the offset specifies
the offset of the error message table within COMMAND.COM, and the
procedure returned by DL=08h should be called
DOS 5+ COMMAND.COM does not allow setting any of the addresses (calls
with DL odd are ignored); they are always returned with segment 0001h
for DOS 5.0, the standard and critical/SHARE error tables are combined
into a single error table
SeeAlso: AX=0500h,INT 21/AH=59h/BX=0000h
Format of DOS 4.x error table:
Offset Size Description (Table 2301)
00h BYTE FFh
01h 2 BYTEs 04h,00h (DOS version???)
03h BYTE number of error headers following
04h 2N WORDs table of all error headers for table
Offset Size Description
00h WORD error message number
02h WORD offset of error message from start of header
error messages are count byte followed by msg
Note: DOS 5 error tables consist of one word per error number; each word
contains either the offset of a counted string or 0000h
(Table 2302)
Call error retrieval function with:
AX = error number (see #2303)
DI = offset of error table
Return: ES:DI -> error message (counted string)
Notes: this function needs to access COMMAND.COM if the messages were not
loaded into memory permanently with /MSG; the caller should assume
that the returned message will be overwritten by the next call of
the function
supported by DR DOS 5.0
(Table 2303)
Values for parameter errors:
01h Too many parameters
02h Required Parameter missing
03h Invalid switch
04h Invalid keyword
06h Parameter value not in allowed range
07h Parameter value not allowed
08h Parameter value not allowed
09h Parameter format not correct
0Ah Invalid parameter
0Bh Invalid parameter combination
--------D-2F122F-----------------------------
INT 2F U - DOS 4.x internal - SET DOS VERSION NUMBER TO RETURN
AX = 122Fh
DX = DOS version number (0000h = return true DOS version)
Note: not available under DR DOS 5.0 or 6.0
SeeAlso: INT 21/AH=30h,INT 21/AX=3306h
--------O-2F12FFBL00-------------------------
INT 2F - FreeDOS - FDAK-DDT - INSTALLATION CHECK / STATUS CHECK
AX = 12FFh
BL = 00h
Return: AL = DDh if installed
BH = state (00h disabled, nonzero enabled)
BL = readonly flag (00h writable, nonzero read-only)
Program: FDAK-DDT is the FreeDOS Alternative Kernel Device Drivers Testing
release by Yury A. Semenov
SeeAlso: AX=12FFh/BL=07h
--------O-2F12FFBL01-------------------------
INT 2F - FreeDOS - FDAK-DDT - ENABLE FDAK DRIVERS
AX = 12FFh
BL = 01h
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=02h
--------O-2F12FFBL02-------------------------
INT 2F - FreeDOS - FDAK-DDT - DISABLE FDAK DRIVERS
AX = 12FFh
BL = 02h
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=01h
--------O-2F12FFBL03-------------------------
INT 2F - FreeDOS - FDAK-DDT - SWITCH BLOCK DEVICE TO READ-ONLY
AX = 12FFh
BL = 03h
???
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=04h
--------O-2F12FFBL04-------------------------
INT 2F - FreeDOS - FDAK-DDT - SWITCH BLOCK DEVICE TO READ-WRITE
AX = 12FFh
BL = 04h
???
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=03h
--------O-2F12FFBL05-------------------------
INT 2F - FreeDOS - FDAK-DDT - TURN ACTIVITY INDICATOR ON
AX = 12FFh
BL = 05h
Note: not yet implemented as of January 1996
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=06h
--------O-2F12FFBL06-------------------------
INT 2F - FreeDOS - FDAK-DDT - TURN ACTIVITY INDICATOR OFF
AX = 12FFh
BL = 06h
Note: not yet implemented as of January 1996
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=05h
--------O-2F12FFBL07-------------------------
INT 2F - FreeDOS - FDAK-DDT - UNINSTALL
AX = 12FFh
BL = 07h
Return: ES = segment of FDAK memory block
Note: the caller must free the memory block returned in ES
(via INT 21/AH=49h)
SeeAlso: AX=12FFh/BL=00h
--------m-2F12FFBX0006-----------------------
INT 2F U - DR DOS 6, Novell DOS 7 - EMM386.EXE - VIDEO MEMORY SPACE CONTROL
AX = 12FFh
BX = 0006h
DX = 0000h
CX = function
0000h get status of video memory space (MEMMAX /V)
0001h map memory into video memory space (MEMMAX +V)
0002h unmap memory from video memory space (MEMMAX -V)
Return: CF clear if successful
AX = 0000h (successful)
BX = segment of reserved video RAM
CX = segment of used video RAM
DX = segment of first upper MCB
Notes: this functionality is provided by EMM386, and partially supported by
HIDOS.SYS
BL specifies which program handles the call, BH is the function number
SeeAlso: AX=D201h/BX=4849h
--------O-2F12FFBX0000-----------------------
INT 2F U - Novell DOS 7 - GET ???
AX = 12FFh
BX = 0000h
Return: AX = 0000h if supported
DX = ??? (internal data)
SeeAlso: AX=12FFh/BX=0001h
--------O-2F12FFBX0001-----------------------
INT 2F U - Novell DOS 7 - SET ???
AX = 12FFh
BX = 0001h
DX = new value for ???
Return: AX = 0000h if supported
SeeAlso: AX=12FFh/BX=0000h
--------O-2F12FFBX0002-----------------------
INT 2F U - Novell DOS 7 - GET ??? SIZE
AX = 12FFh
BX = 0002h
Return: AX = 0000h if supported
DX = size of/required-for ??? in paragraphs
SeeAlso: AX=12FFh/BX=0003h
--------O-2F12FFBX0003-----------------------
INT 2F U - Novell DOS 7 - SET ???
AX = 12FFh
BX = 0003h
DX = new value for ???
Return: AX = 0000h if supported
SeeAlso: AX=12FFh/BX=0002h
--------O-2F12FFBX0007-----------------------
INT 2F U - Novell DOS 7 - SCRIPT.EXE - GET ???
AX = 12FFh
BX = 0007h
CX = 0000h
Return: CF clear if installed
AX = 0000h
BX = ??? (4426h)
CX = ??? (0068h)
DX = PSP segment of resident code???
SI = ??? (4AFAh)
ES = resident code segment
--------O-2F12FFBX0009-----------------------
INT 2F U - Novell DOS 7 - SET ???
AX = 12FFh
BX = 0009h
DX = new value for ???
Return: ???
Note: the DX value is stored at offset 66h in SYSVARS and offset 18h in
the Novell DOS 7 internal variable table
--------m-2F12FFBX0106-----------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - GET VERSION???
AX = 12FFh
BX = 0106h
Return: CF clear if successful
AX = 0000h (successful)
BX = EDC0h (signature)
CL = memory manager variant (02h,03h)
(02h when DPMI/VCPI disabled, 03h when DPMI/VCPI loaded)
CH = ??? (00h)
DX = version??? (0300h for v3.0)
ES = segment of EMM386 low-memory stub
Notes: BL specifies which program handles the call, BH is the function number
if the word at ES:0012h is nonzero, if contains the offset within
segment ES of the CEMM-compatible entry point (see #2304)
if no other program has hooked INT 67, an alternate installation
check is to test for the string
"NOVELL EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
handler's segment; the word immediately preceding this string
contains the offset of the API entry point if it is nonzero
Index: entry point;Novell EMM386
(Table 2304)
Call Novell EMM386.EXE entry point with:
AH = 00h get memory manager's status???
???
AH = 01h set memory manager's status???
???
AH = 02h Weitek coprocessor support???
AL = subfunction???
more functions???
SeeAlso: #1200 at INT 21/AX=4402h/SF=02h,#3337 at INT 67/AX=FFA5h
--------m-2F12FFBL06-------------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - ???
AX = 12FFh
BL = 06h
BH = function (02h-09h)
???
Return: ???
--------O-2F12FFBX0EDC-----------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - CHECK IF MULTITASKING SUPPORT LOADED???
AX = 12FFh
BX = 0EDCh ('EDC' = Novell European Development Center)
Return: AX = 0000h if ??? loaded
CF clear
BX = 0000h
Notes: called by Novell DOS 7 TaskMgr
if this function returns with AX=0000h, then the code necessary to
support the API on INT 2F/AX=2780h is loaded and that API becomes
available for use
because the request is handled on the initial trap to the memory
manager caused by INT instructions, this function must be invoked
with an actual INT 2F instruction instead of some simulation such
as a far call to the address in the interrupt vector table
SeeAlso: AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h
--------D-2F13-------------------------------
INT 2F U - DOS 3.2+ - SET DISK INTERRUPT HANDLER
AH = 13h
DS:DX -> interrupt handler disk driver calls on read/write
ES:BX = address to restore INT 13 to on system halt (exit from root
shell) or warm boot (INT 19)
Return: DS:DX set by previous invocation of this function
ES:BX set by previous invocation of this function
Notes: IO.SYS hooks INT 13 and inserts one or more filters ahead of the
original INT 13 handler. The first is for disk change detection
on floppy drives, the second is for tracking formatting calls and
correcting DMA boundary errors, the third is for working around
problems in a particular version of IBM's ROM BIOS
before the first call, ES:BX points at the original BIOS INT 13; DS:DX
also points there unless IO.SYS has installed a special filter for
hard disk reads (on systems with model byte FCh and BIOS date
"01/10/84" only), in which case it points at the special filter
most DOS 3.2+ disk access is via the vector in DS:DX, although a few
functions are still invoked via an INT 13 instruction
this is a dangerous security loophole for any virus-monitoring software
which does not trap this call ("INT13", "Nomenklatura", and many
Bulgarian viruses are known to use it to get the original ROM entry
point)
SeeAlso: INT 13/AH=01h,INT 19,INT 9D"VIRUS"
--------N-2F13-------------------------------
INT 2F U - MS-NET - ???
AH = 13h
???
Return: ???
Note: supposedly used to move (or control the movement of) NCBs
--------U-2F1400-----------------------------
INT 2F C - NLSFUNC.COM - INSTALLATION CHECK
AX = 1400h
Return: AL = 00h not installed, OK to install
01h not installed, not OK
FFh installed
Notes: this function is called by the DOS v3.3+ kernel
supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
supported by DR DOS 5.0
documented for MS-DOS 5+, but undocumented in prior versions
SeeAlso: AX=1401h"NLSFUNC",AX=1402h"NLSFUNC"
--------D-2F1400-----------------------------
INT 2F - European MS-DOS 4.0 POPUP - "CheckPu" - INSTALLATION CHECK
AX = 1400h
Return: AX = FFFFh if installed
BX = maximum memory required to save screen and keyboard info
CF clear if successful
CF set on error
AX = error code
0002h invalid function
0004h unknown error
Note: the POPUP interface is used by background programs (see INT 21/AH=80h)
to communicate with the user
SeeAlso: AX=1401h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
--------U-2F1401-----------------------------
INT 2F CU - NLSFUNC.COM - CHANGE CODE PAGE
AX = 1401h
DS:SI -> internal code page structure (see #2305)
BX = new code page (see #1446 at INT 21/AX=6602h)
DX = country code???
Return: AL = status
00h successful
else DOS error code
Note: this function is called by the DOS v3.3+ kernel
SeeAlso: AX=1400h"NLSFUNC",AX=1402h"NLSFUNC",INT 21/AH=66h
Format of DOS 3.30 internal code page structure:
Offset Size Description (Table 2305)
00h 8 BYTEs ???
08h 64 BYTEs name of country information file (see #2306)
48h WORD system code page (see #1446 at INT 21/AX=6602h)
4Ah WORD number of supported subfunctions
4Ch 5 BYTEs data to return for INT 21/AX=6502h
51h 5 BYTEs data to return for INT 21/AX=6504h
56h 5 BYTEs data to return for INT 21/AX=6505h
5Bh 5 BYTEs data to return for INT 21/AX=6506h
60h 41 BYTEs data to return for INT 21/AX=6501h
Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS file:
Offset Size Description (Table 2306)
00h BYTE ID tag (FFh)
01h 7 BYTEs ASCII "COUNTRY"
08h 8 BYTEs ??? (00h)
10h BYTE ??? (01h)
11h BYTE ??? (00h)
12h BYTE ??? (01h)
13h DWORD offset of first entry in file (see #2307)
SeeAlso: #2310
Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS entry:
Offset Size Description (Table 2307)
00h WORD number of country-codepage entries following
02h N Country-Codepage entries:
Offset Size Description
00h WORD length of entry, not counting this word (000Ch)
02h WORD country ID
04h WORD codepage ID
06h WORD ??? (0000h)
08h WORD ??? (0000h)
0Ah DWORD offset of country-subfunction-header in file
(see #2308)
Notes: multiple codepages for a country are stored consecutively
PTS/DOS places a copyright string immediately following this structure,
though a copyright at the end of the file is preferable
SeeAlso: #2306
Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS country-subfunc header:
Offset Size Description (Table 2308)
00h WORD number of subfunction entries following
02h N subfunction entries
Offset Size Description
00h WORD length of subfunction entry, not counting this
word (usually 06h)
02h WORD subfunction ID
(value passed to INT 21/AH=65h in AL)
04h DWORD offset within file of subfunction data entry
(see #2309)
SeeAlso: #2307
Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS country-subfunc data::
Offset Size Description (Table 2309)
00h BYTE ID-tag (FFh)
01h 7 BYTEs table-type signature (blank-padded)
"CTYINFO" general country info (subfn 01h)
"UCASE " uppercase table (subfn 02h)
"LCASE " lowercase table (subfn 03h)
"FUCASE " filename uppercase table (subfn 04h)
"FCHAR " filename terminator table (subfn 05h)
"COLLATE" collating sequence (subfn 06h)
"DBCS " double-byte character table (subfn 07h)
08h WORD length of following table in bytes
(if 0000h for DBCS table, there will still be a word of 0000h)
---country info (01h)---
0Ah WORD country ID (see #1088 at AH=38h)
0Ch WORD code page (see #1446)
0Eh 34 BYTEs country-dependent info (see #1087 at AH=38h)
---uppercase table (02h)---
0Ah 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
---lowercase table (03h)---
0Ah 256 BYTEs lowercase equivalents (if any) of chars 00h to FFh
---filename uppercase table (04h)---
0Ah 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
---filename terminator table (05h)---
0Ah BYTE ??? (01h for MS-DOS 3.30-6.00)
0Bh BYTE lowest permissible character value for filename
0Ch BYTE highest permissible character value for filename
0Dh BYTE ??? (00h for MS-DOS 3.30-6.00)
0Eh BYTE first excluded character in range \ all characters in this
0Fh BYTE last excluded character in range / range are illegal
10h BYTE ??? (02h for MS-DOS 3.30-6.00)
11h BYTE number of illegal (terminator) characters
12h N BYTEs characters which terminate a filename: ."/\[]:|<>+=;,
---collating sequence (06h)---
0Ah 256 BYTEs values used to sort characters 00h to FFh
---DBCS table (07h)---
0Ah 2N BYTEs start/end for N lead byte ranges
WORD 0000h (end of table)
SeeAlso: #2308,#1439,#1440,#1442,#1443,#1444,#1445
Format of DR DOS/Novell DOS/OpenDOS COUNTRY.SYS file:
Offset Size Description (Table 2310)
00h 126 BYTEs copyright notice (terminated with Ctrl-Z; NUL-padded)
the copyright notice starts with the signature
"COUNTRY.SYS Rx.xx" where "x.xx" indicates the file format
revision, which is checked by the OS (revision is 2.00 for
DR DOS 3.41 and 2.01 for all newer versions of DR DOS,
Novell DOS, and OpenDOS)
7Eh WORD signature of file format revision
0EDCh = 2.00 (DR DOS 3.41)
EDC1h = 2.01 (all newer versions)
80h var country pointer records (see #2311)
(packed array of variable-size records)
SeeAlso: #2306
Format of DR DOS/Novell DOS/OpenDOS COUNTRY.SYS country pointer record::
Offset Size Description (Table 2311)
00h WORD country code (0000h if end of array)
02h WORD code page (see #1446)
04h WORD ??? (0000h)
06h 7 WORDs offsets in file for INT 21/AH=65h subfunctions 01h to 07h, or
0000h if no table for that subfunction
14h var country information
Notes: the end-of-file marker is a country pointer record filled entirely with
zeros
the data at which the pointers point is in the same format as the
tables returned by INT 21/AH=65h, except that the general-info
table for subfunction 01h does not contain the length word at the
beginning
SeeAlso: #2310
--------D-2F1401-----------------------------
INT 2F - European MS-DOS 4.0 POPUP - "PostPu" - OPEN/CLOSE POPUP SCREEN
AX = 1401h
DL = function (00h open, 01h close)
DH = wait flag
00h block until screen opens
01h return error if screen is not available
02h urgent--always open screen immediately
Return: CF clear if successful
BX = amount of memory needed to save screen and keyboard info,
0000h if default save location can be used (only if DH was 02h)
CF set on error
Note: the application using the screen is frozen until the popup screen is
closed
SeeAlso: AX=1400h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
--------U-2F1402-----------------------------
INT 2F CU - NLSFUNC.COM - GET EXTENDED COUNTRY INFO
AX = 1402h
BP = subfunction (same as AL for INT 21/AH=65h)
BX = code page (see #1446 at INT 21/AX=6602h)
DX = country code (see #1088 at INT 21/AH=38h)
DS:SI -> internal code page structure (see #2305)
ES:DI -> user buffer
CX = size of user buffer
Return: AL = status
00h successful
else DOS error code
Notes: this function is called by the DOS v3.3+ kernel on INT 21/AH=65h
code page structure apparently only needed for COUNTRY.SYS pathname
SeeAlso: AX=1401h"NLSFUNC",AX=1403h"NLSFUNC",AX=1404h,INT 21/AH=65h
--------D-2F1402-----------------------------
INT 2F - European MS-DOS 4.0 POPUP - "SavePu" - SAVE POPUP SCREEN
AX = 1402h
ES:DI -> save buffer (0000h:0000h for default buffer in POPUP)
Return: CF clear if successful
CF set on error
AX = error code (see #2312)
SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1403h"POPUP"
(Table 2312)
Values for POPUP error code:
0001h process does not own screen
0004h unknown error
0005h invalid pointer
--------U-2F1403-----------------------------
INT 2F CU - NLSFUNC.COM - SET CODE PAGE
AX = 1403h
DS:SI -> internal code page structure (see #2305)
BX = code page (see #1446 at INT 21/AX=6602h)
DX = country code (see #1088 at INT 21/AH=38h)
Return: AL = status
???
Note: this function is called by the DOS v3.3+ kernel on INT 21/AH=38h
SeeAlso: AX=1402h"NLSFUNC",AX=1404h,INT 21/AH=38h"SET"
--------D-2F1403-----------------------------
INT 2F - European MS-DOS 4.0 POPUP - "RestorePu" - RESTORE SCREEN
AX = 1403h
ES:DI -> buffer containing saved screen
(0000h:0000h for default buffer in POPUP)
Return: CF clear if successful
CF set on error
AX = error code (see #2312)
SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1402h"POPUP"
--------U-2F1404-----------------------------
INT 2F CU - NLSFUNC.COM - GET COUNTRY INFO
AX = 1404h
BX = code page (see #1446 at INT 21/AX=6602h)
DX = country code (see #1088 at INT 21/AH=38h)
DS:SI -> internal code page structure (see #2305)
ES:DI -> user buffer
Return: AL = status
???
Notes: this function is called by the DOS v3.3+ kernel on INT 21/AH=38h
code page structure apparently only needed for COUNTRY.SYS pathname
SeeAlso: AX=1402h,AX=1403h,INT 21/AH=38h"GET"
--------U-2F14FE-----------------------------
INT 2F U - DR DOS 5.0 NLSFUNC - GET EXTENDED COUNTRY INFORMATION
AX = 14FEh
BX = code page (FFFFh=global code page) (see #1446 at INT 21/AX=6602h)
DX = country ID (FFFFh=current country) (see #1088 at INT 21/AH=38h)
ES:DI -> country information buffer
CL = info ID
01h get general internationalization info
02h get pointer to uppercase table
04h get pointer to filename uppercase table
05h get pointer to filename terminator table
06h get pointer to collating sequence table
07h get pointer to Double-Byte Character Set table
CF set (used to return error if not installed)
Return: CF clear if successful
DS:SI -> requested information
CF set on error
Notes: DR DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
or FFh on entry.
the DR DOS kernel calls this function on INT 21/AX=6501h
the value in CL is not range-checked by the DR DOS 5.0 NLSFUNC
SeeAlso: #2313,AX=14FFh,INT 21/AH=65h
Format of DR DOS COUNTRY.SYS file:
Offset Size Description (Table 2313)
00h 126 BYTEs copyright notice (terminated with Ctrl-Z, padded with NULs)
7Eh WORD signature EDC1h
80h var country pointer records
Offset Size Description
00h WORD country code (0000h if end of array)
02h WORD code page (see #1446 at INT 21/AX=6602h)
04h WORD ??? (0000h)
06h 7 WORDs offsets in file for data tables for subfunctions
01h-07h
var var country information
--------U-2F14FF-----------------------------
INT 2F U - DR DOS 5.0 NLSFUNC - PREPARE CODE PAGE
AX = 14FFh
BX = code page (see #1446 at INT 21/AX=6602h)
Return: AX = ???
ZF set if AX=0000h
Notes: DR DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
or FFh on entry.
passes codepage preparation request to each character device supporting
the generic IOCTL call
SeeAlso: AX=14FEh,INT 21/AX=440Ch,INT 21/AX=6602h
--------U-2F1500-----------------------------
INT 2F - DOS 4.00 GRAPHICS.COM - INSTALLATION CHECK
AX = 1500h
Return: AX = FFFFh
ES:DI -> ??? (graphics data?)
Note: this installation check conflicts with the CD-ROM Extensions
installation check; moved to AX=AC00h in later versions
SeeAlso: AX=AC00h
--------d-2F1500BX0000-----------------------
INT 2F - CD-ROM - INSTALLATION CHECK
AX = 1500h
BX = 0000h
Return: BX = number of CD-ROM drive letters used
CX = starting drive letter (0=A:)
Notes: this installation check DOES NOT follow the format used by other
software
this installation check conflicts with the DOS 4.00 GRAPHICS.COM
installation check
BUG: this function may return an incorrect starting drive letter when
INTERLNK is installed
SeeAlso: AX=150Ch,AX=15FFh,INT 2F/AX=D000h"Lotus"
--------c-2F1500CH90-------------------------
INT 2F U - CDBLITZ v2.11 - INSTALLATION CHECK
AX = 1500h
CH = 90h (function number)
BX = 1234h (magic value for CDBLITZ)
Return: CX = 1234h if installed
CF clear
DX = BCD version number (DH = major, DL = minor)
Program: CDBLITZ is a CD-ROM cache by Blitz 'n' Software, Inc.
SeeAlso: AX=1500h/CH=99h
--------c-2F1500CH91-------------------------
INT 2F U - CDBLITZ v2.11 - GET STATISTICS
AX = 1500h
CH = 91h (function number)
BX = 1234h (magic value for CDBLITZ)
Return: CF clear
ES:BX -> statistics record (see #2314)
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=97h
Format of CDBLITZ statistics record:
Offset Size Description (Table 2314)
00h WORD cache mode (see also AX=1500h/CH=94h)
0001h 'min', 0002h 'max'
02h DWORD number of read calls???
06h DWORD total number of sectors read
0Ah DWORD unused??? (zero)
0Eh DWORD number of cache hit sectors
12h WORD cache size in KB
14h WORD unused??? (zero)
16h WORD cache state (0000h disabled, 0001h enabled)
--------c-2F1500CH92-------------------------
INT 2F U - CDBLITZ v2.11 - ENABLE CACHE
AX = 1500h
CH = 92h (function number)
BX = 1234h (magic value for CDBLITZ)
Return: CF clear
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=93h,AX=1500h/CH=94h
--------c-2F1500CH93-------------------------
INT 2F U - CDBLITZ v2.11 - DISABLE CACHE
AX = 1500h
CH = 93h (function number)
BX = 1234h (magic value for CDBLITZ)
Return: CF clear
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=92h,AX=1500h/CH=95h
--------c-2F1500CH94-------------------------
INT 2F U - CDBLITZ v2.11 - SET 'MAX' MODE (CACHE BOTH DIRECTORIES AND DATA)
AX = 1500h
CH = 94h (function number)
BX = 1234h (magic value for CDBLITZ)
Return: CF clear
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=92h,AX=1500h/CH=95h
--------c-2F1500CH95-------------------------
INT 2F U - CDBLITZ v2.11 - SET 'MIN' MODE (CACHE ONLY DIRECTORY ENTRIES)
AX = 1500h
CH = 95h (function number)
BX = 1234h (magic value for CDBLITZ)
Return: CF clear
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=94h
--------c-2F1500CH96-------------------------
INT 2F U - CDBLITZ v2.11 - FLUSH CACHE
AX = 1500h
CH = 96h (function number)
BX = 1234h (magic value for CDBLITZ)
Return: CF clear
Note: this function resets the counts for number of sectors read and number
of cache hits, but no other values in the statistics record
(see #2314)
SeeAlso: AX=1500h/CH=90h
--------c-2F1500CH97-------------------------
INT 2F U - CDBLITZ v2.11 - GET CACHE STATISTICS
AX = 1500h
CH = 97h (function number)
BX = 1234h (magic value for CDBLITZ)
Return: CF clear
AL = cache mode (01h 'min', 02h 'max') (see also AX=1500h/CH=94h)
AH = cache state (00h disabled, 01h enabled)
BX = cache size in KB
DX:CX = total number of reads
DI:SI = number of cache hits
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=91h
--------c-2F1500CH99-------------------------
INT 2F U - CDBLITZ v2.11 - UNINSTALL
AX = 1500h
CH = 99h (function number)
BX = 1234h (magic value for CDBLITZ)
Return: CF clear
???
Program: CDBLITZ is a CD-ROM cache by Blitz 'n' Software, Inc.
SeeAlso: AX=1500h/CH=90h
--------d-2F1501-----------------------------
INT 2F - CD-ROM - GET DRIVE DEVICE LIST
AX = 1501h
ES:BX -> buffer to hold drive letter list (5 bytes per drive letter)
Return: buffer filled, for each drive letter
BYTE subunit number in driver
DWORD address of device driver header (see #1332)
Note: reportedly returns AX=0000h and an invalid address under Windows95;
other reports say it works fine
SeeAlso: AX=1510h
--------d-2F1502-----------------------------
INT 2F - CD-ROM - GET COPYRIGHT FILE NAME
AX = 1502h
ES:BX -> 38-byte buffer for name of copyright file
CX = drive number (0=A:)
Return: CF set if drive is not a CD-ROM drive
AX = 000Fh (invalid drive)
CF clear if successful
SeeAlso: AX=1503h
--------d-2F1503-----------------------------
INT 2F - CD-ROM - GET ABSTRACT FILE NAME
AX = 1503h
ES:BX -> 38-byte buffer for name of abstract file
CX = drive number (0=A:)
Return: CF set if drive is not a CD-ROM drive
AX = 000Fh (invalid drive)
CF clear if successful
SeeAlso: AX=1502h,AX=1504h
--------d-2F1504-----------------------------
INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME
AX = 1504h
ES:BX -> 38-byte buffer for name of bibliographic documentation file
CX = drive number (0=A:)
Return: CF set if drive is not a CD-ROM drive
AX = 000Fh (invalid drive)
CF clear if successful
SeeAlso: AX=1502h,AX=1503h
--------d-2F1505-----------------------------
INT 2F - CD-ROM - READ VTOC
AX = 1505h
ES:BX -> 2048-byte buffer
CX = drive number (0=A:)
DX = sector index (0=first volume descriptor,1=second,...)
Return: CF set on error
AX = error code (15=invalid drive,21=not ready)
CF clear if successful
AX = volume descriptor type (1=standard,FFh=terminator,0=other)
Note: This function was not supported by Novell DOS 7 NWCDEX prior to the
08/16/94 update
--------d-2F1506-----------------------------
INT 2F - CD-ROM - TURN DEBUGGING ON
AX = 1506h
BX = debugging function to enable
Note: reserved for development
SeeAlso: AX=1507h
--------d-2F1507-----------------------------
INT 2F - CD-ROM - TURN DEBUGGING OFF
AX = 1507h
BX = debugging function to disable
Note: reserved for development
SeeAlso: AX=1506h
--------d-2F1508-----------------------------
INT 2F - CD-ROM - ABSOLUTE DISK READ
AX = 1508h
ES:BX -> buffer
CX = drive number (0=A:)
SI:DI = starting sector number
DX = number of sectors to read
Return: CF set on error
AL = error code (0Fh invalid drive,15h not ready)
CF clear if successful
Note: returns error 15h (not ready) under Windows95 if the starting sector
number is less than 10h
SeeAlso: AX=1509h
--------d-2F1509-----------------------------
INT 2F - CD-ROM - ABSOLUTE DISK WRITE
AX = 1509h
ES:BX -> buffer
CX = drive number (0=A:)
SI:DI = starting sector number
DX = number of sectors to write
Note: corresponds to INT 26h and is currently reserved and nonfunctional,
but could be implemented for CD-R and CD-RW drives
SeeAlso: AX=1508h
--------d-2F150A-----------------------------
INT 2F - CD-ROM - RESERVED
AX = 150Ah
--------d-2F150B-----------------------------
INT 2F - CD-ROM v2.00+ - DRIVE CHECK
AX = 150Bh
CX = drive number (0=A:)
Return: BX = ADADh if MSCDEX.EXE installed
AX = support status
0000h if drive not supported
nonzero if supported
SeeAlso: AX=150Dh
--------d-2F150CBX0000-----------------------
INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION (GET VERSION)
AX = 150Ch
BX = 0000h
Return: BH = major version
BL = minor version
Notes: MSCDEX.EXE versions prior to 2.00 leave BX unchanged, thus BX should
be 0000h on entry
Corel's CORELCDX.COM v1.01d returns 2.20, v1.12a returns 2.21
Meridian Data's CDNETEX.EXE returns its own version number, e.g. 4.70
J.M.A. Hall's CDEMU2.COM returns 2.10 (it is an MSCDEX emulator for
networked CD-ROM drives)
Windows95 returns v2.95
SeeAlso: AX=1500h"CD-ROM",AX=15FFh"CORELCDX"
--------d-2F150D-----------------------------
INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS
AX = 150Dh
ES:BX -> buffer for drive letter list (1 byte per drive)
Return: buffer filled with drive numbers (0=A:). Each byte corresponds
to the drive in the same position for function 1501h
SeeAlso: AX=150Bh
--------d-2F150E-----------------------------
INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE
AX = 150Eh
BX = subfunction
00h get preference
DX = 0000h
Return: DX = preference settings
01h set preference
DH = volume descriptor preference
01h = primary volume descriptor
02h = supplementary volume descriptor
DL = supplementary volume descriptor preference
01h = shift-Kanji
CX = drive number (0=A:)
Return: CF set on error
AX = error code (15=invalid drive,1=invalid function)
CF clear if successful
--------d-2F150F-----------------------------
INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY
AX = 150Fh
CL = drive number (0=A:)
CH bit 0 = copy flag
clear if direct copy
set if copy to structure which removes ISO/High Sierra diffs
ES:BX -> ASCIZ path name
SI:DI -> buffer for directory entry (see #2315,#2316)
must be >= 255 bytes for direct copy, >= 285 for canonical
Return: CF set on error
AX = error code
CF clear if successful
AX = disk format (0=High Sierra,1=ISO 9660)
Note: this function was not supported by Novell DOS 7 NWCDEX prior to the
08/16/94 update
Format of CD-ROM directory entry (direct copy):
Offset Size Description (Table 2315)
00h BYTE length of directory entry
01h BYTE length of XAR in Logical Block Numbers
02h DWORD LBN of data, Intel (little-endian) format
06h DWORD LBN of data, Motorola (big-endian) format
0Ah DWORD length of file, Intel format
0Eh DWORD length of file, Motorola format
---High Sierra---
12h 6 BYTEs date and time
18h BYTE bit flags
19h BYTE reserved
---ISO 9660---
12h 7 BYTEs date and time
(seventh byte is offset from GMT in 15-minute increments)
19h BYTE bit flags
---both formats---
1Ah BYTE interleave size
1Bh BYTE interleave skip factor
1Ch WORD volume set sequence number, Intel format
1Eh WORD volume set sequence number, Motorola format
20h BYTE length of file name
21h N BYTEs file name
BYTE (optional) padding if filename is odd length
N BYTEs system data
SeeAlso: #2316,#1041
Format of CD-ROM directory entry (canonicalized):
Offset Size Description (Table 2316)
00h BYTE length of XAR in Logical Block Numbers
01h DWORD Logical Block Number of file start
05h WORD size of disk in logical blocks
07h DWORD file length in bytes
0Bh 7 BYTEs date and time
12h BYTE bit flags
13h BYTE interleave size
14h BYTE interleave skip factor
15h WORD volume set sequence number
17h BYTE length of file name
18h 38 BYTEs ASCIZ filename
3Eh WORD file version number
40h BYTE number of bytes of system use data
41h 220 BYTEs system use data
SeeAlso: #2315
--------d-2F1510-----------------------------
INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST
AX = 1510h
CX = CD-ROM drive letter (0 = A, 1 = B, etc)
ES:BX -> CD-ROM device driver request header (see #2284 at AX=0802h)
Return: CF clear if device driver has been called (check the request header's
status word to determine whether an error has occurred)
ES:BX request header updated
CF set if device driver has not been called
AX = error code (000Fh = invalid drive, 0001h = invalid function)
ES:BX request header unchanged
Notes: MSCDEX initializes the device driver request header's subunit field
based on the drive number specified in CX
MSCDEX v2.21 through v2.25 (at least) return error code AX=0001h if
nested calls are attempted
BUGS: Novell DOS 7 NWCDEX prior to the 12/13/94 update did not initialize
the subunit field
Windows95 sets CF if CX isn't a CD-ROM drive but leaves CF unchanged
if the drive is in fact a CD-ROM
SeeAlso: AX=0802h
--------d-2F15FFBX0000-----------------------
INT 2F - CD-ROM - CORELCDX - INSTALLATION CHECK
AX = 15FFh
BX = 0000h
Return: BX = ABCDh if CORELCDX loaded
Note: Corel's CORELCDX.COM is a replacement for MSCDEX.EXE; it also supports
the standard MSCDEX installation check calls AX=1500h and AX=150Ch
SeeAlso: AX=1500h"CD-ROM",AX=150Ch
--------W-2F1600-----------------------------
INT 2F - MS Windows - WINDOWS ENHANCED MODE INSTALLATION CHECK
AX = 1600h
Return: AL = status
00h neither Windows 3.x enhanced mode nor Windows/386 2.x running
01h Windows/386 2.x running
80h XMS version 1 driver installed (neither Windows 3.x enhanced
mode nor Windows/386 2.x running) (obsolete--see note)
FFh Windows/386 2.x running
AL = anything else
AL = Windows major version number >= 3
AH = Windows minor version number
Notes: INT 2F/AH=16h comprises an API for non-Windows programs (DOS device
drivers, TSRs, and applications) to cooperate with multitasking
Windows/386 2.x and Windows 3.x and higher enhanced mode.
certain calls are also supported in the Microsoft 80286 DOS extender in
Windows standard mode
this function served as the installation check and AX=1610h served to
get the driver entry point for XMS version 1, which is now obsolete.
Use AX=4300h and AX=4310h instead
SeeAlso: AX=160Ah,AX=1610h,AX=4300h,AX=4680h
Index: installation check;XMS version 1
--------W-2F1602-----------------------------
INT 2F - MS Windows/386 2.x - GET API ENTRY POINT
AX = 1602h
Return: ES:DI -> Windows/386 2.x API procedure entry point
Notes: this interface is supported in Windows 3.x and Windows95 only for 2.x
compatibility
to get the current virtual machine (VM) ID in Windows/386 2.x:
AX = 0000h
ES:DI -> return address
JUMP to address returned from INT 2F/AX=1602h
After JUMP, at return address:
BX = current VM ID.
SeeAlso: AX=C020h
--------W-2F1603-----------------------------
INT 2F C - MS Windows/386 - GET INSTANCE DATA
AX = 1603h
Return: AX = 5248h ('RH') if supported
DS:SI -> Windows/386 instance data (see #2317)
Notes: reportedly supported by RM Nimbus MS-DOS 3.3 kernel
this function is called by DOSMGR when AX=1607h/BX=0015h is not
supported, as is the case in DOS versions prior to 5.0
see Geoff Chappell's book _DOS_Internals_ for additional discussions of
this function, DOSMGR's behavior, and instancing in general
SeeAlso: AX=1607h/BX=0015h
Format of Windows/386 instance data:
Offset Size Description (Table 2317)
00h WORD segment of IO.SYS (0000h = default 0070h)
02h WORD offset in IO.SYS of STACKS data structure (DOS 3.2x)
0000h if not applicable
04h WORD number of instance data entries (max 32)
06h Array of instance data entries
Offset Size Description
00h WORD segment (0002h = DOS kernel)
02h WORD offset
04h WORD size
--------W-2F1605-----------------------------
INT 2F - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX INIT BROADCAST
AX = 1605h
ES:BX = 0000h:0000h
DS:SI = 0000h:0000h
CX = 0000h
DX = flags
bit 0 = 0 if Windows enhanced-mode initialization
bit 0 = 1 if Microsoft 286 DOS extender initialization
bits 1-15 reserved (undefined)
DI = version number (major in upper byte, minor in lower)
Return: CX = 0000h if okay for Windows to load
CX = FFFFh (other registers unchanged) if Windows 3.0 in standard mode
CX <> 0 if Windows should not load
ES:BX -> startup info structure (see #2318)
DS:SI -> virtual86 mode enable/disable callback or 0000h:0000h
(see #2321)
Notes: the Windows enhanced mode loader and Microsoft 286 DOS extender will
broadcast an INT 2F/AX=1605h call when initializing. Any DOS device
driver or TSR can watch for this broadcast and return the appropriate
values. If the driver or TSR returns CX <> 0, it is also its
responsibility to display an error message (however, Windows95 is
reported to load regardless of the returned CX).
each handler must first chain to the prior INT 2F handler with
registers unchanged before processing the call
if the handler requires local data on a per-VM basis, it must store the
returned ES:BX in the "next" field of a startup info structure and
return a pointer to that structure in ES:BX
a single TSR may set the V86 mode enable/disable callback; if DS:SI is
already nonzero, the TSR must fail the initialization by setting CX
nonzero
MSD checks for Windows 3.0 running in standard mode by testing whether
CX=FFFFh and other registers are unchanged on return
Novell DOS v7.0 (Update 8 - Update 11) TASKMGR in multitasking mode
uses this broadcast, even if TASKMGR.INI sets WinPresent= to OFF
Microsoft's EMM386.EXE for DOS 5+ when installed with the NOEMS option
changes its driver name from EMMQXXX0 to EMMXXXX0 while Windows is
active
SeeAlso: AX=1606h,AX=1608h,AX=4B05h
Format of Windows Startup Information Structure:
Offset Size Description (Table 2318)
00h 2 BYTEs major, minor version of info structure
02h DWORD pointer to next startup info structure or 0000h:0000h
06h DWORD pointer to ASCIZ name of virtual device file or 0000h:0000h
0Ah DWORD virtual device reference data (see #2320)
(only used if above nonzero)
0Eh DWORD pointer to instance data records (see #2319) or 0000h:0000h
Format of one Instance Item in array:
Offset Size Description (Table 2319)
00h DWORD address of instance data (end of array if 0000h:0000h)
04h WORD size of instance data
Format of Virtual Device Reference Data:
Offset Size Description (Table 2320)
00h DWORD physical address of ??? or 00000000h
04h DWORD physical address of ??? table
08h DWORD "DEST_PAGE" address to which pages must be mapped
0Ch N DWORDs "SRC_PAGE" physical addresses of the pages
00000000h = end of table
Note: EMM386.EXE sets the first pointer to the start of the device driver
chain, the second pointer to a field of 40h bytes followed by a
16-bit offset to the end of the SRC_PAGE table, and DEST_PAGE to
the start segment of the UMB area
(Table 2321)
Values Windows virtual mode enable/disable procedure is called with:
AX = 0000h disable V86 mode
AX = 0001h enable V86 mode
interrupts disabled
Return: CF set on error
CF clear if successful
interrupts disabled
--------W-2F1606-----------------------------
INT 2F - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX EXIT BROADCAST
AX = 1606h
DX = flags
bit 0 = 0 if Windows enhanced-mode exit
bit 0 = 1 if Microsoft 286 DOS extender exit
bits 1-15 reserved (undefined)
Notes: if the init broadcast fails (AX=1605h returned CX <> 0), then this
broadcast will be issued immediately.
this call will be issued in real mode
Novell DOS v7.0 (Update 8 - Update 15) TASKMGR in multitasking mode
uses this broadcast, even if TASKMGR.INI sets WinPresent= to OFF
SeeAlso: AX=1605h,AX=1609h
--------W-2F1607-----------------------------
INT 2F - MS Windows - VIRTUAL DEVICE CALL OUT API
AX = 1607h
BX = virtual device ID (see #2329)
CX = (usually) callout subfunction
Return: (usually) AX,BX,CX,DX,ES contain results
Notes: more of a convention than an API, this call specifies a standard
mechanism for Windows enhanced-mode virtual devices (VxD's) to talk
to DOS device drivers and TSRs
see below for details on several virtual devices
SeeAlso: AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h,AX=1607h/BX=0015h
SeeAlso: AX=1607h/BX=0018h,AX=1684h"DEVICE API",AX=C020h
--------W-2F1607BX0006-----------------------
INT 2F - MS Windows - "V86MMGR" VIRTUAL DEVICE API
AX = 1607h
BX = 0006h (VxD identifier of "V86MMGR")
CX = 0000h
Return: AX = status
0000h if local A20 state changed
1607h if A20 unchanged
other if global A20 state changed
SeeAlso: AX=1607h"CALL OUT API"
--------W-2F1607BX000C-----------------------
INT 2F - MS Windows - "VMD" VIRTUAL MOUSE DEVICE API
AX = 1607h
BX = 000Ch (VxD identifier of "VMD")
Return: CX = nonzero if mouse driver already virtualized
Note: VMD (Virtual Mouse Driver) calls this and then checks whether CX is
nonzero; if yes, it will not automatically virtualize the mouse
driver. This would be used if MOUSE.COM already virtualizes
itself using the Windows API.
SeeAlso: AX=1607h/BX=0014h,AX=1607h/BX=0015h
--------W-2F1607BX000D-----------------------
INT 2F C - MS Windows95 - "VKD" VIRTUAL DEVICE - ??? CALLOUT
AX = 1607h
BX = 000Dh (VxD ID for VKD)
???
Return: ???
SeeAlso: AX=1607h"CALL OUT API",#2329
--------W-2F1607BX0010-----------------------
INT 2F C - MS Windows 3.1 - "BLOCKDEV" VIRTUAL HARD DISK DEVICE API
AX = 1607h
BX = 0010h (VxD identifier of "BLOCKDEV")
CX = function
0001h starting FastDisk compatibility tests
0002h ending FastDisk compatibility tests
0003h check if FastDisk installation allowed
Return: CX = 0000h if allowed
Note: this interface is called by the Windows FastDisk driver (such as
WDCTRL) when it thinks that the INT 13h handler immediately below
IO.SYS's INT 13h code is not in ROM; it should be supported by any
program which hooks itself underneath IO.SYS's INT 13h code with
INT 2F/AH=13h
SeeAlso: AX=1607h/BX=0014h,INT 2F/AH=13h
--------W-2F1607BX0014-----------------------
INT 2F - MS Windows - "VNETBIOS" VIRTUAL DEVICE API
AX = 1607h
BX = 0014h (VxD identifier of "VNETBIOS")
Return: ES:DI -> 128-byte table specifying VNETBIOS actions for each NetBIOS
command code (see #2322)
Note: VNETBIOS (Virtual NetBIOS) calls this function to determine whether
the NetBIOS has an extensions Windows should know about
SeeAlso: AX=1607h/BX=000Ch,AX=1607h/BX=0010h,AX=1607h/BX=0015h
(Table 2322)
Values for VNETBIOS action code:
00h "VN_Unknown" unknown command
04h "VN_No_Map" no memory mapping necessary
08h "VN_Map_In" input buffer is quickly used, so no global mapping needed
0Ch "VN_Map_In" output buffer is quickly used, so no global mapping needed
10h "VN_Map_In_Out" buffer is quickly used, so no global mapping needed
14h "VN_Chain_Send" the chain-send command
18h "VN_Cancel" special case for cancel command
1Ch "VN_Buffer_In" buffer is incoming
20h "VN_Buffer_Out" buffer is outgoing
24h "VN_Buffer_In_Out" buffer used for both incoming and outgoing data
--------D-2F1607BX0015-----------------------
INT 2F C - MS Windows - "DOSMGR" VIRTUAL DEVICE API
AX = 1607h
BX = 0015h (VxD identifier of "DOSMGR")
CX = function
0000h query instance processing
DX = 0000h
Return: CX = state
0000h not instanced
other instanced (DOS 5+ kernel returns 0001h)
DX = segment of DOS drivers or 0000h for
default of 0070h
ES:BX -> patch table (see #2324)
0001h set patches in DOS
DX = bit mask of patch requests (see #2323)
Return: AX = B97Ch
BX = bit mask of patches applied (see #2323)
DX = A2ABh
0002h remove patches in DOS (ignored by DOS 5.0 kernel)
DX = bit mask of patch requests (see #2323)
Return: CX = 0000h (DOS 5-6)
Note: return values are ignored by DOSMGR in Windows 3.1
0003h get size of DOS data structures
DX = bit mask of request (only one bit can be set)
bit 0: Current Directory Structure size
Return: if supported request:
AX = B97Ch
CX = size in bytes of requested structure
DX = A2ABh
else:
CX = 0000h
all other registers preserved
0004h determine instanced data structures
Return: AX = B97Ch if supported
DX = A2ABh if supported (DOS 5+ kernel returns 0000h)
BX = bit mask of instanced items
bit 0: CDS
bit 1: SFT
bit 2: device list
bit 3: DOS swappable data area
0005h get device driver size
ES = segment of device driver
Return: DX:AX = 0000h:0000h on error (not dev. driver segment)
DX:AX = A2ABh:B97Ch if successful
BX:CX = size of device driver in bytes
Notes: DOSMGR (DOS Manager) will check whether the OEM DOS/BIOS data has
been instanced via this API and will not perform its own default
instancing of the normal DOS/BIOS data if so; if this API is not
supported, DOSMGR will also try to access instancing data through
INT 2F/AX=1603h
these functions are supported by the DOS 5+ kernel; DOSMGR contains
tables of instancing information for earlier versions of DOS
see Geoff Chappell's book _DOS_Internals_ for additional discussions of
DOSMGR's behavior and instancing in general
SeeAlso: AX=1603h,AX=1605h,AX=1607h/BX=000Ch,AX=1607h/BX=0014h
SeeAlso: AX=1684h"DEVICE API"
Bitfields for DOSMGR patch requests:
Bit(s) Description (Table 2323)
0 enable critical sections
1 NOP setting/checking user ID
2 turn INT 21/AH=3Fh on STDIN into polling loop
3 trap stack fault in "SYSINIT" to WIN386
4 BIOS patch to trap "Insert disk X:" to WIN386
Format of DOSMGR patch table:
Offset Size Description (Table 2324)
00h 2 BYTEs DOS version (major, minor)
02h WORD offset in DOS data segment of "SAVEDS"
04h WORD offset in DOS data segment of "SAVEBX"
06h WORD offset in DOS data segment of InDOS flag
08h WORD offset in DOS data segment of User ID word
0Ah WORD offset in DOS data segment of "CritPatch" table to enable
critical section calls (see INT 2A/AH=80h)
0Ch WORD (DOS 5+ only) offset in DOS data segment of "UMB_HEAD",
containing segment of last MCB in conventional memory
--------W-2F1607BX0018-----------------------
INT 2F C - MS Windows - "VMPoll" VIRTUAL DEVICE - IDLE CALLOUT
AX = 1607h
BX = 0018h (VMPoll VxD ID) (see #2329)
CX = 0000h
Return: AX = status
0000h if timeslice used
nonzero if timeslice not needed
Note: when VMPoll makes this callout, all virtual machines are idle, and any
interested TSR can use the opportunity to perform background
processing
SeeAlso: AX=1607h"CALL OUT API",AX=1689h
--------W-2F1607BX0021--------------------------------------
INT 2F C - MS Windows - "PageFile" VIRTUAL DEVICE - GET LOCK BYTE
AX = 1607h
BX = 0021h (PageFile VxD ID)
CX = 0000h
Return: AX = status
0000h success
ES:DI -> cache lock byte in disk cacher
other no disk cache or unsupported
Notes: PageFile issues this call on real-mode initialization in order to allow
disk caches to provide it with a byte which it can use to temporarily
lock the disk cache; VMPOLL also issues this call, so it is made
twice each time Windows starts up
if this call fails, PageFile falls back to other techniques for locking
the disk cache
SeeAlso: AX=1607h"CALL OUT API"
--------W-2F1607BX002D-----------------------
INT 2F C - MS Windows - "W32S" VIRTUAL DEVICE - ??? CALLOUT
AX = 1607h
BX = 002Dh (VxD ID for W32S)
???
Return: ???
SeeAlso: AX=1607h"CALL OUT API",#2329
--------W-2F1607BX0040-----------------------
INT 2F C - MS Windows - "IFSMgr" VIRTUAL DEVICE - ??? CALLOUT
AX = 1607h
BX = 0040h (VxD ID for IFSMgr)
???
Return: ???
SeeAlso: AX=1607h"CALL OUT API",#2329
--------W-2F1607BX0446-----------------------
INT 2F C - MS Windows - "VADLIBD" VIRTUAL DEVICE - ??? CALLOUT
AX = 1607h
BX = 0446h (VxD ID for VADLIBD)
???
Return: ???
SeeAlso: AX=1607h"CALL OUT API",#2329
--------W-2F1607BX0484-----------------------
INT 2F C - MS Windows - "IFSMgr" VIRTUAL DEVICE - ??? CALLOUT
AX = 1607h
BX = 0484h (VxD ID for IFSMgr)
???
Return: ???
SeeAlso: AX=1607h"CALL OUT API",#2329
--------W-2F1607BX0487-----------------------
INT 2F C - MS Windows - "NWSUP" VIRTUAL DEVICE - ??? CALLOUT
AX = 1607h
BX = 0487h (VxD ID for NWSUP)
???
Return: ???
SeeAlso: AX=1607h"CALL OUT API",#2329
--------E-2F1607BX22C0-----------------------
INT 2F C - Rational Systems DOS/4GW - ???
AX = 1607h
BX = 22C0h
???
Return: ???
SeeAlso: INT 15/AX=BF02h,INT 15/AX=BF04h,#2329
--------W-2F1607BX28A1-----------------------
INT 2F C - MS Windows - "PharLap" VIRTUAL DEVICE - ??? CALLOUT
AX = 1607h
BX = 28A1h (VxD ID for PharLap)
???
Return: ???
SeeAlso: AX=1607h"CALL OUT API",#2329
--------W-2F1607BX7A5F-----------------------
INT 2F C - MS Windows - "SIWVID" VIRTUAL DEVICE - ??? CALLOUT
AX = 1607h
BX = 7A5Fh (VxD ID for SIWVID)
???
Return: ???
SeeAlso: AX=1607h"CALL OUT API",#2329
--------W-2F1608-----------------------------
INT 2F C - MS Windows - WINDOWS ENHANCED MODE INIT COMPLETE BROADCAST
AX = 1608h
Notes: called after all installable devices have been initialized
real-mode software may be called between the Windows enhanced-mode init
call (AX=1605h) and this call; the software must detect this
situation
SeeAlso: AX=1605h,AX=1609h
--------W-2F1609-----------------------------
INT 2F C - MS Windows - WINDOWS ENHANCED MODE BEGIN EXIT BROADCAST
AX = 1609h
Note: called at the beginning of a normal exit sequence; not made in the
event of a fatal system crash
SeeAlso: AX=1606h,AX=1608h
--------W-2F160A-----------------------------
INT 2F - MS Windows 3.1 - IDENTIFY WINDOWS VERSION AND TYPE
AX = 160Ah
Return: AX = 0000h if call supported
BX = version (BH=major, BL=minor)
CX = mode (0002h = standard, 0003h = enhanced)
SeeAlso: AX=1600h,AX=4680h
--------W-2F160B-----------------------------
INT 2F - MS Windows 3.1 - IDENTIFY TSRs
AX = 160Bh
ES:DI = 0000h:0000h
Return: ES:DI -> TSR information structure (see #2325)
Desc: this call allows Windows-aware TSRs to make themselves known to
Windows.
Note: the TSR should first chain to the previous INT 2F handler, then
allocate a communication structure, place the returned ES:DI
pointer in the first field, and return a pointer to the new
structure
SeeAlso: AX=1605h,AX=160Ch,AX=4B01h,AX=4B05h
Format of TSR-to-Windows information structure:
Offset Size Description (Table 2325)
00h DWORD pointer to next structure
04h WORD PSP segment
06h WORD API version ID (0100h)
08h WORD EXEC flags (how to load command specified by "exec_cmd")
bit 0: "WINEXEC"
bit 1: "LOADLIBRARY"
bit 2: "OPENDRIVER"
0Ah WORD "exec_cmd_show" (see #2326)
0Ch DWORD "exec_cmd" pointer to command line to be executed
10h 4 BYTEs reserved (0)
14h DWORD pointer to TSR ID block (see #2327)
18h DWORD pointer to TSR data block or 0000h:0000h
(Table 2326)
Values for TSR information structure "exec_cmd_show":
00h HIDE
01h SHOWNORMAL
02h SHOWMINIMIZED
03h SHOWMAXIMIZED
04h SHOWNOACTIVE
05h SHOW
06h MINIMIZE
07h SHOWMINNOACTIVE
08h SHOWNA
09h RESTORE
Note: this value is passed as the second parameter to the WinExec(),
LoadLibrary(), or OpenDriver() call used to execute a requested
command line
SeeAlso: #2325
Format of Norton Utilities 6.0 TSR ID block:
Offset Size Description (Table 2327)
00h WORD length of name string
02h N BYTEs name of TSR's executable
SeeAlso: #2325
--------W-2F160C-----------------------------
INT 2F - MS Windows 3.1 - DETECT ROMs
AX = 160Ch
???
Return: ???
Note: used by ROM Windows; appears to be a NOP under standard Windows95
SeeAlso: AX=160Bh,INT 21/AH=6Dh"ROM"
--------D-2F160E-----------------------------
INT 2F U - MS-DOS 7 kernel - BOOT LOGO SUPPORT???
AX = 160Eh
BL = subfunction
00h get ???
AX = state of flag manipulated by subfn 04h and 05h
0000h clear
FFFFh set
DX = ??? (0000h)
01h link in INT 10h??? handlers
02h unlink INT 10h??? handlers
03h ???
04h set ??? flag
05h clear ??? flag
Return: AX = 0000h if supported
???
SeeAlso: AX=160Fh,AX=1611h,AX=1614h
--------D-2F160F-----------------------------
INT 2F U - MS-DOS 7 kernel - GET/SET ??? HANDLER
AX = 160Fh
BL = subfunction
00h get ??? handler
Return: AX = 0000h if supported
CX:DX -> handler to which control is passed after
??? executes
01h set ??? handler
CX:DX -> new handler for ???
Return: AX = 0000h if supported
Notes: this function is not supported if ??? in the IO.SYS drivers portion of
the kernel is an IRET instruction (as is the case on my system)
rather than a FAR JMP
the indicated handler seems to be related to INT 10 processing
SeeAlso: AX=160Eh,AX=1611h,AX=1614h
--------m-2F1610-----------------------------
INT 2F - XMS v1.x only - GET DRIVER ADDRESS
AX = 1610h
details unavailable
Note: this function and AX=1600h were only used in XMS version 1 and are now
obsolete. Use AX=4300h and AX=4310h instead
SeeAlso: AX=1600h,AX=4310h
--------D-2F1611-----------------------------
INT 2F U - MS-DOS 7 kernel - GET SHELL PARAMETERS
AX = 1611h
Return: AX = 0000h if supported
DS:DX -> primary shell's executable name
DS:SI -> prinary shell command line (counted string)
BH = ??? (00h)
BL = ??? (00h)
Desc: return the program name and commandline from the CONFIG.SYS SHELL=
statement
SeeAlso: AX=160Eh,AX=160Fh,AX=1612h,AX=4A33h
--------D-2F1612-----------------------------
INT 2F U - MS-DOS 7 kernel - GET ???
AX = 1612h
Return: AX = 0000h if supported
ES:BX -> ??? data (see #2328)
Note: called by VTD.VXD
SeeAlso: AX=160Fh,AX=1611h,AX=1613h
Format of DOS7 ??? kernel data:
Offset Size Description (Table 2328)
00h WORD ??? (0001h)
02h DWORD -> ??? function (call with DS=high word of this field)
the indicated function vectors through the INT 13 hook at
0070h:00B4h and then forces the A20 gate open
???
--------D-2F1613-----------------------------
INT 2F - MS-DOS 7 kernel - GET SYSTEM.DAT (REGISTRY FILE) PATHNAME
AX = 1613h
ES:DI -> buffer for full ASCIZ pathname to Windows95 SYSTEM.DAT
CX = buffer size in bytes
Return: AX = 0000h if supported
ES:DI buffer filled
CX = number of bytes copied into buffer
SeeAlso: AX=160Eh,AX=1611h,AX=1612h,AX=1614h,AX=1690h
--------D-2F1614-----------------------------
INT 2F U - MS-DOS 7 kernel - SET SYSTEM.DAT (REGISTRY FILE) PATHNAME
AX = 1614h
ES:DI -> ASCIZ pathname to Windows95 SYSTEM.DAT
Return: AX = status
0000h if successful
1614h not supported
other: maximum length of pathname (004Eh for v4.00.950)
SeeAlso: AX=160Eh,AX=1611h,AX=1613h,AX=1690h
----------2F1615-----------------------------
INT 2F - Windows95 - SAVE32.COM - INSTALLATION CHECK
AX = 1615h
Return: AX = 0000h if installed
BX = segment of resident code
Program: SAVE32.COM is a TSR included in the Windows95 distribution which
preserves the contents of 32-bit registers across invocations of
all of the hardware interrupt handlers (which, for some older BIOSes
and TSRs, do not properly preserve the high words of the 32-bit
registers)
--------W-2F1680-----------------------------
INT 2F - MS Windows, DPMI, various - RELEASE CURRENT VIRTUAL MACHINE TIME-SLICE
AX = 1680h
Return: AL = status
00h if the call is supported
80h (unchanged) if the call is not supported
Notes: programs can use this function in idle loops to enhance performance
under multitaskers; this call is supported by MS Windows 3+, DOS 5+,
DPMI 1.0+, and in OS/2 2.0+ for multitasking DOS applications
does not block the program; it just gives up the remainder of the time
slice
should not be used by Windows-specific programs
when called very often without intermediate screen output under
MS Windows 3.x, the VM will go into an idle-state and will not
receive the next slice before 8 seconds have elapsed. This time can
be changed in SYSTEM.INI through "IdleVMWakeUpTime=<seconds>".
Setting it to zero results in a long wait.
this function has no effect under OS/2 2.10-4.0 if the DOS box has an
"Idle Sensitivity" setting of 100
SeeAlso: AX=1689h,INT 15/AX=1000h,INT 15/AX=5305h,INT 21/AH=89h,INT 7A/BX=000Ah
--------W-2F1681-----------------------------
INT 2F - MS Windows 3+ - BEGIN CRITICAL SECTION
AX = 1681h
Notes: used to prevent a task switch from occurring
should be followed by an INT 2F/AX=1682h call as soon as possible
nested calls are allowed, and must be followed by an appropriate number
of "end critical section" calls
not supported in Windows/386 2.x. Get INDOS flag with INT 21/AH=34h and
increment by hand.
SeeAlso: AX=1682h,INT 15/AX=101Bh,INT 21/AH=34h
--------W-2F1682-----------------------------
INT 2F - MS Windows 3+ - END CRITICAL SECTION
AX = 1682h
Notes: not supported in Windows/386 2.x. Get InDOS flag with INT 21/AH=34h
and decrement by hand, taking care not to decrement InDOS flag
through zero
SeeAlso: AX=1681h,INT 15/AX=101Ch,INT 21/AH=34h
--------W-2F1683-----------------------------
INT 2F - MS Windows 3+ - GET CURRENT VIRTUAL MACHINE ID
AX = 1683h
Return: BX = current virtual machine (VM) ID
Notes: Windows itself currently runs in VM 1, but this can't be relied upon
VM IDs are reused when VMs are destroyed
an ID of 0 will never be returned
SeeAlso: AX=1684h"DEVICE API",AX=1685h,AX=168Bh
--------W-2F1684-----------------------------
INT 2F - MS Windows - GET DEVICE API ENTRY POINT
AX = 1684h
BX = virtual device (VxD) ID (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API
Note: some Windows enhanced-mode virtual devices provide services that
applications can access. For example, the Virtual Display Device
(VDD) provides an API used in turn by WINOLDAP.
SeeAlso: AX=1684h/BX=0001h,AX=1684h/BX=0015h,AX=1683h,AX=4011h,INT 20"Windows"
(Table 2329)
Values for MS Windows VxD ID:
Value Name CallOut V86 PM Description
0000h ACT200L IrDA Infrared ActiSys framer VxD
0000h ACT220L IrDA Infrared ActiSys 220 framer VxD
0000h ADAPTEC IrDA Infrared Adaptec framer VxD
0000h AM1500T N N (Win95)
0000h ATI N N (Win95) ATI display driver
0000h CDFS N N
0000h CDTSD N N (Win95) CD-ROM Type-Specific Driver
0000h CE2NDIS3 N N (W4Wg)
0000h CENDIS N N (W4Wg)
0000h CHIPS N N (Win95) Chips&Tech display driver
0000h CIRRUS N N (Win95) Cirrus display driver
0000h CTNDW N N (W4Wg)
0000h CTVSD N N (Win95) CD-ROM Vendor-Specific Driver
0000h CM2NDIS3 N N (W4Wg)
0000h COMBUFF N N (Win95)
0000h COMPAQ N N (Win95) Compaq display driver
0000h CPQNDIS3 N N (W4Wg)
0000h CRYSTAL IrDA Infrared Crystal framer VxD
0000h DBKVSSD N N (Win95) Databook PCMCIA socket services???
0000h DDOM95 N N
0000h DECLAN N N (W4Wg)
0000h DiskTSD N N (Win95) hard-disk Type-Specific Driver
0000h DiskVSD N N (Win95) hard-disk Vendor-Specific Driver
0000h DMICTVXD N N
0000h DRVSPACX N N (Win95)
0000h E30N3 N N (W4Wg)
0000h E31N3 N N (W4Wg)
0000h EE16 N N (W4Wg)
0000h EISA N N (Win95)
0000h EL59X N N (Win95)
0000h ELNK16 N N (W4Wg)
0000h ELNK3 N N (Win95)
0000h ELNKII N N (W4Wg)
0000h ELNKMC N N (W4Wg)
0000h ELPC3 N N (W4Wg)
0000h ENABLE2 N N (Win95)
0000h ENABLE4 N N (Win95)
0000h EPRO N N (Win95)
0000h ES1488V N N (Win95)
0000h ES1688V N N (Win95)
0000h ES488V N N (Win95)
0000h ES688V N N (Win95)
0000h ESI IrDA Infrared ESI framer VxD
0000h FILEMON N N DOS386 File Monitor
0000h FLS1MTD N N (Win95) flash-memory driver???
0000h FLS2MTD N N (Win95) flash-memory driver???
0000h HPEISA N N (W4Wg)
0000h HPFEND N N (W4Wg)
0000h HPISA N N (W4Wg)
0000h HPMCA N N (W4Wg)
0000h HSFLOP N N
0000h IBMTOK N N (W4Wg)
0000h IBMTOK4 N N (Win95)
0000h IRCOMM IrDA Infrared Virtual COM/LPT driver
0000h IRLAMPEX IrDA Infrared Protocol VxD
0000h IRLAPFRM IrDA Infrared Virtual COM/LPT frame driver
0000h IRMATRAK N N (W4Wg)
0000h JAVASUP N N Internet Explorer JAVA support
0000h KEYREMAP N N (Windows95 PowerToys) shift-key remapper
0000h LPT N N N (Win4Workgroups 3.11) DOS386 LPT Device
0000h LPTENUM N N
0000h MONVSD
0000h MGA N N (Win95) Matrox MGA display driver
0000h MSMINI N N (Win95)
0000h MSODISUP N N N (Win4Workgroups 3.11) MS ODI Support
0000h mvpas N N (Win95) Pro Audio Spectrum driver
0000h NECATAPI N N (Win95)
0000h NICE N N (Win95)
0000h NWNBLINK N N N (Win4Workgroups 3.11) Netware NetBIOS
0000h OAK N N (Win95) Oak Tech display driver
0000h OCTK32 N N (W4Wg)
0000h OTCETH N N (W4Wg)
0000h PARALINK N N (Win95)
0000h PARALLAX IrDA Infrared Parallax framer VxD
0000h PCNTN3 N N (W4Wg)
0000h PE3NDIS N N (W4Wg)
0000h PPM N N (Win95)
0000h PROTEON N N (W4Wg)
0000h QEMMFix N N
0000h QIC117 N N (Win95) QIC-117 floppy-ctrl tape drive
0000h QPI N N QEMM Programming Interface (see INT 67/AH=3Fh)
0000h RMM N N Real-Mode Mapper for hw with real-mode drivers
0000h S3 N N (Win95) S3 display driver
0000h S3INFO N N
0000h S3MINI N N S3 display driver
0000h SAGE N N (Plus!) System Agent
0000h scsi1hlp N N (Win95)
0000h SERENUM N N
0000h SERIAL N N N (Win4Workgroups 3.11) DOS386 Serial Device
0000h SERWAVE N N
0000h SETP3 N N (Win95) Silicon Ethernet Pocket Adapter
0000h SMC8000W N N (W4Wg)
0000h SMC80PC N N (W4Wg)
0000h SMC8100W N N (W4Wg)
0000h SMC8232W N N (W4Wg)
0000h SMC9000 N N (W4Wg)
0000h SNIP N N (W4Wg)
0000h SOCKET N N (W4Wg)
0000h SOCKETSV N N (Win95)
0000h SPAP Y Y (Win95)
0000h SPENDIS N N (Win95)
0000h SRAMMTD N N (Win95) flash-memory driver???
0000h STLTH64 N N Diamond Stealth64 driver
0000h STLTHMON N N
0000h T20N3 N N (W4Wg)
0000h T30N3 N N (W4Wg)
0000h TCTOK N N (W4Wg)
0000h TSENG N N (Win95) Tseng Labs display driver
0000h UBNEI N N (W4Wg)
0000h UNIMODEM (Win95) Universal Modem Driver
0000h VDEF N N (Win95)
0000h VGATEWAY N Y (Win95) dialin gateway
0000h VIDEO7 N N (Win95) Video7 display driver
0000h VRomD N N (Win95)
0000h VStDspcD Quarterdeck Stealth D*Space
0000h VXDMON
0000h WD N N (Win95)
0000h WINTOP N N (Windows95 Power Toys)
0000h WSHTCP N N
0000h XGA N N (Win95) XGA display driver
0001h VMM N N Virtual Machine Manager
0001h VMM Y Y Windows95 Virtual Machine Manager
0002h Debug
0003h VPICD Y Y Virtual Prog. Interrupt Controller (PIC) Device
0004h VDMAD N N Virtual Direct Memory Access (DMA) Device
0005h VTD Y Y Virtual Timer Device
0006h V86MMGR Y N N (Windows3.x) Virtual 8086 Mode Device
0006h V86MMGR N Y (Win95) Virtual 8068 Mode Device
0007h PageSwap N N Paging Device
0008h Parity N N Parity-check trapper
0009h Reboot N Y Ctrl-Alt-Del handler
000Ah VDD N Y Virtual Display Device (GRABBER)
000Bh VSD N N Virtual Sound Device
000Ch VMD Y Y Y Virtual Mouse Device
000Dh VKD N Y Virtual Keyboard Device
000Eh VCD N Y Virtual COMM Device
000Fh VPD N Y Virtual Printer Device
0010h VHD Virtual Hard Disk Device (Windows 3.0)
0010h BLOCKDEV Y N N Virtual Hard Disk Device (Windows 3.1)
0010h IOS N N N (Win4Workgroups 3.11) DOS386 IOS Device
0010h IOS Y Y Windows95 I/O Supervisor
0011h VMCPD Y Y (Windows3.x) Virtual Math CoProcessor Device
0011h VMCPD N Y (Win95) Virtual Math CoProcessor Device
0012h EBIOS N N Reserve EBIOS page (e.g., on PS/2)
0013h BIOSXLAT N N Map ROM BIOS API between prot & V86 mode
0014h VNETBIOS Y N N Virtual NetBIOS Device
0015h DOSMGR Y Y N DOS data instancing (see #2343)
0016h WINLOAD
0017h SHELL N Y (Windows3)
0017h SHELL Y Y (Win95)
0018h VMPOLL Y N N
0019h VPROD
001Ah DOSNET N N assures network integrity across VMs
001Ah VNETWARE Y Y Novell NetWare DOSNET replacement
001Bh VFD N N Virtual Floppy Device
001Ch VDD2 Secondary display adapter
001Ch LoadHi N N Netroom LoadHi Device (RMLODHI.VXD)
001Ch LoadHi N N 386MAX LoadHi Device (386MAX.VXD)
001Ch LoadHi N N Win386 LoadHi Device (EMM386.EXE)
001Dh WINDEBUG N Y
001Dh TDDebug N Y
001Eh TSRLoad TSR instance utility
001Fh BiosHook BIOS interrupt hooker VxD
0020h Int13 N N N
0021h PageFile Y N Y Paging File device
0022h SCSI
0022h APIX N Y (Win95)
0023h MCA_POS Microchannel Programmable Option Select
0024h SCSIFD SCSI FastDisk device
0025h VPEND Pen device
0026h APM Advanced Power Management
0026h VPOWERD Y Y (Win95) power management
0027h VXDLDR N Y Y (Win4Wg 3.11/Win95) VXD Loader
0028h NDIS N Y Y (Win4Wg 3.11) Network Driver Interface Spec
0029h ???
002Ah VWIN32 N Y (Win95)
002Bh VCOMM N Y Y (Win4Workgroups 3.11) DOS386 VCOMM Device
002Ch SPOOLER N N Windows95 print spooler
002Dh W32S Y N Y WIN32s 32-bit extension to Windows API
002Eh ???
002Fh ???
0030h MACH32 N N Y ATI Mach32 video card
0031h NETBEUI N N N (Win4Workgroups 3.11) NETBEUI
0032h SERVER N Y Y (Win4Workgroups 3.11) Int21 File Server
0032h VSERVER N Y (Win95) Int21 File Server
0033h CONFIGMG Y Y (Win95)
0033h EDOS N N Windows DOS Box Enhancer by Mom's Software
0034h DWCFGMG.SYS Y DOS Plug-and-Play configuration manager
0035h SCSIPORT N N (Win95) virtualized access to SCSI adapter
0036h VFBACKUP Y Y (Win95)
0037h ENABLE Y Y (Win95)
0038h VCOND Y Y (Win95)
0039h ???
003Ah VPMTD N N Y (Win4Workgroups 3.11) IFAX Scheduler Device
003Bh DSVXD Y N DoubleSpace VxD from MS-DOS v6.x
003Ch ISAPNP N N (Win95)
003Dh BIOS Y Y (Win95)
003Eh WSOCK Y Y (Win95) WinSock
003Fh WSIPX N N (Win95) IPX WinSock
0040h IFSMGR N N (Win95)
0041h VCDFSD N N (Win95) CD-ROM File System Driver (MSCDEX)
0042h MRCI2 N N (Win95) DriveSpace3
0043h PCI N N (Win95)
0048h PERF N N (Win95)
0051h ISAPNP N N (Win95) ISA Plug-and-Play manager
008Dh ESDI_506 N N (Win95) MFM/RLL/ESDI disk driver
0090h voltrack N N (Win95) Volume Tracker
00FDh FAKEIDE N N (Chicago)
0102h CV1 N N Microsoft C/C++ 7.00+ CodeView for Windows
011Fh VFLATD N Y (Win95)
0200h VIPX Y Y NetWare Virtual IPX Driver
0200h VTEMPD dummy template driver by Ray Patch
0201h VNWLSERV N N NetWare Lite 1.1 Server (SERVER.EXE)
0202h WINICE Y Y SoftICE/W
0202h SICE Y Y
0203h VCLIENT N Y NetWare Lite 1.1+ Client
0205h VCAFT N N Novell Virtual CAFT Driver (LANalyzer for Win)
0205h BCW Y Y Nu-Mega Bounds Checker for Windows
0206h VTXRX N N Novell Virtual TXRX Driver (LANalyzer for Win)
0207h DPMS N Y N Novell DOS Protected Mode Services
0234h VCOMMUTE Y Y PC Tools Commute
0442h VTDAPI N Y MMSys Win386 VTAPI Device
0443h ???
0444h VADMAD Autoinitialize DMA (Windows 3.0)
0445h VSBD Y Y WinResKit: Sound Blaster Device
0446h VADLIBD Y Y Y MMSys Win386 AdLib Device (v3.x)
0447h ???
0448h SETULTRA Gravis UltraSound setup
0449h vjoyd N Y (Win95) joystick
044Ah mmdevldr Y Y (Win95)
044Bh ???
044Ch msmpu401 N N (Win95) MPU-401 MIDI driver
044Dh msopl N N (Win95) OPL-3 (SoundBlaster FM) driver
044Eh mssblst N N (Win95) SoundBlaster MIDI driver
045Dh VflatD N Y dva.386, part of WIN32s
045Eh ???
045Fh mssndsys Microsoft Sound System audio driver
045Fh azt16 Y Y Aztech Sound Galaxy 16 audio driver
0460h UNIMODEM N Y Universal Modem driver
0480h VNetSup N Y Y (Win4Workgrps 3.11) Virtual Network Support
0481h VRedir N N N (Win4Workgroups 3.11) Redirector File System
0481h VREDIR N N (Win95) Redirector File System driver
0482h VBrowse Y Y Win386 Virtual Browser
0482h SNAPVXD Y Y (Win95)
0483h VSHARE N N (Win4Workgroups) Virtual SHARE
0483h VSHARE Y Y (Win95) Virtual SHARE
0484h IFSMgr Y N Y (Win4Wg 3.11) Installable File System Manager
0485h ??? ???
0486h VFAT N Y Y (Win4Workgroups 3.11) Win386 HPFS Driver
0487h NWLINK Y Y Win386 Virtual Packet Exchange Protocol
0487h NWSUP Y N N NetWare Vnetbios shim
0488h VTDI N N (Win95)
0489h VIP Y N (Win95)
048Ah VTCP Y
048Ah MSTCP Y N (Win95) TCP stack
048Bh VCache N Y Y (Win4Workgroups 3.11) Virtual File Cache
048Bh VCACHE Y Y (Win95) disk cache
048Ch ??? ???
048Dh RASMAC Y Y enhanced mode Win4Workgroups RASMAC device
048Eh NWREDIR Y Y (Win95)
048Fh ??? ???
0490h ??? ???
0491h FILESEC (Win95) File Access Control Manager
0492h NWSERVER (Win95)
0493h SECPROV (Win95) Security Provider
0494h NSCL Y Y (Win95)
0495h AFVXD N N (Win95)
0496h NDIS2SUP (W4Wg???)
0497h MSODISUP N N (W4Wg???)
0498h Splitter N N (Win95)
0499h PPPMAC Y Y (Win95)
049Ah VDHCP Y Y (Win95)
049Bh VNBT Y Y (Win95) NetBIOS-over-TCP/IP driver
049Ch ???
049Dh LOGGER (Win95)
04A2h IRLAMP IrDA Infrared Enumerator VxD
097Ch PCCARD N Y (Win95) (see INT 20/VxD=097Ch)
1020h VCV Microsoft C/C++ 7.00 CodeView
1021h VMB Y Y Microsoft C/C++ 7.00 WXSRVR
1022h Vpfd Y Y Microsoft C/C++ 7.00
1025h MMD Y Y Microsoft C/C++ 8.00, Visual C/C++ 1.00
2020h PIPE Y Y by Thomas W. Olson, in Windows/DOS DevJrn 5/92
21EAh VADLIBWD N Y Adlib Waveform Driver by John Ridges
2200h VFINTD Y Y Norton VFINTD (Norton Desktop)
22C0h ??? Y Rational Systems DOS/4GW ???
2402h ZMAX N N Qualitas 386MAX v7 DOSMAX handler
24A0h VNSS N Y Norton Screen Saver (Norton Desktop)
24A1h VNDWD Y Y Norton VNDWD Device (Norton Desktop)
24A2h SYMEvent Y Y Norton Utilities v8
2540h VILD Y N INTERLNK client from MS-DOS v6.x
2640h VASBID N Y WinResKit: Artisoft Sounding Board Device
2860h COMMTASK N N Y Windows 386-mode preemptive tasker by James
A. Kenemuth of Interabang Computing
28A0h PHARLAPX Y PharLap inter-VM communications DLL
28A1h PharLap Y Y Y PharLap 386|DOS-Extender DOSXNT.386
28C0h VXD N Y Y Generic VxD for real and protected mode by
Andrew Schulman in MSJ February 1993
28C1h PUSHKEYS VKD_Force_Keys device
28C2h VCR3D Virtual CR3, by A.Schulman in MSJ October 1992
2925h EDOS Y Y Enhanced DOS by Firefly Software
292Dh VSBPD Y Y Sound Blaster Pro
295Ah GRVSULTR Y Y Gravis UltraSound / UltraSound ACE
304Ch DWCFGMG.SYS Y Plug-and-Play configuration access
3098h VstlthD N N N for QEMM Stealth ROM mode
3099h VVidramD Y N for QEMM VIDRAM support
30F6h WSVV N Y (Win95) WinSock for Voice-View Modems???
310Eh WPS N Y MS DevNet CD-ROM: Windows Process Status
3110h VGSSD Y Y VSGLX16.386 for Aztech Sound Galaxy 16
313Bh PMC Power Management Coordinator
318Ah LMOUSE Y Y (Win95) Logitech mouse???
31CFh STAT.386 Ton Plooy's processor statistics VxD
3202h VdspD N N (Win95)
3203h vpasd N N (Win95) Pro Audio Spectrum driver
32A4h SBAWE Y Y (Win95) SoundBlaster AWE driver
32A5h VSB16 N N (Win95) SoundBlaster 16 driver
32CBh VFRAD Y Y Dr.Franz - Simultan's diagnotics VFRAD.386
33AAh DECCORE Y Y (Win95) DEC Pathworks core VxD
33B4h DECLICL N N (Win95)
33F0h VIWD Y Y Gravis UltraSound Plug-n-Play Interwave v1.x
33FCh ASPIENUM N N (Win95)
34DCh MAGNARAM N Y Quarterdeck MagnaRAM (MAGNA31.VXD/MAGNA95.VXD)
357Eh DSOUND Y Y (Win95) DirectSound
36AEh AIB-PC.386 Y Y Sunset Laboratory interface hardware driver
377Bh MX1501HAD Cherry keyboard chipcard reader
38DAh VIWD Y Y UltraSond PnP InterWave driver v2.0beta
4321h POSTMSG Y Y (see #2399)
4321h VPCD N N PCache
4321h avvxp500 N N (Win95) VxP500 driver
6001h REGVXD Y Y Windows95 Registry Monitor helper
7A5Fh SIWVID Y Y Y Soft-ICE for Windows video driver
7FE0h VSWITCHD Y N by Jeff Prosise
7FE0h VWFD N Y Y reports windowed/fullscreen state; by Neil
Sandlin of Microsoft, shipped with ANSIPLUS
7FE1h VWATCHD N Y Y basic driver w/ no functionality except tracing
by Keith Jin of Microsoft PSS
7FE5h VFINTD N Y Y Virtual Floppy Interrupt trapper by Neil
Sandlin of Microsoft
7FE7h VMPAGES N Y Y demonstration of exporting VxD services, by
Neil Sandlin of Microsoft
7FE8h VPOSTD Y Y PostMessage() demo by Curtis J. Palmer of MS
7FE9h VIdleD N N N demonstration of Call_When_Idle function, by
Bernie McIlroy of Microsoft
7FEBh VMIOD N N N Virtual Monitor I/O Traffic Device, by Neil
Sandlin of Microsoft
7FEDh VMIRQD N N N Virtual Monitor IRQ Traffic Device, by Neil
Sandlin of Microsoft
8888h VbillD Bill Potvin II's for reversing Compaq LTE video
EEEEh VEPSD N N Virtual Extended Paging Services for
Borland C++ v4.0
Notes: The high bit of the VxD ID is reserved for future use. Originally,
the next 10 bits were the OEM number which was assigned by Microsoft,
and the low 5 bits were the device number. Currently, Microsoft
assigns VxD IDs individually for each driver; send blank email to
vxdid@microsoft.com for more information.
"CallOut"=Y indicates that the VxD uses the INT 2F/AX=1607h/BX=VxDID
device callout interface; "PM" and "V86" indicate whether the VxD
provides an API entry point in protected mode and Virtual-86 mode
(e.g. DOS boxes)
--------W-2F1684BX0001-----------------------
INT 2F - MS Windows95 - VMM - GET API ENTRY POINT
AX = 1684h
BX = 0001h (virtual device ID for VMM) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2330)
0000h:0000h if the VxD does not support an API
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2330)
Call Windows VMM 16-bit entry point with:
AX = function number
---registry functions---
0100h "RegOpenKey"
STACK: DWORD -> DWORD for returned key handle
DWORD -> ASCIZ registry key name
DWORD HKEY (see #2331)
0101h "RegCreateKey"
STACK: DWORD -> DWORD for returned key handle
DWORD -> ASCIZ registry key name
DWORD HKEY (see #2331)
0102h "RegCloseKey"
STACK: DWORD key handle from RegOpenKey or RegCreateKey
0103h "RegDeleteKey"
STACK: DWORD -> ASCIZ registry key name
DWORD HKEY (see #2331)
0104h "RegSetValue"
STACK: DWORD ???
DWORD -> ???
DWORD ???
DWORD -> ???
DWORD HKEY (see #2331)
0105h "RegQueryValue"
STACK: DWORD -> DWORD for ???
DWORD -> ASCIZ ???
DWORD -> ASCIZ ???
DWORD HKEY (see #2331)
0106h "RegEnumKey"
STACK: DWORD ???
DWORD -> ASCIZ ???
DWORD ???
DWORD HKEY (see #2331)
0107h "RegDeleteValue"
0108h "RegEnumValue"
STACK: DWORD -> DWORD for ???
DWORD -> BYTE ???
DWORD -> DWORD for ???
DWORD -> DWORD for ???
DWORD -> DWORD for ???
DWORD -> ASCIZ ???
DWORD ???
DWORD HKEY (see #2331)
0109h "RegQueryValueEx"
010Ah "RegSetValueEx"
010Bh "RegFlushKey"
010Ch "RegLoadKey"
010Dh "RegUnLoadKey"
010Eh "RegSaveKey"
010Fh "RegRestore"
0110h "RegRemapPreDefKey"
Return: parameters popped from stack
DX:AX = return value
(Table 2331)
Values for Windows95 VMM predefined HKEY values:
80000000h HKEY_CLASSES_ROOT
80000001h HKEY_CURRENT_USER
80000002h HKEY_LOCAL_MACHINE
80000003h HKEY_USERS
80000004h HKEY_PERFORMANCE_DATA
80000005h HKEY_CURRENT_CONFIG
80000006h HKEY_DYN_DATA
SeeAlso: #2330
--------W-2F1684BX0003-----------------------
INT 2F - MS Windows - VPICD - GET API ENTRY POINT
AX = 1684h
BX = 0003h (virtual device ID for VPICD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2332)
0000h:0000h if the VxD does not support an API
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2332)
Call VPICD API entry point with:
EAX = function number
0000h get version
Return: AX = binary version (AH=major, AL=minor)
0001h virtualize timer???
0002h unvirtualize timer???
--------W-2F1684BX0005-----------------------
INT 2F - MS Windows - VTD - GET API ENTRY POINT
AX = 1684h
BX = 0005h (virtual device ID for VTD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2333)
0000h:0000h if the VxD does not support an API
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2333)
Call VTD.386/VTD.VXD entry point with:
AX = function number
0000h get VTD version number
Return: CF clear
AH = major version
AL = minor version
0100h get current clock tick time
Return: EDX:EAX = clock tick time in 840ns units since Windows
was started
0101h get current system time in milliseconds
Return: EAX = time in milliseconds that Windows has been
running
0102h get current virtual machine time
Return: EAX = cumulative amount of time the virtual machine has
been active, in milliseconds
Note: this entry point should only be called directly when TOOLHELP.DLL
TimerCount() cannot be called
SeeAlso: #0964,#0966,#0965 at INT 20"Windows"
--------W-2F1684BX0006-----------------------
INT 2F P - MS Windows95 - V86MMGR - GET API ENTRY POINT
AX = 1684h
BX = 0006h (virtual device ID for V86MMGR device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2334)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2334)
Call V86MMGR entry point with:
EAX = function number
0000h get V86MMGR version
Return: CF clear
AH = major version
AL = minor version
0001h get ???
Return: CF clear
EAX = status bits
bit 0: ???
bit 1: ???
bit 2: ???
bit 3: ???
bit 4: ???
else
Return: CF set
--------W-2F1684BX0009-----------------------
INT 2F P - MS Windows - REBOOT - GET API ENTRY POINT
AX = 1684h
BX = 0009h (virtual device ID for REBOOT device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2335)
0000h:0000h if the VxD does not support an API
SeeAlso: INT 14/AH=17h"FOSSIL",INT 16/AX=E0FFh
(Table 2335)
Call REBOOT protected-mode entry point with:
AX = function
0100h warm boot
Return: never
Note: broadcasts "Reboot_Processor" message, which is caught
by the VKD device
0201h set KERNEL Ctrl-Alt-Del handler
ES:DI -> new Ctrl-Alt-Del handler
DS:SI -> KERNEL reboot sanity check byte
Return: CF clear
Notes: if an application installs its own handler and then
chains to Windows' handler, Windows will no longer
be able to detect hung applications, and will always
produce an "Application not responding" dialog
DS must contain a writable, fixed selector because
the provided address is converted to a linear address
before being stored
when Ctrl-Alt-Del is pressed in the system VM, Reboot
sets the sanity check byte to zero, schedules a
750ms wait, and then tests whether the check byte is
still zero; if not, it displays a message that there
is no hung application and then exits
0202h get KERNEL Ctrl-Alt-Del handler
Return: CF clear
ES:DI -> current Ctrl-Alt-Del handler
Note: the default handler is located in KERNEL
0203h display "Application not responding" dialog box
ES:DI -> ASCIZ name of hung application
Return: never if user pressed Ctrl-Alt-Del a second time
CF clear
AX = result
0000h user pressed Esc
0001h user pressed Enter
Note: this function is used by the default Windows
Ctrl-Alt-Del handler
0204h set/reset protected-mode INT 01 handler
CX:EDX -> new protected-mode INT 01 handler
CX = 0000h restore protected-mode INT 01 handler
Return: CF clear
Notes: if CX is nonzero, the current handler address is saved
internally before the new handler is set; this saved
address is then used when CX is zero on entry
used by Windows' default Ctrl-Alt-Del handler; actual
fatal exit to DOS will be done on next INT 01
Warning: opened files are not closed and remain open as
orphaned files in DOS
Note: functions 0201h and 0203h are not useful outside the system VM
SeeAlso: #0967,#0969
--------W-2F1684BX000A-----------------------
INT 2F P - MS Windows - VDD - GET API ENTRY POINT
AX = 1684h
BX = 000Ah (virtual device ID for VDD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2336)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2336)
Call VDD entry point with:
EAX = function
0000h get VDD version
Return: CF clear
AH = major version
AL = minor version
Note: also performs an internal initialization
0001h ???
Return: ECX = ???
???
0002h
0003h
0004h
0005h
0006h
0007h
0008h
0009h
0080h
0081h
0082h
0083h
0084h
0085h
0086h
0087h
0088h
0089h
else
Return: nothing
--------W-2F1684BX000C-----------------------
INT 2F - MS Windows - VMD - GET API ENTRY POINT
AX = 1684h
BX = 000Ch (virtual device ID for VMD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2337)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2337)
Call VMOUSE entry point with:
EAX = function number
0000h get VMOUSE version
Return: CF clear
AH = major version
AL = minor version
0001h
EBX = ???
ECX = ???
Return: CF clear if successful
CF set on error (e.g. fn 0003h not yet called)
0002h ??? (calls "test system VM handle")
Return: CF clear if successful (in system VM)
CF set on error
0003h ???
ECX = ???
DX = ???
Return: CF clear
0004h ???
Note: invokes Call_Priority_VM_Event
0005h get mouse port data
Return: CF clear
AL = ??? (04h)
AH = mouse IRQ interrupt number (IRQ4=0Ch,etc.)
CX = mouse I/O port address (e.g. 03F8h)
DX = COM port number??? (0001h for mouse on COM1)
0100h NOP???
Return: CF clear
0101h init???
Return: CF clear
Note: appears to be the same as fn 0005h, but returns no data
0102h unimplemented
Return: CF set
0103h check ???
Return: AX = status (0000h/0001h)
Note: checks flag set by fn 0003h
else
Return: CF set
SeeAlso: #2336,#2338
--------W-2F1684BX000D-----------------------
INT 2F P - MS Windows - VKD - GET API ENTRY POINT
AX = 1684h
BX = 000Dh (virtual device ID for VKD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2338)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2338)
Call VKD entry point with:
EAX = function
0000h get VKD version
Return: CF clear
AH = major version
AL = minor version
0001h ???
EBX = VM handle or 00000000h to use ??? VM handle
CH = ???
CL = ???
EDX = ??? or FFFFFFFFh
Return: CF clear if successful
CF set on error
else
Return: CF set
SeeAlso: #2337,#2339
--------W-2F1684BX000E-----------------------
INT 2F P - MS Windows - VCD - GET API ENTRY POINT
AX = 1684h
BX = 000Eh (virtual device ID for VCD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2339)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2339)
Call VCD entry point with:
EDX = function number
0000h get VCD version
Return: CF clear
AH = major version
AL = minor version
0001h get ???
Return: CF clear
AX = bit mask of ???
0002h get ???
CX = COM port number
Return: CF clear
DX:AX -> ???
0003h set ???
CX = COM port number
DX:AX -> new ???
Return: CF clear
0004h acquire COM port
AX = ???
CX = COM port number
Return: CF clear
AX = ???
EBX = ???
DX = ???
0005h release COM port
CX = COM port number
Return: CF clear
0006h ???
Return: CF set
AL = 00h
else
Return: CF set
EAX = FFFFFFFFh
Note: these functions are apparently only available from the system VM,
returning CF set and EAX=FFFFFFFFh otherwise
SeeAlso: #2338,#2340
--------W-2F1684BX000F-----------------------
INT 2F P - MS Windows - VPD - GET API ENTRY POINT
AX = 1684h
BX = 000Fh (virtual device ID for VPD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2340)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2340)
Call VPD entry point with:
EDX = function number
0000h get VPD version
Return: CF clear
AH = major version
AL = minor version
DX = ??? (CB01h)
0001h get valid??? printers
Return: CF clear
AX = bitmask of ??? printers (bits 0-2)
0002h get ??? for printer
CX = printer port (0-2)
Return: CF clear if successful
BX:AX = ???
CF set on error (invalid port number)
0003h set ??? for printer
CX = printer port (0-2)
BX:AX = ???
Return: CF clear if successful
CF set on error (invalid port number)
0004h ???
CX = printer port (0-2)
EAX = VM handle
Return: CF clear if successful
CF set on error (invalid port number)
0005h ???
CX = printer port (0-2)
EAX = VM handle
Return: CF clear if successful
CF set on error (invalid port number or ???)
0006h-000Eh unused
Return: CF set
000Fh ???
CX = printer port (0-2)
AX = ???
Return: CF clear if successful
CF set on error (e.g. invalid port number)
0010h ???
CX = printer port (0-2)
Return: CF clear if successful
CF set on error (e.g. invalid port number)
0011h ???
CX = printer port (0-2)
Return: CF clear if successful
CF set on error (e.g. invalid port number)
0012h get port status
CX = printer port (0-2)
Return: CF clear if successful
AX = port status (see #P263 at PORT 03BCh"LPT")
CF set on error (e.g. invalid port number)
else
Return: CF set
Note: these functions are apparently only available from the system VM,
returning CF set
SeeAlso: #2339,#2341
--------W-2F1684BX0010-----------------------
INT 2F - MS Windows - IOS - GET API ENTRY POINT
AX = 1684h
BX = 0010h (virtual device ID for IOS device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2341)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2341)
Call IOS entry point with:
EAX = function number
0000h ???
Return: CF clear if successful
AX = 0000h
CF set on error
AX = FFFFh
0001h check if ???
Return: CF clear if successful
AX = 0000h
CF set on error
AX = FFFFh
0002h requestor services???
DL = service number???
Return: CF clear if successful
AX = 0000h
DX = ???
CF set on error
AX = FFFFh
Note: calls "IOS_Requestor_Service" (see INT 20"Windows")
0003h ??? (copies five bytes of data internally)
Return: CF clear if successful
AX = 0000h
EDX = ???
CF set on error
AX = FFFFh
else
Return: CF set
AX = FFFFh
SeeAlso: #2340,#2342
--------W-2F1684BX0011-----------------------
INT 2F - MS Windows - VMCPD - GET API ENTRY POINT
AX = 1684h
BX = 0011h (virtual device ID for VMCPD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2342)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2342)
Call Windows95 VMCPD protected-mode entry point with:
EAX = function number
0000h get VMCPD version
Return: CF clear
AH = major version
AL = minor version
0001h get ??? flags
Return: CF clear
AX = ??? flags
bit 0: ???
bit 1: ???
bit 2: ???
bit 3: ???
else
Return: CF set
SeeAlso: #2341,#2343
--------W-2F1684BX0015-----------------------
INT 2F - MS Windows - DOSMGR - GET API ENTRY POINT
AX = 1684h
BX = 0015h (virtual device ID for DOSMGR device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2343,#0978)
0000h:0000h if the VxD does not support an API
SeeAlso: #0978 at INT 20"Windows"
(Table 2343)
Call DOSMGR entry point with:
AX = 0000h get DOSMGR version
Return: CF clear
AX = version (AH = major, AL = minor)
AX = 0001h set critical focus
Return: CF clear
AX = 0002h crash current virtual machine
Return: never
Note: displays message box stating that "application has been
stopped by the DOSMGR device"
AX = 0003h enter critical section
Note: this function assumes that the code for INT 2A/AX=8001h
and INT 2A/AX=8002h have been modified for Windows
AX = 0004h get VM ID byte
Return: CF clear if successful
ES:DI -> VM ID byte
CF set on error
Note: this function fails if the INT 2A modifications have not
yet been applied
AX = 0005h inform Windows of possible media change
BL = drive number (00h=A:)
Return: CF clear if successful
CF set on error
SeeAlso: #0978 at INT 20"Windows",#2342,#2344
--------W-2F1684BX0017-----------------------
INT 2F U - MS Windows - SHELL - GET API ENTRY POINT
AX = 1684h
BX = 0017h (virtual device ID for SHELL device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2344)
0000h:0000h if the VxD does not support an API
SeeAlso: AX=1684h/BX=0021h,#0979 at INT 20"Windows"
(Table 2344)
Call SHELL entry point with:
EDX = function number (0000h-0027h,0100h-0108h, mostly unknown)
0000h get version number
Return: AX = version number
EBX = system VM handle
0001h "SHELL_Get_SYSVM_Info" get system VM information
Return: CF clear
AX bit 0 set if system VM executing exclusively
BX = background time slice priority
CX = foreground time slice priority
SI = minimum time slice in milliseconds
0002h "SHELL_Set_SYSVM_Info" set system VM information
AX bit 0 set if system VM should execute exclusively (ignored?)
BX = background time slice priority (1-10000)
CX = foreground time slice priority (1-10000)
SI = minimum time slice in milliseconds (1-10000)
Return: CF clear if successful
0003h "SHELL_Crt_VM" create a virtual machine
ES:EDI -> SEB structure (see #2345)
Return: CF clear if successful
EAX = VM handle
CF set on error
EDX,EAX = result from GetSetDetailedVMError()
0004h "SHELL_Destroy_VM" destroy a virtual machine
EBX = VM handle (not system VM)
Return: nothing
0005h "SHELL_Set_Focus"
EBX = VM handle
ECX = ???
Return: nothing
0006h "SHELL_Get_VM_State"
EBX = VM handle (not system VM)
ES:EDI -> ??? structure
Return: CF clear if successful
0007h "SHELL_Set_VM_State"
EBX = VM handle (not system VM)
ES:EDI -> ??? structure
0008h "SHELL_Debug_Out"
???
Return: ???
Note: dummy function in retail version of MS Windows
0009h "SHELL_VMDA_Init"
???
Return: ???
000Ah "SHELL_VMDA_Exit"
???
Return: ???
000Bh "SHELL_Get_Message_Txt"
???
Return: ???
000Ch "SHELL_Event_Complete"
???
Return: ???
000Dh "SHELL_Get_Contention_Info"
???
Return: ???
000Eh "SHELL_Get_Clip_Info"
???
Return: ???
000Fh "SHELL_Set_Paste"
???
Return: ???
0010h "SHELL_Switcher_Assist"
???
Return: ???
0011h "SHELL_Get_FileSysChng"
???
Return: ???
0012h "SHELL_Query_Destroy"
???
Return: ???
0013h "SHELL_SetFocus_Cur_VM" set input focus to current VM
???
Return: ???
0014h "SHELL_User_Busy_API"
???
Return: ???
0015h "SHELL_Chng_Hot_Key"
???
Return: ???
0016h "SHELL_Get_TermInfo"
???
Return: ???
---Windows95---
0017h ???
0018h ???
0019h ???
001Ah ???
001Bh ???
001Ch ???
001Dh ???
001Eh ???
001Fh ???
0020h ???
0021h ???
0022h ???
0023h ???
0024h ???
0025h ???
0026h ???
Note: makes VxDCALL 00178002h (see INT 20"Windows")
0027h ???
0100h get ??? version
Return: AX = version??? (0400h for Windows95)
0101h not implemented
Return: CF set
EAX = FFFFFFFFh
0102h not implemented
Return: CF set
EAX = FFFFFFFFh
0103h not implemented
Return: CF set
EAX = FFFFFFFFh
0104h ???
0105h ???
0106h ???
???
Return: CF clear if successful
CF set on error
0107h get SDK version for VxD
AX = VxD identifier
Return: EAX = VxD ID (high word) and SDK version (low)
00000000h if no such VxD loaded
Note: makes a VMMCALL 0001013Fh (see INT 20"Windows")
followed by ???
0108h ???
Return: CF set if called from VM other than system VM
EAX = FFFFFFFFh
Note: except for functions 0013h,0026h,and 010xh, this API may only be
called from the system VM
SeeAlso: #0979 at INT 20"Windows"
Format of Shell Execution Block (SEB):
Offset Size Description (Table 2345)
00h DWORD PIF flags (see #2346)
04h DWORD display flags (see #2347)
08h PWORD -> pathname of .EXE to run
0Eh PWORD -> argument list
14h PWORD -> working drive/directory
1Ah WORD desired number of V86 pages for virtual machine
1Ch WORD minimum number of V86 pages for VM
1Eh WORD foreground priority
20h WORD background priority
22h WORD maximum KB of EMS
24h WORD minimum KB of EMS
26h WORD maximum KB of XMS
28h WORD minimum KB of XMS
2Ah WORD maximum KB of DPMI???
2Ch WORD minimum KB of DPMI???
2Eh 128 BYTEs title
Note: the PWORDs at offsets 08h,0Eh, and 14h consist of a DWORD offset
followed by a WORD selector
Bitfields for 386 Enhanced Mode PIF flags:
Bit(s) Description (Table 2346)
0 exclusive use of processor when VM is fullscreen
1 VM runs in background
2 VM runs in window
3-4 ???
5 Alt-Tab reserved
6 Alt-Esc reserved
7 Alt-Space reserved
8 Alt-Enter reserved
9 Alt-PrtSc reserved
10 PrtSc reserved
11 Ctrl-Esc reserved
12 VM will release idle time slice
13 VM not allowed to use high memory
14 ???
15 VM expanded memory not pageable
16 VM extended memory not pageable
17 Fast paste from clipboard enabled
18 VM application memory not pageable
30 Close VM when application exits
SeeAlso: #2345,#2347
Bitfields for SHELL display options:
Bit(s) Description (Table 2347)
0 emulate text mode
1 monitor text port
2 monitor low graphics port
3 monitor high graphics port
7 Retain video memory
SeeAlso: #2345,#2346
--------W-2F1684BX001A-----------------------
INT 2F - MS Windows - VNETWARE - GET API ENTRY POINT
AX = 1684h
BX = 001Ah (virtual device ID for VNETWARE device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX001D-----------------------
INT 2F P - MS Windows - WINDEBUG - GET API ENTRY POINT
AX = 1684h
BX = 001Dh (virtual device ID for WINDEBUG device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0021-----------------------
INT 2F PU - MS Windows - PAGEFILE - GET API ENTRY POINT
AX = 1684h
BX = 0021h (virtual device ID for PAGEFILE device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2348)
0000h:0000h if the VxD does not support an API
SeeAlso: AX=1684h/BX=0017h,#0985 at INT 20"Windows"
(Table 2348)
Call PAGEFILE entry point with:
AX = function
0000h get version
Return: CF clear
AX = version (AH = major, AL = minor)
0001h get swap file info
DS:SI -> 128-byte buffer for swap file full pathname
DS:DI -> 128-byte buffer for SPART.PAR full pathname
Return: CF clear
AL = pager type (see #2349)
AH = flags
bit 7: swap file corrupted
ECX = maximum size of swap file
DS:SI buffer filled if paging enabled
DS:DI buffer filled if permanent swap file
0002h delete permanent swap file on exit
Return: CF clear
0003h get current temporary swap file size
Return: CF clear
DX:AX = current swap file size in bytes
0000h:0000h if permanent swap file
Note: this API is only available in protected mode, and may only be called
from the system VM
SeeAlso: #0985 at INT 20"Windows",#2350
(Table 2349)
Values for MS Windows PAGEFILE pager type:
00h paging disabled
01h MSDOS
02h BIOS
03h 32-bit disk access
SeeAlso: #2348
--------W-2F1684BX0022-----------------------
INT 2F P - MS Windows - APIX - GET API ENTRY POINT
AX = 1684h
BX = 0022h (virtual device ID for APIX device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2350)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2350)
Call APIX protected-mode entry point with:
AH = function number
00h get APIX version
Return: CF clear
AH = major version
AL = minor version
01h ???
Return: CF clear
AX = number of ???
02h NOP
Return: CF clear
03h ???
Return: CF clear
AX = 0000h/FFFFh
else
Return: CF clear (bug?)
SeeAlso: #2348,#2353
--------W-2F1684BX0026-----------------------
INT 2F P - MS Windows - VPOWERD - GET API ENTRY POINT
AX = 1684h
BX = 0026h (virtual device ID for VPOWERD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2351)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2351)
Call VPOWERD.VXD entry point with:
AX = function number
0000h get VPOWERD version
Return: DX = 0000h
AX = version (AH = major, AL = minor)
0001h get APM BIOS version
Return: DX:AX = APM BIOS version
0002h get current power management level
Return: DX:AX = power management level
0003h enable/disable power management (see INT 15/AX=5308h)
??? = new state of power management
Return: DX:AX = 0000h:0000h if successful
else error code (see #2352)
0004h set power state (see INT 15/AX=5307h)
Return: DX:AX = 0000h:0000h if successful
else error code (see #2352)
0005h set system power status
Return: DX:AX = 0000h:0000h if successful
else error code (see #2352)
0006h restore APM power-on defaults (see INT 15/AX=5309h)
Return: DX:AX = 0000h:0000h if successful
else error code (see #2352)
0007h get power status (see INT 15/AX=530Ah)
Return: ???
0008h get APM 1.1 power state (see INT 15/AX=530Ch)
Return: ???
0009h invoke OEM APM function
??? -> buffer containing parameters for INT 15/AX=5380h
Return: DX:AX = 0000h:0000h or error code (see #2352)
buffer updated if successful
000Ah register power handler
???
Return: DX:AX = 0000h:0000h or error code
000Bh deregister power handler
???
Return: DX:AX = 0000h:0000h or error code (see #2352)
000Ch Win32 get system power status
000Dh Win32 set system power status
else
Return: DX = 0000h
AX = 00FFh
SeeAlso: #2350,#2353
(Table 2352)
Values for VPOWERD.VXD error code:
000000xxh APM error code
000000FFh function number out of range
80000001h ??? (service 05h)
80000002h ??? (service 0Dh)
80000003h specified NULL buffer pointer (service 07h,08h,09h)
80000005h ??? (service 03h)
80000006h ??? (service 04h)
80000007h ??? (service 05h)
80000008h ??? (service 05h)
80000009h out of memory (service 0Ah)
8000000Ah ??? (service 0Ah)
8000000Bh invalid power handler (service 0Bh)
8000000Ch unsupported/disabled??? function
SeeAlso: #2351,#0986
--------W-2F1684BX0027-----------------------
INT 2F - MS Windows95 - VXDLDR - GET API ENTRY POINT
AX = 1684h
BX = 0027h (virtual device ID for VXDLDR device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2353)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2353)
Call VXDLDR entry point with:
EAX = function number
0000h get VXDLDR version
Return: CF clear
AX = 0000h (successful)
DH = major version
DL = minor version
0001h load device
BX = ASCIZ 8.3 filename of dynamically-loadable VxD (must
reside in Windows system directory)
Return: CF clear if successful
AX = 0000h
ES:DI -> VxD API entry point
CF set on error
AX = error code (see #2354)
0002h unload device
BX = ASCIZ 8.3 filename of dynamically-loadable VxD (must
reside in Windows system directory)
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code (see #2354)
else
Return: CF set
AX = 000Bh
SeeAlso: #2351,#2355
(Table 2354)
Values for VXDLDR error code:
0000h successful
000Bh invalid function number
SeeAlso: #2353
--------W-2F1684BX0028-----------------------
INT 2F - MS Windows - NDIS - GET API ENTRY POINT
AX = 1684h
BX = 0028h (virtual device ID for NDIS device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2355)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2355)
Call NDIS.VXD entry point with:
??? = function number
0000h set ??? to ???
??? = new ???
Return: DX:AX = 0000h:0001h
0002h ???
???
Return: DX:AX -> ???
0003h reset ??? to default
Return: DX:AX = 0000h:0001h
else
Return: DX:AX = 0000h:0000h
SeeAlso: #2353,#2356
--------W-2F1684BX002A-----------------------
INT 2F P - MS Windows - VWIN32 - GET API ENTRY POINT
AX = 1684h
BX = 002Ah (virtual device ID for VWIN32 device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2356)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2356)
Call VWIN32.VXD entry point with:
AH = function number
00h get VWIN32 version and ???
Return: CF clear
AH = major version
AL = minor version
EDX = ???
01h ???
EBX = ???
ECX = ???
Return: CF clear
EAX = ???
02h ???
Return: CF clear
AX = ??? or 0000h
03h address allocation
DS:??? -> buffer containing/for page data
ECX = length of buffer
AL = subfunction
00h reserve page(s)
01h commit page(s)
02h decommit page(s)
03h free page(s)
Return: CF clear if successful
CF set on error
Note: this function uses ECX bytes of stack
04h get ???
Return: CF clear
EAX = ???
05h ???
EBX = ???
Return: CF clear
EAX = ???
06h ???
EBX = ???
Return: CF clear
EAX = ???
07h ???
EBX = ???
Return: CF clear
EAX = ???
08h get ???
Return: CF clear
AX = ???
09h ???
EBX = ???
ECX = ???
Return: CF clear
0Ah ???
EBX = ???
Return: CF clear
0Bh ???
EBX = ???
Return: CF clear
0Ch ???
EBX = ???
ECX = ???
EDX = ???
???
Return: CF clear if successful
EAX = ???
CF set on error
0Dh clear ???
Return: CF clear
0Eh ???
EBX = ???
ECX = ???
Return: CF clear
0Fh ???
EBX = ???
ECX = ???
Return: CF clear
10h ???
Return: CF clear
Note: invokes VMMcall 00010184h
11h ???
Return: CF clear
Note: invokes VMMcall 00010160h
12h ???
???
13h pop up system error dialogue
Return: CF clear
AX = ??? or 0000h
14h "IFSMgr_GetConversionTablePtrs"
Return: CF clear
DX:AX -> ???
Note: invokes VxDcall 00400051h
15h "Boost_With_Decay"
EBX = ???
ECX = ???
EDX = ???
Return: CF clear
else
Return: CF set
SeeAlso: #2355,#2357
--------W-2F1684BX002B-----------------------
INT 2F - MS Windows - VCOMM - GET API ENTRY POINT
AX = 1684h
BX = 002Bh (virtual device ID for VCOMM device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2357)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2357)
Call VCOMM.VXD entry point with:
AX = function number
0000h open COM/LPT port
BX = port number (00h-7Fh = COMx, 80h-FFh = LPTx)
Return: DX:AX = handle???
0001h set comm state
???
Return: AX = ???
0002h setup comm port
???
Return: AX = status (0000h failed, FFFFh success)
0003h transmit character
EBX = handle???
CL = character to transmit
Return: AX = status???
0004h close comm port
EBX = handle???
Return: ???
0005h clear comm error
EBX = handle???
EAX = ???
Return: AX = status???
0006h "EscapeCommFunction"
EBX = handle???
CX = ???
EAX = ???
Return: DX:AX = ???
0007h purge buffers
EBX = handle???
CX = ???
Return: AX = status???
0008h set comm event mask
EBX = handle???
CX = new event mask
Return: AX = status???
0009h get comm event mask
EBX = handle???
Return: AX = current event mask
000Ah ???
EBX = handle???
Return: ???
000Bh "WriteComm"
EBX = handle???
CX = number of characters to write
ES???:BX -> buffer (if CX > 1)
SI??? low byte contains character if CX=1
Return: AX = status
EAX high word may be destroyed
000Ch "ReadComm"
EBX = handle???
CX = number of bytes to read
ES???:DI -> buffer
Return: AX = status ???
ZF = ???
000Dh set ??? callback
EBX = handle???
CX = ???
DX = ???
Return: AX = status???
else
Return: AX = 0000h
SeeAlso: #2356,#2358
--------W-2F1684BX002D-----------------------
INT 2F P - MS Windows - W32S - GET API ENTRY POINT
AX = 1684h
BX = 002Dh (virtual device ID for W32S device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0030-----------------------
INT 2F P - MS Windows - MACH32 - GET API ENTRY POINT
AX = 1684h
BX = 0030h (virtual device ID for MACH32 device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0032-----------------------
INT 2F - MS Windows - SERVER / VSERVER - GET API ENTRY POINT
AX = 1684h
BX = 0032h (virtual device ID for SERVER device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2358)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",#0992 at INT 20"Windows"
(Table 2358)
Call Windows95 VSERVER.VXD protected-mode entry point with:
AX = function number
0003h NOP
Return: AX = 0000h
0004h NOP
Return: AX = 0000h
0007h NOP
Return: AX = 0000h
0008h NOP
Return: nothing
000Fh ???
Return: AX = status
0000h successful
0842h on error
0010h ???
Return: AX = status
0000h successful
0842h on error
else
Return: AX = 0032h
SeeAlso: #2357,#2359
--------W-2F1684BX0033-----------------------
INT 2F - MS Windows - CONFIGMG - GET API ENTRY POINT
AX = 1684h
BX = 0033h (virtual device ID for CONFIGMG device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2359)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2359)
Call CONFIGMG.VXD entry point with:
AX = function number
0000h get CONFIGMG version
Return: CF clear
AH = major version
AL = minor version
...
005Ah
else
Return: CF set
AX = 0020h
SeeAlso: #0993 at INT 20"Windows",#2358,#2360
--------x-2F1684BX0034-----------------------
INT 2F - Intel Plug-and-Play - CONFIGURATION MANAGER - GET ENTRY POINT
AX = 1684h
BX = 0034h (ID for Configuration Manager) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> API entry point (see #2360)
0000h:0000h if Configuration Manager not loaded
Note: this API is often provided by a DOS device driver, in which case it
is available whether or not MSWindows is running
Index: installation check;Plug-and-Play Configuration Manager
SeeAlso: AX=1684h/BX=304Ch
(Table 2360)
Call Configuration Manager entry point with:
AX = function
0000h "CM_GetVersion" get supported DDI version
Return: AH = BCD major version
AL = BCD minor version
BX = number of devices identified by configuration
Note: returns AX = 0000h if no config manager installed
0001h "CM_GetConfig" get device configuration
BX = device index
ES:DI -> buffer for configuration information (see #2362)
Return: AX = status
0000h successful
ES:DI buffer filled
other error code (0001h = index out of range)
0002h "CM_LockConfig" lock device configuration
ES:DI -> configuration information (see #2362)
Return: AX = status
0000h successful
ES:DI buffer filled with assigned config
0001h resources conflict
0002h invalid request or configuration info
0003h "CM_UnlockConfig" unlock device configuration
ES:DI -> configuration information (see #2362)
Return: AX = status
0000h successful
ES:DI buffer filled with assigned config
0001h invalid request or configuration info
0004h "CME_QueryResources" get hot-swappable resources
ES:DI -> configuration information (see #2362)
Return: AX = status (see #2361)
0005h "CME_AllocResources" remove resources from available pool
ES:DI -> configuration information (see #2362)
Return: AX = status (see #2361)
0006h "CME_DeallocResources" return resources to available pool
ES:DI -> configuration information (see #2362)
Return: AX = status (see #2361)
SeeAlso: #0994 at INT 20"Windows",#2359,#2363
(Table 2361)
Values for Configuration Manager status:
00h successful
01h device not found, configuration error
02h I/O port unavailable
04h IRQ unavailable
08h DMA channel unavailable
10h memory range unavailable
SeeAlso: #2360
Format of Configuration Information Structure:
Offset Size Description (Table 2362)
00h DWORD bus ID
04h DWORD device ID
08h DWORD serial number
0Ch DWORD logical ID
10h DWORD flags
---ISA bus---
14h BYTE Card Select Number
15h BYTE logical device number
16h WORD Read Data port
------
18h WORD number of memory windows
1Ah 9 DWORDs physical base addresses of memory windows
3Eh 9 DWORDs length of memory windows
62h 9 WORDs memory window attributes
74h WORD number of I/O ports
76h 20 WORDs I/O port base addresses
B6h 20 WORDs lengths of I/O port ranges
F6h WORD number of IRQs
F8h 7 BYTEs IRQ registers
FFh 7 BYTEs IRQ attributes
106h WORD number of DMA channels
108h 7 BYTEs DMA channels used
10Fh 7 WORDs DMA channel attributes
11Dh 3 BYTEs reserved
SeeAlso: #2360
--------W-2F1684BX0036-----------------------
INT 2F - MS Windows - VFBACKUP - GET API ENTRY POINT
AX = 1684h
BX = 0036h (virtual device ID for VFBACKUP device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2363)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2363)
Call VFBACKUP.VXD entry point with:
nothing -- this API is a NOP for the default Windows95 VFBACKUP
SeeAlso: #2360,#0909
--------W-2F1684BX0037-----------------------
INT 2F - MS Windows - ENABLE.VXD - GET API ENTRY POINT
AX = 1684h
BX = 0037h (virtual device ID for ENABLE device) (see #2364)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2363)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2364)
Call Windows95 ENABLE.VXD entry point with:
AX = function number
0000h get ENABLE version
Return: CF clear
AX = version (AH = major, AL = minor)
0001h
EBX = ???
Return: ???
0002h get ???
Return: CF clear
DX:AX = ???
0003h get ???
Return: CF clear
DX:AX = ???
0004h ???
EBX = ???
ECX = ???
EDX = ???
Return: CF clear if successful
CF set on error
else
Return: CF set
SeeAlso: #2363,#2365
--------W-2F1684BX0038-----------------------
INT 2F - MS Windows - VCOND - GET API ENTRY POINT
AX = 1684h
BX = 0038h (virtual device ID for VCOND device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2365)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2365)
Call VCOND.VXD virtual-86 entry point with:
AX = function number
0202h
0203h
0204h
0205h
0206h
0207h
0208h
0209h
020Ah
020Bh
020Dh
020Eh
020Fh
0210h
0401h
0402h
0403h
0404h
0405h
else
NOP
SeeAlso: #2366,#2364
(Table 2366)
Call VCOND.VXD protected-mode entry point with:
AX = function number
0301h
0302h
0303h
0304h
0305h
0306h
0307h
0308h
else
NOP
SeeAlso: #2365,#2363
--------W-2F1684BX003B-----------------------
INT 2F - MS Windows - DSVXD - GET API ENTRY POINT
AX = 1684h
BX = 003Bh (virtual device ID for DSVXD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX003D-----------------------
INT 2F - MS Windows - BIOS VxD - GET API ENTRY POINT
AX = 1684h
BX = 003Dh (virtual device ID for BIOS device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2367)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2367)
Call BIOS.VXD entry point with:
AX = function number
0000h get BIOS.VXD version
Return: CF clear
AH = major version
AL = minor version
0100h ???
Return: AX = 0000h
Note: calls CONFIGMG services 804Eh/804Fh
0200h ???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code???
Note: invokes VxDcall 00290002h
0300h ???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code???
else
Return: CF set
SeeAlso: #2366,#2368
--------W-2F1684BX003E-----------------------
INT 2F - MS Windows - WSOCK - GET API ENTRY POINT
AX = 1684h
BX = 003Eh (virtual device ID for WSOCK device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX011F-----------------------
INT 2F P - MS Windows - VFLATD - GET API ENTRY POINT
AX = 1684h
BX = 011Fh (virtual device ID for VFLATD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2368)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2368)
Call VFLATD.VXD entry point with:
DL = function number
00h get VFLATD version and ???
Return: CF clear
EAX = version (AH = major, AL = minor)
EBX = ???
ECX = ???
EDX = ??? or 00000000h
01h ???
AX = ???
CX = ???
Return: EAX = ???
EDX = ???
02h ???
???
03h ???
EAX = ???
EBX = ???
ESI = ???
CX = ???
DH = ???
Return: EAX = ???
EDX = ???
CF clear
04h ???
DH = ???
EAX = ???
ECX = ???
Return: CF clear
EAX = ???
EDX = ???
05h ???
???
Note: locks some linear memory and calls fn 02h
06h ???
???
Return: CF clear if successful
CF set on error
Note: calls fn 02h and unlocks some linear memory
else
Return: CF set
SeeAlso: #2367
--------W-2F1684BX0200-----------------------
INT 2F - MS Windows - VIPX - GET API ENTRY POINT
AX = 1684h
BX = 0200h (virtual device ID for VIPX device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0202-----------------------
INT 2F - MS Windows - WINICE - GET API ENTRY POINT
AX = 1684h
BX = 0202h (virtual device ID for WINICE device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0203-----------------------
INT 2F P - MS Windows - VCLIENT - GET API ENTRY POINT
AX = 1684h
BX = 0203h (virtual device ID for VCLIENT device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0205-----------------------
INT 2F - MS Windows - BCW - GET API ENTRY POINT
AX = 1684h
BX = 0205h (virtual device ID for BCW device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0207-----------------------
INT 2F R - MS Windows - DPMS VxD - GET API ENTRY POINT
AX = 1684h
BX = 0207h (virtual device ID for DPMS device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0234-----------------------
INT 2F - MS Windows - VCOMMUTE - GET API ENTRY POINT
AX = 1684h
BX = 0234h (virtual device ID for VCOMMUTE device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0442-----------------------
INT 2F P - MS Windows - VTDAPI - GET API ENTRY POINT
AX = 1684h
BX = 0442h (virtual device ID for VTDAPI device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2369)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2369)
Call VTDAPI.VXD entry point with:
EAX = function number
0000h
0001h
0002h
0003h
0004h
0005h
0006h
0007h
0008h
0009h
000Ah
000Bh
else
Return: nothing???
SeeAlso: #2369
--------W-2F1684BX0444-----------------------
INT 2F - MS Windows - VADMAD - GET API ENTRY POINT
AX = 1684h
BX = 0444h (virtual device ID for VADMAD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2370)
0000h:0000h if the VxD does not support an API
(Table 2370)
Call VADMAD entry point with:
DX = operation
0000h set VADMAD mode
AX = desired mode
0001h set VADMAD channel
AX = desired channel
Note: after setting mode/channel, start the DMA operation with an OUT to
I/O port 0Bh (channels 0-3) or D6h (channels 4-7)
SeeAlso: #0964 at INT 20"Windows"
--------W-2F1684BX0445-----------------------
INT 2F - MS Windows - VSBD - GET API ENTRY POINT
AX = 1684h
BX = 0445h (virtual device ID for VSBD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0446-----------------------
INT 2F - MS Windows - VADLIBD - GET API ENTRY POINT
AX = 1684h
BX = 0446h (virtual device ID for VADLIBD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0449-----------------------
INT 2F P - MS Windows - vjoyd - GET API ENTRY POINT
AX = 1684h
BX = 0449h (virtual device ID for "vjoyd" device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2371)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2371)
Call VJOYD.VXD entry point with:
AX = function number
0000h get VJOYD version
Return: AH = major version
AL = minor version
0001h ???
DX = ???
Return: DX:AX = ???
0002h ???
DX = ???
Return: DX:AX = ???
0003h ???
Retrun: AX = 0001h
0004h ???
DX = ???
Return: DX:AX = ???
0005h ???
Return: ???
else
Return: EAX = 00000000h
SeeAlso: #2369,#2372
--------W-2F1684BX044A-----------------------
INT 2F - MS Windows - mmdevldr - GET API ENTRY POINT
AX = 1684h
BX = 044Ah (virtual device ID for "mmdevldr" device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2372)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2372)
Call MMDEVLDR.VXD entry point with:
DX = function number
0000h ???
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code (000Bh)
Note: invokes VxDCall 17000Eh ("CallAtAppyTime")
0001h ???
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code (000Bh)
Note: invokes VxDCall 17000Eh ("CallAtAppyTime")
0002h ???
EDX = ???
Return: CF clear if successful
AX = 0000h
EDX = ???
CF set on error
AX = error code
0003h ???
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code
Note: invokes VxDcall 2A0002h ("VWIN32_QueueUserApc")
0004h set Win32 event
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code
Note: invokes VxDcall 2A000Eh ("VWIN32_SetWin32Event")
0005h ??? (allocates some memory)
Return: CF clear
AX = 0000h
0006h ??? (frees memory)
Return: CF clear if successful
AX = 0000h
CF set on error
AX = error code
else
Return: CF set
AX = 000Bh (invalid function)
SeeAlso: #2371,#2373
--------W-2F1684BX045D-----------------------
INT 2F P - MS Windows - VflatD - GET API ENTRY POINT
AX = 1684h
BX = 045Dh (virtual device ID for VflatD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX045F-----------------------
INT 2F - MS Windows - azt16 - GET API ENTRY POINT
AX = 1684h
BX = 045Fh (virtual device ID for "azt16" device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2373)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h/BX=3110h,AX=1684h"DEVICE API",INT 20"Windows"
(Table 2373)
Call azt16.VXD entry point with:
DX = function number
0000h get azt16 version
Return: CF clear
AX = version (AH=major, AL=minor)
0001h ???
AX = subfunction
0000h ???
Return:
0001h ???
ECX = ???
else error
Return: CF clear if successful
???
CF set on error
AX = error code
0002h ???
AX = ???
BX = ???
Return: ???
0003h ???
AX = ???
BX = ???
Return: ???
0004h ???
BX = ???
CX = ???
Return: CF clear if successful
AX = 0001h
CF set on error
AX = 0000h
0005h ???
BX = ???
CX = ???
Return: CF clear if successful
AX = 0001h
CF set on error
AX = 0000h
0006h ???
BX = ???
ECX = ???
Return: CF clear if succesful
AX = ???
CF set on error
AX = FFFFh
0100h get azt16 version
Return: CF clear
AX = version (AH=major, AL=minor)
0101h
AX = ???
ECX = ???
Return: CF clear if successful
AX = 0001h
CF set on error
AX = 0000h
0102h ???
AX = ???
Return: CF clear if successful
CF set on error
AX = reason??? (0/1/2)
0103h ???
AX = ???
Return: CF clear if successful
AX = 0000h
CF set on error
AX = reason??? (1/3)
0200h ???
EDX = ???
???
Return: CF clear if successful
DX:AX = ???
CF set on error
DX:AX = 0000h:0000h
0201h ???
???
Return: CF clear
AX= 0000h
else
Return: CF set
SeeAlso: #2372,#2392
--------W-2F1684BX0460-----------------------
INT 2F P - MS Windows - UNIMODEM - GET API ENTRY POINT
AX = 1684h
BX = 0460h (virtual device ID for UNIMODEM device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2374)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2374)
Call UNIMODEM.VXD protected-mode entry point with:
AX = function number
0000h
Return: AX = ???
0001h
Return: AX = ???
0002h
Return: AX = ???
0003h
Return: AX = ???
0004h
Return: AX = ???
0005h
Return: AX = ???
0006h
Return: AX = ???
0007h
Return: AX = ???
else
Return: AX = 0002h
SeeAlso: #2373,#2375
--------W-2F1684BX0480-----------------------
INT 2F - MS Windows - VNetSup - GET API ENTRY POINT
AX = 1684h
BX = 0480h (virtual device ID for VNetSup device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2375)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2375)
Call VNetSup.VXD entry point with:
AX = function number
0000h
Return: AX = ???
0001h
Return: AX = ???
0002h
Return: AX = ???
else
Return: CF set
AX = 0001h
SeeAlso: #2374,#2376
--------W-2F1684BX0482-----------------------
INT 2F - MS Windows - VBrowse - GET API ENTRY POINT
AX = 1684h
BX = 0482h (virtual device ID for VBrowse device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0483-----------------------
INT 2F - MS Windows - VSHARE - GET API ENTRY POINT
AX = 1684h
BX = 0483h (virtual device ID for VSHARE device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2376)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2376)
Call Windows95 VSHARE.VXD entry point with:
AX = function number
0000h get VSHARE version
Return: AH = major version
AL = (BCD?) minor version
else
NOP
SeeAlso: #2375
--------W-2F1684BX0484-----------------------
INT 2F P - MS Windows - IFSMgr - GET API ENTRY POINT
AX = 1684h
BX = 0484h (virtual device ID for IFSMgr device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0486-----------------------
INT 2F - MS Windows - VFAT - GET API ENTRY POINT
AX = 1684h
BX = 0486h (virtual device ID for VFAT device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0487-----------------------
INT 2F - MS Windows - NWLINK - GET API ENTRY POINT
AX = 1684h
BX = 0487h (virtual device ID for NWLINK device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX0489-----------------------
INT 2F R - MS Windows - VIP - GET API ENTRY POINT
AX = 1684h
BX = 0489h (virtual device ID for VIP device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX048A-----------------------
INT 2F - MS Windows 3.11 - VXDLDR - GET API ENTRY POINT
AX = 1684h
BX = 048Ah (virtual device ID for VTCP device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX048A-----------------------
INT 2F - MS Windows - VCACHE - GET API ENTRY POINT
AX = 1684h
BX = 048Ah (virtual device ID for VCACHE device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2378)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2377)
Call Windows95 VCACHE.VXD entry point with:
Return: CF set
SeeAlso: #2376,#2378
--------W-2F1684BX048D-----------------------
INT 2F - MS Windows - RASMAC - GET API ENTRY POINT
AX = 1684h
BX = 048Dh (virtual device ID for RASMAC device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX048E-----------------------
INT 2F - MS Windows - NWREDIR - GET API ENTRY POINT
AX = 1684h
BX = 048Eh (virtual device ID for NWREDIR device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2378)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2378)
Call Windows95 NWREDIR.VXD entry point with:
Return: CF set
EAX = FFFFFFFFh
SeeAlso: #2377
--------W-2F1684BX0494-----------------------
INT 2F - MS Windows - NSCL - GET API ENTRY POINT
AX = 1684h
BX = 0494h (virtual device ID for NSCL device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2379,#2380)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2379)
Call Windows95 NSCL.VXD virtual-86 entry point with:
AL = function number
00h
01h
02h
03h
04h
05h
06h
07h
08h
09h
0Ah
else
Return: AX = FFFFh
SeeAlso: #2378,#2379
(Table 2380)
Call Windows95 NSCL.VXD protected-mode entry point with:
AL = function number
00h
01h
02h
03h
else
Return: AX = FFFFh
SeeAlso: #2379
--------W-2F1684BX0499-----------------------
INT 2F - MS Windows - PPPMAC - GET API ENTRY POINT
AX = 1684h
BX = 0499h (virtual device ID for PPPMAC device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX049A-----------------------
INT 2F - MS Windows - VDHCP - GET API ENTRY POINT
AX = 1684h
BX = 049Ah (virtual device ID for VDHCP device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX049B-----------------------
INT 2F - MS Windows - VNBT - GET API ENTRY POINT
AX = 1684h
BX = 049Bh (virtual device ID for VNBT device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX1021-----------------------
INT 2F - MS Windows - VMB - GET API ENTRY POINT
AX = 1684h
BX = 1021h (virtual device ID for VMB device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX28A0-----------------------
INT 2F - MS Windows - PHARLAPX - GET API ENTRY POINT
AX = 1684h
BX = 28A0h (virtual device ID for PHARLAPX device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2381)
0000h:0000h if the VxD does not support an API
(Table 2381)
Call PHARLAPX VxD entry point with:
AX = function
0001h get PHARLAP.386 version
Return: AX = version number (AH = major, AL = minor)
---queue functions---
0101h allocate a new message queue
CX = size of queue data buffer in bytes
Return: DX:AX = handle for new queue, or 0000h:0000h on error
0102h allocate a new key queue
CX = size of queue data buffer in bytes
EDX = VM handle into which keys will be pasted
Return: DX:AX = handle for new queue, or 0000h:0000h on error
0103h free message queue
EDX = queue handle
Return: AX = status (0000h,0003h,0007h) (see #2382)
0104h free key queue
EDX = queue handle
Return: AX = status (0000h,0003h,0005h) (see #2382)
0105h add message to communications queue
EDX = queue handle
BX = length of message data in bytes
CX = length of message header in bytes
ES:(E)SI -> message header
GS:(E)DI -> message data
Return: AX = status (0000h-0003h,0007h) (see #2382)
0106h remove message from queue
EDX = queue handle
CX = length of buffer in bytes
ES:(E)SI -> buffer for message
Return: AX = status (0000h,0003h,0006h,0007h,0008h) (see #2382)
CX = length of returned message (if AX=0000h or 0008h)
0107h flush queue (remove all data)
EDX = queue handle
Return: AX = status (0000h,0003h) (see #2382)
0108h add PasteKey structure(s) to key queue
EDX = queue handle
CX = number of PasteKey structures in buffer
ES:(E)SI -> PasteKey array (see #2383)
Return: AX = status (0000h-0003h) (see #2382)
0109h register enqueueing callback function
EDX = queue handle
ECX = function argument
ES:(E)SI -> callback function
Return: AX = status (0000h,0003h,0009h) (see #2382)
010Ah register dequeueing callback function
EDX = queue handle
ECX = function argument
ES:(E)SI -> callback function
Return: AX = status (0000h,0003h,0009h) (see #2382)
010Bh unregister enqueueing callback function
EDX = queue handle
Return: AX = status (0000h,0003h,0009h) (see #2382)
010Ch unregister dequeueing callback function
EDX = queue handle
Return: AX = status (0000h,0003h,0009h) (see #2382)
010Dh get message queue status
EDX = queue handle
Return: AX = status (0000h,0003h) (see #2382)
CX = number of pending messages
010Eh peek at message in queue
EDX = queue handle
BX = number of message in queue (0000h = first)
CX = size of buffer in bytes
ES:(E)SI -> buffer for message
Return: AX = status (0000h,0003h,0006h,0008h) (see #2382)
CX = length of returned message (if AX=0000h or 0008h)
010Fh peek at last message in queue
EDX = queue handle
CX = size of buffer in bytes
ES:(E)SI -> buffer for message
Return: AX = status (0000h,0003h,0006h,0008h) (see #2382)
CX = length of returned message (if AX=0000h or 0008h)
0110h replace last message in queue
EDX = queue handle
CX = length of message header in bytes
BX = length of message data in bytes
ES:(E)SI -> message header
GS:(E)DI -> message data
Return: AX = status (0000h,0002h,0003h) (see #2382)
0111h set permitted message count for queue
EDX = queue handle
CX = maximum number of messages to enqueue (FFFFh = unlimited)
Return: AX = status (0000h,0003h) (see #2382)
---generalized VxD services---
0202h call VxD function
ES:(E)BX -> in/out register-set buffer
Return: buffer updated
0203h map flat
???
--system register functions---
0301h read system registers into buffer
ES:(E)SI -> 512-byte buffer
Return: AX = 0000h
buffer filled (mostly zeros)
0302h copy linear memory into buffer
EDX = linear address
CX = number of bytes to copy
ES:(E)SI -> buffer
Return: AX = 0000h
0303h copy data into linear memory
EDX = linear address
CX = number of bytes to copy
ES:(E)SI -> buffer
Return: AX = 0000h
0304h freeze VM
???
0305h unfreeze VM
???
---name registration functions---
0401h register name
EDX = magic number to associate with name
ES:(E)SI -> name to register
Return: AX = status (0000h,0009h) (see #2382)
0402h unregister name
ES:(E)SI -> name to be unregistered
Return: AX = status (0000h,0009h) (see #2382)
0403h look up name
ES:(E)SI -> name to look up
Return: DX:AX = magic number or 0000h:0000h if not registered
0404h get name list handle
Return: DX:AX = name list handle
0000h:0000h if not initialized
---special DOS server routines (undocumented)---
0501h register
0502h unregister
0503h validate VM
0504h get INT9 count
0505h get screen line
0506h get shift status
0507h get server PB pointer
0508h initialize DOS shell
0509h get last VM handle
(Table 2382)
Values for PHARLAPX function status:
00h successful
01h data is too large to fit in queue
02h queue is full
03h invalid queue handle
04h invalid VM handle for queue
05h error starting a paste operation
06h queue is empty
07h a VM is blocked waiting on the queue
08h message was too long (truncated)
09h unable to register or unregister specified callback
SeeAlso: #2381
Format of PHARLAPX PasteKey structure:
Offset Size Description (Table 2383)
00h BYTE ASCII code
01h BYTE scan code (see #0005)
02h WORD shift states
SeeAlso: #2381
Format of PHARLAPX VxD-call register structure:
Offset Size Description (Table 2384)
00h DWORD call number
04h WORD input register map (see #2385)
06h WORD output register map (see #2385)
08h 7 DWORDs values for EAX, EBX, ECX, EDX, EBP, ESI, EDI on call
24h 4 WORDs values for DS, ES, FG, GS on call
2Ch DWORD EFLAGS on call
30h 7 DWORDs returned values of EAX, EBX, ECX, EDX, EBP, ESI, EDI
4Ch 4 WORDs returned values of DS, ES, FS, GS
54h DWORD returned EFLAGS
SeeAlso: #2381
Bitfields for PHARLAPX VxD-call register map:
Bit(s) Description (Table 2385)
0 value in EAX field is valid
1 value in EBX field is valid
2 value in ECX field is valid
3 value in EDX field is valid
4 value in EBP field is valid
5 value in ESI field is valid
6 value in EDI field is valid
7 value in DS field is valid
8 value in ES field is valid
9 value in FS field is valid
10 value in GS field is valid
11 value in EFLAGS field is valid
SeeAlso: #2384
--------W-2F1684BX28A1-----------------------
INT 2F - MS Windows - PharLap VxD - GET API ENTRY POINT
AX = 1684h
BX = 28A1h (virtual device ID for PharLap device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",AX=1684h/BX=28A0h,INT 20"Windows"
--------W-2F1684BX2925-----------------------
INT 2F - MS Windows - EDOS - GET API ENTRY POINT
AX = 1684h
BX = 2925h (virtual device ID for EDOS device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2386)
0000h:0000h if the VxD does not support an API
(Table 2386)
Call EDOS entry point with:
AX = 0000h get EDOS version number
Return: AH = major version
AL = minor version
AX = 0001h display message
CX = 0
DX:BX -> ASCIZ Message
AX = 0002h get EDOS error coded
Return: EAX = time in milliseconds that Windows has been running
AX = 0003h execute windows program
Return: EAX = cumulative amount of time the virtual machine has
been active, in milliseconds
AX = 0008h get/set priority
BX = 0000h??? foreground
0001h background
DI = 0000h get
0001h set
DX = priority setting
Return: CX = foreground priority
DX = background priority
BX:AX = flags
00000001h exclusive ON
00000010h background ON
SI = CPU percentage
--------W-2F1684BX292D-----------------------
INT 2F - MS Windows - VSBPD - GET API ENTRY POINT
AX = 1684h
BX = 292Dh (virtual device ID for VSBPD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------W-2F1684BX295A-----------------------
INT 2F - MS Windows - GRVSULTR - GET API ENTRY POINT
AX = 1684h
BX = 295Ah (virtual device ID for GRVSULTR device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
--------x-2F1684BX304C-----------------------
INT 2F - Intel Plug-and-Play - CONFIGURATION ACCESS - GET ENTRY POINT
AX = 1684h
BX = 304Ch (ID for Configuration Access) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> API entry point (see #2387)
0000h:0000h if Configuration Access not loaded
Note: this API is often provided by a DOS device driver, in which case it
is available whether or not MSWindows is running
Index: installation check;Plug-and-Play Configuration Access
SeeAlso: AX=1684h/BX=0034h
(Table 2387)
Call Plug-and-Play Configuration Access entry point with:
AX = function
0000h "CA_GetVersion"
Return: AX = BCD version (AH = major, AL = minor)
0001h "CA_PCI_Read_Config_Byte" (see also INT 1A/AX=B108h)
!!!
0002h "CA_PCI_Read_Config_Word" (see also INT 1A/AX=B109h)
0003h "CA_PCI_Read_Config_DWord" (see also INT 1A/AX=B10Ah)
0004h "CA_PCI_Write_Config_Byte" (see also INT 1A/AX=B10Bh)
0005h "CA_PCI_Write_Config_Word" (see also INT 1A/AX=B10Ch)
0006h "CA_PCI_Write_Config_DWord" (see also INT 1A/AX=B10Dh)
0007h "CA_PCI_Generate_Special_Cycle" (see also INT 1A/AX=B106h)
0008h "CA_PCI_Get_Routing_Options" (see also INT 1A/AX=B10Eh)
0009h invalid function
000Ah invalid function
000Bh "CA_PnPISA_Get_Info"
000Ch "CA_PnPISA_Read_Config_Byte"
000Dh "CA_PnPISA_Write_Config_Byte"
000Eh "CA_PnPISA_Get_Resource_Data"
000Fh invalid function
0010h "CA_EISA_Get_Board_ID"
0011h "CA_EISA_Get_Slot_Config"
0012h "CA_EISA_Get_SlotFunc_Config"
0013h "CA_EISA_Clear_NVRAM_Config"
0014h "CA_EISA_Write_Config"
0015h invalid function
0016h "CA_ESCD_Get_Info"
0017h "CA_ESCD_Read_Config"
0018h "CA_ESCD_Write_Config"
0019h invalid function
001Ah "CA_Acfg_PCI_Manage_IRQs"
DL = IRQ???
ES:DI -> ???
Return: AX = status
001Bh "CA_Acfg_PCI_Get_Routing_Options"
ES:DI -> IRQ routing table header
(see #0955 at INT 1A/AX=B406h)
Return: AX = status
001Ch-001Fh invalid functions
0020h "CA_PnPB_Get_Num_Sys_Dev_Nodes"
0021h "CA_PnPB_Get_Sys_Dev_Node"
0022h "CA_PnPB_Set_Sys_Dev_Node"
0023h "CA_PnPB_Get_Stat_Res_Info"
0024h "CA_PnPB_Set_Stat_Res_Info"
Return: AX = FFFFh if unsupported function
SeeAlso: #2388
--------W-2F1684BX3099-----------------------
INT 2F - MS Windows - VVidramD - GET API ENTRY POINT
AX = 1684h
BX = 3099h (virtual device ID for VVidramD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2388)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2388)
Call VVidramD (VIDRAM.VXD) virtual-86 entry point with:
AX = function number
0000h map page???
BX = page number???
Return: CF clear if successful
CF set on error
0001h ???
Return: CF clear if successful
CF set on error
else
Return: CF set
SeeAlso: #2387,#2389
--------W-2F1684BX30F6-----------------------
INT 2F P - MS Windows - WSVV - GET API ENTRY POINT
AX = 1684h
BX = 30F6h (virtual device ID for WSVV device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2389)
Call WSVV.VXD protected-mode entry point with:
AX = function number
????
Return: ???
SeeAlso: #2388,#2390
--------W-2F1684BX310E-----------------------
INT 2F - MS Windows - WPS - GET API ENTRY POINT
AX = 1684h
BX = 310Eh (virtual device ID for WPS device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2390)
0000h:0000h if the VxD does not support an API
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2390)
Call WPS protected-mode entry point with:
DX = function
0000h get WPS.386 version
Return: CF clear
AX = version (AH = major, AL = minor)
0001h get number of installed VxDs
Return: CF clear
AX = number of installed VxDs
0002h get VxD characteristics
AX = number of VxD
ES:BX -> buffer for VxD characteristics structure (see #2391)
Return: CF clear
ES:BX buffer filled
SeeAlso: #2389,#2393
Format of WPS.386 VxD characteristics structure:
Offset Size Description (Table 2391)
00h WORD VxD ID number
02h BYTE VxD minor version
03h BYTE VxD major version
04h BYTE DDK minor version
05h BYTE DDK major version
06h WORD flags
bit 0: V86 API supported
bit 1: PM API supported
bit 2: services supported
08h DWORD start order
0Ch 9 BYTEs ASCIZ VxD name
SeeAlso: #2390
--------W-2F1684BX3110-----------------------
INT 2F - MS Windows - VSGLX16.386 - GET API ENTRY POINT
AX = 1684h
BX = 3110h (virtual device ID for VSGLX16.386) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2392)
0000h:0000h if the VxD does not support an API
SeeAlso: AX=1684h/BX=045Fh,AX=1684h"DEVICE API",INT 20"Windows"
(Table 2392)
Call VSGLX16.386 entry point with:
DX = function number
0000h get azt16 version
Return: CF clear
AX = version returned by "azt16" device
0001h get ???
AX = ??? (always fails if nonzero)
ES:BX -> buffer for ???
first DWORD of buffer must be set to length of buffer
(in bytes, 1 <= size <= 92) before calling
Return: CF clear if successful
AX = 0001h
CF set on error (invalid pointer, bad buffer size)
AX = 0000h
0002h
AX = ???
BX = ???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code
0003h
AX = ???
BX = ???
Return: CF clear if successful
CF set on error
0004h set ???
ES:DI -> buffer containing ???
BX = ???
CX = number of bytes to copy
Return: CF clear if successful
AX = 0001h
CF set on error
AX = 0000h
0005h get ???
ES:DI -> buffer for ???
BX = ???
CX = number of bytes to copy
Return: CF clear if successful
AX = 0001h
CF set on error
AX = 0000h
else
Return: CF set
SeeAlso: #2373
--------W-2F1684BX31CF-----------------------
INT 2F - MS Windows - STAT.386 - GET API ENTRY POINT
AX = 1684h
BX = 31CFh (virtual device ID for STAT.386) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2393)
0000h:0000h if the VxD does not support an API
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2393)
Call STAT.386 entry point with:
AX = function
0000h get version
Return: AX = STAT.386 version (AH = major, AL = minor)
0001h execute RDMSR/WRMSR/RDTSC
BH = 00h
BL = second opcode byte (30h=WRMSR,31h=RDTSC,32h=RDMSR)
EDX:EDI = value to be written (for BL=30h)
ECX = MSR number for RDMSR/WRMSR
Return: EDX:EAX = value read (RDTSR/RDMSR only)
SeeAlso: #2390,#2394
--------W-2F1684BX34DC-----------------------
INT 2F - QEMM v8.01 - MAGNARAM VxD - GET API ENTRY POINT
AX = 1684h
BX = 34DCh (virtual device ID for MAGNARAM) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2394)
0000h:0000h if the VxD does not support an API
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2394)
Call MAGNARAM MAGNA95.VXD protected-mode entry point with:
AX = function number
0000h get version and ???
Return: AX = version (AH = major, AL = minor)
CX = ???
bit 0: ???
bit 1: ???
0001h get ???
Return: CF clear
DX:AX = ??? SHL 2
0002h
Return: CF clear if successful
AX = ???
DX = ???
CF set on error
0003h get ???
Return: CF clear
DX:AX = ??? SHL 2
0004h ???
Return: CF clear
DX:AX = ???
0005h ???
Return: CF clear
DX:AX = ???
0006h ???
Return: CF clear
DX:AX = ???
0007h ???
Return: CF clear
DX:AX = ???
0008h ???
Return: CF clear
DX:AX = ???
0009h ???
Return: CF clear
DX:AX = ???
000Ah ???
Return: CF clear
DX:AX = ???
000Bh get ???
Return: CF clear
DX:AX = ??? SHL 2
000Ch get ???
Return: CF clear
DX:AX = ??? SHL 2
000Dh get ???
Return: CF clear
DX:AX = ??? SHL 2
000Eh get ???
Return: CF clear
AX = ???
DX = ???
000Fh get ???
Return: CF clear
DX:AX = ???
0010h get ???
Return: CF clear
DX:AX = ???
0011h get ???
Return: CF clear
DX:AX = ???
0012h get ???
Return: CF clear
DX:AX = ???
0013h get ???
Return: CF clear
DX:AX = ???
0014h get ???
Return: CF clear
DX:AX = ???
0015h get ???
Return: CF clear
DX:AX = ???
else
Return: CF set
SeeAlso: #2393,#2395
--------W-2F1684BX357E-----------------------
INT 2F - MS Windows - DSOUND - GET API ENTRY POINT
AX = 1684h
BX = 357Eh (virtual device ID for DSOUND device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
----------2F1684BX377B-----------------------
INT 2F - MS Windows - MX1501HAD - GET API ENTRY POINT
AX = 1684h
BX = 377Bh (virtual device ID for MX1501HAD device)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2395)
0000h:0000h if the VxD does not support an API
Note: The drivers VCMD95C.VXD and VCMD.386 are part of the driver disks
provided with the chip-card-reader/keyboard combination MX 1501 HAD,
produced by Cherry
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2395)
Call CHERRY VCMD95C.VXD entry point with:
AX = function
0001h get version
Return: AX = version number (0100h) (AH = major, AL = minor)
0002h hook INT 09 (and 8???)
0003h unhook INT 09 (and 8???)
0004h get number of bytes in FIFO
Return: AX = bytes in FIFO
0005h get next FIFO-data
Return: AX = data
BL = port number
BH = direction (1=in, 0=out)
DX:CX = timestamp
0006h clear FIFO
0007h output byte
DX = port number
BL = keyboard command
Return: data in FIFO (see #2397)
(value, port, in/out, timestamp)
0008h input byte
DX = port number
Return: data in FIFO (see #2397)
(value, port, in/out, timestamp)
0009h input byte immediately
DX = port number
Return: AX = data
000Ah read next FIFO data (nondestructive)
Return: AX = data
BL = port number
BH = direction (1=in, 0=out)
DX:CX = timestamp
000Bh get timestamp
Return: DX:CX = timestamp (in ms)
000Ch enable IRQ 1
000Dh disable IRQ 1
000Eh enable data retrieval
Note: Sets a flag in the internal mode-byte which
tells the driver to recognize the data
000Fh disable data retrieval
Note: resets a flag in the internal mode-byte
0010h get retrieval mode
Return: AX = current retrieval mode
0011h set retrieval mode
BX = new retrieval mode (see #2396)
Return: AX = old retrieval mode
0012h get command value
Return: AX = command value
0013h set command value
BX = command value
SeeAlso: #2393,#2398
Bitfields for retrieval mode:
Bit(s) Description (Table 2396)
0 enable data retrieval
1 0 = interrupt-driven
1 = polling mode
2 0 = read port 60h everytime
1 = read port 60h only when OBF of port 64h is set
3 0 = don't call old INT 9
1 = call INT 9 before our INT-handler
4-7 reserved
SeeAlso: #2395,#2397
Format of FIFO entry (1024 entries in FIFO):
Offset Size Description (Table 2397)
00h BYTE data byte
01h BYTE I/O port
02h BYTE direction (1=in, 0=out)
03h BYTE reserved
04h DWORD timestamp
SeeAlso: #2395,#2396
--------W-2F1684BX38DA-----------------------
INT 2F - MS Windows - VIWD - GET API ENTRY POINT
AX = 1684h
BX = 38DAh (virtual device ID for VIWD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2398)
0000h:0000h if the VxD does not support API in current mode
SeeAlso: AX=1684h"DEVICE API",INT 20"Windows"
(Table 2398)
Call VIWD.VXD entry point with:
DX = function number
0000h ???
Return: CF clear
AX = ???
0004h ???
Return: CF clear
DX = 0000h
0006h
Return: CF clear
000Ah
AX = ???
Return: CF clear if successful
CF set on error
000Ch
000Dh
000Eh
Return: CF clear
000Fh
Return: CF clear
0010h
0011h
0015h
Return: CF clear if successful
AX = ???
CF set on error
AX = ???
DX = 0000h
0016h
0017h
Return: CF clear if successful
AX = ???
CF set on error
AX = ???
DX = 0000h
0018h ???
CX = ???
Return: CF clear if successful
AX = 0000h
CF set on error
else
Return: CF set
SeeAlso: #2395,#2399
--------W-2F1684BX4321-----------------------
INT 2F - MS Windows - POSTMSG - GET API ENTRY POINT
AX = 1684h
BX = 4321h (virtual device ID for POSTMSG device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2399,#2401)
0000h:0000h if the VxD does not support an API
(Table 2399)
Call POSTMSG protected-mode entry point with:
AX = window handle
CX:BX -> callback procedure (see #2400)
Return: nothing
Note: this call registers a WinApp with the VxD; the callback must be in a
fixed, non-discardable code segment
SeeAlso: #2401,#2402
(Table 2400)
Values POSTMSG callback routine is called with:
STACK: DWORD "lParam" parameter from DOSApp
WORD "wParam" parameter from DOSApp
WORD Windows message number (WM_USER + 100h)
WORD registered HWND
(Table 2401)
Call POSTMSG V86-mode entry point with:
BX = wParam value to pass to protected-mode callback
DX:AX = lParam value to pass to protected-mode callback
Return: CF clear if successful
CF set on error (no WinApp registered)
SeeAlso: #2399
--------W-2F1684BX7FE0-----------------------
INT 2F - MS Windows - VSWITCHD - GET API ENTRY POINT
AX = 1684h
BX = 7FE0h (virtual device ID for VSWITCHD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2402)
0000h:0000h if the VxD does not support an API
(Table 2402)
Call VSWITCHD entry point with:
AX = function
0000h toggle windowed mode (simulate Alt-Enter keypress)
Return: nothing
0001h get windowed mode
Return: CF clear if VM is windowed
CF set if VM is full-screen
SeeAlso: #2399,#2403
--------W-2F1684BX8888-----------------------
INT 2F - MS Windows - VbillD - GET API ENTRY POINT
AX = 1684h
BX = 8888h (virtual device ID for VbillD device) (see #2329)
ES:DI = 0000h:0000h
Return: ES:DI -> VxD API entry point (see #2403)
0000h:0000h if the VxD does not support an API
(Table 2403)
Call VbillD entry point with:
AX = function
0001h set reverse video
0002h set normal video
Return: ???
SeeAlso: #2402
--------W-2F1685-----------------------------
INT 2F - MS Windows - SWITCH VMs AND CALLBACK
AX = 1685h
BX = VM ID of virtual machine to switch to
CX = flags (see #2404)
DX:SI = priority boost (refer to VMM.INC)
ES:DI -> FAR procedure to callback
Return: CF set on error
AX = error code
01h invalid VM ID
02h invalid priority boost
03h invalid flags
CF clear if successful
event will be or has been called
Notes: some DOS devices, such as networks, need to call functions in a
specific VM. This call forces the appropriate VM to be installed.
the callback procedure must preserve all registers and return with IRET
SeeAlso: AX=1683h,INT 15/AX=1117h,AX=DB06h"WINGO"
Bitfields for VM switching flags:
Bit(s) Description (Table 2404)
0 wait until interrupts enabled
1 wait until critical section unowned
2-15 reserved (zero)
--------E-2F1686-----------------------------
INT 2F - DOS Protected-Mode Interface - DETECT MODE
AX = 1686h
Return: AX = 0000h if operating in protected mode under DPMI (INT 31 available)
AX nonzero if in real/V86 mode or no DPMI (INT 31 not available)
SeeAlso: AX=1687h
--------E-2F1687-----------------------------
INT 2F - DOS Protected-Mode Interface - INSTALLATION CHECK
AX = 1687h
Return: AX = 0000h if installed
BX = flags
bit 0: 32-bit programs supported
CL = processor type (02h=80286, 03h=80386, 04h=80486)
DH = DPMI major version
DL = two-digit DPMI minor version (binary)
SI = number of paragraphs of DOS extender private data
ES:DI -> DPMI mode-switch entry point (see #2405)
AX nonzero if not installed
SeeAlso: AX=1686h,AX=43E0h,AX=DE01h/BX=4450h,AX=FB42h/BX=0001h
SeeAlso: INT 31/AX=0400h,INT 31/AX=5702h,INT D4/AH=10h
(Table 2405)
Call DPMI mode switch entry point with:
AX = flags
bit 0: set if 32-bit program
ES = real mode segment of buffer for DPMI private data (ignored if
SI was zero)
Return: CF set on error
program still in real mode
AX = error code (DPMI 1.0+)
8011h unable to allocate all necessary descriptors
8021h 32-bit program specified, but 16-bit DPMI host
CF clear if successful
CS = 16-bit selector corresponding to real-mode CS
SS = selector corresponding to real-mode SS (64K limit)
DS = selector corresponding to real-mode DS (64K limit)
ES = selector to program's PSP (100h byte limit)
FS = GS = 0
high word of ESP = 0 if 32-bit program
program now in protected mode
Note: this entry point is only called for the initial switch to protected
mode
--------W-2F1688BX0BAD-----------------------
INT 2F U - MS Windows 3.0, 386MAX v6.01 - GET ALIAS SELECTOR TO LDT
AX = 1688h
BX = 0BADh
Return: AX = 0000h if supported
BX = alias selector for LDT
Note: use the LSL instruction or GetSelectorLimit() to find LDT size
this call should be considered obsolete for Windows 3.1+, as the
alias selector can be retrieved via the API entry point for
"MS-DOS" retrieved from INT 2F/AX=168Ah (see #2407)
SeeAlso: AX=1687h,#2407
--------W-2F1689-----------------------------
INT 2F U - MS Windows 3.0+ - KERNEL IDLE CALL
AX = 1689h
???
Return: ???
Desc: the Windows KERNEL idle loop calls this function, which VMM uses as an
indication that the system is idle, which in turn generates INT 28
and INT 2F/AX=1607h/BX=0018h callouts
SeeAlso: AX=1680h,AX=1607h/BX=0018h,INT 15/AX=1000h,INT 28
--------E-2F168A-----------------------------
INT 2F - DPMI 0.9+ - GET VENDOR-SPECIFIC API ENTRY POINT
AX = 168Ah
DS:(E)SI = selector:offset of ASCIZ vendor name (see #2406)
Return: AL = status
00h successful
ES:(E)DI -> extended API entry point
8Ah unsuccessful
Notes: the vendor name is used to determine which entry point to return; it is
case-sensitive
available in protected mode only
32-bit applications use ESI and EDI, 16-bit applications use SI and DI
this call is present but not documented for DPMI 0.9
the Borland C++ 3.1 DPMILOAD does not handle requests for entry points
other than the MS-DOS one gracefully, producing an unhandled
exception report; this has been fixed in the Borland Pascal 7 version
SeeAlso: AX=1687h,INT 31/AX=0A00h,INT 31/AH=57h
(Table 2406)
Values for DPMI vendor-specific API names:
"MS-DOS" MS Windows and 386MAX v6.00+ (see #2407)
"386MAX" 386MAX v6.00+
"HELIX_DPMI" Helix Netroom's DPMI server
"Phar Lap" Phar Lap 286|DOS-Extender RUN286 (see #2408)
"RATIONAL DOS/4G" DOS/4G, DOS/4GW
"VIRTUAL SUPPORT" Borland 32RTM
(Table 2407)
Call Windows-support ("MS-DOS") entry point with:
AX = 0100h get LDT alias selector
Return: CF clear if successful
AX = alias selector
CF set on error
SeeAlso: #2406,AX=1688h/BX=0BADh
(Table 2408)
Call Phar Lap RUN286 entry point with:
AX = 0000h (function "load MSW")
BX = new value for MSW register (low word of CR0)
Return: ???
SeeAlso: #2406
--------W-2F168B-----------------------------
INT 2F - MS Windows 3.1 - SET FOCUS TO SPECIFIED VIRTUAL MACHINE
AX = 168Bh
BX = virtual machine ID (see AX=1683h), 0000h for current DOS box
Return: AL = 00h if focus set to specified VM
Notes: documented on the Microsoft Developer's Network CD-ROM
if the VM is a windowed DOS box, it will be set to full screen
SeeAlso: AX=1683h
--------W-2F168C-----------------------------
INT 2F - MS Windows 3.1 - RESTART COMMAND
AX = 168Ch
???
Return: ???
Note: WIN.COM executes specified application
--------W-2F168EDX0000-----------------------
INT 2F - Windows95 - TITLE - SET APPLICATION TITLE
AX = 168Eh
DX = 0000h
ES:DI -> ASCIZ application title (max 79 chars+NUL)
Return: AX = status
0000h failed
0001h successful
Note: if ES:DI is 0000h:0000h or points at an empty string, the current
title is removed
BUG: this function can return a successful status even though the title was
not changed; reportedly, waiting for two clock ticks after program
startup solves this problem
SeeAlso: AX=168Eh/DX=0001h,AX=168Eh/DX=0002h
--------W-2F168EDX0001-----------------------
INT 2F - Windows95 - TITLE - SET VIRTUAL MACHINE TITLE
AX = 168Eh
DX = 0001h
ES:DI -> ASCIZ virtual machine title (max 29 chars+NUL)
Return: AX = status
0000h failed
0001h successful
Notes: if ES:DI is 0000h:0000h or points at an empty string, the current
title is removed
the VM title should only be changed on explicit instruction from the
user
BUG: this function can return a successful status even though the title was
not changed; reportedly, waiting for two clock ticks after program
startup solves this problem
SeeAlso: AX=168Eh/DX=0000h,AX=168Eh/DX=0003h
--------W-2F168EDX0002-----------------------
INT 2F - Windows95 - TITLE - GET APPLICATION TITLE
AX = 168Eh
DX = 0002h
ES:DI -> buffer for ASCIZ application title
CX = size of buffer in bytes
Return: AX = status
0000h failed
0001h successful
Desc: copy as much of the application's window title as possible to the given
buffer, appending a terminating NUL to the buffer
SeeAlso: AX=168Eh/DX=0000h,AX=168Eh/DX=0003h
--------W-2F168EDX0003-----------------------
INT 2F - Windows95 - TITLE - GET VIRTUAL MACHINE TITLE
AX = 168Eh
DX = 0003h
ES:DI -> buffer for ASCIZ virtual-machine title
CX = size of buffer in bytes
Return: AX = status
0000h failed
0001h successful
Desc: copy as much of the virtual machine's title as possible to the given
buffer, appending a terminating NUL to the buffer
SeeAlso: AX=168Eh/DX=0001h,AX=168Eh/DX=0002h
--------W-2F168FDH00-------------------------
INT 2F - Windows95 - CLOSE-AWARENESS - ENABLE/DISABLE CLOSE COMMAND
AX = 168Fh
DH = 00h
DL = new state
00h disabled
01h enabled
Return: AX = status
0000h successful
else failed
Desc: enable or disable the system menu Close command for an application
SeeAlso: AX=168Fh/DH=01h,AX=168Fh/DH=02h
--------W-2F168FDH01-------------------------
INT 2F - Windows95 - CLOSE-AWARENESS - QUERY CLOSE
AX = 168Fh
DH = 01h
DL = 00h (reserved)
Return: AX = status
0000h Close command selected but not yet acknowledged
0001h Close command issued and acknowledged
168Fh Close command not selected -- application should continue
Desc: determine whether the user has requested that the application be closed
by selecting the system menu's Close option
SeeAlso: AX=168Fh/DH=00h,AX=168Fh/DH=02h
--------W-2F168FDH02-------------------------
INT 2F - Windows95 - CLOSE-AWARENESS - ACKNOWLEDGE CLOSE
AX = 168Fh
DH = 02h
DL = 00h (reserved)
Return: AX = status
0000h successful
else failed
Note: once a Close command has been issued, no further keyboard input is
available to the application until it calls this function to
acknowledge the Close request
SeeAlso: AX=168Fh/DH=00h,AX=168Fh/DH=03h
--------W-2F168FDH03-------------------------
INT 2F - Windows95 - CLOSE-AWARENESS - CANCEL CLOSE
AX = 168Fh
DH = 03h
DL = 00h (reserved)
Return: AX = status
0000h successful
else failed
Desc: cancels a close request which has already been acknowledged if the
application determines that it will not exit at this time
SeeAlso: AX=168Fh/DH=00h,AX=168Fh/DH=03h
--------D-2F1690-----------------------------
INT 2F U - MS-DOS 7 kernel - GET/SET ???
AX = 1690h
ES:BX -> ???
Return: ES:BX -> ??? data (see #2409)
SeeAlso: AX=1611h,AX=1614h
Format of MS-DOS 7 kernel ??? data:
Offset Size Description (Table 2409)
00h DWORD -> ??? data (appears to list the installed drivers)
04h DWORD -> ??? (value passed in via ES:BX is stored here)
--------W-2F1700-----------------------------
INT 2F - MS Windows "WINOLDAP" - IDENTIFY WinOldAp VERSION
AX = 1700h
Return: AX = 1700h if this version of WINOLDAP doesn't support clipboard
AX <> 1700h
AL = WINOLDAP major version
AH = WINOLDAP minor version
Program: WinOldAp (WINOLDAP.MOD) is a Microsoft Windows extension supporting
"old" (character-mode) application access to Dynamic Data Exchange,
menus, and the Windows clipboard.
Note: this installation check DOES NOT follow the format used by other
software of returning AL=FFh
SeeAlso: AX=1701h,AX=4601h
Index: installation check;WINOLDAP
--------W-2F1701-----------------------------
INT 2F - MS Windows "WINOLDAP" - OPEN CLIPBOARD
AX = 1701h
Return: AX = status
nonzero success
0000h clipboard is already open
SeeAlso: AX=1700h,AX=1702h,AX=1703h,AX=1704h,INT 16/AX=CB00h
--------W-2F1702-----------------------------
INT 2F - MS Windows "WINOLDAP" - EMPTY CLIPBOARD
AX = 1702h
Return: AX = status
nonzero clipboard has been emptied
0000h failure
SeeAlso: AX=1700h,AX=1701h,AX=1703h,AX=1704h,INT 16/AX=CB05h
--------W-2F1703-----------------------------
INT 2F - MS Windows "WINOLDAP" - SET CLIPBOARD DATA
AX = 1703h
DX = clipboard format supported by WinOldAp (see #2410)
ES:BX -> data (see #2411,#2412)
SI:CX = size of data
Return: AX = status
nonzero data copied into the Clipboard
0000h failure
SeeAlso: AX=1701h,AX=1705h,INT 16/AX=CB04h
(Table 2410)
Values for WinOldAp clipboard format:
01h text
02h bitmap
03h metafile picture
04h SYLK
05h DIF
06h TIFF
07h OEM text
08h DIB bitmap
80h special format (used by Windows WRITE, maybe other Windows applets???)
81h DSP text
82h DSP bitmap
Format of Windows Clipboard bitmap:
Offset Size Description (Table 2411)
00h WORD type (0000h)
02h WORD width of bitmap in pixels
04h WORD height of bitmap in pixels
06h WORD bytes per line
08h BYTE number of color planes
09h BYTE number of adjacent color bits in pixel
0Ah DWORD pointer to start of data
0Eh WORD width in 0.1mm units
10h WORD height in 0.1mm units
12h N BYTEs bitmap data
Format of Windows metafile picture:
Offset Size Description (Table 2412)
00h WORD mapping mode
02h WORD X extent
04h WORD Y extent
06h WORD picture data
--------W-2F1704-----------------------------
INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA SIZE
AX = 1704h
DX = clipboard format supported by WinOldAp (see #2410)
Return: DX:AX = size of data in bytes, including any headers
0000h:0000h if no data in this format in the Clipboard
Note: Windows reportedly rounds up the size of the data to a multiple of 32
bytes
SeeAlso: AX=1700h,AX=1703h,AX=1705h
--------W-2F1705-----------------------------
INT 2F - MS Windows "WINOLDAP" - GET CLIPBOARD DATA
AX = 1705h
DX = clipboard format supported by WinOldAp (see #2410)
ES:BX -> buffer
Return: AX = status
nonzero success
0000h error, or no data in this format in Clipboard
SeeAlso: AX=1700h,AX=1704h,INT 16/AX=CB03h
--------W-2F1708-----------------------------
INT 2F - MS Windows "WINOLDAP" - CloseClipboard
AX = 1708h
Return: AX = status
0000h failure
nonzero success
--------W-2F1709-----------------------------
INT 2F - MS Windows "WINOLDAP" - COMPACT CLIPBOARD
AX = 1709h
SI:CX = desired size in bytes
Return: DX:AX = number of bytes in largest block of free memory
Note: WinOldAp is responsible for including the size of any headers
--------W-2F170A-----------------------------
INT 2F - MS Windows "WINOLDAP" - GET DEVICE CAPABILITIES
AX = 170Ah
DX = GDI information index (see #2413)
Return: AX = integer value of the desired item
(see #2414,#2415,#2416,#2417,#2418,#2419,#2420)
Note: This function returns the device-capability bits for the given display
(Table 2413)
Values for GDI information index:
00h device driver version
02h device classification
04h width in mm
06h height in mm
08h width in pixels
0Ah height in pixels
0Ch bits per pixel
0Eh number of bit planes
10h number of brushes supported by device
12h number of pens supported by device
14h number of markers supported by device
16h number of fonts supported by device
18h number of colors
1Ah size required for device descriptor
1Ch curve capabilities
1Eh line capabilities
20h polygon capabilities
22h text capabilities
24h clipping capabilities
26h bitblt capabilities
28h X aspect
2Ah Y aspect
2Ch length of hypotenuse of aspect
58h logical pixels per inch of width
5Ah logical pixels per inch of height
SeeAlso: #2414,#2415,#2416,#2417,#2418,#2419,#2420
(Table 2414)
Values for device classification:
00h vector plotter
01h raster display
02h raster printer
03h raster camera
04h character-stream, PLP
05h Metafile, VDM
06h display-file
SeeAlso: #2413,#2415,#2416,#2417,#2418,#2419,#2420
Bitfields for curve capabilities:
Bit(s) Description (Table 2415)
0 circles
1 pie wedges
2 chord arcs
3 ellipses
4 wide lines
5 styled lines
6 wide styled lines
7 interiors
SeeAlso: #2413,#2414,#2416,#2417,#2418,#2419,#2420
Bitfields for line capabilities:
Bit(s) Description (Table 2416)
1 polylines
2 markers
3 polymarkers
4 wide lines
5 styled lines
6 wide styled lines
7 interiors
SeeAlso: #2413,#2414,#2415,#2417,#2418,#2419,#2420
Bitfields for polygon capabilities:
Bit(s) Description (Table 2417)
0 polygons
1 rectangles
2 trapezoids
3 scanlines
4 wide borders
5 styled borders
6 wide styled borders
7 interiors
SeeAlso: #2413,#2414,#2415,#2416,#2418,#2419,#2420
Bitfields for text capabilities:
Bit(s) Description (Table 2418)
0 output precision character
1 output precision stroke
2 clippping precision stroke
3 90-degree character rotation
4 arbitrary character rotation
5 independent X and Y scaling
6 double-size
7 integer scaling
8 continuous scaling
9 bold
10 italic
11 underline
12 strikeout
13 raster fonts
14 vector fonts
15 reserved
SeeAlso: #2413,#2414,#2415,#2416,#2417,#2419,#2420
(Table 2419)
Values for clipping capabilities:
00h none
01h clipping to rectangles
SeeAlso: #2413,#2414,#2415,#2416,#2417,#2418,#2420
Bitfields for raster capabilities:
Bit(s) Description (Table 2420)
0 simple bitBLT
1 device requires banding support
2 device requires scaling support
3 supports >64K bitmap
SeeAlso: #2413,#2414,#2415,#2416,#2417,#2418,#2419
----------2F18-------------------------------
INT 2F U - MS-Manager
AH = 18h
???
Return: ???
--------l-2F1900-----------------------------
INT 2F U - DOS 4.x only SHELLB.COM - INSTALLATION CHECK
AX = 1900h
Return: AL = status
00h not installed
FFh installed
--------l-2F1901-----------------------------
INT 2F U - DOS 4.x only SHELLB.COM - SHELLC.EXE INTERFACE
AX = 1901h
BL = SHELLC type
00h transient
01h resident
DS:DX -> far call entry point for resident SHELLC.EXE
Return: ES:DI -> SHELLC.EXE workspace within SHELLB.COM
Note: SHELLB.COM and SHELLC.EXE are parts of the DOS 4.x shell
--------l-2F1902-----------------------------
INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM INTERFACE
AX = 1902h
ES:DI -> ASCIZ full filename of current batch file, with at least the
final filename element uppercased
DS:DX -> buffer for results
Return: AL = 00h failed, either
(a) final filename element quoted at ES:DI does not match
identity of shell batch file quoted as parameter of most
recent call of SHELLB command, or
(b) no more Program Start Commands available.
AL= FFh success, then:
memory at DS:[DX+1] onwards filled as:
DX+1: BYTE count of bytes of PSC
DX+2: N BYTEs Program Start Command text
BYTE 0Dh terminator
Desc: COMMAND.COM executes the result of this call in preference to
reading a command from a batch file. Thus the batch file does not
advance in execution for so long as SHELLB provides PSCs from its
workspace.
Note: The PSCs are planted in SHELLB workspace by SHELLC, the user
menu interface. The final PSC of a sequence is finished with a
GOTO COMMON, which causes a loop back in the batch file which called
SHELLC so as to execute SHELLC again. The check on batch file name
permits PSCs to CALL nested batch files while PSCs are still stacked
up for subsequent execution.
--------l-2F1903-----------------------------
INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM interface
AX = 1903h
ES:DI -> ASCIZ batch file name as for AX=1902h
Return: AL = status
FFh quoted batch file name matches last SHELLB parameter
00h it does not
--------l-2F1904-----------------------------
INT 2F U - DOS 4.x only SHELLB.COM - SHELLB transient to TSR intrface
AX = 1904h
Return: ES:DI -> name of current shell batch file:
WORD number of bytes of name following
BYTEs (8 max) uppercase name of shell batch file
----------2F1980-----------------------------
INT 2F U - IBM ROM-DOS v4.0 - INSTALLATION CHECK
AX = 1980h
Return: AL = FFh if ??? installed/supported
Note: called at the very beginning of SHELLSTB.COM, which exits if AL is not
FFh on return
SeeAlso: AX=1981h,AX=1982h
----------2F1981-----------------------------
INT 2F U - IBM ROM-DOS v4.0 - GET ??? STRING
AX = 1981h
DS:DX -> buffer for ???
Return: AL = status
FFh if successful
DS:DX buffer filled (refer to note below)
81h on error
Note: the first byte of the buffer is unchanged; depending on a byte in
IBMBIO.COM, the remainder of the buffer is filled with either
"C:\ROMSHELL.COM",0Dh or xxh,xxh,0Fh,"C:\ROMSHELL.COM",0Dh
SeeAlso: AX=1980h,AX=1982h
----------2F1982-----------------------------
INT 2F U - IBM ROM-DOS v4.0 - GET ??? TABLE
AX = 1982h
Return: AL = FFh if supported
ES:DI -> ??? table (see #2421)
Note: called by ROMSHELL.COM
SeeAlso: AX=1980h,AX=1981h
Format of ROM-DOS v4.0 ??? table:
Offset Size Description (Table 2421)
00h BYTE ??? (00h)
01h BYTE ??? (41h) (ROMSHELL.COM checks if =00h)
02h BYTE ??? (00h) (ROMSHELL.COM checks if =01h)
03h WORD ??? (0001h) (ROMSHELL.COM checks if =0001h)
05h BYTE ??? (00h)
06h WORD ??? (04D5h)
--------V-2F1A00-----------------------------
INT 2F - DOS 4.0+ ANSI.SYS - INSTALLATION CHECK
AX = 1A00h
Return: AL = FFh if installed
Notes: AVATAR.SYS also responds to this call
documented for DOS 5+, but undocumented for DOS 4.x
--------V-2F1A00BX414E-----------------------
INT 2F - ANSIPLUS.SYS v2.00+ - INSTALLATION CHECK
AX = 1A00h
BX = 414Eh ('AN')
CX = 5349h ('SI')
DX = 2B2Bh ('++')
Return: AL = FFh if installed
CF clear
ES:BX -> INT 29 entry point
CX = ANSIPLUS BCD version number (v3.10+, CH=major, CL=minor)
DL = capabilities (v4.00+)
00h full capability driver
01h reduced capability driver
2Bh full capability driver (before v4.00)
Program: ANSIPLUS.SYS is a CON device driver by Kristofer Sweger which
replaces the normal ANSI.SYS with a more powerful version having
many additional features
Notes: ANSIPLUS also identifies itself as ANSI.SYS if BX,CX, or DX differ
from the magic values above
an additional installation check is to test for the signature
"ANSIPLUS" 12 bytes before the INT 29 entry point; the version
number is also available as a four-character ASCII string (e.g.
"4.00") four bytes before the entry point
SeeAlso: AX=1AA5h,AX=1AA6h,AX=1AA7h,AX=1AA8h,AX=1AA9h,AX=1AAAh,AX=D44Fh
--------V-2F1A00BX4156-----------------------
INT 2F - AVATAR.SYS - INSTALLATION CHECK
AX = 1A00h
BX = 4156h ('AV')
CX = 4154h ('AT')
DX = 4152h ('AR')
Return: AL = FFh if installed
CF clear
BX = AVATAR protocol level supported
CX = driver type
0000h AVATAR.SYS
4456h DVAVATAR.COM inside DESQview window
DX = 0016h
Program: AVATAR.SYS is a CON replacement by George Adam Stanislav which
interprets AVATAR command codes in the same way that ANSI interprets
ANSI command codes
Notes: AVATAR also identifies itself as ANSI.SYS if BX, CX, or DX differ from
the magic values
SeeAlso: AX=1A21h,AX=1A3Ch,AX=1A3Fh,AX=1A52h,AX=1A72h,AX=1A7Dh,AX=1AADh"AVATAR"
--------V-2F1A01-----------------------------
INT 2F U - DOS 4.0+ ANSI.SYS internal - GET/SET DISPLAY INFORMATION
AX = 1A01h
CL = function
7Fh for GET
5Fh for SET
DS:DX -> parm block as for INT 21,AX=440Ch,CX=037Fh/035Fh respectively
Return: CF clear if successful
AX destroyed
CF set on error
AX = error code (many non-standard)
Note: presumably this is the DOS IOCTL interface to ANSI.SYS
SeeAlso: AX=1A02h,INT 21/AX=440Ch
--------V-2F1A02-----------------------------
INT 2F U - DOS 4.0+ ANSI.SYS internal - MISCELLANEOUS REQUESTS
AX = 1A02h
DS:DX -> parameter block (see #2422)
Return: CF clear if successful
CF set on error
AX = error code
Note: DOS 5+ chains to previous handler if AL > 02h on call
SeeAlso: AX=1A01h
Format of ANSI.SYS parameter block:
Offset Size Description (Table 2422)
00h BYTE subfunction
00h set/reset interlock
01h get /L flag
01h BYTE interlock state
00h=reset, 01h=set
This interlock prevents some of the ANSI.SYS post-processing
in its hook onto INT 10, AH=00h mode set
02h BYTE (returned)
00h if /L not in effect
01h if /L in effect
--------V-2F1A21-----------------------------
INT 2F - AVATAR.SYS - SET DRIVER STATE
AX = 1A21h (AL='!')
DS:SI -> command string with one or more state characters (see #2423)
CX = length of command string
Return: CF set on error (invalid subfunction)
CF clear if successful
Note: the characters in the state string are interpreted left to right, and
need not be in any particular order
SeeAlso: AX=1A00h/BX=4156h,AX=1A3Fh
(Table 2423)
Values for AVATAR.SYS state characters:
'a' activate driver
'd' disable driver
'f' use fast screen output
'g' always convert gray keys (+ and -) to function keys
'G' never convert gray keys
'l' convert gray keys only when ScrollLock active
's' use slow screen output
't' Tandy 1000 keyboard (not yet implemented)
--------V-2F1A3C-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A3Ch
???
Return: CX = 0000h
SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A3Eh
--------V-2F1A3E-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A3Eh
CL = ???
CH = ???
DL = ???
DH = ???
Return: CL = ???
CH = ???
DL = ???
DH = ???
SeeAlso: AX=1A3Ch,AX=1A3Fh
--------V-2F1A3F-----------------------------
INT 2F - AVATAR.SYS - QUERY DRIVER STATE
AX = 1A3Fh (AL='?')
ES:DI -> buffer
CX = length of buffer in bytes
Return: CF clear
CX = actual size of returned info
Note: the returned information consists of multiple letters whose meanings
are described under AX=1A21h
SeeAlso: AX=1A00h/BX=4156h,AX=1A21h,AX=1A44h
--------S-2F1A42BX4156-----------------------
INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ3 HANDLER
AX = 1A42h
BX = 4156h ('AV')
ES:DI -> FAR handler for serial port using IRQ3
DS = data segment needed by handler
Return: AX = status/return value
0000h if no more room
1A42h if ASD not installed
else handle to use when uninstalling
Notes: the handler need not save/restore registers or signal EOI to the
interrupt controller
the handler should return AX=0000h if the interrupt was meant for it,
and either leave AX unchanged or return a non-zero value otherwise
the most recently installed handler will be called first, continuing
to earlier handlers until one returns AX=0000h
SeeAlso: AX=1A43h,AX=1A62h
--------S-2F1A43BX4156-----------------------
INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ4 HANDLER
AX = 1A43h
BX = 4156h ('AV')
ES:DI -> FAR handler for serial port using IRQ4
DS = data segment needed by handler
Return: AX = status/return value
0000h if no more room
1A43h if ASD not installed
else handle to use when uninstalling
Notes: (see AX=1A42h)
SeeAlso: AX=1A42h,AX=1A63h
--------V-2F1A44BX4156-----------------------
INT 2F - AVATAR.SYS v0.11+ - GET DATA SEGMENT
AX = 1A44h
BX = 4156h ('AV')
Return: AX = 0000h
DS = data segment
CX = size of data segment
Note: AVATAR.SYS calls this function whenever it is invoked. If each
process under a multitasker hooks this function and provides a
separate data segment, AVATAR.SYS becomes fully reentrant.
SeeAlso: AX=1A21h,AX=1A3Fh,AX=1A52h
--------V-2F1A52-----------------------------
INT 2F U - AVATAR.SYS v0.11 - GET ???
AX = 1A52h
CX = size of buffer
ES:DI -> buffer
Return: ??? copied into user buffer
Note: the maximum size of the data which may be copied is returned by
AX=1A72h
SeeAlso: AX=1A53h,AX=1A72h
--------V-2F1A53-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A53h
CL = ??? (00h-05h)
???
Return: ???
SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A72h
--------S-2F1A62BX4156-----------------------
INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ3 HANDLER
AX = 1A62h
BX = 4156h ('AV')
CX = handle for IRQ routine returned by AX=1A42h
SeeAlso: AX=1A42h,AX=1A63h
--------S-2F1A63BX4156-----------------------
INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ4 HANDLER
AX = 1A63h
BX = 4156h ('AV')
CX = handle for IRQ routine returned by AX=1A43h
SeeAlso: AX=1A43h,AX=1A62h
--------V-2F1A72-----------------------------
INT 2F U - AVATAR.SYS v0.11 - GET ??? SIZE
AX = 1A72h
Return: CX = maximum size of ???
SeeAlso: AX=1A00h/BX=4156h,AX=1A52h,AX=1A7Bh,AX=1AADh"AVATAR"
--------V-2F1A7B-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A7Bh
Return: AX = 0000h
CX = 0000h
SeeAlso: AX=1A00h/BX=4156h,AX=1A72h,AX=1A7Dh
--------V-2F1A7D-----------------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1A7Dh
Return: AX = ???
SeeAlso: AX=1A00h/BX=4156h,AX=1A7Bh
--------V-2F1AA3-----------------------------
INT 2F - ANSIPLUS v4.03+ - GET/SET ANSIPLUS INTERNAL VARIABLES
AX = 1AA3h
BH = function
00h get current/default colors
Return: CH = default colors
CL = current colors
01h set current/default colors
CH = default colors (00h = leave unchanged)
CL = current colors
02h get current subscreen region
Return: BH,BL = true screen rows,columns
CH,CL = top left row,column of region
DH,DL = bottom right row,column of region
03h set subscreen region
CH,CL = top left row,column of region
DH,DL = bottom right row,column of region
04h get driver features (bits 0-31)
Return: DX:CX = current feature bits
05h set driver features (bits 0-31)
DX:CX = feature bits
06h get driver features (bits 32-63)
Return: DX:CX = current feature bits
07h set driver features (bits 32-63)
DX:CX = feature bits
other: reserved for future use
SeeAlso: AX=1AA4h,AX=1AA5h
--------V-2F1AA4-----------------------------
INT 2F - ANSIPLUS v4.02+ - GET/SET ANSIPLUS SMOOTH SCROLLING RATE
AX = 1AA4h
BL = function
00h get scrolling rate
01h set scrolling rate
BH = new minimum scrolling rate in scan lines per retrace
Return: BH = smooth scrolling rate
SeeAlso: AX=1AA3h,AX=1AA5h
--------V-2F1AA5-----------------------------
INT 2F - ANSIPLUS v4.00+ - GET/SET ANSIPLUS CLIPBOARD
AX = 1AA5h
DH = subfunction
00h get clipboard information
01h get clipboard text
02h set clipboard text
03h append text to clipboard
04h clear clipboard
05h paste clipboard to keyboard
ES:BX -> data area for subfunctions 01h, 02h, and 03h
CX = size of data area (maximum size for subfunction 01h, actual size
to add to clipboard for subfunctions 02h and 03h)
Return: AL = status
00h successful
01h unsupported subfunction (reduced capability driver)
02h insufficient space
A5h unsupported function (ANSIPLUS before v4.00)
ES:BX -> ANSIPLUS local clipboard data
CX = number of bytes currently in local clipboard
DX = maximum size of local clipboard
SeeAlso: AX=1A00h/BX=414Eh,AX=1AA4h,AX=1AA6h
--------V-2F1AA6-----------------------------
INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS DRIVER
AX = 1AA6h
BH = function
00h get hooked interrupts
01h set hooked interrupts mask
BL = new interrupts mask (see #2424)
Return: BL = previous interrupts mask (see #2424)
SeeAlso: AX=1A00h/BX=414Eh,AX=1AA7h
Desc: used to temporarily disable any prior copies of ANSIPLUS when a new
copy is installed, such as in a multitasking system like DESQview
Note: only the most-recently loaded copy of ANSIPLUS on the current INT 2F
chain responds to this call
Bitfields for ANSIPLUS hooked interrupts mask:
Bit(s) Description (Table 2424)
0 INT 09 hook disabled
1 INT 10 hook disabled
2 INT 15 hook disabled
3 INT 16 hook disabled
4 INT 1C hook disabled
5 reset all bits when INT 29 called
6 INT 29 hook disabled
7 INT 33, INT 74, or other mouse event hook disabled
--------V-2F1AA7-----------------------------
INT 2F - ANSIPLUS v4.00+ - ENABLE/DISABLE ANSIPLUS FEATURES
AX = 1AA7h
BL = function
00h prevent scroll-back saves
01h enable scroll-back saves
02h disable key reprogramming and lock changes by escape sequences
03h enable key reprogramming by escape sequences
04h disable and lock key stacking changes by escape sequences
05h allow key stacking by escape sequences
Return: nothing
SeeAlso: AX=1AA6h
--------V-2F1AA8-----------------------------
INT 2F - ANSIPLUS v3.10+ - GET NEXT ANSIPLUS SCROLLBACK LINE
AX = 1AA8h
Return: AL = status
00h successful
ES:BX -> screen line (character and attribute pairs)
CX = length of line in bytes, 0000h if no more lines or
unsupported video mode
01h unsupported video mode active
02h screen currently scrolled back
03h reduced capability driver
A8h unsupported function (driver before v3.10)
SeeAlso: AX=1A00h/BX=414Eh,AX=1AA9h
--------V-2F1AA9-----------------------------
INT 2F - ANSIPLUS v3.10+ - GET ANSIPLUS SCROLLBACK INFORMATION
AX = 1AA9h
Return: AL = status
00h successful
BX = current number of lines in scrollback buffer
CX = number of bytes in one line
01h unsupported video mode active
02h screen currently scrolled back
03h reduced capability driver
A9h unsupported function (driver before v3.10)
Desc: determine how much data is in the scrollback buffer and initialize
scrollback retrieval to return the first line on the next call to
AX=1AA8h
SeeAlso: AX=1A00h/BX=414Eh,AX=1AA8h
--------V-2F1AAA-----------------------------
INT 2F - ANSIPLUS v3.01+ - GET/SET ANSIPLUS SCREEN SAVER BLANKING TIME
AX = 1AAAh
BX = function
FFFFh to get current blanking time
other to set time
CX = blanking time in clock ticks (0000h-7FFFh)
Return: BX = current blanking time
CX = blanking time when last set
SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh
--------V-2F1AAB-----------------------------
INT 2F - ANSIPLUS v3.01+ - SET ANSIPLUS KEY REPEAT RATE
AX = 1AABh
BX = repeat rate in characters per second
0000h use BIOS repeat rate
Return: nothing
SeeAlso: AX=1A00h/BX=414Eh,AX=1AAAh,AX=1AACh
--------V-2F1AAC-----------------------------
INT 2F - ANSIPLUS v3.00+ - LOAD CHARACTER GENERATOR
AX = 1AACh
BH = number of bytes per character pattern
BL = VGA/EGA character table to be loaded
CX = number of characters to load
DX = starting character code (offset into Map2 block)
ES:BP -> user character table to be loaded
Return: AX = 1100h
Desc: load the EGA/VGA character generator without the BIOS function's
side effects of resetting the video mode and color palette
SeeAlso: AX=1A00h/BX=414Eh,AX=1AABh,AX=1AADh"ANSIPLUS",INT 10/AX=1100h
--------V-2F1AAD-----------------------------
INT 2F - ANSIPLUS v2.00+ - ANSIPLUS DEVICE STATUS REPORT
AX = 1AADh
BL = report request code (81h-96h for v4.00)
CX = color selector or key code, if required by request
Return: AX = first reported result
BX = second result
CX = third result, if applicable (unchanged otherwise)
DX = fourth result, if applicable (unchanged otherwise)
Desc: get device status reports equivalent to those for Esc [#n sequences
while bypassing any device redirection and avoiding the need to
parse the returned result
Note: the report request code in BL is identical to the number in the
corresponding Esc [#n sequence
SeeAlso: AX=1A00h/BX=414Eh,AX=1AACh
--------V-2F1AADDX0000-----------------------
INT 2F U - AVATAR.SYS v0.11 - ???
AX = 1AADh
DX = 0000h
CX = subfunction (00h-0Ch)
???
Return: AX = 0000h if DX was nonzero
???
SeeAlso: AX=1A00h/BX=4156h,AX=1A72h
--------m-2F1B00-----------------------------
INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - INSTALLATION CHECK
AX = 1B00h
Return: AL = FFh if installed
Note: XMA2EMS.SYS extension is only installed if DOS has page frames to hide.
This extension hooks onto INT 67/AH=58h and returns from that call data
which excludes the physical pages being used by DOS.
SeeAlso: AH=1Bh"FRAME INFO"
--------m-2F1B-------------------------------
INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - GET HIDDEN FRAME INFORMATION
AH = 1Bh
AL <> 00h
DI = hidden physical page number
Return: AX = FFFFh if failed (no such hidden page)
AX = 0000h if OK, then
ES = segment of page frame
DI = physical page number
Notes: this corresponds to the data edited out of the INT 67/AH=58h call
FASTOPEN makes this call with AL = FFh
SeeAlso: AX=1B00h
--------V-2F2300-----------------------------
INT 2F - DR DOS 5.0 GRAFTABL - INSTALLATION CHECK
AX = 2300h
Return: AH = FFh
Note: this installation check does not follow the usual format
SeeAlso: AH=23h,AX=2E00h
--------V-2F23-------------------------------
INT 2F - DR DOS 5.0 GRAFTABL - GET GRAPHICS DATA
AH = 23h
AL nonzero
Return: AH = FFh
ES:BX -> graphics data (8 bytes for each character from 80h to FFh)
SeeAlso: AX=2300h,AX=2E00h
--------!---Section--------------------------
Interrupt List, part 11 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------T-2F2700-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - INSTALLATION CHECK
AX = 2700h
Return: AL = status
00h not installed
FFh installed
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
taskswitching and multitasking modes
--------T-2F2701-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - GET STATUS
AX = 2701h
Return: AX = maximum simultaneous tasks
BX = index into TASK_IDS of current foreground task
CX = currently-active tasks
DX = version number (DL = major, DH = minor)
(DR DOS 6.0 = 0001h, Novell DOS 7 = 0002h)
ES:SI -> TASK_IDS
ES:DI -> name table (array of 8-byte names, NUL-terminated if <8 chars)
Notes: do not attempt to create a new task if CX == AX
the task's index is its position on the task menu, while its ID is the
position within the internal task name table
SeeAlso: AX=2714h,AX=2716h
--------T-2F2702-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT
AX = 2702h
Return: DX = maximum pages INT 67/AH=42h will report available
Note: TaskMAX does not limit EMS allocations other than by limiting the
amount which is reported as being available at a given time
SeeAlso: AX=2703h,INT 67/AH=42h
--------T-2F2703-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT
AX = 2703h
DX = maximum pages INT 67/AH=42h should report available
Return: DX = new maximum for reporting
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
both taskswitching and multitasking modes
SeeAlso: AX=2702h,INT 67/AH=42h
--------T-2F2704-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - REGISTER/UNREGISTER TASK MANAGER
AX = 2704h
DL = subfunction
00h unregister task manager
01h register task manager
Return: DL = status
00h registered
01h unregistered
Notes: a task manager replaces TaskMAX's menu system with its own user
interface; while one is registered, the TaskMAX hotkeys and
Ctrl-Alt-Del invoke the manager rather than the built-in menu system
unregister the task manager before terminating it
SeeAlso: AX=2705h
Index: hotkeys;TaskMAX
--------T-2F2705-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - ENABLE/DISABLE DIRECT SWITCHING
AX = 2705h
DL = subfunction
00h disable keystrokes for switching to next/prev/specified task
01h enable
Return: nothing
Note: should only be called by a registered task manager (see AX=2704h)
SeeAlso: AX=2704h,AX=2706h
--------T-2F2706-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK
AX = 2706h
DX = task index (see AX=2701h) of task to be activated
Return: DX = task index of previously-active task
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in
both taskswitching and multitasking modes
SeeAlso: AX=2705h,AX=2707h,AX=2715h
--------T-2F2707-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - CREATE NEW TASK
AX = 2707h
DS:DX -> ASCIZ pathname of executable
ES:BX -> parameter block (see #2425)
CX = number of ticks before automatic return to task manager
(0000h = run until termination or explicitly switched)
Return: DX = new task's task index (FFFFh if task terminated)
SeeAlso: AX=2706h,AX=2708h
Format of TaskMAX parameter block:
Offset Size Description (Table 2425)
00h WORD reserved, should be 0000h
02h DWORD pointer to command tail to be copied into child's PSP
06h DWORD pointer to first FCB to be copied into child's PSP
0Ah DWORD pointer to second FCB to be copied into child's PSP
--------T-2F2708-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - DELETE TASK
AX = 2708h
DX = task index
Return: DX = FFFFh (task deleted)
Notes: this call should only be used for abnormal task termination, after
first checking for open files with AX=270Ch; should not be used
with programs that allocate EMS or XMS memory
switches to specified task first
SeeAlso: AX=2707h
--------T-2F2709-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - NAME TASK
AX = 2709h
DX = task index
DS:SI -> 8-byte name (8 NULs = remove name)
Return: AL = task flags
00h ID unused or task terminated
01h ID in use, task name table entry valid
81h ID in use, task name fixed
BX = task ID
ES:DI -> name in task name table (see AX=2701h)
Note: the task retains the given name until it terminates or the name is
removed by specifying a name of 8 NULs.
SeeAlso: AX=2701h,AX=2707h
--------T-2F270A-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID
AX = 270Ah
DX = task index
Return: DX = task ID (FFFFh if index invalid)
Note: task IDs stay constant, while indexes can change when other tasks are
deleted
SeeAlso: AX=2701h,AX=270Bh
--------T-2F270B-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX
AX = 270Bh
DX = task ID
Return: DX = task index (FFFFh if task not active)
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
taskswitching and multitasking modes
SeeAlso: AX=270Ah
--------T-2F270C-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - CHECK OPEN FILES
AX = 270Ch
DX = task index
Return: AX = number of files currently open for specified task
SeeAlso: AX=2708h
--------T-2F270D-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER
AX = 270Dh
DX = task index
Return: DX = status
0000h if primary command interpreter (COMMAND.COM, etc.) running
0001h if not in root shell for task
Note: TaskMAX will return 0001h if the specified task has spawned another
command interpreter with AX=2707h
SeeAlso: AX=2707h,AX=270Ch
--------T-2F270E-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN
AX = 270Eh
CX = length of string (max 15 keystrokes, 0000h to get current string)
DS:SI -> pasting lead-in string (character/scan-code pairs)
Return: ES:DI -> current lead-in string
Note: the specified sequence of keystrokes is sent to the application before
every line of a text-mode spreadsheet paste
SeeAlso: AX=270Fh,AX=2710h,AX=2713h
--------T-2F270F-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN
AX = 270Fh
CX = length of string (max 15 keystrokes, 0000h to get current string)
DS:SI -> pasting lead-in string (character/scan-code pairs)
Return: ES:DI -> current lead-in string
Note: the specified sequence of keystrokes is sent to the application before
every number in a numeric-mode spreadsheet paste
SeeAlso: AX=270Eh,AX=2710h,AX=2711h,AX=2713h
--------T-2F2710-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING
AX = 2710h
CX = length of string (max 15 keystrokes, 0000h to get current string)
DS:SI -> pasting terminator string (character/scan-code pairs)
Return: ES:DI -> current terminator string
Note: the specified sequence of keystrokes is sent to the application after
every line of a spreadsheet paste operation
SeeAlso: AX=270Eh,AX=270Fh,AX=2713h
--------T-2F2711-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT
AX = 2711h
DX = ASCII code for separator (FFFFh to get current)
Return: DL = current separator character
SeeAlso: AX=270Fh
--------T-2F2712-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA
AX = 2712h
DX = task index
--------T-2F2713-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - INITIATE PASTE OPERATION
AX = 2713h
DX = task index
CX = paste mode
0000h alphanumeric
0001h numeric
0002h text
SeeAlso: AX=270Eh,AX=270Fh,AX=2710h,AX=2711h
--------T-2F2714-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - GET SWAP SPACE INFO
AX = 2714h
Return: CX = total KB of swap space
DX = available KB of swap space
Note: the TaskMAX API is also supported by Novell DOS 7 TASKMGR in both
taskswitching and multitasking modes
SeeAlso: AX=2701h
--------T-2F2715-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER
AX = 2715h
Return: only after calling task is again selected
SeeAlso: AX=2706h
--------T-2F2716-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS
AX = 2716h
Return: AX = 0000h if AX=2716h,AX=2717h,AX=2718h supported
CX = bytes in paste buffer
DX = current generation number (updated after every copy operation)
BUG: Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
this call (it does support the remainder of the TaskMAX API)
SeeAlso: AX=2701h,AX=2713h,AX=2714h,AX=2717h,AX=2718h
--------T-2F2717-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER
AX = 2717h
CX = bytes in destination buffer
ES:DI -> destination buffer
Return: AX = 0000h if function supported
CX = bytes actually copied (FFFFh if buffer too small)
DX = current generation number for paste buffer
BUG: Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
this call (it does support the remainder of the TaskMAX API)
Note: the destination buffer may be too small if another task adds more data
to the paste buffer after the AX=2716h call but before this call
SeeAlso: AX=2713h,AX=2716h,AX=2718h
--------T-2F2718-----------------------------
INT 2F - DR DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER
AX = 2718h
CX = bytes in source buffer
DS:SI -> source buffer (plain ASCII, lines terminated with CR LF)
Return: AX = 0000h if function supported
CX = bytes actually copied
DX = current generation number for paste buffer
BUG: Novell DOS 7 TASKMGR returns AX=0000h even though it does not support
this call (it does support the remainder of the TaskMAX API)
SeeAlso: AX=2712h,AX=2716h,AX=2717h
--------T-2F2719-----------------------------
INT 2F - Novell DOS 7 TaskMGR - NOP
AX = 2719h to 271Bh
--------T-2F271C-----------------------------
INT 2F U - Novell DOS 7 TaskMGR - ???
AX = 271Ch
DX = ???
bit 0: ???
Return: ???
---if DX bit 0 set---
AX = 0031h
CX = 0000h
BUG: if the task switcher is running, and DX bit 0 is set on call, this
function will crash because its exit code attempts to pop several
registers which are not pushed when DX bit 0 is set
--------m-2F2780CL01-------------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - SUPERVISOR MODULE
AX = 2780h
CL = 01h (module: Supervisor)
CH = subfunction
00h unused
Return: CX = status (0002h) (see #2426)
01h unused
Return: CX = status (0002h) (see #2426)
02h "Z_ModuleReg" register an OS module
EBX = module number (0005h-000Fh)
DS:EDX -> module descriptor (see #2428)
Return: CX = status (0000h,0030h) (see #2426)
03h allocate SYSDAT memory
DX = number of ??? to allocate
Return: CX = status (0000h,0003h) (see #2426)
04h get selector to SYSDAT
Return: CX = 0000h (successful)
BX = selector for EMM386 data segment
EBX high word cleared
05h "Z_MoveReal" relocate segment into extended memory
DS:EDX -> descriptor parameter block
Return: ECX = status (00h,03h,31h,32h) (see #2426)
---if successful---
parameter block filled
06h "Z_Reboot" return to real mode via triple fault
07h debugger break
Note: calls INT 03, then INT 21/AH=02h to output a question
mark
08h "X_ForeCheck" check if domain is in foreground
Return: CX = 0000h (successful)
EBX = ??? (0 or 2)
09h register VxD with system
0Ah unload VxD hook
0Bh indicate end of initialization phase
Return: CX = status (0002h) (see #2426)
0Ch "F_AllocWindow" allocate 4K mapping window
0Dh "F_RegisterBoot" register reboot addresses
EBX = ???
EDX = ???
Return: ???
0Eh "F_EnquireBoot" check if reboot active
Return: CX = 0000h (successful)
BL = ??? \ or BX = 0000h
BH = ??? /
0Fh get debugging level
Return: CX = 0000h (successful)
EBX = new value for debugging level
10h set debugging level
EDX = ???
Return: CX = 0000h (successful)
EBX = old value of debugging level
11h installation check (documented)
Return: CX = status
0000h if multitasker is installed
EBX = version (0100h for v1.00)
1101h if multitasker is not present
12h "F_V86BPInstall" install V86 breakpoint
DX = ???
Return: CX = 0000h (successful)
AX = old value of ???
13h "F_V86BPRemove" remove V86 breakpoint
Return: CX = status (0000h,003Fh) (see #2426)
AX = ???
14h "F_V86BPOffer" indicate INT 03 to be used as V86 breakpoint
EDX = linear address ??? of INT 03 instruction for breakpoint
Return: CX = status (0000h,003Fh) (see #2426)
15h "F_LoaderCleanup" offer opportunity to clean up
BX = segment of ???
Return: CX = 0000h (successful)
BX = segment of ???
16h "F_RegisterVxDWindow" register VxD mapping window
17h "F_RegisterPNW" register Personal NetWare information
EBX = subfunction (0-2)
Return: CX = status (0002h if EBX>2) (see #2426)
???
18h unused
Return: CX = status (0002h) (see #2426)
Return: CX = status (most subfunctions)
(E)AX and/or (E)BX contain return values, depending on function
Notes: called by DPMS.EXE and EMM386.EXE
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
because the request is handled on the initial trap to the memory
manager caused by INT instructions, this API must be invoked with
an actual INT 2F instruction instead of some simulation such as a
far call to the address in the interrupt vector table
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h
(Table 2426)
Values for Novell DOS 7 EMM386 function status:
0000h successful
0001h not implemented
0002h invalid subfunction
0003h unable to find memory
0004h invalid flag (semaphore) number
0005h flag (semaphore) overrun
0006h flag (semaphore) underrun
0007h no queue handles available
0009h no queue buffers available
000Ah queue is in use
000Bh invalid process handle
000Ch no process handles available
000Dh queue access not permitted
000Eh queue is empty
000Fh queue is full
0012h no memory handles available
0014h can't find process in process list
001Bh invalid memory handle
0023h unable to terminate process
002Ah flag set ignored
002Dh no more system flags
002Eh flag (semaphore) not in idle state
002Fh flag (semaphore) wait timed out
0030h bad module number in CL
0031h bad descriptor
invalid value for DESC_PB_SINFO in a descriptor parameter block
0032h no free descriptors
0033h error while locking/unlocking a page
0034h error getting or setting a page
0035h no pages available
0036h invalid domain
0037h process already frozen
0038h process not frozen
0039h fork failure (no registered swaplist)
003Ah page already free
003Bh page already allocated
003Ch unable to switch tasks
003Dh attempted to free critical section which is not active
003Eh too many active critical sections
003Fh ???
41FFh current domain is invalid, or no domain in context
42FFh domain ID is not a valid descriptor
43FFh domain creation still in progress
44FFh domain currently being deleted
45FFh task manager is busy, cannot unload it
46FFh task manager already loaded
47FFh task manager not yet loaded
48FFh cannot save/restore because prior switch not complete
49FFh console already has owner
4BFFh unsupported opcode
4CFFh 32-bit address prefix not supported
4FFFh timeout, but not on timer queue
50FFh unable to lock timer queue
53FFh unable to switch while in Global Message Mode
54FFh error while setting Global Message Mode
55FFh not in Global Message Mode
56FFh system already in Domain Message Mode
57FFh not in Domain Message Mode
58FFh unable to allocate timeout structure
59FFh unsupported video type
5AFFh function not handled by any VM
5BFFh error in Serial..Set call
5CFFh error in Parallel..Set call
5DFFh domain list overflowed
5FFFh unable to free domain while in nobuffers mode
Format of Novell DOS/OpenDOS EMM386 descriptor parameter block:
Offset Size Description (Table 2427)
00h DWORD "DESC_PB_BASE"
04h DWORD "DESC_PB_LIMIT"
08h WORD "DESC_PB_SEL"
0Ah BYTE "DESC_PB_MINFO"
0Bh BYTE "DESC_PB_SINFO"
SeeAlso: #2428
Format of Novell DOS/OpenDOS EMM386 module descriptor:
Offset Size Description (Table 2428)
00h 12 BYTEs descriptor parameter block (see #2427)
0Ch DWORD -> module entry point
Note: for function "Z_ModuleReg", only DESC_PB_SEL and the module entry point
need to be initialized before calling EMM386
SeeAlso: #2427
--------m-2F2780CL02-------------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - REAL-TIME MONITOR
AX = 2780h
CL = 02h (module: Real-Time Monitor)
CH = subfunction
00h ???
???
Return: CX = status (0000h,0023h, others???) (see #2426)
BX = ??? (0000h if CX=0000h, FFFFh if CX=0023h)
Note: calls func 04h/sf 03h, func 04h/sf 1Eh,func 02h/sf 43h,
func 02h/sf 0Bh, and func 04h/sf 01h
01h "Z_PCountGet" get and clear count of dispatches
DX = ??? handle or 0000h for default
Return: CX = status (0000h,000Bh) (see #2426)
EBX = old value of ??? if successful
EDX destroyed
02h "Z_FlagWait" wait on semaphore
DX = index of semaphore???
Return: CX = status (0000h,0004h,0005h) (see #2426)
EBX = 0000FFFFh on error, 00000000h if successful
03h "Z_FlagSet" set a semaphore flag
DX = index of semaphore???
Return: CX = status (0000h,0004h,0006h) (see #2426)
BX = FFFFh on error, 0000h if successful
04h "X_QCreate" create a new queue
Return: CX = status (0000h,0007h,000Ah) (see #2426)
05h "X_QOpen" open queue for reading/writing
EDX -> ??? data (first 8 bytes seem to be name)
Return: CX = status (0000h,0009h,000Dh) (see #2426)
06h "X_QDelete" delete a queue
Note: calls fn 02h/subfn 05h, then fn 02h/subfn 40h
07h "X_QRead" read message from queue
EDX = ???
Return: CX = status (0000h,0009h,000Eh) (see #2426)
08h "X_QReadC" read message from queue, if any
EDX = ???
Return: CX = status (0000h,0009h,000Eh) (see #2426)
09h "X_QWrite" write message to queue
EDX = ???
Return: CX = status (0000h,0009h,000Fh) (see #2426)
0Ah "X_QWriteC" write message to queue, if space available
EDX = ???
Return: CX = status (0000h,0009h,000Fh) (see #2426)
0Bh "X_PDelay" put process to sleep for specified period
DX = number of clock ticks to sleep???
Return: CX = 0000h (successful)
0Ch "X_PDispatch" force a dispatch (run scheduler)
Return: CX = 0000h (successful)
0Dh "F_PTerm" terminate process???
Return: CX = status (0000h,0023h) (see #2426)
BX = FFFFh on error, 0000h if successful
Note: calls fn 04h/subfn 03h, fn 04h/subfn 1Eh,
fn 02h/subfn 43h, fn 02h/subfn 0Bh, fn 04h/sub 01h
0Eh "X_PCreate" create new process
???
Return: CX = status (0000h,000Ch) (see #2426)
EBX = ??? if successful
0Fh "Z_PPriorSet" set process priority
BX = ???
DX = ??? handle or 0000h for default
Return: CX = status (0000h,000Bh) (see #2426)
10h "X_PHandleGet" get current process handle
Return: CX = 0000h (successful)
BX = handle of default ???
EBX high word cleared
11h "X_PTerm" terminate process
DX = process handle or 0000h for current
BX = ??? (handle???)
Return: CX = status (0000h,000Bh,0014h) (see #2426)
12h "F_Sleep" ???
BX = ???
DX = ???
Return: CX = 0000h (successful)
13h "F_Wakeup" ???
DX = ???
Return: CX = status (see #2426)
14h "F_FindPDName" find process by name???
BX = ???
DX = ???
Return: CX = status (0000h,0014h) (see #2426)
BX = FFFFh on error, ??? if successful
15h "F_SetFlags" set ??? flags
BX = ??? (low two bits only)
DX = ??? handle or 0000h for default
Return: CX = status (0000h,000Bh) (see #2426)
BX = new value of ??? flags (entire word)
EBX high register cleared
16h "F_EndOfInterrupt" issue EOI to PIC
Return: CX = 0000h (successful)
17h "X_PTermOff" disable process termination
18h "X_PTermOK" enable process termination
19h "Z_FlagStatusGet" get semahprore's status
1Ah "F_QRdMX" ???
1Bh "F_QWrMX" ???
1Ch "Z_FlagAlloc" allocate a new semaphore
1Dh "Z_FlagFree" free semaphore
1Eh "X_FlagsMaxGet" get number of semaphores supported
1Fh "X_QReadNDC" non-destructive read from queue (peek)
20h "Z_FlagWWTO" wait on semaphore, with timeout
21h "F_UdaAlloc" ???
22h "F_UdaFree" ???
23h "X_PSuspend" suspend process
24h "X_PUnsuspend" restart process after suspension
25h "X_CritEnter" enter critical region
26h "X_CritExit" leave critical region
27h "F_PCreate" ???
28h "Z_PHandleListGet" get list of process handles
29h "Z_PNameGet" get process name
2Ah "Z_PStatusGet" get process status
2Bh "F_PDToDomain" get process' domain???
2Ch "Z_PPriorGet" get process priority
2Dh "F_QDList" get list of queues???
2Eh "Z_QNameGet" get queue's name
2Fh "X_QMsgLenGet" get message length of queue
30h "X_QMsgMaxGet" get message capacity of queue
31h "Z_QWriterGet" get handle of process waiting to write queue
32h "Z_QReaderGet" get handle of process waiting to read queue
33h "X_QMsgNumGet" get number of messages in queue
34h "Z_QFlagsGet" get queue's flags
35h "F_NameToQD" get queue by name???
36h "F_NameToPD" get process by name???
37h "X_MXCreate" create a mutex
38h "X_MXDelete" delete a mutex
39h "X_MXEnter" enter mutual-exclusion zone
3Ah "X_MXEnterC" enter mutual-exclusion zone if it is free
3Bh "X_MXExit" leave mutual-exclusion zone
3Ch "Z_TicksSet" set length of foreground time slices
3Dh "X_TickGet" get clock tick period
3Eh "F_ProcessID" ???
3Fh "X_QClose" close a queue
40h "F_QDispose" delete queue???
41h "F_PDToFlags" get process flags???
42h "F_PDToDParam" ???
43h "F_ReleaseMX" release mutex???
44h "F_SimulateInt" ???
45h "Z_QFlagsSet" set queue's flags
46h "F_TickRate" ???
47h ???
Return: CX = status (most subfunctions)
(E)AX and/or (E)BX contain return values, depending on function
Notes: called by DPMS.EXE and EMM386.EXE
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
because the request is handled on the initial trap to the memory
manager caused by INT instructions, this API must be invoked with
an actual INT 2F instruction instead of some simulation such as a
far call to the address in the interrupt vector table
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=03h,AX=2780h/CL=04h
--------m-2F2780CL03-------------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - MEMORY
AX = 2780h
CL = 03h (module: Memory)
CH = subfunction
00h ???
01h "F_PdirGet" ???
02h "F_PdirSet" ???
03h "Z_PageAlloc" allocate a given page of memory
04h "F_PageAllocG" allocate global page???
05h "F_PageAllocI" allocate instance page???
06h "F_PtblRead" get page table???
07h "F_PtrlWrite" select page table???
08h "Z_PtblGet" read page table
09h "Z_PtblSet" change page table
0Ah "Z_PagesAlloc" allocate pages of memory
0Bh "Z_PageFree" free a given page of memory
0Ch "Z_MemAlloc" allocate a memory block
0Dh "Z_MemFree" release memory block
0Eh "Z_MemSizeGet" get size of memory block
0Fh "Z_MemResize" resize a memory block
10h "Z_DescAlloc" allocate a memory descriptor
11h "Z_DescFree" release a memory descriptor
12h "Z_DescGet" get details on memory descriptor
13h "Z_DescSet" set a memory descriptor
14h "Z_MemDescAlloc" allocate a memory block and its descriptor
15h "Z_MemDescFree" release a memory block and its descriptor
16h "Z_MemDescSizeGet" get size of memory block
17h "Z_MemDescResize" resize a memory block
18h "Z_PageLock" lock a page, with existing contents
19h "Z_PageUnlock" unlock a page
1Ah "Z_PageLockAny" lock a page, contents undefined
1Bh "Z_PageUnlockReuse" unlock page, reuse phsyical memory
1Ch "Z_PageLockNone" lock a page, no physical memory assigned
1Dh "Z_PageUnlockNone" unlock a page, don't reuse physical memory
1Eh "F_CallRealRaw" call real mode (SS:ESP supplied)
1Fh "F_IntRealRaw" perform real-mode interrupt (SS:ESP supplied)
20h "F_CallReal" call real mode with RETF frame
21h "F_IntReal" perform real-mode interrupt
22h "F_PagedCallReal" paged real-mode call
23h "F_PagedIntReal" paged real-mode interrupt
24h "F_CallIretReal" call real mode with IRET frame
25h "F_CallIretRealRaw" call real mode with IRET (SS:ESP supplied)
26h "F_CallProt16" call 16-bit protected-mode code
27h "F_CallProt32" call 32-bit protected-mode code
28h "F_IAddPage" add kernel instance data
29h "Z_PageDomLock" lock page in specific domain, preserve contents
2Ah "Z_PatgeDomUnlock" unlock page in specific domain
2Bh "Z_PageDomLockAny" lock page in specific domain, undef contents
2Ch "Z_PageDomUnlockReuse" unlock page in spec. domain,reuse ph.mem
2Dh "Z_PageDomLockNone" lock page in spec. domain, no phys memory
2Eh "Z_PageDomUnlockNone" unlock page in spec. domain, no phys. mem
2Fh "Z_GateAlloc" allocate a gate
30h "Z_GateFree" release a gate
31h "X_MemFreeGet" get total free memory
32h "X_MemTopGet" get highest memory address
33h "X_MemTotalGet" get total memory size
34h "F_DescRead" ???
35h "F_DescWrite" ???
36h "F_GetStack" ???
37h "F_SetStack" ???
Return: CX = status (most subfunctions)
(E)AX and/or (E)BX contain return values, depending on function
Notes: called by DPMS.EXE and EMM386.EXE
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
because the request is handled on the initial trap to the memory
manager caused by INT instructions, this API must be invoked with
an actual INT 2F instruction instead of some simulation such as a
far call to the address in the interrupt vector table
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=04h
--------m-2F2780CL04-------------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - DOMAINS
AX = 2780h
CL = 04h (module: Domains)
CH = subfunction
00h "F_DAlloc" create new domain
01h "F_DFree" delete a domain
02h "X_DomHandleGetMy" get current domain handle
03h "F_DSet" switch to another domain
04h "Z_HandlerSWInt" install software-interrupt handler
05h "Z_HandlerPageFault" install page-fault handler
06h "Z_HandlerIOEx" install I/O exception handler
07h "Z_HandlerGenEx" install general exception handler
08h "Z_HandlerHWInt" install hardware interrupt handler
09h "Z_IOBitmapGet" get current domain's I/O bitmap entry
0Ah "Z_IOBitmapSet" set current domain's I/O bitmap entry
0Bh "Z_IOBitmapDomGet" get domain's I/O bitmap entry
0Ch "Z_IOBitmapDomSet" set domain's I/O bitmap entry
0Dh "Z_DomMemRead" read memory in another domain
0Eh "Z_DomMemWrite" write memory in another domain
0Fh "Z_PtblDomGet" read domain's page table
10h "Z_PtblDomSet" write domain's page table
11h "Z_InstanceSet" register instanced memory
12h "X_DomNProcessesGet" get number of processes in domain
13h "X_DomSuspend" suspend a domain
14h "Z_DomUnsuspend" resume execution of a domain
15h "Z_DomFork" make a copy of the current domain
16h "Z_DomTerm" terminate domain and all processes in it
17h "Z_HandlerUnlink" remove a handler
18h "Z_HandlerHWIntDflt" install default hardware interrupt handler
19h "Z_HandlerVHWInt" install virtual hardware interrupt handler
1Ah "Z_HandlerVHWIntDflt" install default virtual hware int handler
1Bh "Z_HandlerSwapIn" install swap-in handler
1Ch "Z_HandlerSwapOut" install swap-out handler
1Dh "Z_EndOfInterrupt" signal EOI
1Eh ???
1Fh "Z_HandlerPCreate" install process-creation handler
20h "Z_HandlerPTerm" install process-termination handler
21h "Z_DomRootProcessGet" get domain's root process' handle
22h "F_DForeground" domain has just switched to foreground
23h "F_DBackground" domain has just switched to background
24h "F_MapHMA" map domain's HMA
25h "F_AddInstData" add DOS instance data
26h "X_DomMemFreeGet" get free memory in a domain
27h "X_DomMemUsedGet" get memory used by current domain
28h "Z_DomMemMaxGet" get per-domain memory limit
29h "Z_DomMemMaxSet" set per-domain memory limit
2Ah "F_ReflectInt21" protected-mode INT 21 support
2Bh "Z_DomHandleGet" get domain for a process
2Ch ???
2Dh ???
2Eh ???
2Fh ???
30h ???
31h ???
32h ???
Return: CX = status (most subfunctions)
(E)AX and/or (E)BX contain return values, depending on function
Notes: called by DPMS.EXE and EMM386.EXE
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
because the request is handled on the initial trap to the memory
manager caused by INT instructions, this API must be invoked with
an actual INT 2F instruction instead of some simulation such as a
far call to the address in the interrupt vector table
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
--------m-2F2780CL05-------------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - VIRTUAL MACHINES
AX = 2780h
CL = 05h (module: VM)
CH = function
00h "F_VMProtInit" internal protected-mode initialization
01h "Z_TMLoad" load task manager
02h "Z_TMUnload" unload task manager
03h "Z_VMBackSet" send virtual machine to background
04h "Z_VMForeSet" send virtual machine to foreground
05h "Z_VMSaveEnable" enable saving virtual machine
06h "Z-VMSaveDisable" disable saving virtual machine
07h "Z_TMInit" intialize task manager
08h "Z_TMHotKeyGet" get task manager hotkey
09h "Z_TMHitKeyEnable" restart scanning for task manager key
0Ah "Z_TMHotKeyDisable" stop scanning for task manager key
0Bh "X_ForeGet" get current foreground domain
0Ch "F_DMAHandlerEnable" (re)enable DMA address translation
0Dh "F_DMAHandlerDisable" disable DMA address translation
0Eh "Z_SerialTimeoutGet" set serial port timeout
0Fh "Z_ParallelTimeoutSet" set parallel port timeout
10h "F_VCPIEntry" domain is entering VCPI mode
11h "F_VCPIExit" domain is leaving VCPI mode
12h "X_MsgGlobalEnter" enter Global Message Mode
13h "X_MsgGlobalDisplay" display global message
14h "X_MsgGlobalExit" leave Global Message Mode
15h "X_MsgDomEnter" enter Domain Message Mode
16h "X_MsgDomDisplay" display domain-specific message
17h "X_MsgDomExit" leave Domain Message Mode
18h "X_MsgFatalDisplay" display fatal error message
19h "Z_SerialBaseSet" set serial port address
1Ah "Z_ParallelBaseSet" set parallel port address
1Bh "Z_SerialIRQSet" set serial port IRQ
1Ch "Z_ParallelIRQSet" set parallel port IRQ
1Dh "F_ResetVideo" emergency video system reset
1Eh "F_SetMouseIRQ" set which IRQ is used by mouse
1Fh "F_CheckNotIdle" check whether system is idle
20h "F_GetMouseInfo"
21h "Z_SerialOwnerGet" get serial port owner
22h "Z_SerialTimeoutGet" get serial port timeout
23h "Z_ParallelOwnerGet" get parallel port owner
24h "Z_ParallelTimeoutGet" get parallel port timeout
???
Return: ???
Notes: called by DPMS.EXE and EMM386.EXE
the handler for this function may be set by one of the subfunctions
of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
CX=0001h (see #2426)
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
because the request is handled on the initial trap to the memory
manager caused by INT instructions, this API must be invoked with
an actual INT 2F instruction instead of some simulation such as a
far call to the address in the interrupt vector table
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
--------m-2F2780CL06-------------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - DPMI SERVICES
AX = 2780h
CL = 06h
CH = function
00h "F_InitDPMI" used for internal initialization
01h "F_DescAllocLDT" allocate LDT descriptor
02h "F_DescFreeLDT" free LDT descriptor
03h "F_DescGetLDT" get details on LDT descriptor
04h "F_DescSetLDT" set up LDT descriptor
05h "F_DescAllocInt21" allocate descriptor for PM INT 21
06h "F_WhereIsDPMI" get address of DPMI global data
Return: ???
Notes: called by DPMS.EXE and EMM386.EXE
the handler for this function may be set by one of the subfunctions
of AX=2780h/CL=01h; the default handler returns AX=BX=FFFFh and
CX=0001h (see #2426)
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
because the request is handled on the initial trap to the memory
manager caused by INT instructions, this API must be invoked with
an actual INT 2F instruction instead of some simulation such as a
far call to the address in the interrupt vector table
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
--------m-2F2780-----------------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - MULTITASKING API - AVAILABLE FOR APPS
AX = 2780h
CL = function (07h-0Fh)
???
Return: ???
Notes: called by DPMS.EXE and EMM386.EXE
the handlers for each of these functions may be set individually by
one of the subfunctions of AX=2780h/CL=01h; the default handlers
return with all registers unchanged
this API is only available if AX=12FFh/BX=0EDCh returns successfully;
because the request is handled on the initial trap to the memory
manager caused by INT instructions, this API must be invoked with
an actual INT 2F instruction instead of some simulation such as a
far call to the address in the interrupt vector table
SeeAlso: AX=12FFh/BX=0EDCh,AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h
--------T-2F2781-----------------------------
INT 2F U - Novell DOS 7 TaskMGR - BEGIN CRITICAL SECTION???
AX = 2781h
Return: ???
SeeAlso: AX=2782h
--------T-2F2782-----------------------------
INT 2F U - Novell DOS 7 TaskMGR - END CRITICAL SECTION???
AX = 2782h
Return: ???
SeeAlso: AX=2781h
--------m-2F2783-----------------------------
INT 2F U - Novell DOS 7 - EMM386.EXE - GET ???
AX = 2783h
Return: AX = ???
BX = ???
--------T-2F278F-----------------------------
INT 2F U - Novell DOS 7 TaskMGR - ??? API
AX = 278Fh
as for INT 2F/AX=2780h
Return: as for INT 2F/AX=2780h
Note: Novell DOS 7 TaskMGR passes this call through to INT 2F/AX=2780h
without changing any other registers
SeeAlso: AX=2780h/CL=01h,AX=2782h
--------F-2F2A-------------------------------
INT 2F - Gammafax DOS Dispatcher INTERFACE
AH = 2Ah
Note: details not available at this time
SeeAlso: AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB00h,AX=CBDDh,INT 66"BitFax"
--------V-2F2E00-----------------------------
INT 2F U - Novell DOS 7 - GRAFTABL - INSTALLATION CHECK
AX = 2E00h
Return: AH = FFh if installed
Note: this installation check does not follow the usual format of setting
AL to FFh
SeeAlso: AX=2300h,AH=2Eh"GRAFTABL"
--------V-2F2E-------------------------------
INT 2F U - Novell DOS 7 - GRAFTABL - GET FONT TABLE
AH = 2Eh
AL nonzero
Return: AH = FFh if installed
ES:BX -> graphics data (8 bytes per character from 80h to FFh)
SeeAlso: AX=2E00h,AH=23h"GRAFTABL"
--------t-2F3900-----------------------------
INT 2F - Kingswood TSR INTERFACE - COMPATIBILITY MODE
AX = 3900h
Return: AL = status
00h not installed
FFh one or more TSRs using this interface is installed
DX may be destroyed
Note: this function is provided to that the multiplex number will appear used
to other programs
SeeAlso: AH=39h/BL=00h
--------t-2F39--BL00-------------------------
INT 2F - Kingswood TSR INTERFACE - INSTALLATION CHECK
AH = 39h
BL = 00h
AL = TSR ID number (01h-FFh, currently only 01h-1Bh used) (see #2429)
Return: AL = status
00h not installed
FFh installed
DX = segment address of resident module
Note: All of Kingswood Software's TSRs use this interface. Usually the
resident module is installed by allocating a block of upper memory,
setting its owner ID to 000Ah (used by DOS), and filling the MCB name
field with the TSR's name.
SeeAlso: #2430,AX=3900h,AH=39h/BL=01h
(Table 2429)
Values for Kingswood TSR ID number:
01h TSR Windows
02h NOBUSY
03h CD STACK
04h DISK WATCH
05h PUSHBP
06h ALIAS
07h KEYMACRO
08h SLOWDOWN
09h ANSIGRAB
0Ah TEE
0Bh FASTMOUS
0Ch EXTWILD
0Dh BREAKOUT
0Eh STOPDISK
0Fh MEMINIT
10h JANUSEXT
11h CAPS
12h ANSI
13h TRAPPER
14h EATMEM
15h WPJOKE
16h SHOWDOS
17h LOGINTS
18h BLANKVGA
19h SWAPEXEC
1Ah SHELL
1Bh TSRGAMES
Format of Kingswood TSR modules:
Offset Size Description (Table 2430)
00h 4 BYTEs signature "FTSR"
04h WORD segment address of this module (used to check validity)
06h WORD number of words to skip (usually 0000h if no PSP present)
08h N WORDs module-defined data that must be at a fixed segment offset
(usually only a PSP if file access is required)
5N BYTEs interrupt list (see #2431)
BYTE FFh terminator
Format of Kingswood TSR interrupt list entry:
Offset Size Description (Table 2431)
00h BYTE interrupt number (00h-FEh)
01h WORD offset within segment of DWORD pointer to previous interrupt
03h WORD offset within segment of begin of interrupt handler code
--------t-2F39--BL01-------------------------
INT 2F - Kingswood TSR INTERFACE - REMOVAL CHECK
AH = 39h
BL = 01h
AL = TSR ID number (01h-FFh) (see #2429)
Return: AL = status
00h not ready to be removed
FFh resident module may be removed by deassigning the interrupts
hooked by the TSR and deallocating the TSR's memory block
AH,BX,CX,DX,ES may be destroyed
SeeAlso: AX=3900h,AH=39h/BL=00h
--------t-2F39-------------------------------
INT 2F - Kingswood TSR INTERFACE - APPLICATION-SPECIFIC FUNCTION CALLS
AH = 39h
BL = function number (02h-FFh)
AL = TSR ID number (01h-FFh) (see #2429)
CX,DX,SI,DI,DS,ES may contain parameters
BH reserved for use by the function dispatcher
Return: as appropriate for the called function
SeeAlso: AX=3900h,AH=39h/BL=00h,AX=3901h/BL=02h
--------r-2F3901BL02-------------------------
INT 2F - Kingswood TSR Windows - OPEN WINDOW
AX = 3901h
BL = 02h
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
Notes: opens the next TSR window on top of any others. Only three
TSR windows can be opened at any one time. The three windows
are all 40x11 characters, partly overlapping.
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=03h,AX=3901h/BL=05h,AX=3901h/BL=06h
--------r-2F3901BL03-------------------------
INT 2F - Kingswood TSR Windows - HIDE WINDOWS
AX = 3901h
BL = 03h
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
Notes: Hide any visible TSR windows from view.
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=05h
--------r-2F3901BL04-------------------------
INT 2F - Kingswood TSR Windows - SHOW WINDOWS
AX = 3901h
BL = 04h
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
Notes: Re-display all TSR windows after a HIDE WINDOWS call.
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h,AX=3901h/BL=03h
--------r-2F3901BL05-------------------------
INT 2F - Kingswood TSR Windows - CLOSE WINDOW
AX = 3901h
BL = 05h
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
Notes: Close the last opened TSR window.
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
--------r-2F3901BL06-------------------------
INT 2F - Kingswood TSR Windows - SET WINDOW TITLE
AX = 3901h
BL = 06h
DS:SI -> title string
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
--------r-2F3901BL07-------------------------
INT 2F - Kingswood TSR Windows - POSITION CURSOR
AX = 3901h
BL = 07h
CH = Y coordinate (0-10)
CL = X coordinate (0-39)
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
Note: the hardware cursor is always disabled when a TSR window is opened;
this call only sets a text position
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=08h,AX=3901h/BL=09h
--------r-2F3901BL08-------------------------
INT 2F - Kingswood TSR Windows - DISPLAY STRING
AX = 3901h
BL = 08h
DS:SI -> string
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
Notes: The text is not clipped.
This routine understands Tab, NewLine and Carriage Return
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
--------r-2F3901BL09-------------------------
INT 2F - Kingswood TSR Windows - SCROLL WINDOW
AX = 3901h
BL = 09h
CL = scroll direction: 01h up, FFh down, 00h clear window
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=07h
--------r-2F3901BL0A-------------------------
INT 2F - Kingswood TSR Windows - SOUND BEEPER
AX = 3901h
BL = 0Ah
DX = sound divisor, or 0 for silence.
(divide 1843200 by required frequency to get value for DX)
CL = sound length in 18.2 Hz clock ticks
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
SeeAlso: AH=39h/BL=00h
--------r-2F3901BL0B-------------------------
INT 2F - Kingswood TSR Windows - ADD OR REMOVE USER
AX = 3901h
BL = 0Bh
CL = number of users increment: +1 if adding a new user
-1 if removing a user
Return: AX = error code (0000h if successful)
SI,DI,DS,ES preserved
Note: the TSR windows resident module may only be removed when the internal
user count is zero
SeeAlso: AH=39h/BL=00h,AX=3901h/BL=02h
--------V-2F3912BL03-------------------------
INT 2F - Kingswood ANSI display driver - SET COMPATIBILITY MODE
AX = 3912h
BL = 03h
CL = new mode (00h fast, FFh BIOS)
Return: AL = old compatibility mode
SI,DI,DS,ES preserved
SeeAlso: AX=3900h,AX=3912h/BL=04h
--------V-2F3912BL04-------------------------
INT 2F - Kingswood ANSI display driver - SET FLAGS
AX = 3912h
BL = 04h
CL = new flags (see #2432)
Return: AL = old flags
SI,DI,DS,ES preserved
SeeAlso: AX=3900h,AX=3912h/BL=03h
Bitfields for Kingswood ANSI flags:
Bit(s) Description (Table 2432)
0 do not wrap at end of line
1 wait for beeps to end before displaying next character
2 do not use graphics cursor
--------W-2F4000-----------------------------
INT 2F - Windows 3+ (OS/2 2.x???) - GET VIRTUAL DEVICE DRIVER (VDD) CAPABILTIES
AX = 4000h
Return: AL = video virtualization (see #2433)
Note: this function is used by display drivers to find out what capabilities
exist for the VDD driver and also trigger the VDD driver to call
functions 4005h and 4006h. This function also gives the Video Driver
hardware access to the video registers.
(Table 2433)
Values for Windows video virtualization:
01h does not virtualize video access
02h virtualizes the video when in text mode
03h virtualizes the video when in text mode or single plane graphics modes
04h virtualizes the video when in text mode, single plane graphics modes,
and VGA multiplane modes
FFh virtualizes the video fully
--------O-2F4001-----------------------------
INT 2F C - OS/2 compatibility box - SWITCHING DOS TO BACKGROUND
AX = 4001h
Note: called by OS/2 when the DOS box is about to be placed in the background
and the video driver should save any necessary state
SeeAlso: AX=4002h,AX=4005h
--------O-2F4002-----------------------------
INT 2F C - OS/2 compatibility box - SWITCHING DOS TO FOREGROUND
AX = 4002h
Note: called by OS/2 when the DOS box is about to be placed in the foreground
and the video driver should restore the previously-saved state
SeeAlso: AX=4001h,AX=4006h
--------W-2F4003-----------------------------
INT 2F - Windows 3.x - ENTERING VIDEO DRIVER CRITICAL SECTION
AX = 4003h
Note: This critical section must be exited within 1 second.
SeeAlso: AX=4004h
--------W-2F4004-----------------------------
INT 2F - Windows 3.x - EXITING VIDEO DRIVER CRITICAL SECTION
AX = 4004h
SeeAlso: AX=4003h
--------W-2F4005-----------------------------
INT 2F C - Windows 3.x - SWITCHING DOS TO BACKGROUND
AX = 4005h
Note: called by Windows when the DOS box is about to be placed in the
background and the video driver should save any necessary state
information (this may be called only in Standard mode)
SeeAlso: AX=4001h,AX=4006h
--------W-2F4006-----------------------------
INT 2F C - Windows 3.x - SWITCHING DOS TO FOREGROUND
AX = 4006h
Note: called by Windows when the DOS box is about to be placed in the
foreground and the video driver should restore any necessary state
information (this may be called only in Standard mode)
SeeAlso: AX=4002h,AX=4005h
--------W-2F4007-----------------------------
INT 2F - Windows 3.x - ENABLE VDD TRAPPING OF VIDEO REGISTERS
AX = 4007h
Note: used by Windows Standard mode
--------O-2F4010-----------------------------
INT 2F - OS/2 v2.0+ - INSTALLATION CHECK / GET VERSION
AX = 4010h
Return: AX = 4010h if OS/2 not installed
AX = 0000h for OS/2 Warp 3.0
BX = OS/2 version if installed
Note: OS/2 Warp 3.0
SeeAlso: INT 21/AH=30h,INT 21/AX=3306h
--------O-2F4011-----------------------------
INT 2F - OS/2 - GET VDD API ENTRY POINT
AX = 4011h
DS:(E)SI -> ASCIZ name of VDD registered with VDHRegisterAPI
Return: ES:DI -> breakpoint address to call for VDD API, or 0000h:0000h
Note: this function may be invoked from either V86 or protected mode, and
will return the appropriate address to call for invoking the VDD
in that mode
SeeAlso: AX=1684h"DEVICE API"
--------V-2F4021-----------------------------
INT 2F UC - Diamond Stealth64 Video - STLTH64.VXD - ???
AX = 4021h
???
Return: ???
SeeAlso: AX=4022h,AX=4023h
--------V-2F4022-----------------------------
INT 2F UC - Diamond Stealth64 Video - STLTH64.VXD - ???
AX = 4022h
???
Return: ???
SeeAlso: AX=4021h,AX=4023h
--------V-2F4023-----------------------------
INT 2F UC - Diamond Stealth64 Video - STLTH64.VXD - ???
AX = 4023h
???
Return: ???
SeeAlso: AX=4021h,AX=4022h
--------E-2F4040-----------------------------
INT 2F - PharLap 286|DOS-Extender Lite v2.5 - ???
AX = 4040h
Return: BX:CX -> ???
--------N-2F4100-----------------------------
INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - INSTALLATION CHECK
AX = 4100h
Return: CF clear if successful
AL = FFh
CF set on error
AX = ???
Notes: MINIPOP and NETPOPUP provide a network message popup service
LAN Manager enhanced mode adds features beyond the standard redirector
file/printer services
SeeAlso: AX=118Ah,AX=4103h,AX=4104h,AH=42h,AH=4Bh
--------N-2F4103-----------------------------
INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
AX = 4103h
Return: ???
SeeAlso: AX=4100h,AX=4104h
--------N-2F4104-----------------------------
INT 2F - DOS Enhanced LAN Manager 2.0+ MINIPOP/NETPOPUP - ???
AX = 4104h
Return: ???
SeeAlso: AX=4100h,AX=4103h
--------N-2F42-------------------------------
INT 2F - LAN Manager 2.0 DOS Enhanced MSRV.EXE - MESSENGER SERVICE
AH = 42h
???
Return: ???
Note: LAN Manager enhanced mode adds features beyond the standard redirector
file/printer services
SeeAlso: AX=118Ah,AX=4100h,AH=4Bh
--------m-2F4300-----------------------------
INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - INSTALLATION CHECK
AX = 4300h
Return: AL = 80h XMS driver installed
AL <> 80h no driver
Notes: XMS gives access to extended memory and noncontiguous/nonEMS memory
above 640K
this installation check DOES NOT follow the format used by other
software
SeeAlso: AX=4310h,AX=1687h,INT 67/AH=40h,@xxxxh:xxxxh"PMM"
Index: installation check;XMS version 2+
--------m-2F4308-----------------------------
INT 2F U - HIMEM.SYS v2.77+ - GET A20 HANDLER NUMBER
AX = 4308h
Return: AL = 43h if supported
BL = A20 handler number (value of /MACHINE:nn switch)
BH = AT A20 switch time (00h medium, 01h fast, 02h slow)
Note: if the A20 handler number returned in BL is 00h, an external handler
is being used (see AX=4330h)
SeeAlso: AX=4309h,AX=4330h
--------m-2F4309-----------------------------
INT 2F U - HIMEM.SYS v3.09+ - GET XMS HANDLE TABLE
AX = 4309h
Return: AL = 43h if function supported
ES:BX -> XMS handle table (see #2434)
Note: HIMEM.SYS v3.09 is part of MS-DOS 6.0.
SeeAlso: AX=4308h
Format of XMS handle table:
Offset Size Description (Table 2434)
00h BYTE ??? (01h in HIMEM.SYS v3.09)
01h BYTE size of one handle descriptor
02h WORD number of handles (default = 20h)
04h DWORD pointer to XMS handle array (see #2435)
SeeAlso: #2464
Format of XMS handle descriptor [array]:
Offset Size Description (Table 2435)
00h BYTE flag
01h=free, 02h=used, 04h=in pool but not associated with any EMB
01h BYTE lock count (00h=unlocked)
02h DWORD address of XMS block in KB (shift left by 10 for abs. address)
06h DWORD size of XMS block in KB
--------m-2F4310-----------------------------
INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) v2+ - GET DRIVER ADDRESS
AX = 4310h
Return: ES:BX -> driver entry point (see #2436,#2437,#2440,#2447,#2456,#2461)
Notes: HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
HIMEM.SYS requires at least 256 bytes free stack space when calling
the driver entry point
SeeAlso: AX=4300h,AX=4310h"Cloaking",AX=4310h"Netroom",AX=4310h"XMZ"
Format of XMS driver entry point:
Offset Size Description (Table 2436)
00h 5 BYTEs jump to actual handler
either short jump (EBh XXh) followed by three NOPs or
far jump (EAh XXXX:XXXX) to a program which has hooked itself
into the XMS driver chain
Note: to hook into the XMS driver chain, a program should follow the chain of
far jumps until it reaches the short jump of the driver at the end
of the chain; this short jump is to be replaced with a far jump to
the new handler's entry point, which should contain a short jump
followed by three NOPs. The new handler must return to the address
pointed at by the short jump which was overwritten. Using this
method, the new handler becomes the first to see every XMS request.
(Table 2437)
Call the XMS driver "Get XMS version number" function with:
AH = 00h
Return: AX = XMS version (in BCD, AH=major, AL=minor)
BX = internal revision number (in BCD for HIMEM.SYS)
DX = High Memory Area (HMA) state
0001h HMA (1M to 1M + 64K) exists
0000h HMA does not exist
SeeAlso: #2438,#2439,#2444,#2445,#2451
(Table 2438)
Call the XMS driver "Request High Memory Area" function with:
AH = 01h
DX = memory in bytes (for TSR or device drivers)
FFFFh if application program
Return: AX = status
0001h success
0000h failure
BL = error code (80h,81h,90h,91h,92h) (see #2462)
Note: HIMEM.SYS will fail function 01h with error code 91h if AL=40h and
DX=KB free extended memory returned by last call of function 08h
SeeAlso: #2439,#2471
(Table 2439)
Call the XMS driver "Release High Memory Area" function with:
AH = 02h
Return: AX = status
0001h success
0000h failure
BL = error code (80h,81h,90h,93h) (see #2462)
SeeAlso: #2438
(Table 2440)
Call the XMS driver "Global enable A20, for using the HMA" function with:
AH = 03h
Return: AX = status
0001h success
0000h failure
BL = error code (80h,81h,82h) (see #2462)
SeeAlso: #2441,#2442,MSR 00001000h
(Table 2441)
Call the XMS driver "Global disable A20" function with:
AH = 04h
Return: AX = status
0001h success
0000h failure
BL = error code (80h,81h,82h,94h) (see #2462)
SeeAlso: #2440,#2443,MSR 00001000h
(Table 2442)
Call the XMS driver "Local enable A20" function with:
AH = 05h
Return: AX = status
0001h success
0000h failure
BL = error code (80h,81h,82h) (see #2462)
Note: this function is used for direct access to extended memory
SeeAlso: #2440,#2443
(Table 2443)
Call the XMS driver "Local disable A20" function with:
AH = 06h
Return: AX = status
0001h success
0000h failure
BL = error code (80h,81h,82h,94h) (see #2462)
SeeAlso: #2441,#2442
(Table 2444)
Call the XMS driver "Query A20 state" function with:
AH = 07h
Return: AX = status
0001h enabled
0000h disabled
BL = error code (00h,80h,81h) (see #2462)
SeeAlso: #2437,#2445
(Table 2445)
Call the XMS driver "Query free extended memory" function with:
AH = 08h
BL = 00h (some implementations leave BL unchanged on success)
Return: AX = size of largest extended memory block in KB
DX = total extended memory in KB
BL = error code (00h,80h,81h,A0h) (see #2462)
Note: this function does not include the HMA in the returned memory sizes
SeeAlso: #2437,#2444,#2446,#2458
(Table 2446)
Call the XMS driver "Allocate extended memory block" function with:
AH = 09h
DX = Kbytes needed
Return: AX = status
0001h success
DX = handle for memory block
0000h failure
BL = error code (80h,81h,A0h) (see #2462)
SeeAlso: #2445,#2448,#2451,#2452,#2453,#2459
(Table 2447)
Call the XMS driver "Free extended memory block" function with:
AH = 0Ah
DX = handle of block to free
Return: AX = status
0001h success
0000h failure
BL = error code (80h,81h,A2h,ABh) (see #2462)
SeeAlso: #2446,#2459
(Table 2448)
Call the XMS driver "Move extended memory block" function with:
AH = 0Bh
DS:SI -> EMM structure (see #2463)
Return: AX = status
0001h success
0000h failure
BL = error code (80h-82h,A3h-A9h) (see #2462)
Note: if either handle in the EMM structure is 0000h, the corresponding
offset is considered to be an absolute segment:offset address in
directly addressable memory
SeeAlso: #2446,#2449
(Table 2449)
Call the XMS driver "Lock extended memory block" function with:
AH = 0Ch
DX = handle of block to lock
Return: AX = status
0001h success
DX:BX = 32-bit physical address of locked block
0000h failure
BL = error code (80h,81h,A2h,ACh,ADh) (see #2462)
Note: MS Windows 3.x rejects this function for handles allocated after
Windows started
SeeAlso: #2446,#2448,#2450
(Table 2450)
Call the XMS driver "Unlock extended memory block" function with:
AH = 0Dh
DX = handle of block to unlock
Return: AX = status
0001h success
0000h failure
BL = error code (80h,81h,A2h,AAh) (see #2462)
SeeAlso: #2449
(Table 2451)
Call the XMS driver "Get handle information" function with:
AH = 0Eh
DX = handle for which to get info
Return: AX = status
0001h success
BH = block's lock count
BL = number of free handles left
DX = block size in KB
0000h failure
BL = error code (80h,81h,A2h) (see #2462)
BUG: MS Windows 3.10 acts as though unallocated handles are in use
Note: MS Windows 3.00 has problems with this call
SeeAlso: #2437,#2446,#2460
(Table 2452)
Call the XMS driver "Reallocate extended memory block" function with:
AH = 0Fh
DX = handle of block
BX = new size of block in KB
Return: AX = status
0001h success
0000h failure
BL = error code (80h,81h,A0h-A2h,ABh) (see #2462)
SeeAlso: #2446,#2455
(Table 2453)
Call the XMS driver "Request upper memory block" function with:
AH = 10h
DX = size of block in paragraphs
Return: AX = status
0001h success
BX = segment address of UMB
DX = actual size of block
0000h failure
BL = error code (80h,B0h,B1h) (see #2462)
DX = largest available block
Notes: Upper Memory consists of non-EMS memory between 640K and 1024K
the XMS driver need not implement functions 10h through 12h to be
considered compliant with the standard
under DOS 5+, if CONFIG.SYS contains the line DOS=UMB, then no upper
memory blocks will be available for allocation because all blocks
have been grabbed by MS-DOS while booting
SeeAlso: #2446,#2454,#2472,INT 21/AH=58h"UMB"
(Table 2454)
Call the XMS driver "Release upper memory block" function with:
AH = 11h
DX = segment address of UMB to release
Return: AX = status
0001h success
0000h failure
BL = error code (80h,B2h) (see #2462)
Note: the XMS driver need not implement functions 10h through 12h to be
considered compliant with the standard
SeeAlso: #2447,#2453,#2455
(Table 2455)
Call the XMS v3.0+ driver "Reallocate upper memory block" function with:
AH = 12h
DX = segment address of UMB to resize
BX = new size of block in paragraphs
Return: AX = status
0001h success
0000h failure
BL = error code (80h,B0h,B2h) (see #2462)
DX = maximum available size (RM386)
Note: the XMS driver need not implement functions 10h through 12h to be
considered compliant with the standard
SeeAlso: #2452,#2453,#2454,#2470
(Table 2456)
Call the QEMM v5.11 "???" function with:
AH = 34h (QEMM 5.11 only, undocumented)
???
Return: ???
SeeAlso: #2457
(Table 2457)
Call the QEMM v5.11 "???" function with:
AH = 44h (QEMM 5.11 only, undocumented)
???
Return: ???
SeeAlso: #2456,#2470
(Table 2458)
Call the XMS v3.0 driver "Query free extended memory" function with:
AH = 88h
Return: EAX = largest block of extended memory, in KB
BL = status (00h,80h,81h,A0h) (see #2462)
ECX = physical address of highest byte of memory
(valid even on error codes 81h and A0h)
EDX = total Kbytes of extended memory (0 if status A0h)
BUG: HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
are called
SeeAlso: #2445,#2459
(Table 2459)
Call the XMS v3.0 driver "Allocate any extended memory" function with:
AH = 89h
EDX = Kbytes needed
Return: AX = status
0001h success
DX = handle for allocated block (free with AH=0Ah) (see #2447)
0000h failure
BL = status (80h,81h,A0h,A1h,A2h) (see #2462)
SeeAlso: #2446,#2458
(Table 2460)
Call the XMS v3.0 driver "Get extended EMB handle information" function with:
AH = 8Eh
DX = handle
Return: AX = status
0001h success
BH = block's lock count
CX = number of free handles left
EDX = block size in KB
0000h failure
BL = status (80h,81h,A2h) (see #2462)
BUG: MS-DOS 6.0 HIMEM.SYS leaves CX unchanged
SeeAlso: #2451,#2459,#2461
(Table 2461)
Call the XMS v3.0 driver "Reallocate any extended memory block" function with:
AH = 8Fh
DX = unlocked memory block handle
EBX = new size in KB
Return: AX = status
0001h success
0000h failure
BL = status (80h,81h,A0h-A2h,ABh) (see #2462)
BUG: HIMEM v3.03-3.07 crash on an 80286 machine if any of the 8Xh functions
are called
SeeAlso: #2452,#2460
(Table 2462)
Values for XMS error code returned in BL:
00h successful
80h function not implemented
81h Vdisk was detected
82h an A20 error occurred
8Eh a general driver error
8Fh unrecoverable driver error
90h HMA does not exist or is not managed by XMS provider
91h HMA is already in use
92h DX is less than the /HMAMIN= parameter
93h HMA is not allocated
94h A20 line still enabled
A0h all extended memory is allocated
A1h all available extended memory handles are allocated
A2h invalid handle
A3h source handle is invalid
A4h source offset is invalid
A5h destination handle is invalid
A6h destination offset is invalid
A7h length is invalid
A8h move has an invalid overlap
A9h parity error occurred
AAh block is not locked
ABh block is locked
ACh block lock count overflowed
ADh lock failed
B0h only a smaller UMB is available
B1h no UMB's are available
B2h UMB segment number is invalid
Format of EMM structure:
Offset Size Description (Table 2463)
00h DWORD number of bytes to move (must be even)
04h WORD source handle
06h DWORD offset into source block
0Ah WORD destination handle
0Ch DWORD offset into destination block
Notes: if source and destination overlap, only forward moves (source base
less than destination base) are guaranteed to work properly
if either handle is zero, the corresponding offset is interpreted
as a real-mode address referring to memory directly addressable
by the processor
Format of XMS handle info [array]:
Offset Size Description (Table 2464)
00h BYTE handle
01h BYTE lock count
02h DWORD handle size
06h DWORD handle physical address (only valid if lock count nonzero)
SeeAlso: #2434
--------m-2F4310-----------------------------
INT 2F - Cloaking - REAL-MODE API
AX = 4310h
Return: ES:BX -> driver entry point (see #2436,#2465,#2466,#2467,#2468)
SeeAlso: AX=4310h"XMS"
(Table 2465)
Call the Cloaking v1.01 "Client Registration" function with:
AH = 7Eh
BX = subfunction
0000h get client registration count
0001h get client registration structures
ES:DI -> buffer for registration structures
Return: AX = status
0000h failed
0001h successful
---subfunction 00h---
BX = size of client structure in bytes
CX = number of clients installed
---subfunction 01h---
ES:DI buffer filled
SeeAlso: #2466,#2468,INT 2C/AX=0033h
(Table 2466)
Call the Cloaking v1.01 "Verify Cloaking Host" function with:
AH = 7Fh
Return: AX = status
0000h failed
0001h (successful) if installed
BX = version (0101h for v1.01)
CX = flags
bit 0: host is VCPI-based
DS:DX -> ASCIZ Cloaking host signature
"CLOAKING.EXE"0, followed by a far-call entry point to
uninstall host (see #2467) in Helix's CLOAKING.EXE
SeeAlso: #2465,#2468
Index: installation check;Cloaking host|installation check;CLOAKING.EXE
(Table 2467)
Call the CLOAKING.EXE "Uninstall Host" function with:
Return: AX = 4F4Bh ('OK') if successfully uninstalled protected-mode code
(Table 2468)
Call the Cloaking "Start Protected-Mode Client" function with:
AH = 82h
DX = XMS handle of locked block containing protected-mode code
CL = code size (00h 16-bit, else 32-bit)
ESI, EDI = parameters to pass to protected-mode code
Return: AX = status
nonzero success
0000h failed
BL = error code (A2h,B0h) (see #2462)
Notes: this function calls a user initialization function at offset 0 in
the XMS memory block (see #2469)
supported by Helix's RM386 v6.00 and Helix's CLOAKING.EXE
SeeAlso: #2465,#2466
(Table 2469)
Values user initialization function is called with:
EBX = physical address of block's start
ESI = user data from function 82h call
EDI = user data from function 82h call
CS = code selector for XMS block at EBX (16-bit or 32-bit)
DS = data selector for XMS block, starting at EBX
ES = selector for V86 memory access to full real-mode 1088K
GS = selector for full 4G flat address space
SS:ESP -> stack provided by host
Return: via 32-bit FAR return
Note: the initialization function may call any protected-mode Cloaking
service; it should store the values of DS, ES, and GS for future
reference
--------m-2F4310-----------------------------
INT 2F - Helix Netroom RM386 v6.00 - XMS EXTENSIONS
AX = 4310h
Return: ES:BX -> driver entry point (see #2470,#2471,#2472,#2473)
Notes: HIMEM.SYS v2.77 chains to previous handler if AH is not 00h or 10h
HIMEM.SYS requires at least 256 bytes free stack space when calling
the driver entry point
SeeAlso: AX=4300h,AX=4310h"XMS",AX=4310h"Cloaking"
(Table 2470)
Call the Netroom RM386 v6.00 "Reallocate upper memory block" function with:
AH = 80h
DX = segment address of UMB to resize
BX = new size of block in paragraphs
Return: AX = status
0001h success
0000h failure
BL = error code (80h,B0h,B2h) (see #2462)
DX = maximum available size
Note: this function is identical to function 12h
SeeAlso: #2455,#2471
(Table 2471)
Call the Netroom RM386 v6.00 "re-enable HMA allocation" function with:
AH = 81h
Return: AX = 0001h (success)
SeeAlso: #2438,#2470,#2472
(Table 2472)
Call the Netroom RM386 v6.00 "Create new UMB entry" function with:
AH = 83h
BX = segment of high-memory block
DX = first page of start of block
CX = number of consecutive pages in block
DI = start of UMB in block
Return: AX = 0001h (success)
DI = segment of first high-DOS block
Note: the new UMB is not linked into the high-memory chain
SeeAlso: #2453,#2471,#2473
(Table 2473)
Call the Netroom RM386 v6.00 "Get all XMS handles info" function with:
AH = 84h
CX = size of buffer for handle info
ES:DI -> buffer for handle info (see #2464)
Return: AX = 0001h (success)
DX = current number of allocated XMS handles
SeeAlso: #2472,#2458
--------m-2F4310-----------------------------
INT 2F - NEC PC-9800 - XMZ - PRIVATE API
AX = 4310h
Return: ES:BX -> driver entry point (see #2474,#2475)
Program: XMZ is an XMS 2.x-compatible driver for the NEC PC-98 series written
by ZOBplus Hayami and available at
ftp:/ftp.tohoku.ac.jp/pub/msdos/Memory/xmz/
SeeAlso: AX=4300h,AX=4310h"XMS"
(Table 2474)
Call XMZ v1.02 "Get HMA Information" function with:
AH = FFh (XMZ only)
AL = 01h
Return: AX = 1 on success
DX = minimum HMA allocation size (/HMAMIN=)
BX = actual size of HMA allocation, if in use (i.e. the value in DX
when XMS function 1 was called)
SeeAlso: #2475
(Table 2475)
Call XMZ v1.02 "Get EMB Handle Information" function with:
AH = FFh (XMZ only)
AL = 02h
Return: AX = 1 on success
DX = number of EMB handles configured (/NUMHANDLES=)
BX = offset in XMZ's segment of the handle table (use segment of
entry point) (see #2476)
SeeAlso: #2474
Format of XMZ v1.02 EMB Handle structure:
Offset Size Description (Table 2476)
00h BYTE flag byte
04h unused handle slot
02h in-use handle slot
01h handle slot that represents a free block
01h BYTE lock count
02h WORD block start address (1K increments)
04h WORD block length (1K increments)
SeeAlso: #2475
--------m-2F4320-----------------------------
INT 2F U - HIMEM.SYS - Mach 20 SUPPORT
AX = 4320h
???
Return: ???
--------m-2F4330-----------------------------
INT 2F CU - HIMEM.SYS v2.77+ - GET EXTERNAL A20 HANDLER ADDRESS
AX = 4330h
Return: AL = 80h if external A20 handler provided
ES:BX -> external A20 handler (see #2477)
CL = A20 detection support
00h handler is unable to report A20 state
01h handler supports function 0002h to report A20 state
Note: HIMEM.SYS calls this function to allow an external program to provide
an A20 handler (i.e. to support a machine not supported by HIMEM
itself)
SeeAlso: AX=4308h,AX=4310h
(Table 2477)
Call parameters for external A20 handler are:
AX = function
0000h disable A20
0001h enable A20
0002h get A20 state
Return: AX = status (functions 0000h and 0001h)
0000h failure
0001h successful
AX = A20 state (function 0002h)
0000h disabled
0001h enabled
Note: HIMEM.SYS only calls function 0002h if the returned CL indicated that
the handler supports the call
----------2F43D6-----------------------------
INT 2F - Multiplex - ???
AX = 43D6h
Note: Central Point's CPBACKUP v9 calls this function with CX=07FFh and
DX=80D3h at startup
--------E-2F43E0BX0000-----------------------
INT 2F - DOS Protected Mode Services (DPMS) v1.0 - INSTALLATION CHECK
AX = 43E0h
BX = 0000h
CX = 4450h ('DP')
DX = 4D53h ('MS')
Return: AX = 0000h if installed
CF clear
ES:DI -> server structure (see #2478)
ES:BX -> registration structure (pre-NWDOS 7 beta spec) (see #2480)
Note: the DPMS 1.0 server included with the original release of Novell DOS
7.0 supports both the beta and 1.0 specification, setting ES:BX even
if CX and DX are not as specified on entry (since the beta
specification did not use those registers). However, the DPMS 1.1
server included with the March 1994 update does not support the beta
specification
SeeAlso: AX=43E1h,AX=43E2h,AX=43E3h,INT 2F/AX=1687h
Index: signature strings;DPMS
Format of DPMS 1.0 server structure:
Offset Size Description (Table 2478)
00h 4 BYTEs signature string "DPMS"
04h 2 BYTEs DPMS version (major,minor)
06h 8 BYTEs blank-padded server OEM name
0Eh 2 BYTEs OEM server version (major,minor)
10h WORD DPMS flags (see #2479)
12h BYTE CPU type
(02h = 286, 03h = 386 or higher, higher values allowed)
Bitfields for DPMS flags:
Bit(s) Description (Table 2479)
0 fast processor reset available (286 only)
1 DPMS server is enabled
2 memory is remapped
3-15 reserved (undefined)
Format of beta DPMS registration structure:
Offset Size Description (Table 2480)
00h DWORD real-mode API entry point (see #2482)
04h DWORD 16-bit protected-mode API entry point (see #2482)
08h 8 BYTEs reserved (0)
10h 8 BYTEs blank-padded server OEM name
18h WORD flags
bit 0: fast processor reset available (286 only)
bits 1-15 reserved (undefined)
1Ah 2 BYTEs DPMS version (major,minor)
1Ch BYTE CPU type (02h = 286, 03h = 386 or higher)
--------m-2F43E1-----------------------------
INT 2F - DOS Protected Mode Services (DPMS) v1.0 - REGISTER CLIENT
AX = 43E1h
CX = required protected-mode stack size in bytes
ES:DI -> DPMS client interface structure (see #2481)
Return: AX = 0000h if supported
CF clear
ES:DI buffer filled with API entry point code from offset 0Ah
Note: the client is allowed to copy the returned API code to any location in
memory, and need not keep the three code fields together
SeeAlso: AX=43E0h,AX=43E2h,AX=43E3h
Format of DPMS client interface structure:
Offset Size Description (Table 2481)
00h WORD 0000h (structure version / flags)
02h 8 BYTEs blank-padded client name
0Ah 7 BYTEs real/virtual-86 mode API code (see #2482)
11h BYTE space for return instruction
set to C3h for near return, CBh for far return
12h 7 BYTEs 16-bit protected-mode API code (see #2482)
19h BYTE space for return instruction
set to C3h for near return, CBh for far return
1Ah 9 BYTEs 32-bit protected-mode API code (see #2482)
23h BYTE space for return instruction
set to C3h for near return, CBh for far return
Note: the DPMS server fills the return opcode bytes with zeros and DPMS
requests will thus crash the system unless the application
explicitly sets them (some early versions set them to C3h by
default, but one should not rely on that)
(Table 2482)
Call DPMS entry point with:
AX = 0000h unregister client from server
---control transfer functions---
AX = 0100h call protected-mode procedure
CX = number of words of stack to copy
ES:(E)DI -> callup/down register structure (see #2484)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0101h call real-mode procedure (RETF return)
CX = number of words of stack to copy
ES:(E)DI -> callup/down register structure (see #2484)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0102h call real-mode procedure (IRET return)
CX = number of words of stack to copy
ES:(E)DI -> callup/down register structure (see #2484)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0103h call real-mode interrupt handler
BL = interrupt number
CX = number of words of stack to copy
ES:(E)DI -> callup/down register structure (see #2484)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0104h register default protected mode procedure
ES:(E)DI -> default register structure (see #2485)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0105h register default real-mode procedure (RETF return)
ES:(E)DI -> default register structure (see #2485)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
Note: the procedure will be called from 16-bit prot. mode
AX = 0106h register default real-mode procedure (IRET return)
ES:(E)DI -> default register structure (see #2485)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
Note: the procedure will be called from 16-bit prot. mode
AX = 0107h register default real-mode interrupt handler
BL = interrupt number
ES:(E)DI -> default register structure (see #2485)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
Note: the handler will be called from 16-bit protected mode
AX = 0108h register default real-mode procedure (RETF return)
ES:(E)DI -> default register structure (see #2485)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
Note: the procedure will be called from 32-bit prot. mode
AX = 0109h register default real-mode procedure (IRET return)
ES:(E)DI -> default register structure (see #2485)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
Note: the procedure will be called from 32-bit prot. mode
AX = 010Ah register default real-mode interrupt handler
BL = interrupt number
ES:(E)DI -> default register structure (see #2485)
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
Note: the handler will be called from 32-bit protected mode
---descriptor management---
AX = 0200h allocate descriptors
CX = number of descriptors to allocate
Return: CF clear if successful
AX = selector for first descriptor allocated
CF set on error
AX = error code (see #2483)
AX = 0201h free a descriptor
BX = selector for descriptor
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0202h create alias descriptor
BX = selector for descriptor to be aliased
Return: CF clear if successful
AX = alias descriptor
CF set on error
AX = error code (see #2483)
AX = 0203h build alias to real-mode segment
BX = descriptor
CX = real-mode segment
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0204h set descriptor base
BX = descriptor
CX:DX = base address
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0205h set descriptor limit
BX = descriptor
CX = limit
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0206h set descriptor type/attribute
BX = descriptor
CL = type
CH = attribute
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0207h get descriptor base
BX = descriptor
Return: CF clear if successful
CX:DX = base address
CF set on error
AX = error code (see #2483)
---linear memory functions---
AX = 0300h get size of largest free block of memory
Return: CF clear if successful
BX:CX = size
CF set on error
AX = error code (see #2483)
AX = 0301h allocate block of extended memory
BX:CX = required size
Return: CF clear if successful
BX:CX = base address
SI:DI = handle
CF set on error
AX = error code (see #2483)
AX = 0302h free block of extended memory
SI:DI = handle
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0303h map linear memory
ES:(E)DI -> DDS (see #2486)
Return: CF clear if successful
BX:CX = base address
SI:DI = handle
CF set on error
AX = error code (see #2483)
AX = 0304h unmap linear memory
SI:DI = handle
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0305h get page table entries
ESI = linear address
(E)CX = count
ES:(E)DI -> buffer for page table entries
Return: CF clear if successful
ES:(E)DI buffer filled
CF set on error
AX = error code (see #2483)
AX = 0306h set page table entries
EBX = linear memory handle
ESI = linear address
(E)CX = count
ES:(E)DI -> buffer containing page table entries
Return: CF clear if successful
CF set on error
AX = error code (see #2483)
AX = 0307h get largest mappable block size
Return: CF clear if successful
BX:CX = size
CF set on error
AX = error code (see #2483)
---miscellaneous---
AX = 0400h relocate segment to extended memory
ES:SI = base address
CX = limit
BL = type
BH = attribute
DX = selector or 0000h
Return: CF clear if successful
AX = selector
BX:CX = new base address
SI:DI = handle
CF set on error
AX = error code (see #2483)
Note: the beta DPMS specification, which is still supported by the Novell
DOS 7.0 DPMS host, only supported functions 0100h-0103h, 0200h-0207h,
0300h-0304h, and 0400h
(Table 2483)
Values for DPMS error code:
8000h general error
8001h unsupported function
8002h unable to switch to protected mode
8004h no default stack defined
8005h unknown client
8010h resource unavailable
8011h descriptor unavailable
8012h linear memory unavailable
8013h physical memory unavailable
8021h invalid value
8022h invalid selector
8023h invalid handle
8025h invalid linear address
Format of DPMS callup/down register structure:
Offset Size Description (Table 2484)
00h DWORD EDI
04h DWORD ESI
08h DWORD EBP
0Ch 4 BYTEs reserved (0) (ESP, may be used by DPMS server)
10h DWORD EBX
14h DWORD EDX
18h DWORD ECX
20h DWORD EAX
24h DWORD EIP
28h WORD CS
2Ah 2 BYTEs reserved (0)
2Ch DWORD EFLAGS
30h DWORD ESP
34h WORD SS
36h 2 BYTEs reserved (0)
38h WORD ES
3Ah 2 BYTEs reserved (0)
3Ch WORD DS
3Eh 2 BYTEs reserved (0)
40h WORD FS
42h 2 BYTEs reserved (0)
44h WORD GS
46h 2 BYTEs reserved (0)
Format of DPMS default register structure:
Offset Size Description (Table 2485)
00h DWORD EIP
04h WORD CS
06h 2 BYTEs reserved (0)
08h WORD number of words to copy from stack to stack
0Ah BYTE (call) 00h
(ret) nonzero if call could not be made
0Bh BYTE reserved (may be used by some servers)
0Ch DWORD ESP
10h WORD SS
12h 2 BYTEs reserved (0)
14h WORD ES
16h 2 BYTEs reserved (0)
18h WORD DS
1Ah 2 BYTEs reserved (0)
1Ch WORD FS
1Eh 2 BYTEs reserved (0)
20h WORD GS
22h 2 BYTEs reserved (0)
24h 9 BYTEs API entry code (filled in by server)
Format of DPMS lock DDS:
Offset Size Description (Table 2486)
00h DWORD total size in bytes
04h DWORD offset
08h WORD segment or selector
0Ah WORD reserved
0Ch WORD maximum number of physical blocks structure has space for
0Eh WORD number of physical blocks listed
10h DWORD physical address of first block
14h DWORD size in bytes of first block
...
--------m-2F43E2-----------------------------
INT 2F - DOS Protected Mode Services (DPMS) v1.0 - ENABLE/DISABLE DPMS
AX = 43E2h
BX = new state (0000h disable, 0001h enable)
Return: AX = 0000h if supported
Note: this function should normally be called only by system software
SeeAlso: AX=43E0h,AX=43E1h,AX=43E3h
--------m-2F43E3BX0000-----------------------
INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS STARTUP BROADCAST
AX = 43E3h
BX = 0000h
CX = 4450h ('DP')
DX = 4D53h ('MS')
SeeAlso: AX=43E0h,AX=43E4h
--------m-2F43E4BX0000-----------------------
INT 2F - DOS Protected Mode Services (DPMS) v1.0 - DPMS EXIT BROADCAST
AX = 43E4h
BX = 0000h
CX = 4450h ('DP')
DX = 4D53h ('MS')
SeeAlso: AX=43E0h,AX=43E3h
--------E-2F44-------------------------------
INT 2F U - DOS Extender support???
AH = 44h
AL = function (at least 0Bh, 15h, 17h)
???
Return: ???
Note: called by Codeview for Windows
SeeAlso: AH=86h
--------G-2F4500-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - INSTALLATION CHECK
AX = 4500h
Return: AL = installation status
01h if PROF.COM installed
02h if VPROD.386 installed
SeeAlso: AX=4501h,AX=4502h
--------G-2F4501-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SETUP PROFILER
AX = 4501h
BX = CSIPS buffer size in KB (first parameter for ProfSetup)
CX = output limit in KB (second parameter for ProfSetup)
Note: this call is not supported by PROF.COM
SeeAlso: AX=4502h,AX=4503h
--------G-2F4502-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - SET SAMPLING RATE
AX = 4502h
BL = sampling rate for PROF.COM (0 < BL <= 13)
(01h = 8192/s, 04h = 1024/s, 08h = 32/s, 0Dh = 1/s)
CX = sampling rate for VPROD.386
Note: for PROF.COM, this programs the CMOS clock by setting BL+2 as the
low four bits of CMOS register 0Ah. The interruption rate is
1 SHL (15 - BL) per second.
SeeAlso: AX=4501h,AX=4503h
--------G-2F4503-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - START PROFILING
AX = 4503h
Notes: Profiling is also turned on by the key combinations
LeftShift + RightShift + Alt and LeftShift + RightShift + Ctrl
for PROF.COM, this call programs the CMOS clock by reading register
0Ch, and setting bit 6 of register 0Bh. It then makes sure that IRQ8
is unmasked
SeeAlso: AX=4504h
--------G-2F4504-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - STOP PROFILING
AX = 4504h
Notes: profiling is also turned off by the key combination
LeftShift + RightShift
for PROF.COM, this programs the CMOS clock by reading register 0Ch
and clearing bit 6 of register 0Bh. It then masks IRQ8.
SeeAlso: AX=4503h,AX=4505h,AX=4506h,AX=4507h
--------G-2F4505-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - CLEAR PROFILING DATA
AX = 4505h
SeeAlso: AX=4503h,AX=4504h,AX=4506h
--------G-2F4506-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFlush"
AX = 4506h
SeeAlso: AX=4505h,AX=4507h
--------G-2F4507-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - "ProfFinish"
AX = 4507h
Note: this call is essentially a "ProfStop" (AX=4504h) followed by
"ProfFlush" (AX=4506h)
SeeAlso: AX=4504h,AX=4505h,AX=4506h
--------G-2F4508-----------------------------
INT 2F U - Microsoft Profiler (PROF.COM/VPROD.386) - ALTERNATE SEGDEBUG IFACE
AX = 4508h
BX = ordinal (or 0000h)
CX = segment
DX = instance (or 0000h)
SI = type (or 0000h)
ES:DI -> ASCIZ module name
Notes: this call is an alternate entry to the profiler's SEGDEBUG
interface, but only to function 0, for notifying the profiler of
each new segment loaded. The SHOWHITS utility then examines the
profiler's output files (CSIPS.DAT and SEGENTRY.DAT) in conjunction
with symbol files to provide information in a useful form.
this call does not have a corresponding Windows function
SeeAlso: AX=4500h
--------D-2F4601-----------------------------
INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
AX = 4601h
Return: ???
Note: the DOS 5+ kernel intercepts this function and copies the MCB
following the caller's PSP memory block into the DOS data segment;
in conjunction with AX=4602h, this intercept is used by DOS to
avoid corruption of the Windows real-mode heap's end sentinel
SeeAlso: AX=1700h,AX=4602h
--------D-2F4602-----------------------------
INT 2F CU - MS Windows WINOLDAP - SWITCHING ???
AX = 4602h
Return: ???
Note: the DOS 5+ kernel intercepts this function and copies the
previously-saved MCB from the DOS data segment into the MCB following
the caller's PSP memory block; in conjunction with AX=4601h, this
intercept is used by DOS to avoid corruption of the Windows real-mode
heap's end sentinel
SeeAlso: AX=1700h,AX=4601h
--------E-2F46-------------------------------
INT 2F U - Windows/286 DOS Extender
AH = 46h
AL = subfunction (03h,04h)
Return: ???
Note: these two subfunctions are called by MS Windows 3.0
--------v-2F4653CX0002-----------------------
INT 2F - F-PROT v1.x only - F-LOCK.EXE - API
AX = 4653h ('FS')
CX = 0002h
BX = subfunction
0000h installation check
Return: AX = FFFFh
0001h uninstall
Return: AX,BX,ES destroyed
0002h disable (v1.08 and below only)
0003h enable (v1.08 and below only)
Program: F-LOCK is part of the shareware F-PROT virus/trojan protection
package by Fridrik Skulason
SeeAlso: AX=4653h/CX=0003h,AX=CA00h,INT 21/AX=4BEEh
Index: installation check;F-LOCK|uninstall;F-LOCK
--------v-2F4653CX0003-----------------------
INT 2F - F-PROT v1.x only - F-XCHK.EXE - API
AX = 4653h ('FS')
CX = 0003h
BX = subfunction
0000h installation check
Return: AX = FFFFh
0001h uninstall
Return: AX,BX,ES destroyed
Program: F-XCHK is part of the shareware F-PROT virus/trojan protection
package by Fridrik Skulason
SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0004h,AX=CA00h
Index: installation check;F-XCHK|uninstall;F-XCHK
--------v-2F4653CX0004-----------------------
INT 2F - F-PROT v1.x only - F-POPUP.EXE - API
AX = 4653h ('FS')
CX = 0004h
BX = subfunction
0000h installation check
Return: AX = FFFFh
0001h uninstall
Return: AX,BX,ES destroyed
0002h disable (v1.08 and below only)
display message (v1.14+)
other registers: ???
0003h enable (v1.08 and below only)
display message (v1.14+)
other registers: ???
Return: AX = key pressed by user
Program: F-POPUP is part of the shareware F-PROT virus/trojan protection
package by Fridrik Skulason
SeeAlso: AX=4653h/CX=0003h,AX=4653h/CX=0005h,AX=CA00h
Index: installation check;F-POPUP|uninstall;F-POPUP
--------v-2F4653CX0005-----------------------
INT 2F - F-PROT v1.x only - F-DLOCK.EXE - API
AX = 4653h ('FS')
CX = 0005h
BX = subfunction
0000h installation check
Return: AX = FFFFh
0001h uninstall
Return: AX,BX,ES destroyed
Program: F-DLOCK is part of the shareware F-PROT virus/trojan protection
package by Fridrik Skulason
SeeAlso: AX=4653h/CX=0004h,AX=CA00h
Index: installation check;F-DLOCK|uninstall;F-DLOCK
----------2F4653CX0007-----------------------
INT 2F - F-PROT v2.x - VIRSTOP - ENABLE/DISABLE BOOTSECTOR READ CHECKING
AX = 4653h ('FS')
CX = 0007h
BL = new state of bootsector checking (01h = disabled)
Program: VIRSTOP is the resident virus-checker from Fridrik Skulason's F-PROT
virus/trojan protection package
----------2F4653CX0008-----------------------
INT 2F - F-PROT v2.x - ???
AX = 4653h ('FS')
CX = 0008h
???
Return: ???
Note: called by F-PROT v2.x VIRSTOP
----------2F4653CX0008-----------------------
INT 2F - F-PROT v2.x - VIRSTOP - INSTALLATION CHECK
AX = 4653h ('FS')
CX = 0008h
Return: AX = 5346h if installed
BX = version???
DS:SI -> ASCIZ name of file containing virus signatures
DS:DI -> 80-byte buffer for ???
--------W-2F4680-----------------------------
INT 2F U - MS Windows v3.0 - INSTALLATION CHECK
AX = 4680h
Return: AX = result
0000h MS Windows 3.0 running in real (/R) or standard (/S) mode,
or DOS 5 DOSSHELL active
nonzero no Windows, Windows prior to 3.0, or Windows3 in enhanced
mode
Note: Windows 3.1 finally provides an installation check which works in all
modes (see AX=160Ah)
SeeAlso: AX=1600h,AX=160Ah
----------2F47-------------------------------
INT 2F U - ???
AH = 47h
???
Return: ???
Note: reportedly called by Microsoft BASIC Compiler v7.0
--------K-2F4800-----------------------------
INT 2F - DOS 5+ DOSKEY - INSTALLATION CHECK
AX = 4800h
Return: AL = nonzero if installed (DOS 5.0 and 6.0 return AX=AA02h)
ES = segment of DOSKEY resident portion
Note: DOSKEY chains if AL is not 00h or 10h on entry
SeeAlso: AX=4800h"PCED",AX=4810h
--------K-2F4800-----------------------------
INT 2F - PCED v2.1 - INSTALLATION CHECK
AX = 4800h
Return: AX = AACDh if installed
ES = segment of PCED kernel (PCED has multiple code segments)
Program: PCED v2.1 is a command line editor/history/macro facility by
Cove Software. It is the commercial version of the freeware CED.
Notes: DOSKEY also responds to this call if installed, returning AX=AA02h.
unlike DOSKEY, PCED does *not* chain if AL contains an
unsupported function code. It IRETs with all registers intact.
--------K-2F4810-----------------------------
INT 2F - DOS 5+ DOSKEY, PCED v2.1 - READ INPUT LINE FROM CONSOLE
AX = 4810h
DS:DX -> line buffer (see #1033 at INT 21/AH=0Ah)
Return: AX = 0000h if successful
Notes: the first byte (length) of the buffer MUST be 80h, or DOSKEY chains to
the previous handler; PCED allows sizes other than 80h
if the user's input is a macro name, no text is placed in the buffer
even though AX=0000h on return; the program must immediately issue
this call again to retrieve the expansion of the macro. Similarly,
if the user enters a special parameter such as $*, this call must
be repeated to retrieve the expansion; on the second call, DOSKEY
overwrites the macro name on the screen with its expansion.
unlike DOSKEY, PCED expands all macros on the first call, so it is
not necessary to make two calls; since the buffer is not empty on
return, DOSKEY-aware programs will not make the second call
DOSKEY chains if AL is not 00h or 10h on entry
SeeAlso: AX=4800h,INT 21/AH=0Ah
--------K-2F48C0-----------------------------
INT 2F - PCED v2.1 - PCED API
AX = 48C0h
DX = API function code
other registers as required by the specified function
Return: CF clear if successful
CF set on error
AX = PCED error code
other registers as appropriate for API function
Program: PCED v2.1 is a command line editor/history/macro facility by
Cove Software. It is the commercial version of the freeware CED.
Note: the full API information is available from Cove Software
SeeAlso: AX=4800h"PCED",AX=48C1h,AX=48C2h,AX=48C3h
--------U-2F48C1BL00-------------------------
INT 2F - PCED/VSTACK - INSTALLATION CHECK
AX = 48C1h
BL = 00h
Return: AX = 0000h if installed
BX = VSTACK resident segment
Program: VSTACK is a resident backscroll utility included as part of the PCED
package by Cove Software
Note: chains if BL <> 00h on entry
SeeAlso: AX=48C0h,AX=48C2h
--------U-2F48C2BL00-------------------------
INT 2F - PCED/ATTRIB - INSTALLATION CHECK
AX = 48C2h
BL = 00h
Return: AX = 0000h if installed
BX = ATTRIB resident segment
Program: ATTRIB is a resident file attribute changer included as part of the
PCED package by Cove Software
Note: chains if BL <> 00h on entry
SeeAlso: AX=48C0h,AX=48C1h,AX=48C3h
--------K-2F48C3BL00-------------------------
INT 2F - PCED/KEYDEF - INSTALLATION CHECK
AX = 48C3h
BL = 00h
Return: AX = 0000h if installed
BX = KEYDEF resident segment
Program: KEYDEF is a resident keyboard redefinition utility included as part
of the PCED package by Cove Software
Note: chains if BL <> 00h on entry
SeeAlso: AX=48C0h,AX=48C2h,AX=48C4h
--------U-2F48C4BL00-------------------------
INT 2F - PCED/FLIST - INSTALLATION CHECK
AX = 48C4h
BL = 00h
Return: AX = 0000h if installed
BX = FLIST resident segment
Program: FLIST is a resident filelist processor included as part of the PCED
package by Cove Software
Note: chains if BL <> 00h on entry
SeeAlso: AX=48C0h,AX=48C3h,AX=48C5h
--------U-2F48C5BL00-------------------------
INT 2F - PCED/ASSOC - INSTALLATION CHECK
AX = 48C5h
BL = 00h
Return: AX = 0000h if installed
BX = ASSOC resident segment
Program: ASSOC is a resident utility included as part of the PCED package which
associates files with executable programs based on their extensions
Note: chains if BL > 02h on entry
SeeAlso: AX=48C0h,AX=48C4h,AX=48C5h/BL=01h,AX=48C5h/BL=02h
--------U-2F48C5BL01-------------------------
INT 2F - PCED/ASSOC - GET VERSION
AX = 48C5h
BL = 01h
Return: AX = 0000h if installed
BX = binary ASSOC version (BL = major, BH = minor)
Note: chains if BL > 02h on entry
SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=02h
--------U-2F48C5BL02-------------------------
INT 2F - PCED/ASSOC - ASSOCIATION TEST
AX = 48C5h
BL = 02h
DS:SI -> ASCIZ filename
Return: AX = status
0000h if filename is unknown
0001h if there is an association defined for the file
BX destroyed
Program: ASSOC is a resident utility included as part of the PCED package which
associates files with executable programs based on their extensions
Note: chains if BL > 02h on entry
SeeAlso: AX=48C0h,AX=48C5h/BL=00h,AX=48C5h/BL=01h
----------2F49-------------------------------
INT 2F U - ???
AH = 49h
???
Return: ???
Note: reportedly called by DOS 5.0 installation
--------D-2F4A00CX0000-----------------------
INT 2F CU - DOS 5+ - FLOPPY-DISK LOGICAL DRIVE CHANGE NOTIFICATION
AX = 4A00h
CX = 0000h
DH = new drive number
DL = current drive number
Return: CX = FFFFh to skip "Insert diskette for drive X:" message
Note: called by MS-DOS 5.0+ IO.SYS just before displaying the message
"Insert diskette for drive X:" on single-floppy systems
--------D-2F4A01-----------------------------
INT 2F - DOS 5+ - QUERY FREE HMA SPACE
AX = 4A01h
Return: BX = number of bytes available in HMA (0000h if DOS not using HMA)
ES:DI -> start of available HMA area (FFFFh:FFFFh if not using HMA)
Notes: called by Windows 3.1 DOSX.EXE
supported by Novell DOS 7
SeeAlso: AX=4310h,AX=4A02h
--------D-2F4A02-----------------------------
INT 2F - DOS 5+ - ALLOCATE HMA SPACE
AX = 4A02h
BX = number of bytes
Return: ES:DI -> start of allocated HMA block or FFFFh:FFFFh
BX = number of bytes actually allocated (rounded up to next paragraph
for DOS 5.0 and 6.0)
Notes: this call is not valid unless DOS is loaded in the HMA (DOS=HIGH)
called by Windows 3.1 DOSX.EXE
supported by Novell DOS 7
SeeAlso: AX=4A01h
--------T-2F4A05-----------------------------
INT 2F U - DOS 5+ DOSSHELL - TASK SWITCHING API???
AX = 4A05h
SI = function
0000h reset???
0001h ???
ES:BP -> 80-byte buffer containing ???
0002h ???
0003h ???
0004h ???
BL = ???
0005h ???
0006h get ???
Return: ES:SI -> ???
0007h get ???
Return: AX = ???
0008h get ???
Return: DX:AX -> ??? (internal control data of some kind)
0009h get ???
Return: ES:SI -> ??? (apparently identical to function 0006h)
000Ah ???
BL = length of buffer
ES:BP -> buffer containing ???
000Bh get ???
Return: AX = ???
000Ch ???
BL = ???
Return: if BL nonzero on entry
DX:AX -> ???
if BL = 00h on entry
ES:SI -> ???
Notes: DOSSHELL chains to the previous handler if SI is not one of the values
listed above
the DOSSWAP.EXE module calls functions 03h,04h,05h,07h,08h,09h,0Ch
the Windows 3.1 DSWAP.EXE and WSWAP.EXE task switchers use these calls
SeeAlso: AX=4B01h
--------D-2F4A06-----------------------------
INT 2F CU - DOS 5+ - DOS SUPERVISOR "REBOOT PANEL" - ADJUST MEMORY SIZE
AX = 4A06h
DX = segment following last byte of conventional memory
Return: DX = segment following last byte of memory available for use by DOS
Desc: used to override the default memory size when booting diskless
workstations
Notes: called by MS-DOS 5+ IO.SYS startup code if the signature "RPL" is
present three bytes beyond the INT 2F handler; this call overrides
the value returned by INT 12
hooked by RPL code at the top of memory to protect itself from being
overwritten; DOS builds a memory block with owner = 0008h and name
"RPL" which must be freed by the RPL code when it is done
SeeAlso: INT 12"BIOS",INT 18"BOOT HOOK"
--------N-2F4A07-----------------------------
INT 2F U - RESERVED FOR PROTMAN SUPPORT
AX = 4A07h
???
Return: ???
--------c-2F4A10BX0000-----------------------
INT 2F - SMARTDRV v4.00+ - INSTALLATION CHECK AND HIT RATIOS
AX = 4A10h
BX = 0000h
CX = EBABh (v4.1+; see Note)
Return: AX = BABEh if installed
DX:BX = cache hits
DI:SI = cache misses
CX = number of dirty cache elements
BP = version in BCD (4.10 = 0410h)
Notes: most of the SMARTDRV API, including this call, is supported by
PC-Cache v8.0 and recent versions of the Norton Caches
if DBLSPACE.BIN is installed but SMARTDRV has not yet been installed,
then calls of this function with CX<>EBABh on entry cause
DBLSPACE.BIN to display the error message
"Cannot run SMARTDrive 4.0 with DoubleSpace" and abort the caller
with INT 21/AX=4C00h
SMARTDRV v3.x had a completely different API using IOCTL calls, which
was also supported by the Norton Caches
SeeAlso: AX=4A10h/BX=0001h,AX=4A10h/BX=0004h,AX=4A10h/BX=0005h
SeeAlso: AX=4A10h/BX=0007h,AX=4A10h/BX=1234h,AX=4A11h/BX=0000h
SeeAlso: INT 21/AX=4402h"SMARTDRV",INT 21/AX=4403h"SMARTDRV"
--------c-2F4A10BX0000-----------------------
INT 2F U - Novell NWCACHE - ???
AX = 4A10h
BX = 0000h
CX = 0EDCh ('EDC' = Novell European Development Center)
Return: ???
SeeAlso: AX=4A10h/BX=0001h"NWCACHE"
--------c-2F4A10BX0001-----------------------
INT 2F - SMARTDRV v4.00+ - FLUSH BUFFERS (COMMIT CACHE)
AX = 4A10h
BX = 0001h
Note: this function is also supported by PC-Cache v8.0.
SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0002h,INT 21/AH=0Dh
--------c-2F4A10BX0001-----------------------
INT 2F U - Novell NWCACHE - ???
AX = 4A10h
BX = 0001h
CX = 0EDCh ('EDC' = Novell European Development Center)
Return: ???
SeeAlso: AX=4A10h/BX=0000h"NWCACHE"
--------c-2F4A10BX0002-----------------------
INT 2F - SMARTDRV v4.00+ - RESET CACHE
AX = 4A10h
BX = 0002h
Note: this function is also supported by PC-Cache v8.0.
SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0001h
--------c-2F4A10BX0003-----------------------
INT 2F - SMARTDRV v4.00+ - STATUS
AX = 4A10h
BX = 0003h
BP = drive number (0=A, 1=B, etc.)
DL = subfunction
00h only get information
01h turn on read cache
02h turn off read cache
03h turn on write cache
04h turn off write cache
---NWCACHE---
05h ???
06h ???
Return: AX = BABEh if OK
DL = status (see #2487)
DL = FFh if drive does not exist
Notes: If the read cache is off, reads will not be cached, but writes will
continue to be cached if the write-cache is enabled.
this function is also supported by PC-Cache v8.0.
SeeAlso: AX=4A10h/BX=0000h
Bitfields for SMARTDRV status:
Bit(s) Description (Table 2487)
7 not cached
6 write-through (not write-cached)
0-5 real drive number (0=A, 1=B...)
Note: the "real" drive number is always set to 00h for RAM disks and to 3Fh
for CD-ROMs; unfortunately, the latter means that an uncached CD-ROM
has status FFh, just as a nonexistent drive does
--------c-2F4A10BX0004-----------------------
INT 2F - SMARTDRV v4.00+ - GET CACHE SIZE
AX = 4A10h
BX = 0004h
Return: AX = size in elements of full-sized cache
BX = current size in elements
CX = size of one element in bytes
DX = number of elements under Windows
Note: this function is also supported by PC-Cache v8.0.
SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0005h
--------c-2F4A10BX0005-----------------------
INT 2F - SMARTDRV v4.00+ - GET DOUBLE-BUFFER STATUS
AX = 4A10h
BX = 0005h
BP = drive number (0=A, 1=B...)
Return: AX = BABEh if double-buffered
ES:DI -> 16-byte array of status bytes for fixed disks (see #2488)
SeeAlso: AX=4A10h/BX=0000h,AX=4A10h/BX=0003h,AX=4A10h/BX=0006h
(Table 2488)
Values for SMARTDRV status byte:
00h state unknown
FFh drive double-buffered
else not double-buffered
--------c-2F4A10BX0006-----------------------
INT 2F CU - SMARTDRV v4.00+ - CHECK IF DRIVE CACHEABLE
AX = 4A10h
BX = 0006h
CL = drive number (01h = A:)
Return: AX = 0006h if drive should not be cached by SMARTDRV
Note: called by SMARTDRV at startup to determine whether it should cache
a particular drive
SeeAlso: AX=4A10h/BX=0000h
--------c-2F4A10BX0007-----------------------
INT 2F - SMARTDRV v4.00+ - GET DEVICE DRIVER FOR DRIVE
AX = 4A10h
BX = 0007h
BP = drive number (00h=A:)
Return: DL = unit number within device driver
ES:DI -> device driver header for drive (see #1332)
Note: this function is also supported by PC-Cache v8.0.
this call is reported to always return the driver header of the
standard block driver (A:-C:+) for SmartDrive v5.00 from MS-DOS 6.2
SeeAlso: AX=4A10h/BX=0000h,AX=4A11h/BX=0003h,AX=4A11h/BX=0004h
--------c-2F4A10BX0008-----------------------
INT 2F - SMARTDRV v4.20+ - GET/SET FLUSH BEFORE PROMPT, CD-ROM SUPPORT
AX = 4A10h
BX = 0008h
DL = subfunction
00h set
DH = new states
bit 0: flush before prompt
bits 1-7 reserved (0)
01h get
Return: DH = status flags
bit 0: (v4.2+) flush before prompt
bit 1: (v5.0+) CD-ROM caching support installed
Note: v4.2 was an interim release to fix problems in the SMARTDRV included
with MS-DOS 6.00; v5.00 is included with MS-DOS 6.2
--------c-2F4A10BX000A-----------------------
INT 2F - SMARTDRV v4.00+ - GET ELEMENT STATUS TABLE
AX = 4A10h
BX = 000Ah
Return: ES:BX -> information pointer table (see #2489)
Note: this function is also supported by PC-Cache v8.0.
SeeAlso: AX=4A10h/BX=0000h
Format of SMARTDRV information pointer table:
Offset Size Description (Table 2489)
00h WORD offset of ??? byte/word array (byte if elements < 2000h bytes)
02h WORD offset of dirty flag byte/word array (byte if elts < 2000h)
each byte/word is a bit string of the dirty sectors in element
04h WORD offset of word array containing low halves of unique
identifiers for the corresponding element's contents
06h WORD offset of word array containing high halves of unique
identifiers for the corresponding element's contents
08h WORD offset of WORD containing current number of elements in cache
--------c-2F4A10BX1234-----------------------
INT 2F - SMARTDRV v4.00+ - SIGNAL SERIOUS ERROR
AX = 4A10h
BX = 1234h
Desc: this function pops up a message box saying that a serious error
occurred and to hit R to retry, then waits for the keypress
Note: this function is also supported by PC-Cache v8.0.
SeeAlso: AX=4A10h/BX=0000h
--------k-2F4A11BX0000-----------------------
INT 2F - DBLSPACE.BIN - "GetVersion" - INSTALLATION CHECK
AX = 4A11h
BX = 0000h
Return: AX = 0000h (successful)
BX = 444Dh ("DM")
CL = first drive letter used by DBLSPACE (41h ['A'] = A:)
CH = number of drive letters used by DBLSPACE
DX = internal DBLSPACE.BIN version number (bits 14-0)
bit 15 set if DBLSPACE.BIN has not yet been relocated to final
position in memory (i.e. DBLSPACE.SYS /MOVE)
Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
disk-compression software bundled with MS-DOS 6.0 and 6.20
Notes: this function is also supported by the version of SuperStor bundled
with IBM DOS 6.x and "preloading" versions of Stacker
the complete DBLSPACE.BIN API is still supported by MS-DOS 6.22's
DRVSPACE.BIN
SeeAlso: AX=4A11h/BX=0001h,AX=4A11h/BX=0002h,AX=4A11h/BX=0003h
SeeAlso: AX=4A11h/BX=0005h,AX=4A11h/BX=0007h,AX=4A11h/BX=FFFFh
SeeAlso: INT 21/AX=4404h"DBLSPACE"
--------k-2F4A11BX0001-----------------------
INT 2F - DBLSPACE.BIN - "GetDriveMapping" - GET DRIVE MAPPING
AX = 4A11h
BX = 0001h
DL = drive number (0=A:)
Return: AX = status (see also #2490)
0000h successful
if DL was compressed drive,
BL = host drive (bit 7 set if drive is compressed)
else if DL was host drive,
BL = compressed drive
else
BL = specified drive (if available for DoubleSpace)
BH = DoubleSpace sequence number
other error code (0101h) (see #2490)
apparently never returned for the MS-DOS 6.2 DoubleSpace
Note: the compressed volume file for the specified compressed drive is
host:\DBLSPACE.sequence
SeeAlso: AX=4A11h/BX=0000h
(Table 2490)
Values for DBLSPACE function status:
0000h successful
0100h bad function
0101h invalid drive
0102h not a compressed drive
0103h drive already swapped
0104h drive not swapped
SeeAlso: #2492
--------k-2F4A11BX0002-----------------------
INT 2F - DBLSPACE.BIN - "Swap Drive" - SWAP DRIVE LETTERS OF CVF AND HOST DRIVE
AX = 4A11h
BX = 0002h
DL = drive number (0=A:) of compressed drive to swap with its host
Return: AX = status (0000h,0101h,0102h,0103h) (see #2490)
Note: this function is intended for use by DBLSPACE.EXE only
SeeAlso: AX=4A11h/BX=0000h
--------k-2F4A11BX0003-----------------------
INT 2F - DBLSPACE.BIN - "DSGetEntryPoints" - GET DEVICE DRIVER ENTRY POINTS
AX = 4A11h
BX = 0003h
CL = drive number (0=A:) of compressed drive
Return: CL = FFh on error (not compressed drive)
CL <> FFh driver unit number of host drive
ES:SI -> device driver's strategy routine
ES:DI -> device driver's interrupt routine
BX destroyed
Note: in conjunction with subfunction 0004h, this call allows disk caches
like SMARTDRV to apply a device driver wrapper to DoubleSpaced
drives just like SMARTDRV applies to regular block devices
SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0004h
--------k-2F4A11BX0004-----------------------
INT 2F - DBLSPACE.BIN - "DSSetEntryPoints" - SET DEVICE DRIVER ENTRY POINTS
AX = 4A11h
BX = 0004h
CL = drive number (0=A:) of compressed drive
DL = unit number for new driver entry points
DH = 00h
ES:SI -> device driver strategy routine to call for drive
ES:DI -> device driver interrupt routine to call for drive
Return: CL = FFh on error (not a compressed drive)
BX destroyed
Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
disk-compression software bundled with MS-DOS 6.0
Note: in conjunction with subfunction 0003h, this call allows disk caches
like SMARTDRV to apply a device driver wrapper to DoubleSpaced
drives just like SMARTDRV applies to regular block devices
SeeAlso: AX=4A10h/BX=0007h,AX=4A11h/BX=0000h,AX=4A11h/BX=0003h
--------k-2F4A11BX0005-----------------------
INT 2F - DBLSPACE.BIN - "ActivateDrive" - MOUNT COMPRESSED DRIVE
AX = 4A11h
BX = 0005h
DL = drive number (0=A:) to assign to new drive
ES:SI -> activation record (see #2491)
Return: status returned in activation record (see #2492)
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0006h
Format of DBLSPACE activation record:
Offset Size Description (Table 2491)
00h 2 BYTEs signature "MD" (4Dh 44h)
02h BYTE 4Dh ('M') mount command
03h BYTE error code (set to FFh before calling) (see #2492)
04h BYTE host drive number (0=A:)
05h ??? DISK_UNIT structure (not documented)
(Table 2492)
Values for DBLSPACE Mount error code:
00h successful
01h drive letter not available for DoubleSpace
02h drive letter already in use
03h no more disk units (increase MaxRemovableDrives in .INI)
09h CVF too fragmented
SeeAlso: #2491,#2490
--------k-2F4A11BX0006-----------------------
INT 2F - DBLSPACE.BIN - "DeactivateDrive" - UNMOUNT COMPRESSED DRIVE
AX = 4A11h
BX = 0006h
DL = drive number (0=A:) to unmount
Return: AX = status (0000h,0102h) (see #2490)
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0005h
--------k-2F4A11BX0007-----------------------
INT 2F - DBLSPACE.BIN - "GetDriveSpace" - GET SPACE AVAIL ON COMPRESSED DRIVE
AX = 4A11h
BX = 0007h
DL = compressed drive number (0=A:)
Return: AX = status (0000h,0102h) (see also #2490)
0000h successful
DS:SI -> free space record (see #2493)
Program: DBLSPACE.BIN is the resident driver for DoubleSpace, the
disk-compression software bundled with MS-DOS 6.0
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
Format of DBLSPACE free space record:
Offset Size Description (Table 2493)
00h DWORD total number of sectors in drive's sector heap
04h DWORD number of free sectors in drive's sector heap
--------k-2F4A11BX0008-----------------------
INT 2F - DBLSPACE.BIN - "GetFileFragmentSpace" - GET SIZE OF FRAGMENT HEAP
AX = 4A11h
BX = 0008h
DL = compressed drive number (0=A:)
Return: AX = status (0000h,0102h) (see also #2490)
0000h successful
BX = maximum entries in File Fragment heap
CX = available entries in File Fragment heap
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0007h,AX=4A11h/BX=0009h
--------k-2F4A11BX0009-----------------------
INT 2F - DBLSPACE.BIN - "GetExtraInfo" - DETERMINE NUMBER OF DISK_UNIT STRUCTS
AX = 4A11h
BX = 0009h
DL = compressed drive number (0=A:)
Return: AX = status (see also #2490)
0000h successful
CL = number of DISK_UNIT structures allocated
(see AX=4A11h/BX=0005h)
CH = DoubleGuard enabled-checks bitflags in bits 6-0 (DOS 6.2)
Note: the DoubleGuard checks are enabled or disabled as a block by the
DoubleGuard= line in DBLSPACE.INI; they may be individually set with
the CheckSum= line.
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=0008h
--------k-2F4A11BX000A-----------------------
INT 2F - DBLSPACE.BIN v6.2 - SET AUTOMOUNT DRIVES
AX = 4A11h
BX = 000Ah
CX:DX = bitmask of drives on which to enable AutoMount
(DX bit 0 = A:, CX bit 0 = P:, etc.)
Return: AX = 0000h if supported
CX:DX = old mask or 0000h:0000h on error
BX destroyed
SeeAlso: AX=4A11h/BX=000Bh
--------k-2F4A11BX000B-----------------------
INT 2F - DBLSPACE.BIN v6.2 - GET AUTOMOUNT DRIVES
AX = 4A11h
BX = 000Bh
Return: AX = 0000h if supported
CX:DX = mask of drives with AutoMount enabled
0000h:0000h on error
BX destroyed
SeeAlso: AX=4A11h/BX=000Ah
--------k-2F4A11BXFFFE-----------------------
INT 2F U - DBLSPACE.BIN - RELOCATE
AX = 4A11h
BX = FFFEh
ES = segment to which to relocate DBLSPACE.BIN
Return: ???
Notes: called by DBLSPACE.SYS to relocate DBLSPACE.BIN to its final position
in memory
this function also unhooks and discards the code providing this
function and AX=4A11h/BX=FFFFh
this function is also supported by the version of SuperStor bundled
with IBM DOS 6.x and "preloading" versions of Stacker
SeeAlso: AX=4A11h/BX=FFFFh
--------k-2F4A11BXFFFF-----------------------
INT 2F U - DBLSPACE.BIN - GET RELOCATION SIZE
AX = 4A11h
BX = FFFFh
Return: AX = number of paragraphs needed by DBLSPACE.BIN
Note: used by DBLSPACE.SYS to relocate the DBLSPACE driver to its final
position in memory
this function is also supported by the version of SuperStor bundled
with IBM DOS 6.x and "preloading" versions of Stacker
SeeAlso: AX=4A11h/BX=0000h,AX=4A11h/BX=FFFEh
--------k-2F4A12CX4D52-----------------------
INT 2F - Microsoft Realtime Compression Interface (MRCI) - RAM-BASED SERVER
AX = 4A12h
CX = 4D52h ("MR")
DX = 4349h ("CI")
Return: CX = 4943h ("IC") if installed
DX = 524Dh ("RM") if installed
ES:DI -> MRCINFO structure (see #0649 at INT 1A/AX=B001h)
Note: this call is functionally identical to INT 1A/AX=B001h, but should be
called first, as the latter call is used for the first, ROM-based
MRCI server, while this call is used for RAM-based servers which
may be partially or entirely replacing a prior server
SeeAlso: AX=4A12h/CX=5354h,INT 1A/AX=B001h
--------k-2F4A12CX5354-----------------------
INT 2F - Stacker 4 LZS Compression Interface (LZSAPI)
AX = 4A12h
CX = 5354h ("ST")
DX = 4143h ("AC")
Return: AX = 4F4Bh ("OK") if installed
CX = 7374h ("st") if installed
DX = 6163h ("ac") if installed
ES:DI -> entry point in LZSAPI server (usually, driver
STACKER.COM) containing far address of an actual
LZSINFO structure (see #2494)
SeeAlso: AX=4A12h/CX=4D52h,INT 25/AX=CDCDh
Format of LZSINFO structure:
Offset Size Description (Table 2494)
00h 6 BYTEs signature "LZSAPI"
06h WORD server version (200 (0C8h) for Stacker 4 and Stacker Anywhere)
08h 4 BYTEs vendor signature
"STAC" = Stac Electronics, Inc.
0Ch 6 BYTEs ???
12h WORD bit flags: server status/capabilities (see #2495)
14h DWORD -> Stacker 3.X-compatible compression procedure
18h DWORD -> Stacker 3.X-compatible decompression procedure
1Ch 4 BYTEs reserved (always set to 0)
20h DWORD -> incremental Stacker 3.x-compatible compression procedure
(see #2496)
24h 4 BYTEs ???
28h DWORD -> incremental Stacker 3.x-compatible decompression procedure
(see #2497)
2Ch 4 BYTES ???
30h DWORD -> new (Stacker 4) compression procedure
34h 4 BYTEs ???
38h DWORD -> new (Stacker 4) decompression procedure
Notes: Stacker 4 usally keeps two different data-compression algorithms in
memory (preferably in XMA):
1) new (Stacker 4) data compression algorithm (4K LZ77 with hashing
and static Huffman encoding), and
2) old (Stacker 3.x-compatible) one (2K LZ77 with hashing), which
is used to work with STACVOL files created under older
versions of Stacker.
Bitfields for LZSAPI capabilities:
Bit(s) Description (Table 2495)
0 ???
1 busy/error flag
2-10 ???
11 maximum compressor/decompressor presented
(Table 2496)
Call Stacker 3.x-style non-incremental functions with:
STACK: DWORD return address for compress/decompress procedure
WORD compression algorithm parameters (see #2498)
WORD size of destination buffer (in bytes)
DWORD address of destination buffer
WORD size of source buffer (in bytes)
DWORD address of source buffer
Return: (compression/decompression procedure)
AX = size of resulting data in destination buffer
0000h if error (either destination buffer too small or error in
compressed data)
(Table 2497)
Call Stacker 4-style incremental procedures with:
STACK: DWORD return address for compr./decompr. procedure
DWORD address of LZSSWAP structure (see #2499)
if 0000:0000, procedure uses non-incremental technique
WORD compression algorithm parameters (see #2498)
WORD size of destination buffer (in bytes)
DWORD address of destination buffer
WORD size of source buffer (in bytes)
DWORD address of source buffer
(Table 2498)
Values for Compression algorithm parameters:
Value Compression level (/P=xx parameter)
07F9h 1
0621h 2
0625h 3
0665h 4
0669h 5
06E9h 6
06EDh 7
07D1h 8
07D9h 9
Format of LZSSWAP structure:
Offset Size Description (Table 2499)
00h 2 BYTEs signature "CS"
02h 6 BYTEs reserved
08h DWORD address of destination buffer swapping procedure
0Ch DWORD address of stack swapping procedure
--------k-2F4A13-----------------------------
INT 2F U - DBLSPACE.BIN - GET ??? ENTRY POINTS
AX = 4A13h
Return: AX = 134Ah if supported
ES:BX -> entry point record (see #2500)
SeeAlso: AX=4A11h/BX=0000h
Format of DBLSPACE entry point record:
Offset Size Description (Table 2500)
00h DWORD pointer to FAR function for ???
04h 5 BYTEs FAR JUMP instruction to ???
----------2F4A15BX0000-----------------------
INT 2F - MS EMM386.EXE v4.46+ - INSTALL I/O VIRTUALIZATION HANDLER
AX = 4A15h
BX = 0000h (function number)
DX = starting I/O address
EDX high word = ending I/O address
CX = number of ports to trap
DS:SI -> I/O dispatch table (see #2501)
DI = size of client's code and data
Return: CF clear if successful
CF set on error
Notes: this interface is only available in virtual-86 mode; the I/O handlers
will be called in protected mode
only ports 0100h-FFFFh may be trapped; EMM386 reserved ports 0000h-
00FFh
Format of EMM386 I/O dispatch table [array]:
Offset Size Description (Table 2501)
00h WORD I/O port offset (added to DX to get actual port number)
02h WORD offset of I/O handler for port (see #2502)
(Table 2502)
Values EMM386 I/O dispatch function is called with:
CX = Ring0 code selector for I/O handler's segment
DS = Ring0 data selector for I/O handler's segment (alias of CS)
EDX = faulting I/O address
ECX = direction (00000008h for byte output, 00000000h for byte input)
EAX = data in/out
Return: (via FAR RET)
CF clear if I/O access successfully virtualized
CF set if access not virtualized (default handler will be called to
perform the I/O)
SeeAlso: #2501
--------D-2F4A33-----------------------------
INT 2F - Windows95 - CHECK MS-DOS VERSION 7
AX = 4A33h
Return: AX = 0000h for MS-DOS 7.00+
(officially) BX,DX,SI,DS may be destroyed
(undoc) DS:DX -> ASCIZ primary shell executable name
(undoc) DS:SI -> CONFIG.SYS SHELL= command line (counted string)
(undoc) BH = ??? (0000h)
(undoc) BL = ??? (0000h)
AX nonzero (usually 4A33h) if MS-DOS 6- or other DOS
SeeAlso: AX=1611h,INT 21/AH=30h
--------N-2F4B-------------------------------
INT 2F - LAN Manager 2.0 DOS Enh NETWKSTA.EXE - NETWORK WORKSTATION REDIRECTOR
AH = 4Bh
???
Return: ???
Note: LAN Manager enhanced mode adds features beyond the standard redirector
file/printer services
SeeAlso: AX=118Ah,AX=4100h,AH=42h
--------T-2F4B01-----------------------------
INT 2F C - DOS 5+ TASK SWITCHER - BUILD CALLOUT CHAIN
AX = 4B01h
CX:DX -> task switcher entry point (see #2505)
ES:BX = 0000h:0000h
Return: ES:BX -> callback info structure (see #2503) or 0000h:0000h
Notes: called by the task switcher
this function is hooked by clients which require notification of task
switcher activities; the call must first be passed on to the prior
handler with registers unchanged using a simulated interrupt. On
return, the client must build a callback info structure and store
the returned ES:BX in the "next" field, then return the address of
its own callback info structure.
a client program must add itself to the notification chain if it
provides services to other programs; before terminating, it must
remove itself from the chain by calling the task switcher's entry
point with AX=0005h (see #2505)
the task switcher entry point should not be saved, as it is subject to
change and will be provided on any notification call
the Windows 3.1 Standard Mode supports this API
SeeAlso: AX=160Bh,AX=4B02h
Format of task switcher callback info structure:
Offset Size Description (Table 2503)
00h DWORD pointer to next callback info structure
04h DWORD pointer to notification function (see #2504)
08h DWORD reserved
0Ch DWORD address of zero-terminated list of API info structures
(see #2507)
(Table 2504)
Values task switcher notification function is called with:
AX = function
0000h switcher initialization
Return: AX = status
0000h if OK to load
nonzero to abort task switcher
0001h query suspend
BX = session ID
Return: AX = status
0000h if OK to switch session
0001h if not
0002h suspend session
BX = session ID
interrupts disabled
Return: AX = 0000h if OK to switch session
= 0001h if not
0003h activate session
BX = session ID
CX = session status flags
bit 0: set if first activation of session
bits 1-15: reserved (0)
interrupts disabled
Return: AX = 0000h
0004h session active
BX = session ID
CX = session status flags
bit 0: set if first activation of session
bits 1-15: reserved (0)
Return: AX = 0000h
0005h create session
BX = session ID
Return: AX = 0000h if OK to create session
= 0001h if not
0006h destroy session
BX = session ID
Return: AX = 0000h
0007h switcher termination
BX = flags
bit 0: set if calling switcher is only switcher loaded
bits 1-15: reserved (0)
Return: AX = 0000h
ES:DI -> task switcher entry point (see #2505)
Notes: function 0000h is generally called by the program which controls or
invokes the task switcher, rather than by the task switcher itself;
the entry point supplied to this function is not necessarily the
entry point to the task switcher itself, and may be 0000h:0000h. If
any client indicates that loading is not possible, all clients will
be called with function 0007h; thus it is possible for a client to
receive a termination notice without a corresponding initialization
notice.
except for functions 0002h and 0003h, the notification handler is
called with interrupts enabled and may make any INT 21h function
call; interrupts must not be enabled in functions 0002h and 0003h
function 0007h may be called with ES:DI = 0000h:0000h if the entry
point is no longer valid
--------T-2F4B02BX0000-----------------------
INT 2F - DOS 5+ TASK SWITCHER - INSTALLATION CHECK
AX = 4B02h
BX = 0000h
ES:DI = 0000h:0000h
Return: ES:DI = 0000h:0000h if task switcher not loaded
ES:DI -> task switcher entry point (see #2505) if loaded
AX = 0000h
Notes: the returned entry point is that for the most-recently loaded task
switcher; the entry points for prior task switchers may be determined
with the "get version" call (see #2505)
this function is supported by PC Tools v8+ CPTASK
SeeAlso: AX=4A05h,AX=4B03h
(Table 2505)
Call task switcher entry point with:
AX = 0000h get version
Return: CF clear if successful
AX = 0000h
ES:BX -> task switcher version struct (see #2506)
CF set if unsupported function
AX = 0001h test memory region
ES:DI -> first byte to be tested
CX = size of region to test
Return: CF clear if successful
AX = memory type of tested region
0000h global
0001h global and local
0002h local (replaced on session switch)
CF set if unsupported function
AX = 0002h suspend switcher
ES:DI -> new task switcher's entry point
Return: CF clear if successful
AX = state
0000h switcher has been suspended
0001h switcher not suspended, new switcher must
abort
0002h switcher not suspended, but new switcher
may run anyway
CF set if unsupported function
AX = 0003h resume switcher
ES:DI -> new task switcher's entry point
Return: CF clear if successful
AX = 0000h
CF set if unsupported function
AX = 0004h hook notification chain
ES:DI -> callback info structure to be added to chain
(see #2503)
Return: CF clear if successful
AX = 0000h
CF set if unsupported function
AX = 0005h unhook notification chain
ES:DI -> callback info structure to be removed from chain
(see #2503)
Return: CF clear if successful
AX = 0000h
CF set if unsupported function
AX = 0006h query API support
BX = asynchronous API identifier
Return: CF clear if successful
AX = 0000h
ES:BX -> API info structure (see #2507) for the
client which provides the highest
level of API support
CF set if unsupported function
Format of task switcher version structure:
Offset Size Description (Table 2506)
00h WORD major version of supported protocol (current protocol is 1.0)
02h WORD minor version of supported protocol
04h WORD major version of task switcher
06h WORD minor version of task switcher
08h WORD task switcher ID (see AX=4B03h)
0Ah WORD operation flags
bit 0: set if task switcher disabled
bits 1-15: reserved (0)
0Ch DWORD pointer to ASCIZ task switcher name
("MS-DOS Shell Task Switcher" for DOSSHELL task switcher)
10h DWORD pointer to previous task switcher's entry point or 0000h:0000h
Format of API info structure:
Offset Size Description (Table 2507)
00h WORD size of structure in bytes (000Ah)
02h WORD API identifier
0001h NetBIOS
0002h 802.2
0003h TCP/IP
0004h LAN Manager named pipes
0005h Novell NetWare IPX
04h WORD major version \ of highest version of API for which the support
06h WORD minor version / level specified in the next field is provided
08h WORD support level
0001h minimal support
0002h API-level support
0003h switcher compatibility
0004h seamless compatibility
--------T-2F4B03-----------------------------
INT 2F - DOS 5+ TASK SWITCHER - ALLOCATE SWITCHER ID
AX = 4B03h
ES:DI -> task switcher entry point (see #2505)
Return: AX = 0000h
BX = switcher ID (0001h-000Fh), or 0000h if no more available
Notes: if a task switcher has determined that it is the first to be loaded, it
must allocate an identifier for itself and provide this function to
all subsequent task switchers; if it is not the first to be loaded,
it must call this function to allocate an ID. The switcher ID is
used as the high four bits of all session identifiers to ensure
unique session IDs.
if no more switcher IDs are available, the new task switcher making the
call must terminate or disable itself
the task switcher providing the identifiers may call the new task
switcher's entry point as needed
this call is available from within DOSSHELL even if the task switcher
is not installed
this function is supported by PC Tools v8+ CPTASK, but appears to
always return an ID of 0000h
SeeAlso: AX=4B02h,AX=4B04h
--------T-2F4B04-----------------------------
INT 2F - DOS 5+ TASK SWITCHER - FREE SWITCHER ID
AX = 4B04h
BX = switcher ID
ES:DI -> task switcher entry point (see #2505)
Return: AX = 0000h
BX = status
0000h successful
other error (invalid ID or ID not allocated)
Notes: called by a task switcher when it exits, unless it was the first loaded
and is providing the support for AX=4B03h and AX=4B04h
the task switcher providing the identifiers may call the terminating
task switcher's entry point as needed
this call is available from within DOSSHELL even if the task switcher
is not installed
this call is supported by PC Tools v8+ CPTASK, but appears to return
sucessfully no matter which ID is given
SeeAlso: AX=4B02h,AX=4B03h
--------T-2F4B05-----------------------------
INT 2F C - DOS 5+ TASK SWITCHER - IDENTIFY INSTANCE DATA
AX = 4B05h
ES:BX = 0000h:0000h
CX:DX -> task switcher entry point (see #2505)
Return: ES:BX -> startup info structure (see #2508) or 0000h:0000h
Notes: called by task switcher
clients with instance data should hook this call, pass it through to
the previous handler with unchanged registers using a simulated
interrupt. On return, the client should create a startup info
structure (see #2508), store the returned ES:BX in the "next"
field, and return the address of the created structure in ES:BX
all MS-DOS function calls are available from within this call
SeeAlso: AX=1605h,AX=160Bh,AX=4B02h
Format of task switcher startup info structure:
Offset Size Description (Table 2508)
00h 2 BYTEs major, minor version of info structure (03h,00h)
02h DWORD pointer to next startup info structure or 0000h:0000h
06h DWORD 0000h:0000h (ignored)
0Ah DWORD ignored
0Eh DWORD pointer to instance data records (see #2509)
Format of one instance data record in array:
Offset Size Description (Table 2509)
00h DWORD address of instance data (end of array if 0000h:0000h)
04h WORD size of instance data
--------W-2F4B06-----------------------------
INT 2F - MS Windows - WIN.COM - GET ??? POINTER TO WIN.COM
AX = 4B06h
Return: AX = 0000h
ES:BX -> ??? function in WIN.COM
Note: the entry point is called with
AX = 0001h or 0003h
BX = ???
SeeAlso: AX=4B80h
--------W-2F4B20-----------------------------
INT 2F - MS Windows 3+ - WIN.COM - SET PROGRAM TO EXECUTE ON EXIT
AX = 4B20h
Return: AX = 0000h if successful
DX:CX -> 256-byte buffer for pathname and commandline (see #2510)
Notes: when the Windows function ExitWindows is called with an exit code of
44h, WIN.COM executes the program specified in the returned buffer
and then restarts Windows
the returned address is a real-mode segment:offset value
SeeAlso: AX=4B21h
Format of WIN.COM buffer:
Offset Size Description (Table 2510)
00h 128 BYTEs commandline for program (count byte, command tail, 0Dh)
80h 128 BYTEs ASCIZ pathname of program to execute
Note: the order above is for a Windows95 DOS box; it may be reversed under
Windows 3.x
--------W-2F4B21-----------------------------
INT 2F - Windows95 - WIN.COM - GET NESTING LEVEL
AX = 4B21h
Return: AH = 00h if WIN.COM already active
AL = number of instances of WIN.COM in memory
SeeAlso: AX=4B20h
--------K-2F4B52-----------------------------
INT 2F - KeyRus v7.3 - API
AX = 4B52h ('KR')
BL = function number
00h installation check
Return: AL = 82h if installed
BH = major version number
BL = minor version number
ES destroyed
01h get driver status
Return: AL??? = current status (see #2511)
02h set driver state
AL = new driver state (see #2511)
03h blank screen (if blanking enabled when TSR was loaded)
04h unblank screen
4Ch switch to English keyboard mode
90h switch to Russian keyboard mode
Return:
Bitfields for KeyRus driver status:
Bit(s) Description (Table 2511)
1-0 language mode
00 Latin
01 Russian
10 Alternative
11 unused
2 allow character loading (if disabled, use ROM fonts)
3 English keyboard support
7-4 used internally (read-only)
--------W-2F4B80-----------------------------
INT 2F - MS Windows - WSWAP.EXE - RESET INTERNAL VARIABLES
AX = 4B80h
Return: nothing
Note: called by WINOLDAP.MOD
SeeAlso: AX=4B06h
--------p-2F4C-------------------------------
INT 2F U - Advanced Power Management
AH = 4Ch
AL = function
00h version check
01h suspend system requested
FFh suspend/resume battery notification
???
Return: ???
----------2F4D-------------------------------
INT 2F U - ???
AH = 4Dh
???
Return: ???
Note: reportedly called by Kana Kanji Converter and MSKK
--------N-2F4E53BL00-------------------------
INT 2F - SilverNET v2+ - INSTALLATION CHECK
AX = 4E53h ("NS")
BL = 00h (function "installation check")
BH = module ID (see #2512)
Return: AX = 0000h if specified module installed
BX = 4E53h if installed
Program: SilverNET is an SMB-compatible peer-to-peer NOS for DOS or
Windows systems, by Net-Source, Inc. of Santa Clara, CA.
SeeAlso: AX=4E53h/BL=01h,AX=4E53h/BL=02h,AX=B800h,AX=B809h
(Table 2512)
Values for SilverNET module ID:
01h SilverCACHE
02h Workstation
03h NetBIOS
04h Peer
20h NS Share
80h NetWare help TSR
--------N-2F4E53BL01-------------------------
INT 2F - SilverNET - GET RUNTIME PARAMETER
AX = 4E53h ("NS")
BL = 01h (function "get runtime parameter")
BH = module ID (see #2512)
CX = parameter index (see #2513,#2515,#2516)
Return: AX = WORD value at specified index (see #2514)
Desc: retrieve a word of data from the specified SilverNET module
(Table 2513)
Values for SilverNET Peer parameter index (* = read-only):
00h * maximum outstanding SMB buffers
02h * maximum logged-in nodes
04h * number of shareable resources
06h * number of characters to print per time slice
08h * number of printers that can be shared
0Ah * number of nodes logged in
0Ch * number of files to allow opened
0Eh how fast to despool (/PSLICE)
10h audit flag
24h * far pointer to resource table (each resource is 96 bytes in length)
32h * far pointer to SFT (internal if SilverNET files > CONFIG.SYS files,
else DOS SFT)
36h spool flags (see #2514)
SeeAlso: #2515
Bitfields for spool flags:
Bit(s) Description (Table 2514)
0 LPT1 needs despooling
1 LPT2 needs despooling
2 LPT2 needs despooling
4 COM1 needs despooling
5 COM2 needs despooling
6 COM3 needs despooling
SeeAlso: #2513
(Table 2515)
Values for NS Share parameter index (* = read-only):
00h version number (high byte = minor, low byte = major)
10h * segment of first lock record (other records in consecutive paragraphs)
(if PSP field = 0000h, lock record is free)
12h * maximum possible number of lock records
14h * starting segment of sharing buffer
(NS Share's sharing records are identical to DOS SHARE except that
fields which are normally offsets into SHARE are segment numbers)
18h * size of sharing buffer in paragraphs
1Ah * total free paragraphs in sharing buffer
1Ch * current number of shared files
1Eh * current number of locked records
SeeAlso: #2513,#2516
(Table 2516)
Values for Workstation parameter index (* = read-only):
00h version number (high byte = minor, low byte = major)
02h * size of each network buffer for file operations
04h * number of redirector file buffers
06h * size of each print cache buffer
08h * number of network LPT printers
0Ch flush time in ticks (idle time on network printer before flushing)
0Eh (16 WORDs) last active time for each printer
2Eh * stub segment if program split into two parts
60h receive name number for datagram listens
62h * 18-byte machine name
74h * LASTDRIVE (01h = A:, etc.)
7Ch row number of message box on screen
7Eh message time in clock ticks
82h * number of network adapters in use
84h station ID broadcast flag (never set on redirectors)
96h * NetBIOS names left
98h * NCBs left
9Ah * sessions left
A2h * total number of network printers (LPT+COM)
A4h * number of serial network printers
A8h * segment containing file cache buffers
AAh * segment containing print cache buffers
ACh * bytes remaining free in HMA before program loaded
AEh * start of free memory in HMA
B2h * flag: using HMA
SeeAlso: #2515
--------N-2F4E53BL02-------------------------
INT 2F - SilverNET - SET RUNTIME PARAMETERS
AX = 4E53h ("NS")
BL = 02h (function "set runtime parameters")
BH = module ID (see #2512)
CX = parameter index (see #2515,#2516)
DX = new value for specified parameter
Desc: set a WORD value in the specified SilverNET module
Note: not all indexed parameters are writable; modifying a read-only
parameter can result in system crashes
SeeAlso: AX=4E53h/BL=00h,AX=4E53h/BL=01h
--------N-2F5100-----------------------------
INT 2F U - ODIHLP.EXE - INSTALLATION CHECK
AX = 5100h
Return: AL = FFh if installed
BX = 0000h
DX:SI -> signature string "ODI$HLP$"
Program: ODIHLP is a real-mode helper allowing the Windows for Workgroups 3.11
protected-mode NDIS3 protocol to work with real-mode ODI drivers
and LSL.COM
Note: the returned signature string might be the first field of a structure
SeeAlso: AX=C000h"LSL.COM"
--------k-2F5200-----------------------------
INT 2F - JAM.SYS v1.10+ - "GetVersion" - INSTALLATION CHECK
AX = 5200h
Return: AH = 80h (successful) if installed
BX = internal JAM.SYS version number
CX = size of JAMINFO structure (see #2517,#2518)
DX = JAM.SYS segment address
Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
Utilities by George A. Reznik and friends (JAM Software).
SeeAlso: AX=5201h
Format of JAMINFO v1.10 structure:
Offset Size Description (Table 2517)
00h 25 BYTEs extended BIOS parameter block (BPB)
19h 11 BYTEs ???
25h DWORD total number of sectors in JAM archive file
(size of compressed data area)
29h BYTE flags (see #2519)
2Ah 127 BYTEs full JAM archive file name
A9h WORD the number of fragments in archive file
ABh 96 BYTEs archive file fragmentation list -
array of 16 FRAGMENT structures (see #2520)
10Bh DWORD address of the host-drive DPB (Drive Parameter Block)
10Fh DWORD number of free sectors in JAM archive file
113h WORD device status word (see #2521)
SeeAlso: #2518
Format of JAMINFO v1.20 structure:
Offset Size Description (Table 2518)
00h 25 BYTEs extended BIOS parameter block (BPB)
19h BYTE physical driver number
1Ah BYTE reserved
1Bh BYTE extended boot record signature
1Ch DWORD volume serial number
20h 11 BYTEs volume label
2Bh 8 BYTEs file system ID
33h DWORD total number of sectors in JAM archive file
(size of compressed data area)
37h BYTE flags (see #2519)
38h 128 BYTEs full JAM archive file name
B8h WORD the number of fragments in archive file
BAh 96 BYTEs archive file fragmentation list -
array of 16 FRAGMENT structures (see #2520)
11Ah DWORD address of the host-drive DPB (Drive Parameter Block)
11Eh DWORD number of free sectors in JAM archive file
122h WORD device status word (see #2521)
Note: the first 33h bytes are copied from the archive file's boot sector
SeeAlso: #2517
Bitfields for JAMINFO flags:
Bit(s) Description (Table 2519)
2-0 reserved
3 (v1.20+)
4 enable direct write requests (Int 26h, non-DOS requests, etc.)
5 read-only mode
6 no write-behind caching
7 full undelete-compatible allocation strategy
SeeAlso: #2517,#2518
Format of JAM FRAGMENT structure:
Offset Size Description (Table 2520)
00h WORD starting sector (low word)
02h BYTE starting sector (high byte)
03h WORD size of fragment (low word)
05h BYTE size of fragment (high byte)
SeeAlso: #2517,#2518
(Table 2521)
Values for JAM.SYS status (high byte):
00h successful
01h drive is not a JAM drive
02h drive is already attached
03h archive file cluster size value is larger than driver's one
04h drive is not attached
05h drive is locked
06h drive is not locked
07h bad physical-level request
08h host drive reading/writing error
09h bad entries in JAM descriptor table
0Ah compressed data integrity error
0Bh archive file overflow
0Ch bad DOS request
0Dh incorrect parameters in JAMINFO structure
Note: the low byte of the status is the DOS error code for the Host drive
SeeAlso: #2285 at INT 2F/AX=0802h
--------k-2F5201-----------------------------
INT 2F - JAM.SYS v1.10+ - "GetInfo" - GET COMPRESSED DRIVE INFORMATION
AX = 5201h
DL = compressed drive number (0-default, 1-A:, etc.)
DS:BX -> buffer for JAMINFO structure (see #2517,#2518)
Return: AH = status (00h,01h) (see #2521)
SeeAlso: AX=5200h
--------k-2F5202-----------------------------
INT 2F - JAM.SYS v1.10+ - "Attach" - MOUNT COMPRESSED DRIVE
AX = 5202h
DL = drive number (0-default, 1-A:, etc.) to attach to the JAM
archive file
DS:BX -> pointer to JAMINFO structure (see #2517,#2518), which
contains parameters of the JAM file to mount, and pointer
to the host drive DPB (i.e. DPB of the drive on which the
JAM file is located)
Return: AH = status (00h,02h,03h,08h,09h,0Dh) (see also #2521)
03h archive file cluster size value is larger than driver's - not
mounted
09h bad entries in JAM descriptor table - file mounted read-only
AL = host drive error code (see #2285 at INT 2F/AX=0802h)
SeeAlso: AX=5203h
--------k-2F5203-----------------------------
INT 2F - JAM.SYS v1.10+ - "Detach" - UNMOUNT COMPRESSED DRIVE
AX = 5203h
DL = drive number (0-default, 1-A:, etc.) to detach
Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #2521)
AL = host drive error code (see #2285 at INT 2F/AX=0802h)
SeeAlso: AX=5202h
--------k-2F5204-----------------------------
INT 2F - JAM.SYS v1.10+ - "Lock" - LOCK COMPRESSED DRIVE
AX = 5204h
DL = drive number (0-default, 1-A:, etc.) to lock
Return: AH = status (00h,01h,04h,05h,08h,09h,0Bh,0Dh) (see #2521)
AL = host drive error code (see #2285 at INT 2F/AX=0802h)
SeeAlso: AX=5205h, AX=5206h, AX=5207h
--------k-2F5205-----------------------------
INT 2F - JAM.SYS v1.10+ - "UnLock" - UNLOCK COMPRESSED DRIVE
AX = 5205h
DL = drive number (0-default, 1-A:, etc.) to unlock
Return: AH = status (00h,01h,04h,06h,08h,09h,0Dh) (see #2521)
AL = host drive error code (see #2285 at INT 2F/AX=0802h)
SeeAlso: AX=5204h, AX=5206h, AX=5207h
Note: Lock and UnLock functions were added to the JAM API to prevent
asynchronous physical-level access (see AX=5206h,AX=5207h) to
compressed data on JAM drives. In other words, two or more programs
which use JAM API (say, JMAX optimizer and JCHKDSK - disk checker)
cannot be run on the same JAM drive simultaneously.
--------k-2F5206-----------------------------
INT 2F - JAM.SYS v1.10+ - "Read" - PHYSICAL READ DATA FROM JAM ARCHIVE
AX = 5206h
DL = drive number (0-default, 1-A:, etc.)
DS:BX -> disk transfer packet (see #2522)
Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #2521)
AL = host drive error code (see #2285 at INT 2F/AX=0802h)
Program: JAM.SYS is a main component of the JAM Real-Time Data Compression
Utilities by George A. Reznik and friends (JAM Software).
SeeAlso: AX=5207h
Format of disk transfer packet:
Offset Size Description (Table 2522)
00h DWORD sector number
04h WORD number of sectors to read(write)
06h DWORD transfer address
--------k-2F5207-----------------------------
INT 2F - JAM.SYS v1.10+ - "Write" - PHYSICAL WRITE DATA TO JAM ARCHIVE
AX = 5207h
DL = drive number (0-default, 1-A:, etc.)
DS:BX -> disk transfer packet (see #2522)
Return: AH = status (00h,01h,04h,06h,07h,08h,0Dh) (see #2521)
AL = host drive error code (see #2285 at INT 2F/AX=0802h)
SeeAlso: AX=5206h
--------p-2F53-------------------------------
INT 2F U - POWER.EXE - APM event broadcasting???
AH = 53h
AL = event???
05h CPU idle
0Bh PM event broadcast API
Return: ???
Note: called by MS Windows 3.1 POWER.DRV; hooked by MS Mouse driver v8.20+
and PC-Cache v8.0
SeeAlso: AX=530Bh,AX=5400h,INT 33/AX=002Fh
--------p-2F530B-----------------------------
INT 2F U - ??? (MOUSEPWR.COM, others) - ???
AX = 530Bh
BX = subfunction
0003h ???
0004h ???
???
Return: ???
Note: it appears that subfunction 0003h reads or restores the current mouse
settings (the MS Mouse driver hooks AX=530Bh), and 0004h might be
the converse
--------p-2F5400-----------------------------
INT 2F U - POWER.EXE - INSTALLATION CHECK
AX = 5400h
Return: AX = POWER.EXE version (AH = major, AL = minor) if installed
BX = 504Dh ("PM")
CF clear
Note: called by MS Windows 3.1 POWER.DRV
SeeAlso: AH=53h,AX=5401h,AX=5402h,AX=5481h,AX=5482h
--------p-2F5401-----------------------------
INT 2F U - POWER.EXE - GET/SET POWER STATUS
AX = 5401h
BH = function
00h get status
Return: BL = current power management status (see #2523)
01h set status
BL = new power managment status (see #2523)
Return: AX = function status (see #2524)
Note: called by MS Windows 3.1 POWER.DRV
SeeAlso: AH=53h,AX=5400h,AX=5402h,AX=5403h
Bitfields for power management status:
Bit(s) Description (Table 2523)
0 POWER.EXE power management enabled
1 APM firmware power management enabled
2-7 reserved (0)
Notes: bit 1 is ignored if there is no APM firmware
bits 1-0: 00 = POWER OFF, 10 = POWER STD, 11 = POWER ADV
(Table 2524)
Values for POWER.EXE function status:
0000h successful
0002h "ERROR_PM_ALREADY_CONNECTED"
0003h "ERROR_PM_NOT_CONNECTED"
0087h "ERROR_PM_INVALID_PARAMETER"
--------p-2F5402-----------------------------
INT 2F U - POWER.EXE - GET/SET IDLE DETECTION STRATEGY
AX = 5402h
BH = subfunction
00h get
other set
BL = detection strategy (00h-0Fh or FFh)
Return: BX = current/new detection strategy
SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5481h,AX=5482h
--------p-2F5403-----------------------------
INT 2F U - POWER.EXE - GET/SET ADVANCED POWER MANAGEMENT SETTING
AX = 5403h
BX = new power management setting or 0000h to get current setting
Return: AX = status
0000h successful
BX = power management setting (see #2525)
other error code
SeeAlso: AX=5401h,AX=5480h
(Table 2525)
Values for power management setting:
0001h-0005h "min"
0006h "reg"
0007h-0008h "max"
--------t-2F5453-----------------------------
INT 2F - TesSeRact RAM-RESIDENT PROGRAM INTERFACE
AX = 5453h
BX = subfunction
00h installation check
CX = 0000h
DS:SI -> 8-char blank-padded name (see #2526)
Return: AX = FFFFh installed
CX = ID number of already-installed copy
AX = anything else, not installed
CX = ID number for TSR when installed
01h get user parameters
CX = TSR ID number
Return: AX = status
0000h successful
ES:BX -> user parameter block (see #2527)
nonzero failed
02h check if hotkey in use
CL = scan code of hot key (see #0005)
Return: AX = FFFFh hot key conflicts with another TSR
otherwise safe to use the hotkey
03h replace default critical error handler
CX = TSR ID number
DS:SI -> new routine for INT 24h
Return: AX = nonzero, unable to install new handler
04h get internal data area
CX = TSR ID number
Return: AX = status
0000h successful
ES:BX -> TSR's internal data area (see #2528)
nonzero, TSR not found
05h set multiple hot keys
CX = TSR ID number
DL = number of additional hot keys to allocate
DS:SI -> table of hot keys
BYTE hotkey scan code (see #0005)
BYTE hotkey shift state
BYTE flag value to pass to TSR (nonzero)
Return: AX = nonzero, unable to install hot keys
06h - 0Fh reserved
10h enable TSR
CX = TSR ID number
Return: AX = nonzero, unable to enable
11h disable TSR
CX = TSR ID number
Return: AX = nonzero, unable to disable
12h unload TSR
CX = TSR ID number
Return: AX = nonzero, invalid TSR number
Note: if any interrupts used by TSR have been grabbed by
another TSR, the TesSeRact routines will wait until
it is safe to remove the indicated TSR from memory
13h restart TSR
CX = TSR ID number of TSR which was unloaded but is still in
memory
Return: AX = nonzero, unable to restart TSR
14h get status word
CX = TSR ID number
Return: AX = FFFFh invalid ID number
= other, successful
BX = bit flags
15h set status word
CX = TSR ID number
DX = new bit flags
Return: AX = nonzero, unable to set status word
16h get INDOS state at popup
CX = TSR ID number
Return: AX = 0000h successful
BX = value of INDOS flag
17h - 1Fh reserved
20h call user procedure
CX = TSR ID number
ES:DI -> user-defined data
Return: AX = 0000h successful
21h stuff keystrokes into keyboard buffer
CX = TSR ID number
DL = speed
00h stuff keystrokes only when buffer is empty
01h stuff up to four keystrokes per clock tick
02h stuff up to 15 keystrokes per clock tick
DH = scan code flag
if zero, buffer contains alternating ASCII and scan codes
if nonzero, buffer contains only ASCII codes
SI = number of keystrokes
ES:DI -> buffer to stuff
Return: AX = 0000h success
F0F0h user aborted with ^C or ^Break
other unable to stuff keystrokes
22h (v1.10) trigger popup
CX = TSR ID number
Return: AX = 0000h success, TSR will either pop up or beep to
indicate that it is unable to pop up
nonzero invalid ID number
23h (v1.10) invoke TSR's background function
CX = TSR ID number
Return: AX = 0000h success
FFFFh not safe to call background function
nonzero invalid ID number
24h - 2Fh reserved
Notes: Borland's THELP.COM popup help system for Turbo Pascal and Turbo C
(versions 1.x and 2.x only) fully supports the TesSeRact API, as
do the SWAP?? programs by Innovative Data Concepts.
AVATAR.SYS supports functions 00h and 01h (only the first three fields
of the user parameter block) using the name "AVATAR "
SeeAlso: AX=CAFEh,INT 16/AX=55FFh,INT 2D"AMIS"
Index: installation check;TesSeRact TSR interface|uninstall;TesSeRact
(Table 2526)
Values for TesSeRact names:
"AVATAR " AVATAR.SYS
"QeditTSR" TSR version of SemWare's Qedit editor
"SCRNBLNK" Trusted Access screen blanker
Format of TesSeRact User Parameter Block:
Offset Size Description (Table 2527)
00h 8 BYTEs blank-padded TSR name
08h WORD TSR ID number
0Ah DWORD bitmap of supported functions
0Eh BYTE scan code of primary hotkey (see #0005)
00h = pop up when shift states match
FFh = no popup (if shift state also FFh)
0Fh BYTE shift state of primary hotkey
FFh = no popup (if scan code also FFh)
10h BYTE number of secondary hotkeys
11h DWORD pointer to extra hotkeys set by func 05h
15h WORD current TSR status flags
17h WORD PSP segment of TSR
19h DWORD DTA for TSR
1Dh WORD default DS for TSR
1Fh DWORD stack at popup
23h DWORD stack at background invocation
Index: hotkeys;TesSeRact TSR interface
Format of TSR internal data area:
Offset Size Description (Table 2528)
00h BYTE revision level of TesSeRact library
01h BYTE type of popup in effect
02h BYTE INT 08 occurred since last invocation
03h BYTE INT 13 occurred since last invocation
04h BYTE active interrupts
05h BYTE active soft interrupts
06h BYTE DOS major version
07h BYTE how long to wait before popping up
08h DWORD pointer to INDOS flag
0CH DWORD pointer to DOS critical error flag
10h WORD PSP segment of interrupted program
12h WORD PSP segment of prog interrupted by INT 28
14h DWORD DTA of interrupted program
18h DWORD DTA of program interrupted by INT 28
1Ch WORD SS of interrupted program
1Eh WORD SP of interrupted program
20h WORD SS of program interrupted by INT 28
22h WORD SP of program interrupted by INT 28
24h DWORD INT 24 of interrupted program
28h 3 WORDs DOS 3.0+ extended error info
2Eh BYTE old BREAK setting
2Fh BYTE old VERIFY setting
30h BYTE were running MS WORD 4.0 before popup
31h BYTE MS WORD 4.0 special popup flag
32h BYTE enhanced keyboard call in use
33h BYTE delay for MS WORD 4.0
11 times (for INTs 08h,09h,13h,16h,1Ch,21h,28h,2Fh,1Bh,23h, and 24h):
DWORD old interrupt vector
BYTE interrupt number
WORD offset in TesSeRact code segment of new interrupt handler
--------p-2F5480-----------------------------
INT 2F U - POWER.EXE - GET/SET ???
AX = 5480h
BX = direction
0000h get
other set
CX = size of buffer (at least 0010h)
DS:SI -> buffer
Return: AX = status
0000h successful
other error code
SeeAlso: AX=5400h,AX=5481h,AX=548Fh
--------p-2F5481-----------------------------
INT 2F U - POWER.EXE - GET STATISTICS
AX = 5481h
BX = which statistics
0000h idle detection
0001h APM statistics
CX = length of buffer in bytes
DS:SI -> buffer for statistics (see #2529,#2530)
Return: AX = status
0000h successful
0071h "ERROR_PM_BUFFER_TOO_SMALL"
0087h "ERROR_PM_INVALID_PARAMETER"
SeeAlso: AH=53h,AX=5400h,AX=5480h,AX=5402h,AX=5482h
Format of POWER.EXE idle detection statistics:
Offset Size Description (Table 2529)
00h DWORD "CPU_ON_TIME" total time CPU is active with POWER.EXE idle
detection enabled, in timer ticks
04h DWORD "CPU_IDLE_TIME" timer ticks during which CPU was idle
(divide by previous to get idle rate)
08h DWORD total idle calls
0Ch DWORD "TOTAL_APP_IDLE" total INT 2Fh idle calls
10h DWORD "TOTAL_DOS_YIELD" total INT 28h idle calls
14h DWORD "TOTAL_KEY_IDLE" total INT 16h idle calls
18h DWORD "TOTAL_DOS_IDLE" total INT 2Ah idle calls
Format of APM statistics:
Offset Size Description (Table 2530)
00h DWORD "RESUME_COUNT" total number of resumes since last APM_ENABLE
--------p-2F5482-----------------------------
INT 2F U - POWER.EXE - GET/SET APM POLLING FREQUENCY
AX = 5482h
BX = new polling frequency or 0000h to get current frequency
Return: AX = 0000h (successful)
BX = current frequency if BX=0000h on entry
SeeAlso: AH=53h,AX=5400h,AX=5401h,AX=5480h,AX=5481h,AX=548Fh
--------p-2F548F-----------------------------
INT 2F U - POWER.EXE - GET/SET ???
AX = 548Fh
BX = ??? or 0000h to get current ???
Return: AX = 0000h (successful)
BX = current ???
CX = ???
SeeAlso: AX=5400h,AX=5480h,AX=5482h
--------l-2F5500-----------------------------
INT 2F U - DOS 5+ - COMMAND.COM INTERFACE
AX = 5500h
Return: AX = 0000h if an instance of COMMAND.COM is already running
DS:SI -> entry point table
Notes: used to access the shareable portion of COMMAND.COM, which may have
been moved into the HMA; only the primary COMMAND.COM retains this
portion
procedures called from a dispatcher in COMMAND's resident portion;
most assume that the segment address of the resident portion is on
the stack and are thus not of general use
SeeAlso: AX=5501h
--------l-2F5501-----------------------------
INT 2F U - DOS 5+ - ROM COMMAND.COM INTERFACE
AX = 5501h
Return: ???
Note: used to determine whether the caller is the first instance of ROM
COMMAND.COM
SeeAlso: AX=5500h
--------R-2F5600-----------------------------
INT 2F - INTERLNK - INSTALLATION CHECK
AX = 5600h
DX = magic value FFFFh
BL = instance number (00h = any, 01h = first loaded, etc.)
Return: AL = FFh if installed
BL = instance number
CX = version number (CL = major, CH = minor)
DX = resident CS of driver, DX:0000h -> header (see #2531)
SeeAlso: AX=5601h,AX=5602h,INT 60/AX=0000h
Format of Interlnk device driver header:
Offset Size Description (Table 2531)
00h DWORD pointer to next driver, offset=FFFFh if last driver
04h WORD device attributes (see #1333,#1334)
06h WORD device strategy entry point
08h WORD device interrupt entry point
0Ah 8 BYTEs character device name "NUL2 "
12h 165 BYTEs ???
B7h 67 BYTEs fully qualified Interlnk filename
FAh 6 BYTEs ???
100h DWORD pointer back to Interlnk filename at offset B7h
104h 8 BYTEs ???
10Ch BYTE total number of redirected drives
10Dh BYTE first local drive number (0=A:)
10Eh BYTE printer redirection (0=no, 1=yes)
10Fh BYTE ???
110h 3 BYTEs LPT1...3 status (0FFh=invalid)
113h 26 BYTEs remote drive number (0=A:, 0FEh=unused) (refer to note below)
12Dh 26 BYTEs always 0FEh ???
147h 26 BYTEs always 0FFh ???
Note: to obtain the remote drive number, subtract the value at offset 10Ch
from the local drive number before indexing into the table at 113h
(example: if local drives F, G, H are remote drives C, F, E then
the first three bytes at offset 113h are 02h, 05h, 04h)
for each instance of Interlnk, an extra device driver is loaded, but
all have the same device name NUL2
SeeAlso: #1332 at INT 21/AH=52h
--------R-2F5601-----------------------------
INT 2F - INTERLNK - CHECK IF REDIRECTED DRIVE
AX = 5601h
DX = magic value FFFFh
BH = drive number (0=A:)
BL = instance number (00h=any, 01h=first loaded, etc.)
Return: (as for AL=00h if redirected drive)
SeeAlso: AX=5600h,AX=5601h
--------R-2F5602-----------------------------
INT 2F - INTERLNK - CHECK IF PORT IN USE
AX = 5602h
DX = magic value FFFFh
BL = instance number (00h=any, 01h=first loaded, etc.)
CX = base port address of COM / LPT port to check
Return: (as for AL=00h if port in use for a redirected drive)
SeeAlso: AX=5600h
--------d-2F5700-----------------------------
INT 2F U - IOMEGA DRIVERS - INSTALLATION CHECK
AX = 5700h
BX = program ID??? (0201h used by GUEST.EXE)
DX = 496Fh ('Io')
Return: AL = status
00h not installed
FFh installed
SeeAlso: AX=5701h,AX=5710h,AX=5711h,AX=5712h
--------d-2F5701-----------------------------
INT 2F U - IOMEGA DRIVERS - ???
AX = 5701h
BX = program ID??? (0201h used by GUEST.EXE)
DX = 496Fh ('Io')
Return: AX = 0001h
SeeAlso: AX=5700h,AX=5710h,AX=5711h,AX=5712h
--------d-2F5710-----------------------------
INT 2F U - IOMEGA DRIVERS - GET DRIVER INFORMATION???
AX = 5710h
BX = program ID??? (0201h used by GUEST.EXE)
DX = 496Fh ('Io')
Return: AX = ??? (BX ORed with ???)
BX = ??? (internal variable)
CX = ??? (internal variable)
DX = ??? (CX ORed with ???)
SeeAlso: AX=5700h,AX=5701h,AX=5711h,AX=5712h
--------d-2F5711-----------------------------
INT 2F U - IOMEGA DRIVERS - LOCK MEDIA IN DRIVE
AX = 5711h
BX = program ID??? (0201h used by GUEST.EXE)
DX = 496Fh ('Io')
Return: CF clear if successful (storage medium in drive)
AX = new lock count
CF set on error (drive empty)
SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5712h
--------d-2F5712-----------------------------
INT 2F U - IOMEGA DRIVERS - UNLOCK MEDIA IN DRIVE / EJECT
AX = 5712h
BX = program ID??? (0201h used by GUEST.EXE)
DX = 496Fh ('Io')
Return: AX = new lock count (00h = unlocked)
Note: if the lock count was already zero, the storage medium is ejected
from the drive
SeeAlso: AX=5700h,AX=5701h,AX=5710h,AX=5711h
--------c-2F5758BX4858-----------------------
INT 2F U - Helix Multimedia Cloaking - CACHECLK - INSTALLATION CHECK
AX = 5758h
BX = 4858h ('HX')
DX = 4443h ('DC')
CX <> 5758h
Return: BX = 6878h if installed
DX = 6463h if installed
CX = version (CH=major,CL=minor)
Program: CACHECLK is a 'Cloaked' disk cache by Helix Software
Note: returns with registers unchanged if CX=5758h on entry
SeeAlso: INT 16/AX=5758h/BX=4858h,INT 2F/AX=4310h"Cloaking"
--------X-2F5D00-----------------------------
INT 2F U - PCMCIA - AWARD PCDISK - GET INFO FROM DRIVER ???
AX = 5D00h
Return: ES:BX -> ???
Note: supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
SeeAlso: AX=5D01h,INT 21/AX=440Dh"DOS 3.2+"
--------X-2F5D01-----------------------------
INT 2F U - PCMCIA - AWARD PCDISK - PUT INFO INTO DRIVER ???
AX = 5D01h
ES:BX -> ???
Return: nothing
Note: supported by Ventura Micro / Award PCDISK.EXE v1.02c PCMCIA/ATA driver
SeeAlso: AX=5D00h,INT 21/AX=440Dh"DOS 3.2+"
--------s-2F60FFDL00-------------------------
INT 2F U - IPLAY v1.00b - INSTALLATION CHECK
AX = 60FFh
DL = 00h (function number)
BX = 5344h ('SD')
CX = 4D50h ('MP')
Return: AX = 4F4Bh ('OK') if installed
Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
(digitized music files)
Note: in version 1.00b, any value for DL except 01h invokes this function
SeeAlso: AX=60FFh/DL=01h
--------s-2F60FFDL01-------------------------
INT 2F U - IPLAY v1.00b - GET DATA SEGMENT
AX = 60FFh
DL = 01h (function number)
BX = 5344h ('SD')
CX = 4D50h ('MP')
Return: AX = data segment
Program: IPLAY is the Inertia Player by Prime and Excalibur for .MODules
(digitized music files)
SeeAlso: AX=60FFh/DL=00h
--------v-2F6282-----------------------------
INT 2F U - PC Tools v7.0+ VDEFEND, VSAFE, VWATCH, DATAMON - SET ??? ADDRESS
AX = 6282h
CX:DX -> ??? or 0000h:0000h
DI = segment of ??? record (see #2532) or 0000h/FFFFh to ignore
Return: BX = 0062h
Note: if CX:DX = 0000h:0000h on entry, the ??? address is not changed
(DATAMON only)
SeeAlso: INT 13/AH=FAh"VSAFE",INT 21/AH=FAh"VDEFEND"
Format of VSAFE/VWATCH record:
Offset Size Description (Table 2532)
00h DWORD ???
04h WORD offset of ??? in record's segment
VSAFE 2.0 sets byte at +01h to 56h or 58h
VWATCH 2.1 sets byte at +02h to 56h or 58h
06h 2 BYTEs ???
08h BYTE ??? (01h/other)
--------v-2F6284BX0000-----------------------
INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - INSTALLATION CHECK
AX = 6284h
BX = 0000h
CX = 0000h
Return: AX = segment of resident code
BX = 5555h
CX = 5555h
Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools
SeeAlso: AX=6284h/BX=0001h,INT 16/AX=FFA3h/BX=0000h
--------v-2F6284BX0001-----------------------
INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET ???
AX = 6284h
BX = 0001h
CX = 0001h
Return: AX:BX -> ??? data (see #2533)
CX = BX
SeeAlso: AX=6284h/BX=0000h
Format of DPROTECT data for v9.0:
Offset Size Description (Table 2533)
00h 5 BYTEs ???
05h WORD resident code segment (may be segment of DWORD at +03h)
07h DWORD -> FAR function to sound alert tone
???
--------v-2F6284BX0002-----------------------
INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - GET OPTIONS
AX = 6284h
BX = 0002h
CX = 0002h
Return: AX = options (see #2534)
BX = ??? (0000h for v9)
CX = AX
DX = BX
Note: also supported by DOS 6 UNDELETE which is licensed from PC Tools
SeeAlso: AX=6284h/BX=0000h,AX=6284h/BX=0003h
Bitfields for DATAMON/DPROTECT options:
Bit(s) Description (Table 2534)
1 ???
12 disabled
13 using Delete Sentry
14 using Delete Tracker
--------v-2F6284BX0003-----------------------
INT 2F U - PC Tools v7-8 DATAMON, v9+ DPROTECT - SET OPTION??? FLAGS
AX = 6284h
BX = 0003h
CX = flags (see #2535)
DX = flags
bit 15: ???
Note: v9 DPROTECT only checks bit 12 of CX, and ignores DX entirely
SeeAlso: AX=6284h/BX=0002h
Bitfields for DATAMON/DPROTECT CX flags:
Bit(s) Description (Table 2535)
3 ???
5 ???
10 ???
12 disable DATAMON/DPROTECT
--------v-2F6284BX0004-----------------------
INT 2F U - PC Tools v8 DATAMON, v9+ DPROTECT - ???
AX = 6284h
BX = 0004h
CX = 0004h
Return: AX = 5555h
BX = ??? (0800h)
CX = ??? (FCCCh for v8, FCCBh for v9)
--------V-2F6400-----------------------------
INT 2F - SCRNSAV2.COM - INSTALLATION CHECK
AX = 6400h
Return: AL = installation state
00h not installed
FFh installed
Program: SCRNSAV2.COM is a screen saver for PS/2s with VGA by Alan Ballard
SeeAlso: INT 10/AX=5555h,INT 14/AX=AA01h
Index: screen saver;SCRNSAV2
--------N-2F7000-----------------------------
INT 2F - License Service API - INSTALLATION CHECK
AX = 7000h
CX = license server index (0000h to 001Fh)
Return: AL = status
00h not installed
FFh installed
Notes: The License Service API is being maintained by Microsoft but is being
supported by a large number of companies including Apple, Banyan,
DEC, HP, Lotus, Microsoft, Novell, Software Publishers Association,
and Wordperfect (not a complete list!)
Each license service provider must search for the next free index
slot to use
SeeAlso: AX=7001h,AX=7003h,AX=7004h,AX=7005h
--------N-2F7001-----------------------------
INT 2F - License Service API - REQUEST LICENSE
AX = 7001h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSREQUEST structure (see #2536)
Return: AX = status
0000h success
else provider error code
ES:BX = provider specific handle for the license context
SeeAlso: AX=7002h,AX=7004h,AX=7005h
Format of License Service SLSREQUEST structure:
Offset Size Description (Table 2536)
00h DWORD (ret) status code
04h DWORD (ret) handle identifying context
08h DWORD (call) address of Publisher string
0Ch DWORD (call) address of Product string
10h DWORD (call) address of Version string
14h DWORD units required
18h DWORD address of comment string
1Ch DWORD address of SLSCHALLENGE structure (see #2537)
Format of License Service SLSCHALLENGE structure:
Offset Size Description (Table 2537)
00h DWORD algorithm (currently always 1)
04h DWORD secret to be challenged (1-255)
08h DWORD size of challenge in bytes (1-255)
0Ch N BYTEs challenge data
--------N-2F7002-----------------------------
INT 2F - License Service API - RELEASE LICENSE
AX = 7002h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSRELEASE structure (see #2538)
ES:BX = provider specific handle for the license context
Return: AL = status
00h not installed
FFh installed
SeeAlso: AX=7001h,AX=7005h
Format of License Service SLSRELEASE structure:
Offset Size Description (Table 2538)
00h DWORD handle indentifying license context
04h DWORD total units consumed
08h DWORD address of comment string
--------N-2F7003-----------------------------
INT 2F - License Service API - UPDATE
AX = 7003h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSUPDATE structure (see #2539)
ES:BX = provider specific handle for the license context
Return: AL = status
00h not installed
FFh installed
SeeAlso: AX=7004h,AX=7005h
Format of License Service SLSUPDATE structure:
Offset Size Description (Table 2539)
00h DWORD (ret) status code
04h DWORD (call) handle identifying license context
08h DWORD (call) total units consumed
0Ch DWORD additional units required
10h DWORD address of comment string
14h DWORD address of SLSCHALLENGE structure (see #2537)
--------N-2F7004-----------------------------
INT 2F - License Service API - GET ERROR
AX = 7004h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSGETERROR structure (see #2540)
ES:BX = provider specific handle for the license context
Return: AL = status
00h not installed
FFh installed
SeeAlso: AX=7000h,AX=7001h
Format of License Service SLSGETERROR structure:
Offset Size Description (Table 2540)
00h DWORD (ret) status code
04h DWORD handle identifying license context
08h DWORD error code
0Ch DWORD buffer size in bytes
10h N BYTEs data buffer
--------N-2F7005-----------------------------
INT 2F - License Service API - QUERY LICENSE
AX = 7005h
CX = license server index (0000h to 001Fh)
DS:DX -> SLSQUERY structure (see #2541)
ES:BX = provider specific handle for the license context
Return: AL = status
00h not installed
FFh installed
SeeAlso: AX=7001h,AX=7002h
Format of License Service SLSQUERY structure:
Offset Size Description (Table 2541)
00h DWORD (ret) status code
04h DWORD handle identifying license context
08h DWORD information index
0Ch DWORD buffer size in bytes
10h N BYTEs data buffer
--------K-2F7041BX4B70-----------------------
INT 2F U - HP 200LX - KEY200 - INSTALLATION CHECK
AX = 7041h
BX = 4B70h
Return: BX = 7965h if keyboard remapper KEY200.COM installed
--------d-2F7200-----------------------------
INT 2F - SRDISK v1.30+ - INSTALLATION CHECK
AX = 7200h
Return: AL = FFh if installed
ES = segment of device driver header (see #2542)
Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
SeeAlso: AX=7201h
Format of SRDISK device driver header:
Offset Size Description (Table 2542)
00h 10 BYTEs same as standard device driver header
(see #1332 at INT 21/AH=52h)
0Ah BYTE number of subunits (drives) supported by driver
0Bh 3 BYTEs signature "SRD"
0Eh 4 BYTEs memory type string ("XMS "/"EMS ")
12h 4 BYTEs ASCII driver version string "N.NN"
16h BYTE 00h
17h BYTE configuration format version (currently 00h or 01h)
18h WORD offset of drive configuration data
SeeAlso: #1332
--------d-2F7201-----------------------------
INT 2F - SRDISK v2.02 - GET CODE/DATA SEGMENT
AX = 7201h
Return: AL = FFh if installed
ES = segment of device driver header (see #2542)
Program: SRDISK is a freeware resizeable RAMdisk by Marko Kohtala
SeeAlso: AX=7200h
--------N-2F7A00-----------------------------
INT 2F - Novell NetWare - LOW-LEVEL API (IPX) INSTALLATION CHECK
AX = 7A00h
Return: AL = status
00h not installed
FFh installed
ES:DI -> FAR entry point for routines accessed exclusively
through INT 7A in NetWare versions through 2.0a.
Call with same values as INT 7A
ES:BX -> two bytes containing IPX major/minor version
(IPXODI v2.12; BX unchanged by older IPX drivers)
CX = ES ???
SeeAlso: AX=7AFFh/BX=0000h,AX=D800h,INT 64"Novell",INT 7A"LOW-LEVEL API"
--------N-2F7A10-----------------------------
INT 2F U - Novell NetWare - TBMI v1.1+ - GET TBMI STATUS
AX = 7A10h
Return: DH = major TBMI version number
DL = minor TBMI version number (01h for v1.1)
CX = segment address of TBMI resident part
BX = status word of TBMI (see #2543)
Note: TBMI is the Task-Switched Buffer Manager Interface
SeeAlso: AX=7A11h,AX=7A12h,AX=7A13h,AX=7A14h
Bitfields for NetWare TBMI status word:
Bit(s) Description (Table 2543)
0 INT2F intercepted by TBMI
1 INT7A intercepted by TBMI
2 INT64 intercepted by TBMI
3-14 reserved or unused ???
15 outstanding task ID was detected
--------N-2F7A11-----------------------------
INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT2F HANDLERS
AX = 7A11h
Return: ES:BX -> old INT 2F handler
DS:DX -> TBMI INT 2F handler
SeeAlso: AX=7A10h,AX=7A12h,AX=7A13h,AX=7A1Ah
--------N-2F7A12-----------------------------
INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT64 HANDLERS
AX = 7A12h
Return: ES:BX -> old INT 64 handler
DS:DX -> TBMI INT 64 handler
SeeAlso: AX=7A10h,AX=7A11h,AX=7A13h
--------N-2F7A13-----------------------------
INT 2F U - Novell NetWare - TBMI v1.1+ - GET INT7A HANDLERS
AX = 7A13h
Return: ES:BX -> old INT 7A handler
DS:DX -> TBMI INT 7A handler
SeeAlso: AX=7A10h,AX=7A11h,AX=7A12h
--------N-2F7A14-----------------------------
INT 2F U - Novell NetWare - TBMI v1.1+ - GET STATISTICS
AX = 7A14h
CX = statistic to retrieve
0000h available diagnostic functions???
Return: CX = maximum available function??? (000Ch for v2.0)
0001h buffers in use
Return: CX = TBMI buffers currently in use
0002h maximum buffers used
Return: CX = maximum number of buffers ever in use
0003h unavailable buffers
Return: CX = count of unavailable TBMI buffers
0004h old interrupt usage
Return: CX = TBMI accesses to intercepted old vectors INT 2F,
INT 64, and INT 7A
0005h far call usage
Return: CX = TBMI accesses to IPX/SPX far call handler (not
including internal accesses)
0006h task buffering
Return: CX = TBMI task buffering status (enabled/disabled or
disable/enable switch count???)
0007h current task ID
Return: CX = TBMI current task ID number (0000h if ???)
0008h outstanding ID count
Return: CX = number of outstanding TBMI IDs
0009h configured ECBs
Return: CX = number of TBMI Event Control Blocks configured
000Ah configured data ECBs
Return: CX = number of TBMI data ECBs configured
000Bh configured sockets
Return: CX = number of TBMI sockets configured (from NETCFG)
000Ch current sockets
Return: CX = number of TBMI sockets currently in use
Return: BX = maximum supported subfunction (000Ch)
SeeAlso: AX=7A10h
--------N-2F7A15-----------------------------
INT 2F OU - Novell NetWare - TBMI v1.1 only - RESET ???
AX = 7A15h
Return: BX = new value of ???
Desc: set ??? to its default value
Note: this call is a NOP under TBMI v2.0 (TBMI2)
SeeAlso: AX=7A17h
--------N-2F7A16-----------------------------
INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
AX = 7A16h
CX = ???
???
Return: ???
Note: this call is a NOP under TBMI v2.0 (TBMI2)
--------N-2F7A17-----------------------------
INT 2F OU - Novell NetWare - TBMI v1.1 only - ???
AX = 7A17h
???
Return: BX = old value of ???
CX = new value of ???
Note: this call is a NOP under TBMI v2.0 (TBMI2)
SeeAlso: AX=7A15h
--------N-2F7A18-----------------------------
INT 2F U - Novell NetWare - TASKID v1.0 - INSTALLATION CHECK
AX = 7A18h
Return: AL = FFh if installed
BX = configuration flags (see #2544)
CX = resident code segment
SeeAlso: AX=7A10h
Bitfields for NetWare TASKID configuration flags:
Bit(s) Description (Table 2544)
0 INT 2F hooked
3 INT 08 hooked
other unused
--------N-2F7A19-----------------------------
INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 08 HANDLERS
AX = 7A19h
Return: AL = FFh
DS:DX -> TASKID INT 08 handler
ES:BX -> original INT 08 handler
--------N-2F7A1A-----------------------------
INT 2F U - Novell NetWare - TASKID v1.0 - GET INT 2F HANDLERS
AX = 7A1Ah
Return: AL = FFh
DX:DX -> TASKID INT 2F handler
ES:BX -> original INT 2F handler
SeeAlso: AX=7A11h,AX=7A19h
--------N-2F7A1B-----------------------------
INT 2F U - Novell NetWare - TASKID v1.0 - GET DIAGNOSTICS INFORMATION
AX = 7A1Bh
CX = desired information
0000h supported functions
0001h TASKID ID number
Return: CX = ID number
0002h set-ID count
Return: CX = ID set count
Return: AL = FFh
BX = highest supported subfunction number (0002h)
SeeAlso: AX=7A14h,AX=7A18h
--------N-2F7A1C-----------------------------
INT 2F U - Novell NetWare - TBMI v1.1+ - ???
AX = 7A1Ch
BP = ???
CX:DX = ???
Return: AX = 70FFh
--------N-2F7A1D-----------------------------
INT 2F U - Novell NetWare - TBMI v1.1+ - ???
AX = 7A1Dh
???
Return: ES = ???
???
SI destroyed
--------N-2F7A1E-----------------------------
INT 2F U - Novell NetWare - TBMI v1.1+ - ???
AX = 7A1Eh
ES:SI -> ???
???
Return: ???
--------N-2F7A20BX0000-----------------------
INT 2F - Novell NetWare - Adv NetWare 4.0 DOS Requester - GET VLM CALL ADDRESS
AX = 7A20h
BX = 0000h
Return: AX = 0000h on success (installed)
ES:BX -> far call address for DOS Requester (see #2545)
Notes: the DOS Requester replaces the NetWare Shell (ANETx, NETx) on
NetWare LAN's as of the release of Advanced NetWare 4.0 (1993). It
is backward compatible with NetWare 2.1x through 3.11 servers as
well. Note that there was a NetWare 4.0 in the early 1980's, which
can cause confusion.
this call is used as the installation check by VLM.EXE, which is the
loader for all the modules of the DOS Requester
.VLMs are standard old .EXE format executables whose normal entry point
merely terminates to prevent loading from the command line. The
real entry point is found by looking at the VLM header at the
beginning of the load image (see #2548)
Index: installation check;NetWare 4.0 DOS Requester
SeeAlso: AX=7A20h/BX=0001h,AX=7A20h/BX=0002h
(Table 2545)
Call DOS Requester entry point with:
STACK: WORD destination function
WORD destination VLM ID (see #2547)
WORD source VLM ID (0000h = application program)
other registers (except BP) as appropriate for function
Return: AX = status code (0000h,8811h,8846h,8848h,8853h) (see #2546)
ZF set if successful, clear on error
other registers as appropriate for function
STACK popped
BP destroyed
(Table 2546)
Values for VLM status code:
0000h successful
88xxh error generated by requester
8801h invalid or non-attached connection handle
8802h drive in use (OS/2 only)
8803h cannot add CDS
8804h bad path
8805h error sending or receiving NCP packets
8806h unknown network error
8807h invalid server connection slot
8808h no connection slots available
880Ah no route to server
880Bh "BAD_LOCAL_TARGET" (OS/2 only)
880Ch too many request fragments
880Dh "CONNECT_LIST_OVERFLOW" (OS/2 only)
880Eh buffer overflow on receive
880Fh no connection to server
8810h no router found (OS/2 only)
8811h nonexistent function called
8830h internal server request attempted between two separate connections
8831h no primary connection set
8833h invalid buffer length
8834h invalid user name
8835h no local print spooler installed
8836h attempted function with invalid parameter
8837h failed to open configuration file (OS/2 only)
8838h no configuration file (OS/2 only)
8839h configuration file read failed (OS/2 only)
883Ah line too long in configuration file (OS/2 only)
883Bh configuration lines ignored (OS/2 only)
883Ch foreign resource
883Dh daemon already installed (OS/2 only)
883Eh print spooler already installed
883Fh local connection table already full
8840h configuration section not found (OS/2 only)
8841h invalid transport type
8842h TDS tag in use (OS/2 only)
8843h TDS out of memory (OS/2 only)
8844h called TDS function with invalid tag
8845h TDS write was truncated
8846h called partially asynchronous function while it was busy
8847h unable to find any responding servers
8848h non-loaded or nonexistent VLM called
8849h network drive already mapped
884Ah attempted map to local drive which was already in use
884Bh no more drives available for mapping
884Ch device is not redirected
884Dh no more SFT entries (too many handles)
884Eh unable to unload
884Fh connection entry was already in use
8850h too many reply fragments
8851h name table already full
8852h socket not open
8853h memory management error
8854h SFT III switch occurred in mid-transfer
8855h preferred server was not found (alternate returned)
8856h device not recognized
8857h bad network byte
88A0h memory allocation error
88A1h connection timeout failure
88A2h transport: bad request
88A3h specified transport not installed
88A4h unable to open connection with specified parameters
88A6h unsupported function
88A7h no such task
88A8h too many tasks
88A9h version mismatch
88AAh request cancelled
88ABh invalid NDS name
88ACh unable to perform operation while logged into NDS
88ADh requester not available for use
88AEh MacIPX not configured properly
88AFh no servers found
88B0h no volume or session associated with identifier
88B1h not a NetWare volume
88B2h MacIPX version incompatible with Requester
88B4h MacIPX not open
88B5h insufficient stack
88B6h client API already initialized
88B7h checksums required by client are not available
88B8h packet signing required by client are not available
88B9h server requires checksum
88BAh server requires packet signing
88BBh already logged in
88BCh negotiated checksums but connection timed out
89xxh error generated by server
low byte = return code from server (see also #1615,#1649)
8900h server successful
8901h out of disk space
897Eh NCP boundary check failed
897Fh ???
8980h lock failed; file in use
8981h out of handles
8982h no open privileges
8983h hard (non-correctable) I/O error
8984h no creation privileges
8985h no create/delete privileges
8986h attempted to create a file which already exists read-only
8987h filename error during creation (wildcards in name)
8988h invalid file handle
8989h no search privileges
898Ah no deletion privileges
898Bh no rename privileges
898Ch no modify privileges
898Dh some affected files are in use
898Eh all affected files are in use
898Fh some affected files are read-only
8990h all affected files are read-only; volume read-only
8991h some files could not be renamed because target names already exist
8992h all affected names exist
8993h no read privileges
8994h no write privileges
8995h file detached
8996h server out of memory
8997h no disk space for spool file
8998h disk map error; volume does not exist
8999h directory full
899Ah attempt to rename across volumes
899Bh bad directory handle
899Ch invalid path; no more trustees
899Dh no directory handles
899Eh bad filename
899Fh directory active
89A0h directory not empty
89A1h directory I/O error
89A2h I/O lock error
89A3h-89A5h ???
89A6h auditing is active
89A7h auditing version error
89A8h no auditing rights
89A3h-89BEh ???
89BFh invalid name space
89C0h no account privileges
89C1h no account balance
89C2h credit limit exceeded
89C4h account disabled
89C5h login lockout (intruder detection activated)
89C6h no console rights
89C7h-89CFh
89D0h queue error
89D1h no queue
89D2h no queue server
89D3h no queue rights
89D4h queue full
89D5h no queue job
89D6h no job rights; unencrypted password
89D7h queue servicing error; duplicate password; bad account
89D8h queue not active; password too short
89D9h station not queue server; maximum logins exceeded
89DAh queue halted; bad login time
89DBh maximum queue servers; unauthorized login station
89DCh account disabled or expired
89DEh password expired (all grace logins used up)
89DFh password expired but login allowed (grace login)
89E0h-89E6h ???
89E7h no disk track
89E8h property is not an item property; write to group
89E9h member exists
89EAh no such member
89EBh property is not a set property
89ECh no such set
89EDh property exists
89EEh object exists
89EFh illegal name
89F0h illegal wildcard
89F1h invalid bindery security level
89F2h not allowed to read object
89F3h not allowed to write/rename object
89F4h not allowed to delete object
89F5h not allowed to create object
89F6h not allowed to delete property
89F7h not allowed to create property; attempt to use non-local drive
89F8h not allowed to write property; already attached to server
89F9h not allowed to read property; no free connection slots
89FAh temporary remap error; no more server slots
89FBh no such property; invalid parameters
89FCh no such object; internet packet request canceled; unknown file server
89FDh bad station number; lock collision
89FEh directory locked; bindery locked; timeout
89FFh general error; hard error; lock error
Note: some server-generated error codes have multiple interpretations; use
the one appropriate to the failing call
(Table 2547)
Values for VLM identifier:
0001h VLM.EXE Virtual Loadable Modules manager (see also #2550)
0010h CONN.VLM connection table manager (see also #2553)
0020h TRAN.VLM transport protocol multiplexor (see also #2557)
0021h IPXNCP.VLM transport protocol implementation using IPX (see #2559)
0022h TCPNCP.VLM TCP/IP transport
0030h NWP.VLM NetWare protocol multiplexor (see also #2561)
0031h BIND.VLM bindery
0032h NDS.VLM NetWare Directory Services (see also #2563)
0033h PNW.VLM Personal NetWare
0034h RSA.VLM RSA encryption for directory services re-authentication
0040h REDIR.VLM DOS redirector (see also #2565)
0041h FIO.VLM file I/O (see also #2568)
0042h PRINT.VLM printer redirector (see also #2570)
0043h GENERAL.VLM misc functions for NETx and REDIR (see also #2574)
0050h NETX.VLM NetWare shell compatibility (see also #2576)
0060h AUTO.VLM auto-reconnect/auto-retry
0061h SECURITY.VLM enhanced security module (see #2578)
0100h NMR.VLM NetWare management responder
09F2h DRVPRN.VLM Desktop SNMP Services - Drive/Printer Mappings
09F5h SAA.VLM SAA client API for Netware
09F6h IPXMIB.VLM SNMP IPX-monitoring Module???
09F7h PNWMIB.VLM Personal Netware SNMP Instrumentation Module
09F8h PNWTRAP.VLM Personal Netware SNMP Trap Module
09F9h MIB2PROT.VLM MIB-II Protocol Groups
09FAh MIB2IF.VLM MIB-II Interfaces Group
09FBh NVT.VLM ???
09FCh WSTRAP.VLM Desktop SNMP Services - Trap Module
09FDh WSREG.VLM Desktop SNMP Services - Registration Module
09FEh WSASN1.VLM Desktop SNMP Services - ASN.1 Module
09FFh WSSNMP.VLM Desktop SNMP Services - Agent Module
Format of VLM header:
Offset Size Description (Table 2548)
00h DWORD -> initialization entry point
04h DWORD -> VLM API entry point
08h DWORD -> ??? entry point
0Ch DWORD -> ??? entry point
10h DWORD -> ??? entry point
...
var DWORD 00000000h (end of entry point list)
4 BYTEs signature "NVlm"
WORD VLM identifier (see #2547)
---v1.20+ ---
1Eh WORD ???
20h WORD Transient Switch Count
22h WORD VLM Call Count
24h WORD Offset ControlBlocks (See #2549)
26h WORD Current VLMID
28h BYTE Memory Type
00h=Conventional 02h=EMS 04h=XMS
29h BYTE Modules Loaded
2Ah WORD BlockId
2Ch WORD Transient Block
2Eh WORD Global Segment
30h 3 DWORDs pointers to AsyncQueue head, tail, and s???
3Ch 3 DWORDs pointers BusyQueue head, tail, and s???
48h WORD ReEntrance Level
4Ah WORD Full Map Count
4Ch WORD ???
4Eh 80 BYTEs ASCIZ configuration file filename
Note: the number of entry points in the header is reported as "Func" in the
VLM /D display.
Format of VLM Control Block for VLM v1.20 [array]:
Offset Size Description (Table 2549)
00h WORD Flag
02h WORD VLM Identifier (See #2547)
04h WORD Func
06h WORD Maps
08h WORD number of times called
0Ah WORD ???
0Ch WORD Transient Segment
0Eh WORD Global Segment
10h WORD Address Low
12h WORD Address High
14h WORD TSegSize
16h WORD GSegSize
18h WORD SSegSize
1Ah BYTE VLMName[9] ASCIZ
Note: this information is shown in VLM /d under the dashed line. There are
as many 35-byte blocks as modules loaded
SeeAlso: #2548
(Table 2550)
Call VLM Manager (VLM.EXE, ID 0001h) with:
Func Description/Registers
01h VLM Notify
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h VLM Statistics
CX = length of buffer
ES:DI -> buffer for statistics (see #2551)
Return: AX = status (0000h if successful)
buffer filled if successful
04h VLM internal use
BX = function
0000h get interrupt vector (calls INT 21/AH=35h)
0001h begin critical section (calls INT 2F/AX=1681h)
0002h end critical section (calls INT 2F/AX=1682h)
0003h ???
Format of VLM.EXE statistics:
Offset Size Description (Table 2551)
00h WORD size of statistics record in bytes (including this word)
02h WORD number of times a VLM has been mapped into memory
04h WORD number of times a VLM has been called
06h WORD offset of vcbArray buffer
08h WORD VLM ID of VLM currently mapped into memory
0Ah BYTE memory type: conventional/EMS/XMS
0Bh BYTE number of loaded VLMs
0Ch WORD EMS/XMS handle or 0000h if conventional memory
0Eh WORD start segment for conventional memory swap
10h WORD segment for global memory, or 0000h if conventional memory
12h 12 BYTEs queue structure for asynchronous calls (see #2552)
1Eh 12 BYTEs queue structure for synchronous calls (see #2552)
2Ah WORD current re-entrance level
2Ch WORD number of times EMS/XMS map-out performed
2Eh BYTE stack switch control
2Fh BYTE flag: nonzero if switcher loaded
30h 80 BYTEs pathname of configuration file
SeeAlso: #2550
Format of VLM.EXE queue structure:
Offset Size Description (Table 2552)
00h DWORD queue head (initially 00000000h)
04h DWORD queue tail (initialized to be same as head)
08h WORD current queue size (number of nodes in queue)
0Ah WORD maximum queue size (in nodes)
SeeAlso: #2551
(Table 2553)
Call Connection Manager (CONN.VLM, ID 0010h) with:
Func Description/Registers
01h Conn Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h Conn Statistics
CX = length of buffer
ES:DI -> buffer for connection statistics (see #2554)
Return: AX = status (0000h successful)
04h Conn Alloc Handle
Return: AX = status (0000h successful)
CX = connection handle
05h Conn Validate Handle
CX = connection handle
Return: AX = 0000h if valid handle
06h Conn Free Handle
CX = connection handle
Return: AX = status (0000h successful)
07h Conn Get Entry Field
BH = connection parameter (see #2556)
CX = connection handle
DX = value if BH is non-array parameter
DH = offset in array if BH is array parameter
DL = number of bytes to copy if BH is array
ES:DI -> return buffer if BH is array
Return: AX = 0000h if successful
DL/DX = value if non-array parameter
DH = maximum number of bytes in buffer if array parameter
DL = number of bytes copied if array
BX destroyed
08h Conn Set Entry Field
BH = connection parameter (see #2556)
CX = connection handle
DL/DX = value if BH is non-array parameter
DH = offset in array if BH is array parameter
DL = number of bytes to copy if BH is array
DS:SI -> buffer if BH is array
Return: AX = 0000h if successful
DH = maximum number of bytes in buffer
DL = number of bytes copied
BX destroyed
09h Conn Reset Entry Field
BH = connection parameter (see #2556)
CX = connection handle
Return: AX = 0000h if successful
BX,DX destroyed
0Ah Conn Lookup Handle
BL = lookup type (00h equal, 40h not equal)
BH = connection parameter (see #2556)
CX = connection handle, 0000h if first
DL/DX = value if BH is non-array parameter
DH = offset in array if BH is array parameter
DL = number of bytes to copy if BH is array
DS:SI (ES:DI???) -> buffer if BH is array
Return: AX = 0000h if successful
CX = handle matching given parameters
0Dh Conn Name Lookup
CX = connection handle
ES:DI -> 49-byte buffer for server name or 0000h:0000h
Return: AX = 0000h if successful
BX = length of server name
ES:DI buffer filled if pointer not 0000h:0000h
0Eh Conn Name To Handle
DS:SI -> uppercased server name
CX = length of server name, 0000h if ASCIZ name
Return: AX = error code or 0000h if successful
CX = connection handle if successful
0Fh Conn Get Num Connections
Return: AX = status (0000h if successful)
DX = number of connections
CX = segment of connection table
first entry in table (See #2555)
Format of VLM connection statistics:
Offset Size Description (Table 2554)
00h WORD total length of statistics record (including this word)
02h WORD number of connection handles allocated
04h WORD average name length (configured in NET.CFG)
06h WORD maximum number of tasks (configured in NET.CFG)
08h WORD number of failed "allocate handle" calls
0Ah WORD number of failed "add name" calls
0Ch WORD number of failed task calls
Note: some versions of the NetWare requester reportedly do not implement
this correctly
SeeAlso: #2553
Format of NetWare VLM Connection Table [array]:
Offset Size Description (Table 2555)
00h WORD Protocol VLMid 0032(NDS) 0031(BIND) Func 07 equiv.
0033(PNW) 0000(unused) BH=01h
02h BYTE (connection status)
bit 6: connection locked BH=16h
bit 5: authenticated BH=03h
bit 4: permanent BH=02h
bit 2: broadcast msg waiting BH=12h
03h BYTE (connection capabilities)
bit 5: Large Internet Packets none
bit 3: Packet Burst Reset BH=07h
bit 2: Max I/O BH=06h
bit 1: SFT3 change BH=05h
bit 0: Packet Burst Support BH=04h
04h WORD reference count BH=09h
06h WORD soft resource count BH=15h
08h BYTE NCP Order Number BH=0Eh
09h BYTE Server security options BH=14h
bit 0: CRC enabled
bit 1: packet signing required
bit 5: packet signing enabled
0Ah BYTE OS Major Version BH=08h
0Bh BYTE OS Minor Version BH=08h
0Ch WORD Hops to Server BH=0Ah
0Eh WORD Maximum Packet Size for this connection BH=0Bh
10h WORD LIP Parameters BH=13h
12h WORD NCP Request Type BH=10h
14h BYTE NCP Sequence BH=0Ch
15h WORD Connection Number BH=0Dh
17h BYTE ??? none
18h WORD Transport VLMid 21(IPXNCP) 22(TCPNCP) BH=0Fh
1Ah BYTE Node Address[4] BH=11h
1Eh BYTE Network[6] BH=11h
24h BYTE Socket[2] BH=11h
26h BYTE Local Target[6] BH=11h
2Ch WORD Round Trip Time BH=11h
2Eh WORD ??? none
SeeAlso: #2553
(Table 2556)
Values for NetWare Connection Manager CEI (Connection Entry Information):
number flags description
00h FR error
01h WL VLM id of transport protocol (NDS/BIND/PNW)
00h = wildcard
02h FR permanent flag (01h if connection is permanent)
03h F authenticated flag (01h if connection is authenticated)
04h F packet burst supported
05h FR SFT3 change status
06h FR connection needs maximum I/O transmission
07h FR packet burst reset needed
08h W server version
09h W reference count (tasks using connection, 00h = dynamic)
0Ah W distance to server associated with connection
0Bh W maximum packet size supported by transport protocol
0Ch B NCP sequence number
0Dh W connection number
0Eh B NCP order number
0Fh WL VLM id for transport protocol
00h = wildcard, 21h = IPX, 22h = TCP
10h W NCP request type
11h A transport specific buffer
12 byte server address
6 byte router address
2 byte round trip time
12h FR broadcast message waiting
13h W large internet packets supported
14h B security options
bit 0: CRC enabled
bit 1: packet signing enabled
bit 5: packet signing active
15h W soft resource count
16h FR connection locked
Note: flag meanings
F=flag value
B=byte value
W=word value
A=array
R=resettable
L=settable only before authentication
others=read only
SeeAlso: #2553
(Table 2557)
Call TRAN.VLM (VLM ID 0020h) with:
Func Description/Registers
01h TRAN Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h TRAN Statistics
06h TRAN Request Reply (see INT 21/AH=F2h)
AL = NCP request code (see #1783 at INT 21/AH=F2h)
BH = error handler flag
00h default error handler
01h return network errors to caller
02h handle network errors in requester
BL = request list length (max 5 fragments) (see #2558)
CX = connection handle
DH = 00h (reserved)
DL = reply list length (max 5 fragments) (see #2558)
DS:SI -> address list (each element is DWORD address + WORD length)
ES:DI -> address list
Return: AX = error code, 0000h if successful (see #2546)
BX,DX destroyed
ES:DI buffer filled with reply packet fragments
08h TRAN Schedule/Cancel Event
BX = subfunction
0000h schedule event
AX = number of timer ticks to delay before calling function
ES:SI -> event control block (including valid call address)
0001h cancel event
ES:SI -> event control block (including call address)
Return: AX = status (0000h = successful) (see #2546)
09h TRAN Get Max Phys Size
BX = subfunction
00h get maximum node size
Return: AX = status (0000h = successful) (see #2546)
BX = maximum supported physical packet size
DX = size of protocol header
SI = RequestReply socket number
01h get maximum route size to specified server
CX = connection handle for route to be checked
Return: AX = status (0000h = successful) (see #2546)
DX = maximum supported packet size for current route
0Ah TRAN Broadcast Mux
BX = subfunction
0001h get stored broadcast (Personal NetWare)
ES:DI -> 60-byte buffer for counted ASCIZ message string
Return: AX = status (0000h = successful) (see #2546)
Format of TRAN.VLM request/reply fragment descriptor (array):
Offset Size Description (Table 2558)
00h DWORD address of buffer
04h WORD length of buffer
(Table 2559)
Call IPXNCP.VLM (VLM ID 0021h) with:
Func Description/Registers
01h IPX Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h IPX Statistics
CX = length of buffer
ES:DI -> buffer for statistics (see #2560)
Return: AX = status (see #2546)
06h IPXNCP Request Reply???
functionally equivalent to Tran Request Reply???
Format of NetWare IPX statistics:
Offset Size Description (Table 2560)
00h WORD size of statistics, including this word
02h DWORD number of TRAN Request Reply calls made
06h WORD number of user aborts
08h WORD number of user retries
0Ah WORD IPX receive errors
0Ch WORD IPX send errors
0Eh WORD number of unrecognized responses
10h WORD number of bad connection numbers in requests
12h WORD number of bad sequence responses
14h WORD receive buffer overflows
16h WORD number of times route to attached server was lost
18h WORD number of times server responded "busy"
1Ah WORD number of unknown "NCPRepCompCode" values
1Ch WORD number of bad connection numbers in responses
1Eh WORD padding for NETX compatibility
20h WORD padding for NETX compatibility
22h WORD number of attach requests to server without route
24h WORD number of times server responded to attach without slot
26h WORD number of times a server went down during a request
28h DWORD same-server optimizations
2Ch WORD local route changes
2Eh WORD IPX CRC errors
30h WORD number of user fails
32h BYTE flag: CRCs enabled
33h BYTE flag: LIP enabled
34h BYTE flag: configurable NET error handler
SeeAlso: #2559
(Table 2561)
Call NWP.VLM (VLM ID 0030h) with:
Func Description/Registers
01h NWP Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h NWP Statistics
CX = size of buffer for statistics
ES:DI -> buffer for statistics (see #2562)
Return: AX = status (see #2546)
04h NWP Connect
DL = resource count state (NDS connections only)
CX = proposed connection handle (not yet connected to server)
DS:SI -> 48-byte server name (NUL-terminated if less than 48 bytes)
Return: AX = status (0000h = successful) (see #2546)
CX = actual connection handle to use
Note: if the returned handle differs from the proposed handle, the
proposed handle should be freed
05h NWP Disconnect
DL = ???
00h global disconnect -- clear all resources associated with conn.
01h destroy connection -- send disconnect request to server
CX = connected connection handle
Return: AX = status (0000h = successful) (see #2546)
06h NWP Attach
DL = resource count state (NDS connections only)
CX = connection handle (allocated by not yet attached to server)
DS:SI -> full network address for desired server
Return: AX = status (0000h = successful) (see #2546)
08h NWP Login
BX = object type
CX = connection handle (must be connected) to be authenticated
DS:SI -> ASCIZ user name (max 48 bytes)
ES:DI -> ASCIZ user password (max 128 bytes)
Return: AX = status (0000h = successful) (see #2546)
09h NWP Logout
CX = connection handle
Return: AX = status (0000h = successful) (see #2546)
0Ah NWP Get Bindery Object/Get Message Handler
BX = subfunction
0002h set workstation's broadcast message mode
DL = message mode
00h client hold client message set on, retrieve/display on
01h client hold client message set off, retr/display on
02h client hold client message set on, retrieve/dislay off
03h client hold client message set off, retr/display off
04h get current message mode
05h set broadcast callback
CX:SI -> callback handler
06h get broadcast timeout
07h set broadcast timeout
CX = timeout in timer ticks (0000h = never)
CX = connection handle, or 0000h to notify all servers
0003h get object ID for object name
AX = object type (big-endian)
CX = connection handle
DX = length of object name
ES:DI -> uppercased ASCIZ object name
Return: AX = status (see #2546)
DX:BX = object ID
0004h get object name for object ID
DX:SI = object ID
CX = connection handle for server which is to do the lookup
ES:DI -> 48-byte buffer for object name
Return: AX = status (see #2546)
0005h retrieve broadcast message
0Ch NDS Fragment Request (passed to NDS.VLM's function 0Ch) (see #2563)
AX = verb or request type
CX = connection handle
DS:SI -> request structure (DWORD data address followed by WORD size)
ES:DI -> buffer for reply structure (same format as request)
Return: AX = status (0000h = successful) (see #2546)
0Eh NWP Ordered Send To All
AL = NCP request code
AH = inverse request code (FFh if none) to back out from failures
BX = number of fragments in request list
DX = number of fragments in reply list buffer
DS:SI -> request fragment list
ES:DI -> reply fragment list
Return: AX = status (see #2546)
BX, CX, DX destroyed
Note: the available functions are described under INT 21/AX=F2xxh
0Fh NWP Preferred Handler
BX = subfunction
0000h get preferred connection name
DX = VLM ID (NDS/BIND/PNW)
ES:DI -> 49-byte buffer for connection name
Return: ES:DI buffer filled
0001h set preferred connection name
DX = VLM ID (NDS/BIND/PNW)
CX = length of connection name (may be 0000h, max 48)
DS:SI -> name of preferred connection
0002h get preferred connection ID
DX = VLM ID (NDS/BIND/PNW)
Return: AX = status (see #2546)
CX = connection handle if successful
0003h get server address
CX = connection handle or 0000h
DS:SI -> ASCIZ name to be resolved
ES:DI -> 12-byte buffer for server address
10h NWP Security???
BX = subfunction
0001h get security flags (see also INT 21/AX=B301h)
Return: BX:CX indicates signature level
= 0100h:0000h if signature level=0
= 0300h:0000h if signature level=1
= 0302h:0000h if signature level=2
= 0302h:0202h if signature level=3
0002h create session keys (see also INT 21/AX=B302h)
CX = server connection handle
DS:SI -> 24-byte input buffer
0004h set security flags (see also INT 21/AX=B304h)
BL:CL = new flags
0006h renegotiate security level (see also INT 21/AX=B306h)
CX = server connection number (01h-08h)
Format of NWP.VLM statistics:
Offset Size Description (Table 2562)
00h WORD size of statistics record (including this byte)
02h BYTE flag: Large Internet Packets enabled
03h BYTE bit flags: enabled security features
04h BYTE bit flags: preferred security features
05h BYTE bit flags: required security features
06h BYTE minimum level of required security
SeeAlso: #2561
(Table 2563)
Call NDS.VLM (VLM ID 0032h) with:
Func Description/Registers
01h NDS Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h NDS Statistics
06h NDS Attach
CX = allocated connection handle
DS:SI -> server address
08h NDS Fragment Requst
Return: AX = 8836h (invalid parameter)
Note: this function was documented but does not work
0Ch NDS context
BX = subfunction
0000h get default name context
CX = length of buffer for default context
ES:DI -> buffer to receive name
Return: ES:DI buffer filled
0001h set default context
CX = length of new default context name
DS:SI -> context name
0002h read from TDS
CX = reply buffer length
DX = 0110h ???
SI = offset in TDS
ES:DI -> reply buffer
0003h write to TDS
0005h "NWDSChangeResourceConnection/Lock Connection"
CX = connection handle
DL = subfunction (00h-09h)
04h = NWDSChangeResourceOnConnection
07h = NWDSChangeResourceOnConnection
08h = NWDSLockConnection
0006h NDS change connection state (internal)
CX = connection handle
AL = 00h or 01h
0007h "NWDSSetMonitoredConnection"
AX = subfunction
0001h get monitored connection
Return: CX = connection handle???
0002h set monitored connection
CX = connection handle???
0008h send NDS request
AX = NDS function
CX = connection handle
DS:SI -> request buffer descriptor (see #2564)
ES:DI -> reply buffer descriptor (see #2564)
000Ah set NDS CEI Info
DL = buffer length
DS:SI -> input buffer
Format of NetWare NDS request/reply buffer descriptor:
Offset Size Description (Table 2564)
00h DWORD -> buffer
04h WORD length of buffer in bytes
SeeAlso: #2563
(Table 2565)
Call REDIR.VLM (VLM ID 0040h) with:
Func Description/Registers
01h Redir Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h Redir Statistics
CX = length of buffer
ES:DI -> buffer for statistics (see #2566)
Return: AX = status (0000h if successful) (see #2546)
buffer filled if successful
04h Redir Build SFT (see INT 21/AH=B4h"NetWare")
CX = connection handle
ES:DI -> SFT build request (see #2567)
Return: AX = 0000h if successful
BX = DOS file handle
05h Redir DOS To NW Handle
BX = DOS file handle
ES:DI -> 11-byte buffer for NetWare handle
08h Redir Specific
BX = 0000h get item
DS:SI -> ASCIZ string "LPTx" (x='1'-'9') or drive spec ("d:")
ES:DI -> 512-byte reply buffer for
"\\server\resource",00h,"path",00h
Return: AX = status (0000h if successful) (see #2546)
Format of REDIR.VLM statistics:
Offset Size Description (Table 2566)
00h WORD size of statistics record (including this word)
02h WORD number of network errors causing a critical error (see INT 24)
04h WORD number of drives currently redirected
SeeAlso: #2565
Format of NetWare SFT build request:
Offset Size Description (Table 2567)
00h 6 BYTEs NetWare handle
06h WORD reserved for internal use
08h 14 BYTEs ASCIZ filename
16h BYTE DOS file attributes
bit 7: file is shareable
17h BYTE reserved
18h LONG file size
1Ch WORD creation date
1Eh WORD last access date or 0000h
20h WORD last update date or 0000h
22h WORD last update time or 0000h
(Table 2568)
Call File I/O FIO.VLM (VLM ID 0041h) with:
Func Description/Registers
01h FIO Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h FIO Statistics
CX = length of buffer
ES:DI -> buffer for statistics (see #2569)
Return: AX = status (0000h if successful)
buffer filled if successful
04h FIO Remote Copy
Format of NetWare FIO statistics:
Offset Size Description (Table 2569)
00h WORD length of statistics record (including this word)
02h WORD number of read requests
04h WORD number of write requests
06h WORD number of cache read hits
08h WORD number of cache write hits
0Ah WORD number of cacheable files with free blocks
0Ch WORD number of cacheable files without free blocks
0Eh WORD number of standard read requests
10h WORD number of standard write requests
12h WORD number of burst read requests
14h WORD number of burst write requests
16h BYTE flag: cache writes enabled
17h BYTE flag: true commits enabled
18h WORD number of cache blocks
1Ah WORD size of a cache buffer
1Ch WORD number of ECBs for packet bursts (0000h if bursts disabled)
SeeAlso: #2568
(Table 2570)
Call PRINT.VLM (VLM ID 0042h) with:
Func Description/Registers
01h Print Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h Print Statistics
CX = length of buffer
ES:DI -> buffer for statistics (see #2571)
Return: AX = status (0000h if successful) (see #2546)
buffer filled if successful
04h Print Get/Set Data
BX = subfunction
00h set printer control flags (see #2572)
01h get printer control flags
02h set extended printer control flags (see #2573)
03h get extended printer control flags
AX = offset within Print structures at which to start read/write
CX = number of bytes to transfer
DX = printing device number (00h=LPT1/PRN, 01h=LPT2, etc.)
DS:SI -> buffer containing values for flags (subfunctions 00h/02h)
ES:DI -> buffer for flags (subfunctions 01h/03h
Return: AX = status (see #2546)
---if successful---
CX = number of bytes returned (subfunctions 01h/03h)
DX = maximum supported size for function/type of data
05h Print Open Capture File
07h Print Get Num Of Printers
BX = subfunction
0000h get number of physical printers
nonzero: get configured printer (from NET.CFG)
Return: AX = status (see #2546)
---if successful---
BX = number of physical/configured printers
08h Print Redirection
BX = subfunction
0000h redirect device to queue
AX = length of queue name, 0000h to use queue ID
CX = connection handle
DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
DS:SI -> uppercased ASCIZ queue name
ES:DI -> DWORD queue ID, 00000000h to use queue name
0001h test whether device is redirected
DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
0002h cancel redirection
DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
0003h redirect device to file
AX = 0000h or 4E57h ('NW')
CX = connection handle
DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
ES:DI -> ASCIZ path of file
0004h get extended redirection information (see #2572)
DX = printer/device number (00h=LPT1/PRN, 01h=LPT2, etc.)
ES:DI -> buffer for server/queue name
Return: ES:DI buffer filled
Return: AX = 0000h if successful
09h Print Flush And Close Job
BX = subfunction
0000h unconditional close
nonzero: conditional close -- close only if concatenate flag is
clear
DX = index of printing device (00h=LPT1/PRN, 01h=LPT2, etc.)
Return: AX = status (see #2546)
0Ch Print Get/Set Banner Name
BL = subfunction
00h set banner name
DS:SI -> ASCIZ banner name (12 bytes, including NUL)
01h get banner name
ES:DI -> 12-byte buffer for banner name
Return: AX = status (see #2546)
Format of PRINT.VLM statistics:
Offset Size Description (Table 2571)
00h WOFD size of statistics buffer (including this word)
02h DWORD -> old INT 17 handler
06h WORD number of physical printers reported by BIOS
SeeAlso: #2570
Format of PRINT.VLM standard print control information:
Offset Size Description (Table 2572)
00h BYTE PFStatus (reserved, 00h)
01h BYTE print flags (default 80h)
bit 2: release job for printing if capture interrupted
bit 3: suppress form feed
bit 4: notify
bit 6: text file
bit 7: print banner
02h BYTE tab size (01h-12h, default 08h)
03h BYTE number of copies (default 01h)
04h BYTE ??? (may be number of copies instead of offset 03h)
05h BYTE form type to be mounted in printer (default 00h)
06h BYTE reserved (00h)
07h 14 BYTEs banner
15h BYTE capture printer (LPT) number
16h WORD capture timeout in seconds
18h BYTE job concatenation flag (00h or 01h, default 00h)
19h BYTE maximum lines per page (default 66)
1Ah BYTE ??? (may be maximum lines instead of offset 19h)
1Bh BYTE maximum characters per line (default 132)
1Ch BYTE ??? (may be maximum characters instead of offset 1Ch)
1Dh 13 BYTEs name of form to be mounted in printer
2Ah BYTE flag: capture active (00h or FFh, default 00h)
2Bh BYTE flag: capturing to file (00h or 01h, default 00h)
2Ch BYTE flag: timeout field is being decremented (default 00h)
2Dh DWORD -> printer setup string
31h DWORD -> printer reset string
35h BYTE reserved (01h)
---remainder is read-only---
36h BYTE flag: job has started printing (00h or FFh, default 00h)
37h BYTE flag: job placed in queue (00h or FFh, default 00h)
38h BYTE flag: PJobValid (00h or FFh, default 00h)
FFh if associated capture file is open for capturing data
39h DWORD print-queue ID
3Dh WORD print-job number (default 00h) (1-999)
3Fh BYTE number of chars in INT 17h print cache buffer (default 00h)
40h BYTE ???
41h WORD high word of print-job number (default 00h)
SeeAlso: #2570,#2573
Format of PRINT.VLM extended print control information:
Offset Size Description (Table 2573)
00h DWORD NDS printer object ID or directory entry number (when capturing
to a file)
04h BYTE connection handle for server
06h 48 BYTEs ASCIZ print queue name on server
36h DWORD ID of target server, or FFFFFFFFh if any server may be used
3Ah 6 BYTEs target print time, FFFFFFFFFFFFh for immediate printing
40h BYTE status flags
41h BYTE ???
42h 13 BYTEs client's banner name (overrides global banner if set)
4Fh 13 BYTEs job description
5Ch 4 BYTEs reserved (0)
SeeAlso: #2570,#2572
(Table 2574)
Call GENERAL.VLM (VLM ID 0043h) with:
Func Description/Registers
01h Gen Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h Gen Statistics
CX = length of statistics buffer
ES:DI -> buffer for statistics (see #2575)
Return: AX = status (see #2546)
04h Gen Get/Set Primary
BX = subfunction
0001h get primary connection
CX = primary connection handle to be retrieved
Return: AX = status (see #2546)
CX = primary connection handle
0002h set primary connection
CX = primary connection handle to be stored
Return: AX = status (see #2546)
06h Gen Specific
BX = subfunction
0000h get command processor and master environment addresses
Return: DX = segment of master environment
ES:DI -> command processor's private COMSPEC= copy
0001h get default or primary connection
Return: AX = status (0000h successful)
CX = connection handle if successful
0002h last queue information
AL = operation
00h zap
01h set
02h get
DI:DX = queue file handle
CX = connection handle
Return: AX = status (0000h successful)
DI:DX = queue file handle
CX = connection handle or 0000h if queue info invalid
0003h get/set machine name(s)
AX = name type
00h get short machine name
02h get long machine name
04h set short machine name
06h set long machine name
08h get DOS name
0Ah set DOS name
ES:SI -> ASCIZ name if setting
Return: AX = status (0000h if successful)
ES:SI -> ASCIZ name if getting
0004h set per-task EXEC search mode
Return: AX = status (0000h if successful)
09h Gen Return Drive Info
BX = subfunction
0000h get first available drive
Return: AX = status (see #2546)
BX = drive letter of first drive
0001h get Lastdrive
Return: AX = status (see #2546)
CH = number lastdrive 1=A: - 1Ah=Z:
Format of NetWare GENERAL.VLM statistics:
Offset Size Description (Table 2575)
00h WORD size of statistics record, including this word
02h DWORD previous INT 21 vector
SeeAlso: #2574
(Table 2576)
Call NETX.VLM (VLM ID 0050h) with:
Func Description/Registers
01h NetX Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h NetX Statistics
CX = length of statistics buffer
ES:DI -> buffer for statistics (see #2577)
Return: AX = status (see #2546)
Format of NETX.VLM statistics:
Offset Size Description (Table 2577)
00h WORD buffer size, including this word
02h DWORD previous INT 21 handler
SeeAlso: #2576
(Table 2578)
Call SECURITY.VLM (VLM ID 0061h) with:
Func Description/Registers
01h Security Get Version
BX = function
0000h get version
Return: AX = status (see #2546)
BX = major version of VLM supported (0001h)
CX = minor version of VLM supported (0000h)
03h Security Statistics
04h ???
AL = subfunction
01h compute session key
DS:SI -> 24-byte input buffer
ES:DI -> 8-byte output buffer
--------N-2F7A20BX0001-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM CallA ADDRESS
AX = 7A20h
BX = 0001h
Return: AX = 0000h if request was handled
ES:BX -> CallA entry point (see #2579)
SeeAlso: AX=7A20h/BX=0000h
(Table 2579)
Call VLM CallA entry point with:
AX = function
0000h submit
0001h cancel (not implemented)
ES:DI -> Overlay Asynchronous Control Block structure (see #2580)
Return: DI, DS, ES preserved; all other registers may be destroyed
interrupts disabled
Desc: asychronously call the specified VLM and then return to caller, which
might be another VLM
Format of Overlay Asynchronous Control Block (OACB):
Offset Size Description (Table 2580)
00h DWORD link to next OACB, 0000h:0000h if last (filled by VLM.EXE)
04h DWORD callback address or 0000h:0000h
08h BYTE InUse flag (00h if complete) (set by VLM.EXE)
09h BYTE flag, reserved for VLM use
0Ah WORD destination VLM
0Ch WORD destination function
0Eh WORD temporary storage for VLM.EXE
10h 6 BYTEs reserved
16h 6 DWORDs EAX,EBX,ECX,EDX,ESI,EDI
2Eh 4 WORDs DS,ES,FS,GS (FS and GS not used)
--------N-2F7A20BX0002-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTIPLEX ADDRESS
AX = 7A20h
BX = 0002h
Return: AX = 0000h
ES:BX -> VLM multiplex entry point (see #2581)
Note: for v1.10, this function is only available while VLM.EXE is loading
the .VLM modules, because ES is destroyed on return
SeeAlso: AX=7A20h/BX=0000h,AX=7A20h/BX=0001h,AX=7A20h/BX=0003h
(Table 2581)
Call DOS Requester entry point with:
BX = function???
0000h
DX = ???
DI = ???
BP = ???
0002h
CX = ???
0003h
DX = ???
BP = ???
0006h
AH = subfunction???
AL = ???
STACK: variable (0, 4, 10, 14 bytes seen)
--------N-2F7A20BX0003-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM PARSE API ADDRESS
AX = 7A20h
BX = 0003h
Return: AX = 0000h if request was handled
ES:BX -> VLM parse API entry point
--------N-2F7A20BX0004-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM MULTICAST CALLOUT
AX = 7A20h
BX = 0004h
Return: AX = 0000h if request was handled
ES:BX -> VLM multicast data (see #2582)
SeeAlso: AX=7A20h/BX=0000h,AX=7A20h/BX=0002h,AX=7A20h/BX=0005h
Format of DOS Requester data:
Offset Size Description (Table 2582)
00h DWORD pointer to ??? (code)
04h 4 BYTEs ???
08h DWORD pointer to ??? (code) (see #2583)
???
(Table 2583)
Call offset 08h function with:
AL = function (00h-07h)
???
Return: ???
--------N-2F7A20BX0005-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET VLM INT 24 ADDRESS
AX = 7A20h
BX = 0005h
Return: AX = 0000h if request was handled
ES:BX -> VLM INT 24 handler
SeeAlso: AX=7A20h/BX=0000h,AX=7A20h/BX=0002h,AX=7A20h/BX=0004h
--------N-2F7A20BX0006-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
AX = 7A20h
BX = 0006h
Return: AX = 0000h if request was handled
ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
--------N-2F7A20BX0007-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
AX = 7A20h
BX = 0007h
Return: AX = 0000h
ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
--------N-2F7A20BX0008-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
AX = 7A20h
BX = 0008h
Return: AX = 0000h
ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
--------N-2F7A20BX0080-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
AX = 7A20h
BX = 0080h
Return: AX = 0000h
ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
Note: this function is identical to AX=7A20h/BX=0006h in v1.03 and v1.10
--------N-2F7A20BX0081-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
AX = 7A20h
BX = 0081h
Return: AX = 0000h
ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
Note: this function is identical to AX=7A20h/BX=0007h in v1.03 and v1.10
--------N-2F7A20BX0082-----------------------
INT 2F - Novell NetWare - DOS Requester v1.03+ - GET ??? ENTRY POINT
AX = 7A20h
BX = 0082h
Return: AX = 0000h
ES:BX -> ??? entry point (RETF in v1.03 and v1.10)
Note: this function is identical to AX=7A20h/BX=0008h in v1.03 and v1.10
--------N-2F7A21-----------------------------
INT 2F C - Novell NetWare - DOS Requester - BROADCAST CALLBACK
AX = 7A21h
CX = server connection (FFFFh if message from Personal NetWare user)
interrupts disabled
Return: CX = 0000h if broadcast handled
interrupts disabled
Note: this function is only linked into INT 2F when INT 21/AH=DEh/DL=05h
has been issued
SeeAlso: AX=7A22h,AX=7A85h,INT 21/AH=DEh
--------N-2F7A22-----------------------------
INT 2F C - Novell NetWare - DOS Requester - BROADCAST/SFT3 INFORM
AX = 7A22h
DL = function
21h ('!') broadcast waiting for workstation
40h ('@') SFT3 server-change inform
BX = transport type
0021h IPX
0022h TCP
ES:SI -> transport-specific data block
(ECB for IPX, undefined for TCP)
interrupts disabled
Return: AX = 0000h if event handled, unchanged if not
interrupts disabled
Note: this callback is made from within a hardware interrupt handler; a
separate call to AX=7A21h is made once the system is in a safe
state for receiving the message
SeeAlso: AX=7A21h
--------N-2F7A2F-----------------------------
INT 2F - Novell NetWare - IPXODI v2.12 - GET GNMA SUPPORT
AX = 7A2Fh
Return: AX = 0000h if supported and active
BX = support level (0001h)
ES:DI -> GNMA entry point (see #2584)
Program: GNMA is the Generic NetWare Management Agent
Note: IPXODI v2.12 is distributed as part of the Personal NetWare system
bundled with Novell DOS 7
SeeAlso: INT 7A/BX=001Fh
(Table 2584)
Call IPXODI GNMA entry point with:
BX = function
0000h Register Responder
ES:SI -> responder structure (see #2585)
Return: CF clear if successful
CF set on error
AX = status
FFFFh if specified responder is already registered
interrupts enabled
all other registers except DS, CS:IP, SS:SP destroyed
Note: the responder structure must not be deallocated until
the responder is deregistered
0001h Deregister Responder
AX = type of responder to deregister
Return: AX = status
FFFFh if specified responder not registered
interrupts enabled
ES:SI buffer from original registration may now be
freed
all other registers except DS, CS:IP, SS:SP destroyed
0002h Get Responders
Return: ES:SI -> head of responder structure list (read-only)
interrupts enabled
all other registers except DS, CS:IP, SS:SP destroyed
Note: the returned list may change as tasks are swapped in
and out
0003h Send Acknowledgement
AL = completion code
00h successful
01h-FCh responder-specific
FDh invalid function
CX = length of return data (0000h if none)
DX:SI -> return data
Return: interrupts enabled
all other registers except DS, CS:IP, SS:SP destroyed
Format of NetWare GNMA responder structure:
Offset Size Description (Table 2585)
00h DWORD -> next responder structure (used by GNMA)
04h DWORD -> responder's request handler (called by GNMA) (see #2586)
08h WORD responder ID
0Ah WORD number of functions supported by responder
0Ch DWORD reserved for use by GNMA
SeeAlso: #2584
(Table 2586)
Values GNMA responder's request handler is called with:
AL = function
00h responder request
CX = length of request data (not including header) (see #2587)
DS:DI -> request data (see #2587)
DS:BX -> 528-byte reply buffer
ES:SI -> responder structure (see #2585) from registration
DF clear
interrupts disabled
Return: AH = acknowledement status
00h acknowledgment being returned synchronously
nonzero: acknowledgment will be sent via GNMA
function 0003h (see #2584)
CX = length of acknowledement data
DX:BX -> acknowledgment (may use provided
buffer or another buffer)
AL = completion code
00h successful
01h-FCh responder-specific
FDh invalid request
DF clear
interrupts disabled
other registers may be destroyed
01h responder acknowledgement complete
ES:SI -> responder structure (see #2585) from registration
DF clear
interrupts disabled
Return: DF clear
interrupts disabled
all registers (except SS:SP) may be destroyed
Note: this function is called if function 00h returned a
responder-provided data buffer; once this function
is called, the responder may deallocate the buffer
02h responder reset
ES:SI -> responder structure (see #2585) from registration
DF clear
interrupts disabled
Return: DF clear
interrupts disabled
all registers (except SS:SP) may be destroyed
Note: called whenever a network managment application
terminates
Note: the responder handler should switch to a local stack if it enables
interrupts or uses more than a few words of stack space
SeeAlso: #2585
Format of GNMA responder request data:
Offset Size Description (Table 2587)
00h WORD responder's assigned ID
02h WORD function number (defined by responder)
04h N BYTEs data for request (max 528 bytes; actual amount is determined
by CX)
SeeAlso: #2586
--------N-2F7A2FBX0EDC-----------------------
INT 2F U - Personal NetWare - HRMIB - UNINSTALL
AX = 7A2Fh
BX = 0EDCh ('EDC' = Novell European Development Center)
Return: ???
SeeAlso: AX=7AA0h
--------N-2F7A40-----------------------------
INT 2F - Novell NetWare - TCP/IP Protocol Stack - INSTALLATION CHECK
AX = 7A40h
Return: AX = 7AFFh if installed
0000h:BX = address of interrupt vector for MLID ISR
CX = version (CH=major, CL=minor)
DX = 0000h
ES:DI -> entry point for TCP/IP stack (see #2589)
Notes: Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
this function is also supported by the Beame&Whiteside BWLWP40 shim,
but it only returns AL and ES:DI, and does not support AX=7A41h
SeeAlso: AX=7A41h,INT 15/AX=DE2Eh,INT 60"Excelan"
(Table 2588)
Values for NetWare TCP/IP function code:
01h "accept" accept a network connection request
02h "bind" associate an address with a socket
03h close socket
Call: socket number field set
04h "connect" connect to a remote host
05h "getmyipaddr" get IP address
Call: socket number field in sockaddr set to 0000h
06h "getmymacaddr" get hardware address
07h "getpeername"
08h "getsockname" get socket name
09h "getsockopt" get socket options
0Ah "getsubnetmask" get subnet mask
0Bh "ioctl"
0Ch "listen" wait for connection request on socket
0Dh "select"
Return: socket bitmap updated (1=active)
0Eh "setmyipaddr" (obsolete) set IP address
0Fh "setsockopt" set socket options
10h "shutdown"
11h "socket" open socket
Call: socket number field set to 0000h
Return: socket number set
12h "recv" get data from peer
13h "recvfrom" get data from specified remote host
Call: socket number set
packet length and buffer descriptors set
Return: packet length and receive buffers updated
sockaddr field set to source port number + IP address
14h "send" write data to socket
15h "sendto" write data to specified recipient
Call: socket number set
flags at offset 18h = 0000h
packet length and buffer descriptors set
---v4.02+ ---
16h get BOOTP data
Return: BOOTP data stored in parameter block (see #2592)
17h "getsnmpinfo"
18h "getpathinfo" get/set configuration???
---v4.??? ---
19h "getifn" get interface number
1Ah "setipinfo" set IP information
1Bh "getipinfo" get IP information
1Ch "setdnsinfo" set DNS information
1Dh "getdnsinfo" get DNS information
1Eh "setroutes" set/modify route entry(ies)
1Fh "getroutes" get route entry(ies)
20h "removeroutes" remove route entry(ies)
21h "setarpe" set/modify ARP entry(ies)
22h "getarpe" get ARP entry(ies)
23h "removearpe" remove ARP entry(ies)
Notes: these functions are based on the Unix socket interface
OR function number with 80h to call ESR
SeeAlso: #2590
(Table 2589)
Call NetWare TCP/IP entry point with:
ES:SI -> parameter block (see #2590)
Return: ES:SI parameter block updated
DX may be destroyed
Format of NetWare TCP/IP Request Control Block (RCB):
Offset Size Description (Table 2590)
00h DWORD -> next RCB
04h DWORD -> previous RCB
08h DWORD -> FAR post routine called if bit 7 of function code set
0Ch BYTE flags (internal use)
bit 0: request in progress
bit 1: posted
bit 2: Windows
bit 3: "PROTBUF"
bit 4: "ABORTRCB" for Ctrl-Break handling
bit 5: call INT 21/AX=0B00h while blocking
0Dh 7 BYTEs ???
14h BYTE (ret) temporary result code
15h BYTE (call) function code (bit 7 set if non-blocking) (see #2588)
16h BYTE socket number
17h BYTE (ret) result or error code (see #2591)
---accept/bind/connect/getmyipaddr/getpeername/getsockname commands---
18h sockaddr structure (WORD port + DWORD IP address)
---close comand---
no additional fields
---getmymacaddr command---
18h 6 BYTEs low-level hardware network address
---BOOTP command---
18h 64 BYTEs BOOTP VSA data (see #2592)
---getpathinfo command
18h 8 BYTEs key
"TCP_CFG" used by PING.EXE
20h 128 BYTEs path
A0h WORD length of path in previous field
---getsockopt/setsockopt commands---
18h WORD option name
0004h SO_REUSEADDR
0008h SO_KEEPALIVE
0080h SO_LINGER
1Ah WORD option value
1Ch WORD "linger"
---getsubnetmask command---
18h DWORD subnet mask
---ioctl command---
18h DWORD argument value
1Ch WORD ioctl number
---listen command---
18h WORD maximum allowable connection backlog
---select command---
18h WORD number of sockets
1Ah fd_set readfds (bitmap of sockets)
fd_set writefds
fd_set expectionfds
DWORD timeout in clock ticks
---shutdown command---
18h WORD shutdown type
---socket command---
18h WORD protocol (1 = ICMP, 6 = TCP, 17 = UDP)
---I/O commands (recv,recvfrom,send,sendto)---
18h WORD flags
1Ah 6 BYTEs sockaddr from/to
WORD port number
DWORD IP address
20h WORD length of packet sent/received
22h WORD number of pointer/length pairs following (max 8)
24h 6N BYTEs buffer descriptors, each
Offset Size Description
00h DWORD pointer to buffer
04h WORD length of buffer
---getsnmpinfo command---
18h DWORD (ret) -> ??? data in TCPIP code segment
--getifn command---
18h WORD interface number
1Ah WORD MLID instance number
1Ch 128 BYTEs MLID name
---getipinfo/setipinfo commands---
18h WORD interface number (00h = default)
1Ah DWORD IP address
1Eh DWORD IP netmask
22h 3 DWORDs router addresses (00000000h = unused entry)
---getdnsinfo/setdnsinfo commands---
18h WORD interface number (00h = default)
1Ah 3 DWORDs name server IP addresses (00000000h = unused entry)
26h 128 BYTEs domain name
---getroutes/setroutes/removeroutes commands---
18h WORD number of route entries to follow (max 5)
1Ah 10N BYTEs route entries
DWORD destination host/net IP address
DWORD IP address of first router
WORD route type
---getarpe/setarpe/removearpe commands---
18h WORD number of ARP entries to follow (max 16)
1Ah 10N BYTEs ARP entries
DWORD destination IP address
6 BYTEs destination hardware address
---other commands---
18h 4 WORDs parameter words 0 to 3 (see #2588 for usage)
(Table 2591)
Values for NetWare TCP/IP status:
00h successful
04h would block
09h invalid socket
23h would block
24h operation in progress
25h already in progress
26h not a socket
27h destination address required
28h message too long
29h wrong protocol type for socket
2Ah protocol not available
2Bh protocol not supported
2Ch socket type not supported
2Dh operation not supported on socket
2Eh protocol family not supported
2Fh address family not supported by protocol family
30h address already in use
31h unable to assign requested address
32h network is down
33h network is unreachable
34h network dropped connection
35h software caused connection abort
36h connection reset by peer
37h no buffer space
38h socket is already connected
39h socket is not connected
3Ah socket is in shutdown mode
3Bh too many references
3Ch connection timed out
3Dh connection refused
3Eh too many levels of symbolic links
3Fh file name too long
40h host is down
41h host unreachable
42h protocol stack not installed
43h asynchronous operation not supported
44h synchronous operation not supported
45h no RCB available
FFh blocking (call has not yet returned)
SeeAlso: #2590
Format of BOOTP data (stored in parameter block):
Offset Size Description (Table 2592)
18h 4 BYTEs ???
1Ch BYTE ??? (01h)
1Dh BYTE address length (04h)
1Eh 4 BYTEs subnet mask
22h BYTE ??? (03h)
23h BYTE ??? (04h)
24h 4 BYTEs IP address of nearest router
28h BYTE ??? (06h)
29h BYTE length of following data (08h)
2Ah 4 BYTEs IP address of nameserver 1
2Eh 4 BYTEs IP address of nameserver 2
32h BYTE ??? (0Ch)
33h BYTE length of local name
34h N BYTEs local host name
BYTE FFh (end marker)
SeeAlso: #2590,#2588
--------N-2F7A41-----------------------------
INT 2F U - Novell NetWare - TCP/IP Protocol Stack - WINDOWS SUPPORT???
AX = 7A41h
ES:DI -> FAR entry point for ??? (will be called with BX=1,2,3,4)
Return: AX = 7AFFh if supported
0000h:BX = address of interrupt vector for MLID ISR
CX = version (CH=major, CL=minor)
DX = 0000h
ES:SI -> DWORD containing passed value of ES:DI
ES:DI -> entry point for TCP/IP stack
Notes: Novell's LAN Workplace for DOS TCPIP.EXE also supports this interface
the pointer which is set to ES:DI is cleared to 0000h:0000h when
a Windows exit broadcast is received
SeeAlso: AX=7A40h
--------N-2F7A42-----------------------------
INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - GET ??? ENTRY POINT
AX = 7A42h
Return: AX = 7AFFh if supported
ES:DI -> ??? entry point (see #2593)
(Table 2593)
Call NetWare TCPIP.EXE entry point with:
DX = ???
ES:DI -> ??? (see #2594)
Return: AX = 0000h
other registers destroyed
Format of data buffer:
Offset Size Description (Table 2594)
00h WORD offset of WORD ??? or 0000h
02h WORD offset of DWORD ??? or 0000h
04h WORD offset of DWORD ??? or 0000h
--------N-2F7A43-----------------------------
INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - GET ???
AX = 7A43h
Return: AX = 7AFFh if supported
DX = offset of ???
SeeAlso: AX=7A44h
--------N-2F7A44-----------------------------
INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - SET ???
AX = 7A44h
DX = offset of ??? (see AX=7A43h)
Return: AX = 7AFFh if supported
SeeAlso: AX=7A43h
--------N-2F7A4C-----------------------------
INT 2F U - Novell NetWare - TCPIP.EXE v4.1 - GET ???
AX = 7A4Ch
Return: AX = 7AFFh if supported
BX = ??? (0037h)
CX = ??? (001Ch)
--------N-2F7A4DBX0001-----------------------
INT 2F U - Novell NetWare - ???
AX = 7A4Dh
BX = 0001h
ES:DI -> ???
Return: AL = FFh if ???
ES:DI -> ???
Note: called by NETBIOS.EXE v3.01
--------N-2F7A4E-----------------------------
INT 2F U - Novell LAN Workplace for DOS - RARPD.EXE - INSTALLATION CHECK
AX = 7A4Eh
Return: AX = 7AFFh if installed
SeeAlso: AX=7A4Fh"RARPD"
--------N-2F7A4F-----------------------------
INT 2F U - Novell LAN Workplace for DOS - RARPD.EXE - UNINSTALL
AX = 7A4Fh
Return: AX = 7AFFh if installed
DX,ES destroyed
Note: this call conflicts with SNMP.EXE (both RARPD and SNMP are supplied
with LAN Workplace for DOS!), such that running SNMP will uninstall
RARPD as SNMP checks whether it is already installed!
SeeAlso: AX=7A4Eh"RARPD",AX=7A4Fh/BX=0001h
--------N-2F7A4FBX0001-----------------------
INT 2F U - Novell NetWare - SNMP.EXE - INSTALLATION CHECK
AX = 7A4Fh
BX = 0001h
Return: AX = 7AFFh if installed
Note: this call conflicts with RARPD.EXE (both SNMP and RARPD are supplied
with LAN Workplace for DOS!), such that running SNMP will uninstall
RARPD as SNMP checks whether it is already installed!
SeeAlso: AX=7A4Fh"RARPD",AX=7A4Fh/BX=0002h
--------N-2F7A4FBX0002-----------------------
INT 2F U - Novell NetWare - SNMP.EXE - ???
AX = 7A4Fh
BX = 0002h
Return: AL = status
4Fh if failed
FFh if successful
SeeAlso: AX=7A4Fh/BX=0001h
--------N-2F7A80-----------------------------
INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - ABNORMAL EXIT
AX = 7A80h
Return: nothing
Notes: called on abnormal exit of the NetWare shell to notify other Novell
TSRs that it is unsafe to call the shell in the future; also called
by NETX.VLM when it is unloaded
must be passed through so that all interested programs see the exit
on receiving this call, IPXODI clears an internal pointer to a
default value; Novell's NETBIOS.EXE clears its INT 21h pointer to
0000h:0000h and stops calling it
SeeAlso: AX=7A81h
--------N-2F7A81-----------------------------
INT 2F C - Novell NetWare - SHELL 3.01d BROADCAST - SET SHELL INT 21 HANDLER
AX = 7A81h
CX:DX -> shell's INT 21h entry point
Return: nothing
Notes: the shell calls this function as it loads to allow interested TSRs
and drivers to make a local copy of the shell's entry point
must be passed through so that all interested programs see it
--------N-2F7A85-----------------------------
INT 2F C - Novell NetWare - shell 3.01 - BROADCAST INFORM
AX = 7A85h
CX = broadcast server number
Return: CX = 0000h if broadcast message handled by another program
CX unchanged if broadcast not handled
SeeAlso: AX=7A21h
--------N-2F7A90-----------------------------
INT 2F U - Novell NetWare - NETBIOS.EXE 3+ - INSTALLATION CHECK
AX = 7A90h
Return: AL = 00h if present
BX = ???
CX = PSP segment of NETBIOS resident code
SeeAlso: AX=7AFEh
--------N-2F7AA0-----------------------------
INT 2F U - Personal NetWare - HRMIB - ???
AX = 7AA0h
BX = function
0000h ???
0001h ???
Return: ???
SeeAlso: AX=7A2Fh/BX=0EDCh
--------N-2F7AC1-----------------------------
INT 2F - LAN HiJack - LHR - DISABLE???
AX = 7AC1h
Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
to take over control of a workstation remotely; LHR is the program
run on the slave workstation
SeeAlso: AX=7AC8h,AX=7AC9h,AX=7ACFh
--------N-2F7AC2-----------------------------
INT 2F - LAN HiJack - LHR - SYNCHRONIZE SHIFT STATES???
AX = 7AC2h
Note: sets BIOS keyboard status byte to an internal variable
SeeAlso: AX=7AC3h,AX=7ACFh
--------N-2F7AC3-----------------------------
INT 2F - LAN HiJack - LHR - CLEAR ??? FLAG
AX = 7AC3h
SeeAlso: AX=7AC2h,AX=7ACFh
--------N-2F7AC8-----------------------------
INT 2F - LAN HiJack - LHR - ENABLE FUNCTIONS
AX = 7AC8h
BL = function(s) to enable (see #2595)
SeeAlso: AX=7AC1h,AX=7AC9h,AX=7ACFh
Bitfields for LAN HiJack function(s) to enable/disable:
Bit(s) Description (Table 2595)
0 ???
1 remote keyboard enabled
2 support remote's mouse
3-7 unused
--------N-2F7AC9-----------------------------
INT 2F - LAN HiJack - LHR - DISABLE FUNCTIONS
AX = 7AC9h
BL = function(s) to disable (see #2595)
SeeAlso: AX=7AC1h,AX=7AC8h
--------N-2F7ACA-----------------------------
INT 2F - LAN HiJack - LHJ - ???
AX = 7ACAh
BL = ???
Return: ???
Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
to take over control of a workstation remotely; LHJ is the program
run on the controlling workstation
--------N-2F7ACB-----------------------------
INT 2F - LAN HiJack - LHJ - ???
AX = 7ACBh
BX = ???
Return: ???
Note: this function appears to be related to the keyboard
SeeAlso: AX=7ACCh
--------N-2F7ACC-----------------------------
INT 2F - LAN HiJack - LHJ - ???
AX = 7ACCh
BX = ???
Return: ???
Note: this function appears to be related to the mouse
SeeAlso: AX=7ACBh
--------N-2F7ACFBX0000-----------------------
INT 2F - LAN HiJack - LHR - INSTALLATION CHECK
AX = 7ACFh
BX = 0000h
Return: BX = segment of resident code if installed
Program: LAN HiJack is a NetWare utility by KDS Software which allows a user
to take over control of a workstation remotely; LHR is the program
run on the slave workstation
--------N-2F7AF0-----------------------------
INT 2F - Novell NetWare - DOSNP.EXE v1.30G - INSTALLATION CHECK
AX = 7AF0h
Return: AL = FFh if present
ES = 7AF0h
CX = PSP segment of resident code
--------N-2F7AF1-----------------------------
INT 2F - Novell NetWare - Access Server Driver - INSTALLATION CHECK
AX = 7AF1h
BL = sequence number (01h first driver, 02h second, 00h no driver)
Return: AX <> 7AF1h if present
BH = total number of drivers
---if BL nonzero on entry---
AL = number of ports provided by specified driver
ES:DI -> driver entry point
(see #2596,#2597,#2598,#2599,#2600,#2601,#2602,#2603)
ES:DX -> ID string
SeeAlso: INT 7A/BX=001Ch
(Table 2596)
Call Access Server driver "initialize port" function with:
AH = 01h
AL = port number (00h-0Fh)
ES:BX -> configuration parameter block (see #2609)
interrupts disabled
Return: CF clear if successful
CF set on error
SeeAlso: #2597
(Table 2597)
Call Access Server driver "get port status" function with:
AH = 02h
AL = port number (00h-0Fh)
interrupts disabled
Return: CF clear if successful
BL = transmitter status (see #2606)
BH = receiver status (see #2607)
DL = external status signals (see #2608)
CF set on error
interrupts disabled
SeeAlso: #2596,#2598,#2601
(Table 2598)
Call Access Server driver "get input from port" function with:
AH = 03h
AL = port number (00h-0Fh)
CX = size of data buffer
ES:BX -> buffer for data
interrupts disabled
Return: CF clear if successful
CF set on error
interrupts disabled
CX = number of bytes read
Note: the driver will add a NUL to the buffer when a break signal is detected
SeeAlso: #2598,#2599
(Table 2599)
Call driver "send output data to port" function with:
AH = 04h
AL = port number (00h-0Fh)
CX = number of bytes to send
ES:BX -> buffer containing data
interrupts disabled
Return: CF clear if successful
CF set on error
interrupts disabled
CX = number of bytes actually written
SeeAlso: #2598,#2600
(Table 2600)
Call driver "get I/O character counts" function with:
AH = 05h
AL = port number (00h-0Fh)
interrupts disabled
Return: CF clear if successful
BX = number of bytes pending transmission
CX = number of bytes available for reading
CF set on error
interrupts disabled
SeeAlso: #2598,#2599
(Table 2601)
Call driver "control XON/XOFF" function with:
AH = 06h
AL = port number (00h-0Fh)
DL = new state
(00h software flow control disabled, else enabled)
interrupts disabled
Return: CF clear if successful
CF set on error
interrupts disabled
SeeAlso: #2602
(Table 2602)
Call driver "get error counts and statistics" function with:
AH = 07h
AL = port number (00h-0Fh)
ES:BX -> buffer for statistics (see #2610)
interrupts disabled
Return: CF clear if successful
ES:BX buffer filled
CF set on error
interrupts disabled
SeeAlso: #2603,#2604,#2605
(Table 2603)
Call driver "general request" function with:
AH = 08h
AL = port number (00h-0Fh)
DX = requested operations
bit 0: flush transmit buffers
bit 1: flush receive buffers
bit 4: define XON/XOFF characters
ES:BX -> XON/XOFF characters (see #2611) if DX bit 4 set
interrupts disabled
Return: CF clear if successful
CF set on error
interrupts disabled
(Table 2604)
Call driver "deadman timer management" function with:
AH = 09h
AL = port number (00h-0Fh)
BX = next time interval in seconds (0000h to disable timer)
interrupts disabled
Return: CF clear
interrupts disabled
SeeAlso: #2605
(Table 2605)
Call driver "get buffer sizes" function with:
AH = 0Ah
AL = port number (00h-0Fh)
interrupts disabled
Return: CF clear if successful
BX = size of transmit buffer
CX = size of receive buffer
CF set on error
interrupts disabled
SeeAlso: #2604
(Table 2606)
Values for Access Server transmitter status:
00h uninitialized
01h ready, not transmitting
02h transmitting
03h XOFF received
04h transmitting, buffer full
05h XOFF received and buffer full
(Table 2607)
Values for Access Server receiver status:
00h uninitialized
01h ready
02h receive buffer full, data may have been lost
Bitfields for external status signals:
Bit(s) Description (Table 2608)
7,6 undefined
5 CTS active
4 DSR active
3 DCD active
2,1 undefined
0 ring indicator
Format of Access Server configuration parameter block:
Offset Size Description (Table 2609)
00h BYTE receive baud rate index
00h 50 bps, 01h 75 bps, 02h 110 bps, 03h 134.5 bps,
04h 150 bps, 05h 300 bps, 06h 600 bps, 07h 1200 bps,
08h 1800 bps, 09h 2000 bps, 0Ah 2400 bps, 0Bh 3600 bps,
0Ch 4800 bps, 0Dh 7200 bps, 0Eh 9600 bps, 0Fh 19200 bps,
10h 38400 bps, 11h 57600 bps, 12h 115200 bps
01h BYTE receive bits per character (0=5 bits..3=8 bits)
02h BYTE receive stop bits
03h BYTE receive parity
00h none, 01h odd, 02h even, 03h mark, 04h space
04h BYTE transmit baud rate index (same as receive baud rate)
05h BYTE transmit bits per character (0=5 bits..3=8 bits)
06h BYTE transmit stop bits
07h BYTE transmit parity (same as receive parity)
08h BYTE DTR state (00h off, 01h on)
09h BYTE RTS state (00h off, 01h on)
0Ah BYTE flow control (00h none, 01h XON/XOFF, 02h RTS/CTS, 03h both)
0Bh BYTE break control (00h off, 01h on)
Format of Access Server statistics:
Offset Size Description (Table 2610)
00h BYTE port number
01h BYTE external status signals (see #2608)
02h BYTE transmitter status (see #2606)
03h BYTE receiver status (see #2607)
04h DWORD number of characters received
08h DWORD number of characters transmitted
0Ch WORD input parity errors
0Eh WORD input framing errors
10h WORD lost characters due to hardware overrun
12h WORD lost characters due to data buffer overrun
Note: the counts are not allowed to wrap around; once a count reaches FFFFh
or FFFFFFFFh, it is no longer incremented
Format of Access Server XON/XOFF characters:
Offset Size Description (Table 2611)
00h BYTE 04h (number of bytes following)
01h BYTE transmit XON character
02h BYTE transmit XOFF character
03h BYTE receive XON character
04h BYTE receive XOFF character
--------N-2F7AFE-----------------------------
INT 2F U - Novell NetWare - DOSNP.EXE - INSTALLATION CHECK
AX = 7AFEh
Return: AL = FFh if present
ES = (data???) segment of DOSNP
Program: DOSNP.EXE provides "named pipes" support for DOS workstations running
NetWare
Note: the NetWare shell calls this function and refuses to load if DOSNP is
present
SeeAlso: AX=7A90h
--------N-2F7AFFBX0000-----------------------
INT 2F - Novell NetWare - TBMI v1.1+ - INSTALLATION CHECK / Windows SUPPORT
AX = 7AFFh
BX = 0000h
CX = 4E65h ("Ne")
DX = 7457h ("tW")
ES:DI -> Windows support procedure (see #2612)
Return: AL = FFh if installed
CX = configured sockets (14h)
DS:SI -> data table ???
ES:DI -> IPX far call handler
Notes: for IPX/SPX this call reportedly returns DS:SI pointing to the table
of pointers to service events queue head and tail
this function is also supported by IPXODI; v2.12 does not change DS,
but does set SI to an internal address
SeeAlso: AX=7AFFh/BX=0001h
(Table 2612)
Values Windows support procedure called with:
BP = function
0001h Get ECB
BX = socket number
Return: ES:SI -> ECB or 0000h:0000h if none available
0002h Count Listen ECBs
AX = BX = socket
Return: CX = number of listen ECBs for socket
(must be >= 2 for SPX to work)
0003h ???
0004h Inform task switcher of ECB locations
Note: registers other than those listed above are equal
to the values when IPX was called
Note: the support function will not be called if IPX is called with BX
bit 15 set
--------N-2F7AFFBX0001-----------------------
INT 2F - Novell NetWare - TBMI v1.1+, shell v3.01d - INSTALLATION CHECK???
AX = 7AFFh
BX = 0001h
CX = 4E65h ("Ne")
DX = 7457h ("tW")
Return: AL = FFh if installed
CX = ??? (8000h)
SI = ??? (or -> ???) (0002h and 0007h seen)
ES:DI -> IPX far call handler
ES:DX -> 6-byte data area ???
Note: this function is also supported by IPXODI, but IPXODI v2.12 does not
return ES:DX
SeeAlso: AX=7AFFh/BX=0000h
--------d-2F7F00-----------------------------
INT 2F - Jim Harper's CD-ROM redirector SCSI driver - INSTALLATION CHECK
AX = 7F00h
Return: AL = FFh if installed
SeeAlso: AX=7F01h"Harper",AX=7F02h"Harper",AX=7F03h"Harper"
--------P-2F7F00-----------------------------
INT 2F - PRINDIR v9.0 - INSTALLATION CHECK
AX = 7F00h
Return: AL = FFh if installed
BX = version (BH = major, BL = minor)
CX:DX -> ASCIZ signature "PRINDIR"
Range: AH=7Fh is the default, may be changed at installation time
Note: prior versions of PRINDIR used INT 7C or INT 7A
SeeAlso: AX=7F01h"PRINDIR",AX=7F02h"PRINDIR",AX=7F03h"PRINDIR"
SeeAlso: AX=7F06h"PRINDIR",AX=7F08h,AX=7F0Ah,AX=7F0Ch,AX=7F0Eh,INT 7C"PRINDIR"
--------d-2F7F01-----------------------------
INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO COMMAND
AX = 7F01h
DS:DX -> command record (see #2613)
Return: AL = status
00h successful
else error code
SeeAlso: AX=7F00h"Harper",AX=7F02h"Harper",INT 11/AH=FFh"SDLP"
SeeAlso: INT 21/AX=4402h"ASPI",INT 4F/AX=8100h
Format of CD-ROM redirector command record:
Offset Size Description (Table 2613)
00h BYTE ID
01h 10 BYTEs CDB (Command Descriptor Block) for operation (see #2907,#2908)
0Bh WORD segment of buffer
0Dh WORD offset of buffer
0Fh BYTE status
10h BYTE sense
12h WORD count
--------P-2F7F01-----------------------------
INT 2F - PRINDIR v9.0 - SET CAPTURE DEVICE
AX = 7F01h
DX = capture device (as used by /GET commandline option)
Return: AX = status
0000h successful
FFFFh invalid device
SeeAlso: AX=7F00h"PRINDIR",AX=7F02h"PRINDIR",AX=7F03h"PRINDIR"
SeeAlso: AX=7F05h"PRINDIR"
--------d-2F7F02-----------------------------
INT 2F - Jim Harper's CD-ROM redirector SCSI driver - DO RESET
AX = 7F02h
SeeAlso: AX=7F00h,AX=7F01h
--------P-2F7F02-----------------------------
INT 2F - PRINDIR v9.0 - SET DESTINATION DEVICE
AX = 7F02h
DX = destination device number (as used by /PUT commandline option)
Return: AX = status
0000h successful
FFFFh invalid device number
SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F04h"PRINDIR"
SeeAlso: AX=7F06h"PRINDIR"
--------d-2F7F03-----------------------------
INT 2F - Jim Harper's CD-ROM redirector SCSI driver - UNINSTALL
AX = 7F03h
Return: AL = status
00h successful
01h unable to uninstall
SeeAlso: AX=7F00h
--------P-2F7F03-----------------------------
INT 2F - PRINDIR v9.0 - SET CAPTURE FILENAME
AX = 7F03h
CX:DX -> ASCIZ name of capture file
Return: AX = status
0000h successful
FFFFh name too long
SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F04h"PRINDIR"
SeeAlso: AX=7F05h"PRINDIR",AX=7F07h"PRINDIR"
--------P-2F7F04-----------------------------
INT 2F - PRINDIR v9.0 - SET LOCK FILENAME
AX = 7F04h
CX:DX -> ASCIZ name of lock file
Return: AX = status
0000h successful
FFFFh invalid device number
SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F03h"PRINDIR"
SeeAlso: AX=7F05h,AX=7F06h,AX=7F08h,AX=7F0Ah,AX=7F0Bh
--------P-2F7F05-----------------------------
INT 2F - PRINDIR v9.0 - DUMP CAPTURE BUFFER
AX = 7F05h
Return: AX = status
0000h successful
SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F04h"PRINDIR",AX=7F06h
--------P-2F7F06-----------------------------
INT 2F - PRINDIR v9.0 - SET NORMAL TEXT COLOR
AX = 7F06h
DH = new attribute for normal text
Return: AX = status
0000h successful
SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F05h"PRINDIR",AX=7F07h
--------P-2F7F07-----------------------------
INT 2F - PRINDIR v9.0 - SET HIGHLIGHT TEXT COLOR
AX = 7F07h
DH = new attribute for highlighted text
Return: AX = status
0000h successful
SeeAlso: AX=7F00h"PRINDIR",AX=7F01h"PRINDIR",AX=7F06h"PRINDIR",AX=7F08h
--------P-2F7F08-----------------------------
INT 2F - PRINDIR v9.0 - SET POPUP HOTKEY
AX = 7F08h
DH = new scancode for hotkey
Return: AX = status
0000h successful
SeeAlso: AX=7F00h"PRINDIR",AX=7F05h"PRINDIR",AX=7F09h,AX=7F0Bh,AX=7F0Dh
--------P-2F7F09-----------------------------
INT 2F - PRINDIR v9.0 - SET BYTE COUNTER DISPLAY
AX = 7F09h
DH = new state (00h off, 01h on)
Return: AX = status
0000h successful
SeeAlso: AX=7F00h"PRINDIR",AX=7F07h"PRINDIR",AX=7F08h,AX=7F0Ah,AX=7F0Ch
--------P-2F7F0A-----------------------------
INT 2F - PRINDIR v9.0 - SET FLUSH DELAY
AX = 7F0Ah
DX = number of clock ticks before flushing
Return: AX = status
0000h successful
SeeAlso: AX=7F00h"PRINDIR",AX=7F07h"PRINDIR",AX=7F09h,AX=7F0Bh,AX=7F0Ch
--------P-2F7F0B-----------------------------
INT 2F - PRINDIR v9.0 - SET MINIMUM DUMP SIZE
AX = 7F0Bh
DX = number of kilobytes to accumulate before dumping
Return: AX = status
0000h successful
SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Ch,AX=7F0Dh,AX=7F0Eh
--------P-2F7F0C-----------------------------
INT 2F - PRINDIR v9.0 - SET ECHO STATE
AX = 7F0Ch
DX = new state (00h echo off, 01h echo on)
Return: AX = status
0000h successful
SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Bh,AX=7F0Dh,AX=7F0Eh
--------P-2F7F0D-----------------------------
INT 2F - PRINDIR v9.0 - SHOW POPUP PARAMETER MENU
AX = 7F0Dh
Return: AX = status
0000h successful
else failed
SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Bh,AX=7F0Ch,AX=7F0Eh
--------P-2F7F0E-----------------------------
INT 2F - PRINDIR v9.0 - SUBMIT BYTE TO CURRENT DESTINATION DEVICE
AX = 7F0Eh
DL = byte to send to destination device
Return: AX = status
0000h successful
else failed
SeeAlso: AX=7F00h"PRINDIR",AX=7F0Ah,AX=7F0Bh,AX=7F0Ch,AX=7F0Dh
----------2F7F24-----------------------------
INT 2F - Multiplex - ???
AX = 7F24h
???
Return: ???
Note: called by PC/370, an IBM 370 emulator by Donald S. Higgins
----------2F7F26-----------------------------
INT 2F - Multiplex - ???
AX = 7F26h
???
Return: ???
Note: called by PC/370, an IBM 370 emulator by Donald S. Higgins
--------N-2F8000-----------------------------
INT 2F - EASY-NET - INSTALLATION CHECK
AX = 8000h
Return: AL = 00h not installed
FFh installed
Program: EASY-NET is a shareware two-machine serial-port network
--------N-2F8000-----------------------------
INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK
AX = 8000h
Return: AL = FFh if installed
BX = CS of resident code
CX = ??? (03FCh)
Program: TurboNET is a NetBIOS-based file redirector and server; a
demonstration version may be downloaded from Nanosoft's BBS
SeeAlso: AX=8100h
--------t-2F8000-----------------------------
INT 2F - CS_TSR specification - TSR INSTALLATION CHECK
AX = 8000h
DS:SI -> 4-byte CS_TSR signature (11h 43h 53h 10h)
Return: AL = status
00h no CS_TSR-compliant TSRs installed
01h installed, but signature did not match
FFh installed, signature matches
ES:DI -> resident process block (see #2614) of last installed
TSR (if DS:SI pointed at signature on entry)
Program: the CS_TSR specification is a standardized TSR interface by Compact
Soft group in Kiev, Ukraine
Desc: determine whether any CS_TSR-compliant TSRs are installed on the
selected multiplex number
Range: AH=80h to AH=FFh
SeeAlso: AX=8001h"CS_TSR",AX=8002h"CS_TSR",AX=8003h"CS_TSR"
Format of CS_TSR process block:
Offset Size Description (Table 2614)
00h 4 BYTEs CS_TSR signature 11h 43h 53h 10h
04h BYTE INT 2F multiplex number
05h WORD virtual process handle (unique among loaded TSRs)
07h 2 BYTEs version (binary minor version, then major version)
09h WORD PSP segment of TSR
0Bh DWORD pointer to ASCIZ program name
0Fh 3 BYTEs program creation date (day, month, year)
12h 3 BYTEs process start time (seconds, minutes, hours)
15h 3 BYTEs process start date (day, month, year)
--------F-2F8000DX0000-----------------------
INT 2F - FaxBIOS interface - INSTALLATION CHECK
AX = 8000h
DX = 0000h
DI = 0000h
Return: AL = FFh if installed
DX:DI -> signature "FaxBiosjpc"
Range: AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
SeeAlso: AH=2Ah,AX=80FBh
--------N-2F8001-----------------------------
INT 2F - Nanosoft, Inc. TurboNET server - ???
AX = 8001h
DS:SI -> 16-byte buffer for ???
Return: AH = status
00h successful
01h error (TurboNET busy)
Note: makes NetBIOS calls
--------t-2F8001-----------------------------
INT 2F - CS_TSR specification - GET HANDLE (TSR-SPECIFIC INSTALLATION CHECK)
AX = 8001h
DS:SI -> ASCIZ signature string for desired TSR (see #2615)
Return: BX = process handle or 0000h if specified TSR not installed
ES:DI -> process block for TSR (see #2614) if BX<>0000h
Note: A widely-available copy of ASCII billing itself as "ASCII 2.OO by
Nick Zaikin Jr." is in fact a hacked copy of the Compact Soft
ASCII v4.23 which is identical except for the changed attribution
and version (in fact, some instances of "4.23" were missed); the
hacked copy requires the signature string
"ASCII 2.OO by Nick Zaikin Jr." instead of the unhacked version's
simple signature "ASCII"
SeeAlso: AX=8000h"CS_TSR",AX=8002h"CS_TSR"
(Table 2615)
Values for CS_TSR signature strings:
"ASCII" ASCII, a popup ASCII table with character input
"Halculator" HALC, a 32-bit RPN WYSIWIH calculator with undo and ptr support
"AntiTurbo" AT!, an intelligent system slow-down utility
--------t-2F8002-----------------------------
INT 2F - CS_TSR specification - GET PROCESS BLOCK BY PROCESS HANDLE
AX = 8002h
BX = process handle for TSR (see AX=8001h"CS_TSR")
Return: ES:DI -> process block for specified TSR (see #2614)
unchanged if no match for process handle
Note: This function is used to allocate a process handle when the TSR
installs itself, by setting ES:DI to point at something other than
a CS_TSR process block's signature string and iterating through the
possible process handles (0001h to FFFFh) until ES:DI is returned
unchanged
SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8003h"CS_TSR"
--------t-2F8003-----------------------------
INT 2F - CS_TSR specification - CUSTOM SUBFUNCTION
AX = 8003h
BX = process handle for TSR (see AX=8001h"CS_TSR")
other registers vary by TSR
Return: vary by TSR, unchanged if not supported
Program: the CS_TSR specification is a standardized TSR interface by Compact
Soft group in Kiev, Ukraine
SeeAlso: AX=8000h"CS_TSR",AX=8001h"CS_TSR",AX=8002h"CS_TSR"
--------F-2F80FB-----------------------------
INT 2F - FaxBIOS interface - COMMAND SUBMISSION
AX = 80FBh
BX = function number (see #2616)
DX:DI -> command buffer
(see #2618,#2621,#2622,#2623,#2624,#2625,#2630,#2636,#2643)
Return: AL = FFh if submitted OK
CX = result code (see #2617)
Range: AH=80h to AH=FFh, selected by scanning multiplex numbers for signature
SeeAlso: AX=8000h"FaxBIOS",AX=CBDDh
(Table 2616)
Values for FaxBIOS function number:
0001h SYS_LOGIN
0002h SYS_LOGOUT
0003h SYS_GET_FAXAPP_INFO
0004h STAT_IO_GET
0005h STAT_FAXBIOS_GET
0006h PDIR_OPEN
0007h PDIR_CLOSE (see #2626)
0008h PDIR_READ_PERSON (see #2627)
0009h PDIR_PARTIAL_READ
000Ah PDIR_READ_GROUP
000Bh PDIR_READ_MEMBER_LIST
000Ch PDIR_WRITE_PERSON
000Dh PDIR_WRITE_GROUP
000Eh PDIR_DELETE_PERSON
000Fh PDIR_DELETE_GROUP
0010h PDIR_READ_GROUP_LIST
0011h PDIR_IN_GROUP
0012h PDIR_OUT_GROUP
0013h SCHED_OPEN (see #2628)
0014h SCHED_ADD_DEST (see #2629)
0015h SCHED_ADD_FILE (see #2630)
0016h SCHED_SET_PARAMS (see #2631)
0017h SCHED_CANCEL (see #2628)
0018h SCHED_CLOSE (see #2632)
0019h SLOG_OPEN (see #2633)
001Ah SLOG_CLOSE (see #2633)
001Bh SLOG_SHORT_ENV_STAT
001Ch SLOG_LONG_ENV_STAT
001Dh SLOG_DEST_STAT
001Eh SLOG_FILE_STAT
001Fh SLOG_CANCEL_ENV
0020h RLOG_OPEN (see #2633)
0021h RLOG_CLOSE (see #2633)
0022h RLOG_READ
0023h GRAPH_GET_FILE_TYPE (see #2634)
0024h GRAPH_EXPORT_FILE
0025h GRAPH_GET_LAYOUT_INFO
0026h GRAPH_CREATE_FILE (see #2635)
0027h GRAPH_CLOSE_FILE (see #2636)
0028h GRAPH_CREATE_PAGE (see #2637)
0029h GRAPH_WRITE (see #2638)
002Ah GRAPH_END_PAGE
002Bh GRAPH_OPEN_FILE (see #2639)
002Ch GRAPH_GOTO_PAGE (see #2640)
002Dh GRAPH_READ (see #2641)
002Eh IOCTL_GET
002Fh IOCTL_SET
0030h IOCTL_ANSWER_FAX (see #2642)
0031h IOCTL_DIAL (see #2643)
(Table 2617)
Values for FaxBIOS result code:
0000h successful
0001h not prepared or servicing another client (busy)
0002h call failed due to sharing (LOCKED)
0003h logged-in client limit reached (FULL)
0004h transport denied (TRANSPORT_DENIED)
0005h not implemented (NOT_IMPLEMENTED)
0006h aborted while in progress (ABORTED)
0007h permissions denied (PERMISSION_DENIED)
0008h requested data is no longer valid (NO_LONGER_VALID)
0080h unspecified system error occurred
0081h an internal file was not found
0082h an internal file could not be created
0083h an internal file could not be opened
0084h an internal file could not be closed
0085h error occurred writing to an internal file
0086h error occurred reading from an internal file
0087h bad or corrupted file encountered
0088h an access violation occurred
0089h an internal file is empty
008Ah insufficient memory to process request
008Bh FaxBIOS was unable to issue a handle
008Ch an error internal to FaxBIOS occurred
008Dh no room on disk
0100h unspecified error accessing client file
0101h file not found
0102h creation fault
0103h open fault
0104h close fault
0105h write fault
0106h read fault
0107h file corrupted
0108h access violation
0109h empty file
0200h unspecified argument error
0201h bad function
0202h bad option
0203h bad structure size
0204h bad buffer size
0205h bad client ID
0300h unspecified error with token
0301h cover sheet token was invalid
0302h logo token was invalid
0303h signature token was invalid
0304h font token was invalid
0305h phone directory token was invalid
0306h outbound route token was invalid
0307h priority token was invalid
0308h sort token was invalid
0309h billing token was invalid
0400h unspecified handle error
0401h bad Phone Directory handle
0402h bad scheduling handle
0403h bad read send log handle
0404h bad read receive log handle
0405h bad graphics handle
0500h data passed in structure was invalid
0501h name field given is invalid
0502h phone number given is invalid
0503h poll code submitted is invalid
0504h file type constant was invalid
0505h BFT constant not defined or supported
0506h resolution not defined or supported
0507h page length not defined or supported
0508h page width not defined or supported
0509h date & time requested are ridiculous
050Ah Subject text was not an ASCIZ string
050Bh From text was not an ASCIZ string
050Ch requested envelope ID was not found
050Dh requested envelope ID is not valid
050Eh envelope requested was not found
050Fh destination index is out of range
0510h file index is out of range
0511h index into receive log is out of range
0512h file name specified was incomplete or invalid
0513h page selected was out of range
0514h bit width more than byte width
0515h mode for open is not defined
0516h person index is out of range
0517h person ID is out of range
0518h group index out of range or invalid
0519h group ID out of range or invalid
051Ah range of indices to read is invalid
051Bh group name given is invalid
051Ch field_to_use is badly specified
051Dh predicate invalid for field specified
0600h unspecified client procedure error
0601h device of interest is not present
0602h device of interest has been removed
0603h device of interest is not responding
0604h device of interest is disabled
0605h could not dial because device was in use
0606h maximum destination limit exceeded
0607h maximum file limit exceeded
0608h scheduling closed with no destination
0609h scheduling closed with no files or poll
060Ah scheduling closed with no parameters specified
060Bh file type specified does not match file
060Ch file type specified is not supported
060Dh file submitted is not exportable
060Eh file type specified is not imageable
060Fh error converting file
0610h envelope could not be cancelled
0611h Phone Directory is full
0612h record is already in the Phone Directory
0613h selected group in Phone Directory is full
0614h person is already in the group
0615h person is not in the group & cannot be removed
0616h a graphics file to be created already exists
0617h a graphics file to be read is empty
0618h GRAPH_CREATE_PAGE called before GRAPH_END_PAGE
0619h graph read or write attempted without goto or create
061Ah graph page contains no data
061Bh Phone Directory is already open for this client
061Ch schedule log is already open for this client
061Dh receive log is aready open for this client
061Eh Phone Directory function requires write mode
0800h denied exclusive use of the API
Format of FaxBIOS SYS_LOGIN command buffer:
Offset Size Description (Table 2618)
00h WORD structure size
02h WORD function number
04h WORD return code
06h WORD client ID
08h WORD API Major Version
0Ah WORD API Minor Version
0Ch DWORD reserved for manufacturer's use
10h 22 BYTEs manufacturer's ID
26h WORD highest possible device number
28h WORD maximum destinations per envelope
2Ah WORD maximum files per envelope
2Ch WORD FaxBIOS capabilities (see #2619)
2Eh DWORD T.30 capabilities (see #2620)
32h WORD IPC handle
34h DWORD amount of memory needed to load
38h WORD scope (00h for public, nonzero for private)
3Ah 6 BYTEs future expansion
40h WORD structure size
Bitfields for FaxBIOS capabilities:
Bit(s) Description (Table 2619)
0 transmit supported
1 receive supported
2 IOCTL supported
3 IOCTL_DIAL supported
4 IOCTL_ANSWER_FAX supported
5 manual transmit supported
6 optional phone services supported
7 canonical phone objects
8 seam with next supported
Bitfields for T.30 capabilities:
Bit(s) Description (Table 2620)
0 low vertical resolution (minimum)
1 high vertical resolution
2 page width 107mm (4.21 in)
3 page width 151mm (5.91 in)
4 page width 215mm (8.46 in) (minimum)
5 page width 255mm (10.04 in)
6 page width 303mm (11.93 in)
7 unused
8 page length 297mm (11.69 in) (minimum)
9 page length 364mm (14.33 in)
10 page length 279mm (11 in)
11 page length unlimited
12 Group 4 resolution 300x300
13 Group 4 resolution 400x400
14 able to respond to poll from remote
15 able to poll remote
16 binary file transfer supported
Format of FaxBIOS SYS_LOGOUT command buffer:
Offset Size Description (Table 2621)
00h WORD structure size
02h WORD function number
04h WORD return code
06h WORD client ID
08h DWORD client tag (for client's internal use)
0Ch 6 BYTEs future expansion
12h WORD structure size
Format of FaxBIOS SYS_GET_FAXAPP_INFO command buffer:
Offset Size Description (Table 2622)
00h 12 BYTEs common data (see #2621)
0Ch 80 BYTEs FaxBIOS data
5Ch 80 BYTEs default cover
ACh 80 BYTEs default logo
FCh 80 BYTEs default signature
14Ch 80 BYTEs default font 10
19Ch 80 BYTEs default font 165
1ECh 80 BYTEs default user font
23Ch 80 BYTEs default Pdir
28Ch 80 BYTEs default sort
2DCh 10 BYTEs default bill
2E6h 10 BYTEs default route
2F0h 40 BYTEs default cover sheet form
318h 34 BYTEs valid dial characters
33Ah 6 BYTEs local country code
340h 6 BYTEs local city or area code
346h 6 BYTEs future expansion
34Ch WORD structure size
Format of FaxBIOS STAT_IO_GET command buffer:
Offset Size Description (Table 2623)
00h 12 BYTEs common data (see #2621)
0Ch WORD device number
0Eh WORD current activity
10h WORD number of rings (if ringing)
12h WORD number of fascimiles transmitted
14h WORD number of fascimiles received
16h WORD status of last transmission
18h WORD envelope number of last transmission
1Ah WORD index of last destination in envelope
1Ch WORD status of last reception
1Eh WORD current page (if session in progress)
20h 80 BYTEs current file
70h 104 BYTEs remote number
D8h 20 BYTEs last name
ECh 20 BYTEs first name
100h 32 BYTEs company name
120h 32 BYTEs notes
140h WORD current envelope ID (if sending)
142h WORD total pages in transmission (if sending)
144h 6 BYTEs future expansion
14h WORD structure size
Format of FaxBIOS STAT_FAXBIOS_GET command buffer:
Offset Size Description (Table 2624)
00h 12 BYTEs common data (see #2621)
0Ch WORD status ID
0Eh WORD currenty FaxBIOS function number
10h WORD current Client ID being serviced
12h WORD number of things to do
14h WORD number of them done
16h WORD number of pages to do (if any)
18h WORD number of them done
1Ah WORD number of files to do
1Ch WORD number of them done
1Eh 80 BYTEs current File
6Eh WORD 0 if all devices are idle
70h WORD number of fascimiles transmitted
72h WORD number of fascimiles received
74h WORD status of last transmission in system
76h WORD envelope ID of last transmission
78h WORD index of last destination in envelope
7Ah WORD status of last reception in system
7Ch DWORD time of next transmission
80h 6 BYTEs future expansion
86h WORD structure size
Format of FaxBIOS PDIR_OPEN command buffer:
Offset Size Description (Table 2625)
00h 12 BYTEs common data (see #2621)
0Ch 80 BYTEs Phone Directory token
5Ch 80 BYTEs sort order token
ACh WORD open Mode (0 = read, 1 = write)
AEh WORD Phone Directory handle
B0h WORD number of people
B2h WORD number of groups
B4h WORD bitmap of fields supported by partial read
B6h 6 BYTEs future expansion
BCh WORD structure size
Format of FaxBIOS PDIR_CLOSE command buffer:
Offset Size Description (Table 2626)
00h 12 BYTEs common data (see #2621)
0Ch WORD Phone Directory handle
0Eh 6 BYTEs future expansion
14h WORD structure size
Format of FaxBIOS PDIR_READ_PERSON command buffer:
Offset Size Description (Table 2627)
00h 12 BYTEs common data (see #2621)
0Ch WORD Phone Directory handle
0Eh WORD retrieve by index
10h WORD person ID or index
12h WORD how many groups person is in
14h WORD person ID
16h 20 BYTEs last name
2Ah 20 BYTEs first name
3Eh 32 BYTEs company
5Eh 32 BYTEs notes
7Eh 6 BYTEs FAX country code
84h 6 BYTEs FAX city/area code
8Ah 14 BYTEs FAX local number
98h 14 BYTEs FAX extension
A6h 24 BYTEs reserved
BEh 6 BYTEs voice country code
C4h 6 BYTEs voice city/area code
CAh 14 BYTEs voice local number
D8h 14 BYTEs voice extension
E6h 24 BYTEs reserved
FEh 10 BYTEs outbound routing information
108h 10 BYTEs billing information, credit card etc
112h DWORD remote FAX capabilities
116h 21 BYTEs T.30 poll code of FAX number
12Bh 15 BYTEs reserved
13Ah 6 BYTEs future expansion
140h WORD structure size
Format of FaxBIOS SCHED_OPEN, SCHED_CANCEL command buffer:
Offset Size Description (Table 2628)
00h 12 BYTEs common data (see #2621)
0Ch WORD scheduler handle
0Eh 6 BYTEs future expansion
14h WORD structure size
Format of FaxBIOS SCHED_ADD_DEST command buffer:
Offset Size Description (Table 2629)
00h 12 BYTEs common data (see #2621)
0Ch WORD schedule handle
0Eh WORD device number if manual send wanted
10h WORD non-zero if poll desired
12h WORD person ID
14h 20 BYTEs last name
28h 20 BYTEs first name
3Ch 32 BYTEs company
5Ch 32 BYTEs notes
7Ch 6 BYTEs FAX country code
82h 6 BYTEs FAX city/area code
88h 14 BYTEs FAX local number
96h 14 BYTEs FAX extension
A4h 24 BYTEs reserved
BCh 6 BYTEs voice country code
C2h 6 BYTEs voice city/area code
C8h 14 BYTEs voice local number
D6h 14 BYTEs voice extension
E4h 24 BYTEs reserved
FCh 10 BYTEs outbound routing information
106h 10 BYTEs billing information, credit card etc
110h DWORD remote FAX capabilities
114h 21 BYTEs T.30 poll code of FAX number
129h 15 BYTEs reserved
138h 6 BYTEs future expansion
13Eh WORD structure size
SeeAlso: #2630
Format of FaxBIOS SCHED_ADD_FILE command buffer:
Offset Size Description (Table 2630)
00h 12 BYTEs common data (see #2621)
0Ch WORD schedule handle
0Eh WORD file type
0000h unidentified
0001h native file format
0002h ASCII
0003h FaxBIOS Tiff Class F
10h 80 BYTEs file name
60h 80 BYTEs font token
B0h WORD conversion options bitmap
B2h WORD resolution
0000h standard 98 lines per inch, 204 dpi
0001h fine 196 lines per inch, 204 dpi
0002h Group4 300 dpi
0003h Group4 400 dpi
B4h WORD page length
0000h 279 mm (11 in)
0001h 297 mm (11.69 in)
0002h 364 mm (14.33 in)
0003h unlimited
B6h WORD page width
0000h 215 mm (8.46 in)
0001h 255 mm (10.04 in)
0002h 303 mm (11.93 in)
0003h 151 mm (5.91 in)
0004h 107 mm (4.21 in)
B8h WORD binary file transfer specification
0000h only as FAX
0001h only as file (for non-faxable files)
0002h as file when possible else FAX
BAh WORD seam flag (nonzero for seam with next)
BCh WORD delete flag (nonzero to delete when done)
BEh 6 BYTEs future expansion
C4h WORD structure size
SeeAlso: #2629,#2631
Format of FaxBIOS SCHED_SET_PARAMS command buffer:
Offset Size Description (Table 2631)
00h 12 BYTEs common data (see #2621)
0Ch WORD scheduler handle
0Eh DWORD time to send
10h 10 BYTEs priority token
1Ch 80 BYTEs logo file token
6Ch 80 BYTEs signature file token
BCh 80 BYTEs cover page token
10Ch 40 BYTEs Subject text
134h 40 BYTEs From text
15Ch WORD user ID
15Eh 6 BYTEs future expansion
164h WORD structure size
SeeAlso: #2629,#2630,#2632
Format of FaxBIOS SCHED_CLOSE command buffer:
Offset Size Description (Table 2632)
00h 12 BYTEs common data (see #2621)
0Ch WORD scheduler handle
0Eh WORD envelope ID generated
10h 6 BYTEs future expansion
16h WORD structure size
SeeAlso: #2631
Format of FaxBIOS SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer:
Offset Size Description (Table 2633)
00h 12 BYTEs common data (see #2621)
0Ch WORD log handle
0Eh WORD number of entries
10h 6 BYTEs future expansion
16h WORD structure size
Format of FaxBIOS GRAPH_GET_FILE_TYPE command buffer:
Offset Size Description (Table 2634)
00h 12 BYTEs common data (see #2621)
0Ch 80 BYTEs filename
5Ch WORD file type
0000h unidentified
0001h native file format
0002h ASCII
0003h FaxBIOS Tiff Class F
5Eh WORD bitmap of supported capabilities
60h 6 BYTEs future expansion
66h WORD structure size
SeeAlso: #2635,#2636
Format of FaxBIOS GRAPH_CREATE_FILE command buffer:
Offset Size Description (Table 2635)
00h 12 BYTEs common data (see #2621)
0Ch 80 BYTEs filename
5Ch WORD graph handle
5Eh 6 BYTEs future expansion
64h WORD structure size
SeeAlso: #2634,#2636,#2637
Format of FaxBIOS GRAPH_CLOSE_FILE, GRAPH_END_PAGE command buffer:
Offset Size Description (Table 2636)
00h 12 BYTEs common data (see #2621)
0Ch WORD graph handle
0Eh 6 BYTEs future expansion
14h WORD structure size
SeeAlso: #2635,#2637
Format of FaxBIOS GRAPH_CREATE_PAGE command buffer:
Offset Size Description (Table 2637)
00h 12 BYTEs common data (see #2621)
0Ch WORD graph handle
0Eh WORD resolution
10h WORD page width
12h 6 BYTEs future expansion
18h WORD structure size
SeeAlso: #2635,#2636,#2638
Format of FaxBIOS GRAPH_WRITE_PAGE command buffer:
Offset Size Description (Table 2638)
00h 12 BYTEs common data (see #2621)
0Ch WORD graph handle
0Eh DWORD pointer to storage for image
12h WORD band height in lines
14h WORD width of page image in bytes
16h WORD facsimile page width constant
18h WORD width of page image in bits
1Ah WORD number of bytes actually processed
1Ch 6 BYTEs future expansion
22h WORD structure size
SeeAlso: #2637,#2639
Format of FaxBIOS GRAPH_OPEN_FILE command buffer:
Offset Size Description (Table 2639)
00h 12 BYTEs common data (see #2621)
0Ch 80 BYTEs filename
5Ch WORD file type
5Eh WORD graph handle
60h WORD number of pages
62h 6 BYTEs future expansion
68h WORD structure size
SeeAlso: #2638,#2640
Format of FaxBIOS GRAPH_GOTO_PAGE command buffer:
Offset Size Description (Table 2640)
00h 12 BYTEs common data (see #2621)
0Ch WORD graph handle
0Eh WORD page number
10h WORD vertical resolution
12h WORD page width
14h DWORD page length
18h 6 BYTEs future expansion
1Eh WORD structure size
SeeAlso: #2638,#2639,#2641
Format of FaxBIOS GRAPH_READ_PAGE command buffer:
Offset Size Description (Table 2641)
00h 12 BYTEs common data (see #2621)
0Ch WORD graph handle
0Eh DWORD pointer to storage for image
12h WORD band height in lines
14h WORD width of page image in bytes
16h WORD facsimile page width constant
18h WORD width of page image in bits
1Ah WORD number of bytes actually processed
1Ch 6 BYTEs future expansion
22h WORD structure size
Format of FaxBIOS IOCTL_ANSWER_FAX command buffer:
Offset Size Description (Table 2642)
00h 12 BYTEs common data (see #2621)
0Ch WORD device number
0Eh 6 BYTEs future expansion
14h WORD structure size
SeeAlso: #2643
Format of FaxBIOS IOCTL_DIAL command buffer:
Offset Size Description (Table 2643)
00h 12 BYTEs common data (see #2621)
0Ch WORD device number
0Eh 6 BYTEs country code
14h 6 BYTEs city or area code
1Ah 14 BYTEs local number
28h 14 BYTEs extension
36h 14 BYTEs reserved
4Eh 6 BYTEs future expansion
54h WORD structure size
SeeAlso: #2642
--------N-2F8100-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK
AX = 8100h
Return: AL = FFh if installed
Program: TurboNET is a NetBIOS-based file redirector and server; a
demonstration version may be downloaded from Nanosoft's BBS
SeeAlso: AX=8000h"TurboNET"
--------N-2F8101-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
AX = 8101h
Return: AL = ???
DL = ???
--------N-2F8102-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
AX = 8102h
Return: AL = ???
DL = ???
--------N-2F8103-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME???
AX = 8103h
ES:DI -> 17-byte buffer
Return: buffer filled
--------N-2F8104-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
AX = 8104h
BL = ???
BH = ???
CX = ???
DX = ???
DS:SI -> 16-byte buffer containing ???
Return: AL = 00h ???
--------N-2F8105-----------------------------
INT 2F U - Nanosoft, Inc. TurboNET redirector - ???
AX = 8105h
CX = ??? (don't change current value if 0000h)
DX = ??? (don't change current value if 0000h)
Return: AL = 00h successful
--------s-2F8200-----------------------------
INT 2F - RESPLAY - SAMPLE/PLAYBACK
AX = 8200h
DX:DI -> start of sample space
CX:BX = length in bytes
Return: AX = status (see #2644)
Program: RESPLAY is a freeware sound sampling/playback utility by Mark J. Cox
SeeAlso: AX=8201h"RESPLAY",AX=8210h
(Table 2644)
Values for RESPLAY status:
1000h successful
2000h not initialized (see AX=8210h)
other RESPLAY not installed
--------G-2F8200-----------------------------
INT 2F U - Nanosoft, Inc. CAPDOS - INSTALLATION CHECK
AX = 8200h
Return: AL = FFh if installed
Program: CAPDOS is a TSR by Nanosoft, Inc. which allows INT 21h calls to be
captured and recorded for later analysis
SeeAlso: AX=8100h,AX=8201h"CAPDOS",AX=8202h"CAPDOS",AX=8203h"CAPDOS"
SeeAlso: AX=8204h"CAPDOS"
--------s-2F8201-----------------------------
INT 2F - RESPLAY - INSTALLATION CHECK
AX = 8201h
Return: AX = 7746h if installed
SeeAlso: AX=8202h"RESPLAY",AX=8210h
--------G-2F8201-----------------------------
INT 2F - Nanosoft, Inc. CAPDOS - CLEAR QUEUE
AX = 8201h
Note: resets queue of captured INT 21 calls
SeeAlso: AX=8200h"CAPDOS"
--------s-2F8202-----------------------------
INT 2F - RESPLAY - UNINSTALL
AX = 8202h
Return: AX = status
1000h successful
SeeAlso: AX=8201h"RESPLAY",AX=8210h"RESPLAY"
--------G-2F8202-----------------------------
INT 2F - Nanosoft, Inc. CAPDOS - START COLLECTION
AX = 8202h
SeeAlso: AX=8200h"CAPDOS",AX=8203h"CAPDOS"
--------G-2F8203-----------------------------
INT 2F - Nanosoft, Inc. CAPDOS - STOP COLLECTION
AX = 8203h
SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8204h"CAPDOS"
--------G-2F8204-----------------------------
INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE PARAMETERS
AX = 8204h
Return: AH = flag: queue wrapped if nonzero
BX = index of current start of queue
CX = size of queue in entries
SeeAlso: AX=8200h"CAPDOS",AX=8202h"CAPDOS",AX=8205h"CAPDOS"
--------G-2F8205-----------------------------
INT 2F - Nanosoft, Inc. CAPDOS - GET QUEUE ITEM
AX = 8205h
BX = queue item number
Return: AX,BX,CX,DX,SI,DI,DS,ES as on entry to captured DOS call
SeeAlso: AX=8200h"CAPDOS",AX=8204h"CAPDOS"
--------s-2F8210-----------------------------
INT 2F - RESPLAY - INITIALIZE
AX = 8210h
BL = sound device number (see #2645)
BH = sample rate in multiples of 250 Hz (14h to A0h)
CL = direction
00h playback
01h sample
Return: AX = status (see #2644)
SeeAlso: AX=8200h"RESPLAY",AX=8220h"MODRES"
(Table 2645)
Values for RESPLAY sound device:
00h printer port LPT1
01h printer port LPT2
02h prototype board at I/O address 0300h
03h printer port (alternative LPT1)
04h internal speaker
--------s-2F8220-----------------------------
INT 2F - MODRES - PLAY MODULE
AX = 8220h
DX:CX -> MODPARM structure (see #2646)
Return: AX = status
5722h succesful
2000h parameters out of range
other MODRES not installed
SeeAlso: AX=8221h,AX=8223h,AX=8225h,AX=8227h,AX=8200h"RESPLAY"
Format of MODPARM Structure:
Offset Size Description (Table 2646)
00h WORD signature 504Dh ("MP" = Modparm)
02h BYTE output device (see #2648 at INT 2F/AX=8221h)
03h WORD segment of start of main module (pattern) data
05h 31 WORDs segment of start of sample numbers 1-31
43h BYTE pattern at which to start playing (00h to 7Fh)
44h BYTE function
00h play from pattern [offset 43h] until end of the song
01h play indicated pattern [offset 43h] only
45h BYTE Machine speed
00h 10-12Mhz
01h 12-25Mhz (default)
02h 25Mhz+
03h mix speed 10kHz (fast 8Mhz machines)
04h mix speed 12kHz (10Mhz machines)
05h mix speed 13kHz
06h mix speed 8kHz (test for 8Mhz machines)
46h BYTE allow >64k sample playing
80h MOD has samples >64k in it
else all samples in MOD are <64k
Notes: Main module data and all samples must start on segment boundaries.
In version 2.00 (ONLY) this function carries on playing (works in
the background)
SeeAlso: #2647
--------s-2F8221-----------------------------
INT 2F - MODRES - INSTALLATION CHECK
AX = 8221h
Return: AX = status
5722h successful
other MODRES not installed
BX = BCD version number (BH = major, BL = minor)
DX:CX -> Output Device structure (read-only) (see #2647)
SeeAlso: AX=8220h,AX=8222h,AX=8225h,AX=8227h
Format of Output Device structure [array]:
Offset Size Description (Table 2647)
00h 20 BYTEs ASCIZ name of the output device
(end of list if first char is FFh)
14h WORD apparently always FFFFh
16h WORD 0000h if output device not available
else first I/O port for the output device
18h WORD second I/O port for the output device (for example
if it is stereo)
000oh if only one port used or device is not available
1Ah 7 BYTEs ???
SeeAlso: #2646,#2648
(Table 2648)
Values for MODRES v1.52 output device index:
00h PC speaker
01h D/A Converter on LPT1
02h D/A Converter on LPT2
03h D/A Converter on LPT3
04h D/A Converter on LPT4
05h D/A Converter on LPT1&LPT2 (stereo)
06h D/A Converter on LPT1&LPT2 (mono)
07h Sound Blaster (port 02x0h)
08h User Defined D/A (mono)
09h User Defined D/A (stereo)
0Ah Stereo-on-1
0Bh Disney SS su LPT1
0Ch Disney SS su LPT2
0Dh Disney SS su LPT3
0Eh Disney SS su LPT4
Note: this list may vary between versions of MODRES
--------s-2F8222-----------------------------
INT 2F - MODRES - UNINSTALL
AX = 8222h
Return: AX = code segment of the program
Note: this function does not release the TSRs memory; the caller must do so
SeeAlso: AX=8220h,AX=8221h,AX=8223h
--------s-2F8223-----------------------------
INT 2F - MODRES - PLAY SAMPLE
AX = 8223h
DX:CX -> SAMPARM structure (see #2649)
Return: AX = status
5722h succesful
2000h parameters out of range
other MODRES not installed
SeeAlso: AX=8221h,AX=8224h,AX=8225h,AX=8226h
Format of SAMPARM Structure:
Offset Size Description (Table 2649)
00h WORD signature 5053h ("SP" = SAMPARM)
02h WORD segment of start of sample to play
04h WORD length of sample (IN WORD)
06h BYTE output device (see #2648 at INT 2F/AX=8221h)
07h WORD pitch to play (see #2650)
09h BYTE volume (from 00h to 40h)
0Ah WORD loop start
0Ch WORD loop length
0Eh BYTE machine speed (see INT 2F/AX=8220h)
SeeAlso: #2646
(Table 2650)
Values for Pitch to play::
C 0 is 06B0h
C#0 is 06B0h / 2^(1/12)
D 0 is (06B0h / 2^(1/12)) / 2^(1/12)
...
Note: C 1 is 06B0h / 2
C 2 is 06B0h / 4
etc.
SeeAlso: #2649
--------s-2F8224-----------------------------
INT 2F - MODRES - ???
AX = 8224h
DX:CX -> ???
Return: ???
SeeAlso: AX=8221h,AX=8223h,AX=8224h
--------s-2F8225-----------------------------
INT 2F - MODRES v2.00+ - GET LOCATION IN MOD
AX = 8225h
Return: AL = status
00h playing
01h reached end or stopped
AH = speed of MOD
BX = position within pattern 0000h-0400h
CL = position within the song (track number)
SeeAlso: AX=8220h,AX=8221h,AX=8223h,AX=8226h
--------s-2F8226-----------------------------
INT 2F - MODRES v2.00+ - STOP PLAYING
AX = 8226h
Return: AX = status
5722h succesful
other MODRES not installed
Desc: stops playing the MOD file before performing critical operations such
as disk accesses
SeeAlso: AX=8220h,AX=8221h,AX=8223h,AX=8225h,AX=8227h
--------s-2F8227-----------------------------
INT 2F - MODRES - CONFIGURE
AX = 8227h
BX = function
0001h set default playing speed (06h)
0002h select output device
CL = output device (see #2648 at INT 2F/AX=8221h)
Return: AX = status
5722h succesful
2000h parameters out of range
other MODRES not installed
Note: function 0001h should be called every time a new module is loaded
SeeAlso: AX=8220h,AX=8221h,AX=8222h,AX=8223h
----------2F86-------------------------------
INT 2F U - ???
AH = 86h
AL = function (at least 06h and 07h)
???
Return: ???
Note: called by Codeview for Windows
SeeAlso: AH=44h
--------U-2F8900-----------------------------
INT 2F - WHOA!.COM - INSTALLATION CHECK
AX = 8900h
Return: AL = state
00h not installed
FFh installed
Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
SeeAlso: AX=8901h,AX=8902h
--------U-2F8901-----------------------------
INT 2F - WHOA!.COM - UNINSTALL
AX = 8901h
Return: AL = status
FDh successful
FEh error
SeeAlso: AX=8900h
--------U-2F8902-----------------------------
INT 2F - WHOA!.COM - SET DELAY COUNT
AX = 8902h
BX = delay count (larger values slow system down more)
Return: AL = status
FDh successful
FEh error
Program: WHOA!.COM is a system slow-down utility by Brad D Crandall
SeeAlso: AX=8900h
--------U-2F9000-----------------------------
INT 2F U - RAID - INSTALLATION CHECK
AX = 9000h
Return: AL = FFh if installed
Program: RAID (Resident AID) is a TSR utility program by Ross Neilson
Wentworth that resides mostly in EMS
--------U-2F9001-----------------------------
INT 2F U - RAID - GET ???
AX = 9001h
Return: DX:AX -> ???
SeeAlso: AX=9000h
--------U-2F9002-----------------------------
INT 2F U - RAID - GET RESIDENT SEGMENT
AX = 9002h
Return: AX = segment of resident (conventional memory) portion
SeeAlso: AX=9000h
--------U-2F9003-----------------------------
INT 2F U - RAID - UNINSTALL
AX = 9003h
Return: ???
SeeAlso: AX=9000h
--------U-2F9004-----------------------------
INT 2F U - RAID - GET ???
AX = 9004h
Return: AX = first available paragraph past end of resident portion???
CX destroyed
SeeAlso: AX=9000h
--------e-2F92-------------------------------
INT 2F - Network Courier E-Mail - API
AH = 92h
AL = function
00h installation check
01h uninstall
02h pop down MICRO.EXE notification window
03h ???
04h ???
05h ???
Return: ???
Program: The Network Courier is an electronic mail package by Consumers
Software of Vancouver, BC which was bought by Microsoft in 1991 and
renamed Microsoft Mail v3.0.
SeeAlso: AX=9400h,AX=9401h,AX=9402h,AH=9Ch
Index: installation check;Network Courier E-Mail
Index: uninstall;Network Courier E-Mail
--------R-2F9200-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - BUG
AX = 9200h
Program: DRIVEMAP is a redirector which allows drives on computers connected
over the parallel or serial ports to appear as local drives
BUG: jumps to data because jump table entry is 0000h
Note: DRIVEMAP returns AX=FFFFh if not a valid function number in AL
--------R-2F9201-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - CHECK IF MAPPED DRIVE
AX = 9201h
DL = drive number (01h = A:, etc.)
Return: AL = 92h if mapped drive
AH may be destroyed (v8.0 DRIVEMAP returns AX=0000h if not mapped)
SeeAlso: AX=9204h,AX=920Bh
--------R-2F9202-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - UNINSTALL
AX = 9202h
BX = caller's CS
Return: AX = status
0000h failed
nonzero successful
SeeAlso: AX=9204h
--------R-2F9203-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - GET VERSION
AX = 9203h
Return: AH = major version
AL = minor version
CX = segment of resident code
Note: the DRIVEMAP included with PC Tools v8.0 is version 1.00
SeeAlso: AX=9204h,INT 16/AX=FF70h
--------R-2F9204-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - INSTALLATION CHECK
AX = 9204h
Return: AX = 9200h if installed
BL = ???
CX = segment of resident code
Program: DRIVEMAP is a redirector which allows drives on computers connected
over the parallel or serial ports to appear as local drives
SeeAlso: AX=9201h,AX=9202h,AX=9203h
--------R-2F9205-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - SET ???
AX = 9205h
BX = ??? to set
Return: CX = new value of ???
--------R-2F9206-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 9206h
???
Return: ???
--------R-2F9207-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
AX = 9207h
???
Return: AX = ???
--------R-2F9208-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 9208h
???
Return: ???
--------R-2F9209-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 9209h
???
Return: AX = ???
BX = ???
CX = ???
DX = ???
--------R-2F920A-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 920Ah
BX = ???
Return: AX = ??? or FFFBh on error
--------R-2F920B-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - SET DRIVE MAPPING
AX = 920Bh
BL = drive letter (41h ['A'] = A:, etc)
CX = ??? (0000h removes mapping)
Return: AX = ??? or FFF8h on error
SeeAlso: AX=9201h,AX=920Dh
--------R-2F920C-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 920Ch
???
Return: AX = ??? (0002h)
CX = ??? (0000h)
--------R-2F920D-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - GET DRIVE TYPE
AX = 920Dh
BL = drive letter (41h ['A'] = A:, etc)
Return: AX = type flags
bit 0: ???
bit 1: available
bit 5: local
BX = ???
CX = segment of resident code (apparently an unintended side effect)
Program: DRIVEMAP is a redirector which allows drives on computers connected
over the parallel or serial ports to appear as local drives
SeeAlso: AX=9218h,INT 16/AX=FF70h
--------R-2F920E-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - SET LPT MAPPING
AX = 920Eh
BX = port number (0-2)
CX = ??? (0000h to unmap)
Return: ???
--------R-2F920F-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
AX = 920Fh
ES:DI -> 3-byte buffer for ???
Return: CX = 0000h
ES:DI buffer filled
--------R-2F9210-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 9210h
???
Return: ???
--------R-2F9211-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
AX = 9211h
ES:DI -> 8-word buffer for ???
Return: CX = 0000h
ES:DI buffer filled
--------R-2F9212-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - CRITICAL SECTION???
AX = 9212h
BX = phase
0000h leave critical section???
nonzero enter critical section???
--------R-2F9213-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 9213h
BX = function number (0000h-000Bh)
???
Return: ???
--------R-2F9214-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
AX = 9214h
ES:DI -> 6-word buffer for ???
Return: CX = 0000h
AX = ???
ES:DI buffer filled
--------R-2F9215-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
AX = 9215h
ES:DI -> 100-word buffer for ???
Return: CX = 0000h
ES:DI buffer filled
--------R-2F9216-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 9216h
ES:DI -> ???
Return: ???
--------R-2F9217-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 9217h
DS:SI -> 25-word buffer containing ???
Return: ???
--------R-2F9218-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - GET LPT TYPE???
AX = 9218h
BX = port number???
Return: AX = ???
BX = ??? (0000h)
CX = ??? (0000h)
Program: DRIVEMAP is a redirector which allows drives on computers connected
over the parallel or serial ports to appear as local drives
--------R-2F9219-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 9219h
???
Return: ???
--------R-2F921A-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 921Ah
???
Return: AH = ???
AL = ???
BX = ???
--------R-2F921B-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 921Bh
???
Return: AX = ???
CX = segment of resident code (apparently an unintended side effect)
--------R-2F921C-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 921Ch
???
Return: ???
--------R-2F921D-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - GET ???
AX = 921Dh
Return: AX = ???
--------R-2F921E-----------------------------
INT 2F U - PC Tools v8.0 DRIVEMAP - ???
AX = 921Eh
???
Return: ???
Program: DRIVEMAP is a redirector which allows drives on computers connected
over the parallel or serial ports to appear as local drives
Note: this function sets two variables to 24h each
SeeAlso: INT 16/AX=FF70h
--------V-2F93-------------------------------
INT 2F - InnerMission v1.7+ - INSTALLATION CHECK
AH = 93h
BX = CX = AX
Return: AL = state
FFh if installed and BX=CX=AX on entry
BX = segment of resident code
01h if installed but BX or CX differ from AX (multiplex number not
available)
Program: InnerMission is a shareware graphical screen blanker by Kevin Stokes
SeeAlso: INT 14/AX=AA01h,INT 2F/AX=6400h
Index: screen saver;InnerMission
--------e-2F9400-----------------------------
INT 2F - MICRO.EXE - INSTALLATION CHECK
AX = 9400h
Return: AL = 07h or 08h if installed
Program: MICRO.EXE is a TSR of the Microsoft Mail part of Workgroup Connection
SeeAlso: AH=92h"Network Courier",AX=9401h,AX=9402h,AX=9403h,AX=9404h
SeeAlso: INT 21/AH=3Fh"WORKGRP.SYS"
--------e-2F9401-----------------------------
INT 2F - MICRO.EXE - SET ??? FLAG
AX = 9401h
SeeAlso: AX=9400h,AX=9403h
--------e-2F9402-----------------------------
INT 2F - MICRO.EXE - ???
AX = 9402h
???
Return: ???
SeeAlso: AX=9400h
--------e-2F9403-----------------------------
INT 2F - MICRO.EXE - SET ??? FLAG
AX = 9403h
SeeAlso: AX=9400h,AX=9404h
--------e-2F9404-----------------------------
INT 2F - MICRO.EXE - CLEAR ??? FLAG
AX = 9404h
ES:DI -> name of executable from which MICRO.EXE was started
Note: if the specified name is identical to the name of the program file
from which MICRO was started, the ??? flag is cleared; otherwise,
it is left unchanged
SeeAlso: AX=9400h,AX=9403h
--------V-2F96C7-----------------------------
INT 2F U - STRETCH - INSTALLATION CHECK
AX = 96C7h
Return: AX = AAAAh if installed
Program: stretch.exe is a TSR for Toshiba Laptops with WD90C24 video chip
to avoid blank screen areas in VGA text modes by increasing
inter-line spacing
----------2F97-------------------------------
INT 2F U - Micro Focus COBOL v3.1.31 internal - ???
AH = 97h
AL = function
00h installation check
Return: AL = FFh if installed
08h get ???
Return: AL = ???
BX = ???
DX = ???
AH destroyed
20h get ???
Return: AX:BX = far entry point of ???
CX = segment of ???
80h ???
Return: ???
Notes: Micro Focus COBOL compiler v3.1.31 and companion programs supply
these functions for internal use; these programs call the
installation check at startup (before installing the INT 2F
handler) and crash the system if a not authorized program answers
with AL=FFh
the handler checks AL only if an internal flag is 1, otherwise ???
SeeAlso: AH=98h"COBOL",AH=99h"COBOL",AH=9Ah"COBOL"
----------2F98-------------------------------
INT 2F U - Micro Focus COBOL v3.1.31 internal - ???
AH = 98h
AL = function
00h installation check
Return: AL = FFh if installed
10h get ???
Return: AX = ???
18h get segment of ???
Return: AX = segment of ???
19h get pointer to ???
Return: AX:BX -> ???
Notes: Micro Focus COBOL compiler v3.1.31 and companion programs supply
these functions for internal use; these programs call the
installation check at startup (before installing the INT 2F
handler) and crash the system if a not authorized program answers
with AL=FFh
the handler checks AL only if an internal flag is 0, otherwise ???
SeeAlso: AH=97h"COBOL",AH=99h"COBOL",AH=9Ah"COBOL"
--------V-2F9800-----------------------------
INT 2F U - S3RMDRV.SYS - INSTALLATION CHECK / VERSION CHECK
AX = 9800h
BX = function
0000h installation check
Return: AX = 524Dh ('RM') if installed
0001h get driver version
Return: AX = driver version (AH=major, AL=BCD minor)
Program: S3RMDRV.SYS provides support for the S3 MPEG driver FMPDRV
SeeAlso: AX=9803h
--------V-2F9803-----------------------------
INT 2F U - S3RMDRV.SYS - COPY ??? INTO USER BUFFER
AX = 9803h
DX:BX -> 116-byte buffer for ASCIZ ???
Return: AX = 0000h
DX:BX buffer filled with string stored in driver from its parameter
list when it was loaded
Note: the examined version of the driver returns CF set for any AL other
than 00h or 03h
SeeAlso: AX=9800h
----------2F99-------------------------------
INT 2F U - Micro Focus COBOL v3.1.31 internal - ???
AH = 99h
???
Return: ???
Note: used internally by Micro Focus COBOL compiler v3.1.31 and companion
programs
SeeAlso: AH=97h"COBOL",AH=98h"COBOL",AH=9Ah"COBOL"
--------l-2F9900-----------------------------
INT 2F U - DOS Navigator II - INSTALLATION CHECK
AX = 9900h
Return: BX = 4E44h ('ND') if installed
AX = number of DOS Navigator executions
CL = child process exit code
DX = version number (2141h for version II 1.41)
Notes: old versions of DOS Navigator II always returned AH=1, while newer
ones return AH=0 and store AL in the DN.FLG file
Program: DOS Navigator is a multi-window shell for MS-DOS by RIT S.R.L.
DOS Navigator(TM) is a registered trademark of RIT S.R.L.
SeeAlso: AX=9901h,AX=9902h,AX=9903h,AX=9904h,AX=9905h,AX=9906h
--------l-2F9901-----------------------------
INT 2F U - DOS Navigator II - RETURN POINTER TO COMMAND LINE
AX = 9901h
Return: ES:BX -> command line (terminated with 0Dh)
AX = ES
SeeAlso: AX=9900h,AX=9902h,AX=9903h
--------l-2F9902-----------------------------
INT 2F U - DOS Navigator II - SET 'TRUE' EXIT CODE OF DN.PRG
AX = 9902h
CL = exit code
Return: AX destroyed
SeeAlso: AX=9900h,AX=9901h,AX=9903h
--------l-2F9903-----------------------------
INT 2F U - DOS Navigator II - SPECIFY HOW TO EXECUTE COMMANDS
AX = 9903h
CL = 1 to use INT 2E
CL <> 1 to use INT 21/AH=4Bh
SeeAlso: AX=9900h,AX=9901h,AX=9902h
--------l-2F9904-----------------------------
INT 2F U - DOS Navigator II v1.49 - SET ???
AX = 9904h
CX:DX = new value for ???
SeeAlso: AX=9900h,AX=9905h,AX=9906h
--------l-2F9905-----------------------------
INT 2F U - DOS Navigator II v1.49 - GET ???
AX = 9905h
Return: CX:DX = current value of ??? (set by AX=9904h)
SeeAlso: AX=9900h,AX=9904h,AX=9906h
--------l-2F9906-----------------------------
INT 2F U - DOS Navigator II v1.49 - GET ???
AX = 9906h
DX = new value for ??? (bit 15 must be set, otherwise not changed)
Return: CX = previous value for ???
SeeAlso: AX=9900h,AX=9904h,AX=9905h
----------2F9A-------------------------------
INT 2F U - Micro Focus COBOL v3.1.31 internal - ???
AH = 9Ah
???
Return: ???
Note: used internally by Micro Focus COBOL compiler v3.1.31 and companion
programs
SeeAlso: AH=97h"COBOL",AH=98h"COBOL",AH=99h"COBOL"
--------e-2F9C-------------------------------
INT 2F - Network Courier E-Mail OPERATOR.EXE - API
AH = 9Ch
AL = subfunction
01h uninstall
Return: ???
Program: The Network Courier is an electronic mail package by Consumers
Software of Vancouver, BC which was bought by Microsoft in 1991 and
renamed Microsoft Mail v3.0.
SeeAlso: AH=92h
Index: uninstall;Network Courier E-Mail OPERATOR.EXE
--------G-2F9E00-----------------------------
INT 2F U - INTMON v2.1 - INSTALLATION CHECK
AX = 9E00h
Return: AX = FFFFh if installed
BX = segment of resident code
Program: INTMON is a shareware interactive interrupt monitoring TSR for 386
and higher machines by Celso Minnitti, Jr.
SeeAlso: AX=9E01h,AX=9E02h,AX=9E03h,AX=9F00h
--------G-2F9E01-----------------------------
INT 2F U - INTMON v2.1 - RESET
AX = 9E01h
Return: ???
Desc: this function specifies that INTMON should assume that any interrupts
on which it is currently awaiting a return have completed (i.e.
interrupts which never return such as INT 20 and INT 27)
SeeAlso: AX=9E00h,AX=9E03h
--------G-2F9E02-----------------------------
INT 2F U - INTMON v2.1 - DISPLAY CPU REGISTERS???
AX = 9E02h
Return: ???
SeeAlso: AX=9E00h
--------G-2F9E03-----------------------------
INT 2F U - INTMON v2.1 - HOOK INTERRUPT???
AX = 9E03h
BH = interrupt number???
Return: ???
Note: if AL > 03h on entry, INTMON 2.1 returns immediately
SeeAlso: AX=9E00h,AX=9E01h
--------G-2F9F00-----------------------------
INT 2F U - INTCFG v2.1 - INSTALLATION CHECK
AX = 9F00h
Return: AX = FFFFh if installed
Program: INTCFG is an optionally-resident control program for INTMON by Celso
Minnitti, Jr.
SeeAlso: AX=9E00h,AX=9F01h,AX=9F30h,AX=9F49h
--------G-2F9F01-----------------------------
INT 2F U - INTCFG v2.1 - ???
AX = 9F01h
???
Return: ???
SeeAlso: AX=9F00h
--------G-2F9F30-----------------------------
INT 2F U - INTCFG v2.1 - GET ???
AX = 9F30h
Return: AX = ??? (0002h)
SeeAlso: AX=9F00h
--------G-2F9F49-----------------------------
INT 2F U - INTCFG v2.1 - UNINSTALL
AX = 9F49h
Return: AX,DX,DS,ES destroyed
SeeAlso: AX=9F00h
--------E-2FA1--BX0081-----------------------
INT 2F - Ergo DOS extenders - INSTALLATION CHECK
AH = A1h
BX = 0081h
AL = which
FEh OS/286,OS/386
FFh HummingBoard DOS extender
ES:DI -> 16-byte buffer
Return: if installed, first four bytes of ES:DI buffer are "IABH"
Note: since TKERNEL is a licensed version, it is likely that subfunctions
BX=0082h and BX=0084h are present and function identically to the
AX=FBA1h/BX=008xh calls
SeeAlso: AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
--------m-2FA189-----------------------------
INT 2F U - Biologic HRAMDEV.SYS - API
AX = A189h
BX = subfunction
0000h set ???
0001h remove ???
0002h get status ???
0003h enable ???
0004h disable ???
0005h set ??? flag
0006h clear ??? flag
0007h set ??? flag
0008h clear ??? flag
0009h set ???
ES:DI -> function-specific arguments
if func 0000h: 20-byte buffer containing ???
if func 0001h: 20-byte buffer for returned ???
if func 0002h: 16-byte buffer for returned ???
if func 0009h: WORD containing ???
Return: BX = A189h if installed
AH = status
00h successful
FFh failed or invalid function number
Program: HRAMDEV.SYS is a part of the shareware package HRAM by Biologic which
provides improved high memory access under MS-DOS 5.0
Note: functions 00h and 01h use a stack of four entries; function 01h always
removes the values stored with the most recent function 00h call
which has not yet been matched with a function 01h call.
--------U-2FA4E0-----------------------------
INT 2F - Futurus Team - INSTALLATION CHECK
AX = A4E0h
Return: AL = 52h ("R") if installed
AH = major version plus 30h ("0")
ES:BX -> ??? (INT A4 handler???)
Note: older versions of Right Hand Man (from which Team evolved) store the
signature "RH" at offset 103h in the INT 2F handler's segment
SeeAlso: INT A4"Right Hand Man"
--------U-2FA900-----------------------------
INT 2F - METZTSR.COM - INSTALLATION CHECK
AX = A900h
CF set
Return: CF clear if resident
AX = 97FFh
CF set if not present
Notes: METZTSR.COM prevents METZ applications (such as the MAGIC screen
saver) inactivity timeout while running a DOSapp under MS Windows.
the default multiplex number is A9h, but may be set to any value from
80h to FFh with a commandline switch
SeeAlso: AX=A901h,AX=A902h
--------U-2FA901-----------------------------
INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY
AX = A901h
CF set
Return: CF clear if successful
AX:DX = BIOS time at which INT 09 was last invoked
CF set if not present
SeeAlso: INT 09,INT 1A/AH=00h
--------U-2FA902-----------------------------
INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG
AX = A902h
BL = new value
00h Ctrl-Alt-Del not allowed
else Ctrl-Alt-Del allowed (startup default is 01h)
CF set
Return: CF clear if successful
AX = 97FFh
CF set if not resident
SeeAlso: AX=A903h
--------U-2FA903-----------------------------
INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG
AX = A903h
CF set
Return: CF clear if successful
AX = 97FFh if Ctrl-Alt-Del allowed
AX = 0000h if Ctrl-Alt-Del not allowed
CF set if not resident
SeeAlso: AX=A902h
--------U-2FAA-------------------------------
INT 2F - Player's Tool 3.996b+ - UNINSTALL
AH = AAh
Return: AL = status
00h unloaded successfully
01h unable to unload: in DOS shell
Program: Player's Tool is a game cheater by Dima Yakunin & Andy Robinson
SeeAlso: AH=ABh"Player's Tool",AH=ACh"Player's Tool",INT 10/AH=AAh
--------U-2FAA00-----------------------------
INT 2F - VIDCLOCK.COM - INSTALLATION CHECK
AX = AA00h
Return: AL = 00h not installed
FFh installed
Program: VIDCLOCK.COM is a memory-resident clock by Thomas G. Hanlin III
--------U-2FAB-------------------------------
INT 2F - Player's Tool 3.996b+ - INSTALLATION CHECK
AH = ABh
Return: BH = FFh if installed
BL = DOS shell state
01h in DOS shell
00h not in DOS shell
SeeAlso: AH=AAh"Player's Tool",AH=ACh"Player's Tool",INT 10/AH=ABh
--------f-2FAB00-----------------------------
INT 2F - Btrieve Multi-User - INSTALLATION CHECK
AX = AB00h
Return: AL = 4Dh if installed
SeeAlso: AX=AB01h,AX=AB02h,INT 7B"Btrieve"
----------2FAB00-----------------------------
INT 2F - SRSoft MODAL PC v2+ - INSTALLATION CHECK / GET VERSION
AX = AB00h
Return: AX = 5253h ('SR' byte-swapped) if installed
BX = MODAL PC version (BL = major, BH = minor)
Program: MODAL PC is an algorithm/real-system simulation package by SR Soft
using Petri-nets to describe simulated objects
SeeAlso: AX=AB01h"MODAL",AX=AB02h"MODAL",AX=AB06h"MODAL"
--------f-2FAB01-----------------------------
INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION
AX = AB01h
BX = process ID
DS:DX -> 38-byte parameter record (see #3511 at INT 7B"Btrieve")
Return: AL = status
00h OK
other retry after calling INT 7F/AX=0200h
SeeAlso: AX=AB00h"Btrieve",AX=AB02h"Btrieve",INT 7B"Btrieve",INT 7F/AX=0200h
----------2FAB01-----------------------------
INT 2F - SRSoft MODAL PC v2+ - GET PROCESS RUN PARAMETER
AX = AB01h
Return: AX = 5253h ('SR' byte-swapped) if installed
BL = run parameter
00h normal process
01h run with tracing enabled
02h run initialization process (first thread of main task)
SeeAlso: AX=AB00h"MODAL",AX=AB02h"MODAL"
--------f-2FAB02-----------------------------
INT 2F - Btrieve Multi-User - GET NEW PROCESS ID
AX = AB02h
Return: AL = 00h successful
BX = process ID
AL > 00h failed, retry after calling INT 7F/AX=0200h
SeeAlso: AX=AB00h,AX=AB01h,INT 7B"Btrieve",INT 7F/AX=0200h
----------2FAB02-----------------------------
INT 2F - SRSoft MODAL PC v2+ - SET PROCESS EXIT CODE
AX = AB02h
BL = exit code
Return: AX = 5253h ('SR' byte-swapped) if installed
SeeAlso: AX=AB00h"MODAL",AX=AB01h"MODAL",AX=AB03h"MODAL"
----------2FAB03-----------------------------
INT 2F - SRSoft MODAL PC v2+ - ALLOCATE COMMON MEMORY
AX = AB03h
BX = required size of common memory for variables/semaphores in bytes
Return: AX = 5253h ('SR' byte-swapped) if installed
SeeAlso: AX=AB00h"MODAL",AX=AB02h"MODAL",AX=AB04h"MODAL"
----------2FAB04-----------------------------
INT 2F - SRSoft MODAL PC v2+ - GET ALL COMMON VARIABLES AND SEMAPHORES
AX = AB04h
DS:DX -> buffer for common data
Return: AX = 5253h ('SR' byte-swapped) if installed
CF clear if successful
CF set on error
SeeAlso: AX=AB00h"MODAL",AX=AB03h"MODAL",AX=AB05h"MODAL",AX=AB06h,AX=AB07h
----------2FAB05-----------------------------
INT 2F - SRSoft MODAL PC v2+ - SET ALL COMMON VARIABLES AND SEMAPHORES
AX = AB05h
DS:DX -> buffer containing common data
Return: AX = 5253h ('SR' byte-swapped) if installed
CF clear if successful
CF set on error
SeeAlso: AX=AB00h"MODAL",AX=AB03h"MODAL",AX=AB04h"MODAL",AX=AB06h,AX=AB07h
----------2FAB06-----------------------------
INT 2F - SRSoft MODAL PC v2+ - GET A COMMON VARIABLE OR SEMAPHORE
AX = AB06h
BX = offset of variable or semaphore in common memory
CX = variable/semaphore size in bytes
DS:DX -> buffer for variable or semaphore
Return: AX = 5253h ('SR' byte-swapped) if installed
CF clear if successful
CF set on error
SeeAlso: AX=AB00h"MODAL",AX=AB04h,AX=AB05h,AX=AB07h
----------2FAB07-----------------------------
INT 2F - SRSoft MODAL PC v2+ - SET A COMMON VARIABLE OR SEMAPHORE
AX = AB07h
BX = offset of variable or semaphore in common memory
CX = variable/semaphore size in bytes
DS:DX -> buffer containing variable or semaphore
Return: AX = 5253h ('SR' byte-swapped) if installed
CF clear if successful
CF set on error
SeeAlso: AX=AB00h"MODAL",AX=AB04h,AX=AB05h,AX=AB06h
--------U-2FAC-------------------------------
INT 2F u - Player's Tool 3.996b+ - POP UP
AH = ACh
Return: AX = 1001h
SeeAlso: AH=AAh"Player's Tool",AH=ABh"Player's Tool"
--------V-2FAC00-----------------------------
INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK
AX = AC00h
Return: AX = FFFFh
ES:DI -> ??? (graphics data?) (not documented)
Note: this installation check was moved here to avoid the conflict with the
CD-ROM extensions that occurred in DOS 4.00
SeeAlso: AX=1500h"GRAPHICS"
--------V-2FAC00DI1092-----------------------
INT 2F - QRIP/TSR - GIVE CPU TO QRIP
AX = AC00h
DI = 1092h
Return: nothing
Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
provide a graphical user interface
Desc: give QRIP some CPU time to update music and flashing timers
Notes: if DI <> 1092h on entry, QRIP chains the call
this function should be called regularly whenever the terminal program
is otherwise idle; the updates are automatically performed on any
other QRIP call
SeeAlso: AX=AC01h,AX=ACF0h
--------V-2FAC01DI1092-----------------------
INT 2F - QRIP/TSR - CHANGE INTERNAL FLAGS
AX = AC01h
DI = 1092h
BX = flags to be turned on (see #2651)
CX = flags to be turned off (see #2651)
Return: AX = 9142h if installed
DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
---if DX nonzero---
BX = QRIP version number in hex (BH = major, BL = minor)
CX = new flags (see #2651)
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC00h/DI=1092h,AX=ACF0h
Bitfields for QRIP internal flags:
Bit(s) Description (Table 2651)
0 ANSI emulation enabled (default on)
1 RIP emulation enabled (default on)
2 graphical commands allowed (default on)
3 TTY text allowed (default on)
4 disable @ variables (default off in TSR mode)
5 wait for key on RIP "end scene" command (default off)
6 anti-stripping (default off in TSR mode)
7 sound enabled (default on)
8 automatic message filter (default off in TSR mode)
9 display-only mode (no user prompts)
10 TTY text suppression (default off in TSR mode)
11-15 reserved
--------V-2FAC02DI1092-----------------------
INT 2F - QRIP/TSR - TURN OFF GRAPHICS SCREEN
AX = AC02h
DI = 1092h
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC03h,AX=ACF0h
--------V-2FAC03DI1092-----------------------
INT 2F - QRIP/TSR - TURN ON GRAPHICS SCREEN
AX = AC03h
DI = 1092h
Return: nothing
Notes: if DI <> 1092h on entry, QRIP chains the call
this function does not restore the contents of the screen (see AX=AC15h)
SeeAlso: AX=AC02h,AX=AC14h,AX=AC15h
--------V-2FAC04DI1092-----------------------
INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
AX = AC04h
DI = 1092h
DX:BX -> string
CX = length of string
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC05h,AX=AC09h,AX=AC0Ah,AX=ACF0h
--------V-2FAC05DI1092-----------------------
INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
AX = AC05h
DI = 1092h
DX:BX -> ASCIZ string
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC04h,AX=AC06h,AX=AC09h,AX=AC0Ah,AX=ACF0h
--------V-2FAC06DI1092-----------------------
INT 2F - QRIP/TSR - RECEIVE CHARACTERS FROM QRIP
AX = AC06h
DI = 1092h
Return: AX = character to send to BBS (0001h-00FFh) or special code (see #2652)
BX = string-waiting flag
0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
CX = DX = AX
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC04h,AX=AC05h,AX=AC0Ch,AX=AC16h,AX=AC18h,AX=AC1Ah
(Table 2652)
Values for QRIP special codes:
0000h if none
0100h wait for user keypress (must call AX=AC16h/BL=00h or AX=AC18h)
0101h both/middle mouse button pressed
0102h entering block mode (up/download) (call AX=AC1Ah)
0103h right mouse button pressed
0104h BBS requested status bar on
0105h BBS requested status bar off
0106h BBS requested VT-102 terminal emulation
(keypad keys should send VT-102 escape codes)
0107h BBS requested VT-102 mode off
0108h BBS requested doorway mode (raw IBM keyboard ASCII/scan code pairs)
0109h BBS requested doorway mode off
010Ah hotkey mode on
010Bh hotkey mode off
010Ch BBS requested Tab-key button changing on
010Dh BBS requested Tab-key mode off
010Eh XOFF (use flow control to stop incoming characters)
010Fh XON (use flow control to resume incoming characters)
0110h-0119h BBS requested application (0-9) be run
application 0 should be a standard text editor
01FFh send ASCII 00h to BBS
Note: for special codes 0104h to 010Dh, the terminal program should report
any mode changes it make in response by calling AX=AC16h
--------V-2FAC07DI1092-----------------------
INT 2F - QRIP/TSR - GET FONT DIRECTORY
AX = AC07h
DI = 1092h
Return: DX:BX -> 80-byte internal buffer containing ASCIZ font directory name
Notes: if DI <> 1092h on entry, QRIP chains the call
the application may change the font directory by overwriting the
returned buffer, ensuring that it does not exceed 80 bytes incl. NUL
if changed, the new path will not become effective until the graphics
screen is reinitialized
SeeAlso: AX=AC08h,AX=ACF0h
--------V-2FAC08DI1092-----------------------
INT 2F - QRIP/TSR - GET ICON DIRECTORY
AX = AC08h
DI = 1092h
Return: DX:BX -> 80-byte internal buffer containing ASCIZ icon directory name
Notes: if DI <> 1092h on entry, QRIP chains the call
the application may change the icon directory by overwriting the
returned buffer, ensuring that it does not exceed 80 bytes incl. NUL,
and includes a trailing backslash
if changed, the new path becomes effective immediately
SeeAlso: AX=AC07h,AX=ACF0h
--------V-2FAC09DI1092-----------------------
INT 2F - QRIP/TSR - OUTPUT STRING THROUGH QRIP
AX = AC09h
DI = 1092h
DX:BX -> string
CX = length of string
Return: AX = character to send to BBS (0001h-00FFh) or special code (see #2652)
BX = string-waiting flag
0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
CX = DX = AX
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC04h,AX=AC06h,AX=AC0Ah,AX=ACF0h
--------V-2FAC0ADI1092-----------------------
INT 2F - QRIP/TSR - OUTPUT NULL-TERMINATED STRING THROUGH QRIP
AX = AC0Ah
DI = 1092h
DX:BX -> ASCIZ string
Return: AX = character to send to BBS (0001h-00FFh) or special code (see #2652)
BX = string-waiting flag
0001h entire string waiting to be sent to terminal (call AX=AC0Ch)
CX = DX = AX
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC05h,AX=AC06h,AX=AC09h,AX=ACF0h
--------V-2FAC0BDI1092-----------------------
INT 2F - QRIP/TSR - EXECUTE RIP "END SCENE" COMMAND
AX = AC0Bh
DI = 1092h
Return: nothing
Notes: if DI <> 1092h on entry, QRIP chains the call
enables all mouse buttons and cancels the RIP timeout
SeeAlso: AX=AC01h,AX=AC04h,AX=ACF0h
--------V-2FAC0CDI1092-----------------------
INT 2F - QRIP/TSR - GET STRING TO BE SENT TO BBS
AX = AC0Ch
DI = 1092h
Return: AX = status
0000h nothing to be sent
0001h a string is waiting to be sent
DX:BX -> string to be sent (may contain NULs)
CX = length of string
0002h special code waiting (call AX=AC06h)
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC06h,AX=ACF0h
--------V-2FAC0DDI1092-----------------------
INT 2F - QRIP/TSR - SET PROTECTED SCREEN AREA
AX = AC0Dh
DI = 1092h
CL = number of text lines at bottom of screen to protect (00h = off)
BL = attribute with which to fill area (bit 7 = high-int. background)
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=ACF0h
--------V-2FAC0EDI1092-----------------------
INT 2F - QRIP/TSR - WRITE ASCIZ STRING IN PROTECTED AREA
AX = AC0Eh
DI = 1092h
DX:BX -> ASCIZ string to be written
CL = column at which to begin writing
CH = row number within protected area (00h = first line)
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC0Dh,AX=AC0Fh,AX=AC10h,AX=ACF0h
--------V-2FAC0FDI1092-----------------------
INT 2F - QRIP/TSR - SCROLL PROTECTED AREA
AX = AC0Fh
DI = 1092h
BH,BL = row,column of upper-left corner in protected area
DH,DL = row,column of lower-right corner
CL = number of lines to scroll up
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC10h,AX=ACF0h
--------V-2FAC10DI1092-----------------------
INT 2F - QRIP/TSR - SET OUTPUT COLOR FOR PROTECTED AREA
AX = AC10h
DI = 1092h
BL = new attribute (bit 7 set for high-intensity background)
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC11h,AX=ACF0h
--------V-2FAC11DI1092-----------------------
INT 2F - QRIP/TSR - CONVERT PROTECTED AREA TO ENTIRE SCREEN
AX = AC11h
DI = 1092h
BX = mode (0000h = normal protect, 0001h = allow full-screen access)
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC0Dh,AX=AC0Eh,AX=AC0Fh,AX=AC10h,AX=AC12h,AX=ACF0h
--------V-2FAC12DI1092-----------------------
INT 2F - QRIP/TSR - BEGIN POPUP-WINDOW MODE
AX = AC12h
DI = 1092h
Return: nothing
Notes: if DI <> 1092h on entry, QRIP chains the call
while popup-mode is in effect, the terminal program can write to the
screen (and easily restore it) by outputting a RIP file with AX=AC04h
or AX=AC05h
QRIP will automatically drop out of popup-window mode if the terminal
program invokes RIP pick-lists
any changes to the protected area will be restored when popup-window
mode is cancelled
SeeAlso: AX=AC04h,AX=AC11h,AX=AC13h,AX=ACF0h
--------V-2FAC13DI1092-----------------------
INT 2F - QRIP/TSR - END POPUP-WINDOW MODE
AX = AC13h
DI = 1092h
Return: nothing
Notes: if DI <> 1092h on entry, QRIP chains the call
restores screen
SeeAlso: AX=AC12h,AX=ACF0h
--------V-2FAC14DI1092-----------------------
INT 2F - QRIP/TSR - SAVE GRAPHICS SCREEN AND SWITCH TO TEXT MODE
AX = AC14h
DI = 1092h
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC03h,AX=AC15h
--------V-2FAC15DI1092-----------------------
INT 2F - QRIP/TSR - RESTORE GRAPHICS SCREEN
AX = AC15h
DI = 1092h
Return: nothing
Desc: restores the graphics screen saved by the last call to AX=AC14h
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC03h,AX=AC14h
--------V-2FAC16DI1092-----------------------
INT 2F - QRIP/TSR - REPORT MODE CHANGE TO QRIP
AX = AC16h
DI = 1092h
BL = new mode
00h terminate key wait
01h status bar on
02h status bar off
03h VT-102 mode on
04h VT-102 mode off
05h doorway mode on
06h doorway mode off
07h hotkeys mode on
08h hotkeys mode off
09h tabkey mode on
0Ah tabkey mode off
Return: nothing
Notes: if DI <> 1092h on entry, QRIP chains the call
all modes default to OFF when QRIP is first installed
--------V-2FAC17DI1092-----------------------
INT 2F - QRIP/TSR - CALL (EXECUTE) A RIP FILE
AX = AC17h
DI = 1092h
DX:BX -> ASCIZ filename for RIP file to be executed
Return: nothing
Notes: if DI <> 1092h on entry, QRIP chains the call
the specified file may be in the current icon directory, the QRIP
startup directory, or the current directory; any pathnames specified
with the filename are ignored
--------V-2FAC18DI1092-----------------------
INT 2F - QRIP/TSR - SEND USER KEY TO QRIP
AX = AC18h
DI = 1092h
BX = key (00xxh is normal ASCII, xx00h is an extended key)
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC06h,AX=ACF0h
--------V-2FAC19DI1092-----------------------
INT 2F - QRIP/TSR - HANGUP
AX = AC19h
DI = 1092h
Return: nothing
Desc: inform QRIP that carrier has been lost
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=ACF0h
--------V-2FAC1ADI1092-----------------------
INT 2F - QRIP/TSR - GET RIP_ENTER_BLOCK_MODE INFORMATION
AX = AC1Ah
DI = 1092h
Return: AH = requested protocol (see #2653)
AL = file type (see #2654)
DX:BX -> ASCIZ filename or 0000h:0000h
CX = length of filename
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=ACF0h
(Table 2653)
Values for QRIP protocol identifier:
00h Xmodem (checksum)
01h Xmodem-CRC
02h Xmodem-1K
03h Xmodem-1K-G
04h Kermit
05h Ymodem
06h Ymodem-G
07h Zmodem with crash recovery
08h-0Fh same as 00h-07h, but for uploading instead of downloading
SeeAlso: #2654
(Table 2654)
Values for QRIP file type:
00h RIP file sequence to be displayed
01h RIP file sequence to be stored in icon directory
02h ICN file sequence to be stored in icon directory
03h HLP file sequence to be stored, then auto-loaded if needed
04h COMPOSITE DYNAMIC file sequence (batch protocols only)
05h ACTIVE DYNAMIC file sequence (batch protocols only)
Note: for file types 04h and 05h, any .RIP or .ICN files are stored in
the icon directory; in mode 05h, any .RIP files are also played
back as they are received
SeeAlso: #2653
--------V-2FAC1BDI1092-----------------------
INT 2F - QRIP/TSR - SET SYSTEM FONT SIZE
AX = AC1Bh
DI = 1092h
BX = font size (see #2655)
Return: nothing
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC04h,AX=ACF0h
(Table 2655)
Values for QRIP font size specifier:
00h 8x8 font, 80x43 screen
01h 7x8 font, 90x43 screen
02h 8x14 font, 80x25 screen
03h 7x14 font, 90x25 screen
04h 16x14 font, 40x25 screen
--------V-2FACF0DI1092-----------------------
INT 2F - QRIP/TSR - INSTALLATION CHECK
AX = ACF0h
DI = 1092h
Return: AX = 9142h if installed
DX = DOS-takeover flag (nonzero if QRIP able to take over DOS)
---if DX nonzero---
BX = QRIP version number in hex (BH = major, BL = minor)
CX = current flags (see AX=AC01h)
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=AC00h/DI=1092h,AX=AC01h,AX=AC04h,AX=AC06h,AX=AC1Ah,AX=ACFFh
--------V-2FACFFDI1092-----------------------
INT 2F - QRIP/TSR - UNINSTALL
AX = ACFFh
DI = 1092h
Return: AX = status
0000h unable to remove (interrupt vector hooked by another prog)
0001h successful
0002h unable to take over DOS at this time (retry uninstall)
Note: if DI <> 1092h on entry, QRIP chains the call
SeeAlso: AX=ACF0h
--------V-2FAD00-----------------------------
INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK
AX = AD00h
Return: AL = FFh if installed
BX = ??? (0100h for MS-DOS 3.3+)
Note: DOS 5+ DISPLAY.SYS chains to previous handler if AL is not one of the
subfunctions listed here
SeeAlso: AX=AD01h"DISPLAY",AX=AD02h"DISPLAY"
--------O-2FAD00-----------------------------
INT 2F U - DR DOS 3.41-5.0, Novell DOS 7 KEYB - INSTALLATION CHECK
AX = AD00h
Return: AX = FFFFh if installed
flags destroyed
SeeAlso: AX=AD80h"Novell"
--------V-2FAD01-----------------------------
INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ACTIVE CODE PAGE
AX = AD01h
BX = new code page (see #1446 at INT 21/AX=6602h)
Return: CF clear if successful
AX = 0001h
CF set on error (unsupported code page)
AX = 0000h
SeeAlso: AX=AD02h"DISPLAY"
--------O-2FAD01-----------------------------
INT 2F U - DR DOS 3.41,5.0 KEYB - GET CONFIGURATION
AX = AD01h
Return: BX = current code page (see #1446 at INT 21/AX=6602h)
CX = current keyboard layout (0100h = US, 0102h = foreign)
ES = resident code segment
SeeAlso: AX=AD00h"KEYB",AX=AD02h"KEYB",AX=AD83h"KEYB"
--------V-2FAD02-----------------------------
INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ACTIVE CODE PAGE
AX = AD02h
Return: CF set if code page never set
AX = 0001h
BX = FFFFh (assume first hardware code page)
CF clear if successful
BX = current code page (see #1446 at INT 21/AX=6602h)
SeeAlso: AX=AD01h"DISPLAY",AX=AD03h
--------O-2FAD02-----------------------------
INT 2F U - Novell DOS 7 KEYB - ???
AX = AD02h
DX = ??? (0000h)
Return: AX = FFFFh if installed
flags destroyed
SeeAlso: AX=AD01h"KEYB"
--------V-2FAD03-----------------------------
INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET CODE PAGE INFORMATION
AX = AD03h
ES:DI -> buffer for code page information (see #2656)
CX = size of buffer in bytes
Return: CF set if buffer too small
CF clear if successful
ES:DI buffer filled
SeeAlso: AX=AD01h,AX=AD02h
Format of DOS 5.0-6.0 DISPLAY.SYS code page information:
Offset Size Description (Table 2656)
00h WORD number of software code pages
02h WORD ??? (0003h)
04h WORD number of hardware code pages
06h N WORDs hardware code page numbers (see #1446 at INT 21/AX=6602h)
N WORDs software (prepared) code pages (FFFFh if not yet prepared)
--------V-2FAD04-----------------------------
INT 2F U - DOS 4.x only DISPLAY.SYS internal - ???
AX = AD04h
???
Return: ???
--------V-2FAD10-----------------------------
INT 2F U - DOS 4.x DISPLAY.SYS internal - INSTALLATION CHECK???
AX = AD10h
???
Return: AX = FFFFh
BX = ??? (0100h in PC-DOS 4.01)
--------V-2FAD10-----------------------------
INT 2F U - DOS 5+ DISPLAY.SYS internal - ???
AX = AD10h
???
Return: CF clear if successful
CF set on error
Note: this function is a NOP if the active code page has never been set
(AX=AD02h returns BX=FFFFh); its purpose otherwise is not known
--------V-2FAD40-----------------------------
INT 2F - DOS 4.0+ - ???
AX = AD40h
DX = ???
???
Return: ???
Note: called by PC-DOS 4.01 PRINT.COM
--------K-2FAD80-----------------------------
INT 2F u - MS-DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK
AX = AD80h
Return: AL = FFh if installed
BX = version number (BH = major, BL = minor)
ES:DI -> internal data (see #2657)
AH destroyed (set to FFh by some implementations/versions)
Notes: MS-DOS 3.30, PC-DOS 4.01, and MS-DOS 5.00 all report version 1.00.
this function was undocumented prior to the release of DOS 5.0
SeeAlso: AX=AD80h"Novell",AX=AD81h,AX=AD82h,AX=AD83h
Format of KEYB internal data:
Offset Size Description (Table 2657)
00h DWORD original INT 09
04h DWORD original INT 2F
08h 6 BYTEs ???
0Eh WORD flags (see #2658)
10h BYTE ???
11h BYTE ???
12h 4 BYTEs ???
16h 2 BYTEs country ID letters
18h WORD current code page (see #1446 at INT 21/AX=6602h)
---DOS 3.3---
1Ah WORD pointer to first item in list of code page tables???
1Ch WORD pointer to ??? item in list of code page tables
1Eh 2 BYTEs ???
20h WORD pointer to key translation data (see #2660)
22h WORD pointer to last item in code page table list (see #2659)
24h 9 BYTEs ???
---DOS 4.01---
1Ah 2 BYTEs ???
1Ch WORD pointer to first item in list of code page tables???
1Eh WORD pointer to ??? item in list of code page tables
20h 2 BYTEs ???
22h WORD pointer to key translation data (see #2660)
24h WORD pointer to last item in code page table list (see #2659)
26h 9 BYTEs ???
Note: at least in MS-DOS v6.22, the signature "SHARED DATA" immediately
precedes this structure
Bitfields for MS-DOS v6.22 KEYB flags:
Bit(s) Description (Table 2658)
15 INT 16/AH=1xh supported (INT 16h/AH=92h call returns AH<=80h)
14 INT 16/AH=2xh supported (INT 16h/AH=A2h call returns AH<=80h)
13 unused (0)
12 network installed (INT 2F/AX=B800h)
11 original IBM PC (BIOS date 1981)
10 PC or PC/XT (BIOS machine type byte of FBh or FEh)
9 PC Convertible (BIOS machine type byte of F9h); use INT 15/AX=4104h
8 unused (0)
7 IBM PS/2 model 30 (BIOS machine type byte of FAh)
6 IBM AT (BIOS machine type FCh)
5 IBM PS/2 (BIOS machine type F8h)
4 PS/2 and unknown only:
non-standard 8042 or no AT->PC scancode translation???
3 temporary flag???
2-0 ???
SeeAlso: #2657
Format of code page table list entries:
Offset Size Description (Table 2659)
00h WORD pointer to next item, FFFFh = last
02h WORD code page (see #1446 at INT 21/AX=6602h)
04h 2 BYTEs ???
Format of KEYB translation data:
Offset Size Description (Table 2660)
00h WORD size of data in bytes, including this word
02h N-2 BYTEs ???
--------K-2FAD80-----------------------------
INT 2F u - Novell DOS 7 KEYB.COM - INSTALLATION CHECK
AX = AD80h
Return: AX = FFFFh if installed
CX = Novell DOS KEYB version number (CL = major, CH = minor)
DX = current keyboard codepage
ES:DI -> internal data and tables (ES=FFFEh if KEYB in HMA)
flags destroyed
Note: versions: v2.08 (original ship 4/94), v2.09 (Update 10, 11/18/94),
v2.10 (Update 12, 2/22/95), v2.11 (Update 13, 5/8/95),
v2.12 (Update 14, 7/31/95)
SeeAlso: AX=AD80h"MS-DOS"
--------K-2FAD81-----------------------------
INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE
AX = AD81h
BX = code page (see #1446 at INT 21/AX=6601h)
Return: CF set on error
AX = 0001h (code page not available)
CF clear if successful
Notes: called by DISPLAY.SYS
this function was undocumented prior to the release of DOS 5.0
SeeAlso: AX=AD80h,AX=AD82h
--------K-2FAD82-----------------------------
INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING
AX = AD82h
BL = new state
00h US keyboard (Control-Alt-F1)
FFh foreign keyboard (Control-Alt-F2)
Return: CF set on error (BL not 00h or FFh)
CF clear if successful
Note: this function was undocumented prior to the release of DOS 5.0
SeeAlso: AX=AD80h,AX=AD81h,AX=AD83h
--------K-2FAD83-----------------------------
INT 2F - DOS 5+ KEYB.COM - GET KEYBOARD MAPPING
AX = AD83h
Return: BL = current state
00h US keyboard
FFh foreign keyboard
SeeAlso: AX=AD82h
--------l-2FAE00-----------------------------
INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK
AX = AE00h
DX = magic value FFFFh
CH = FFh
CL = length of command line tail (4DOS v4.0)
DS:BX -> command line buffer (see #2661)
DS:SI -> command name buffer (see #2662)
DI = 0000h (4DOS v4.0)
Return: AL = FFh if this command is a TSR extension to COMMAND.COM
AL = 00h if the command should be executed as usual
Notes: This call provides a mechanism for TSRs to install permanent
extensions to the command repertoire of COMMAND.COM. It appears
that COMMAND.COM makes this call before executing the current
command line, and does not execute it itself if the return is FFh.
APPEND hooks this call, to allow subsequent APPEND commands to
execute without re-running APPEND
SeeAlso: AX=AE01h
Format of COMMAND.COM command line buffer:
Offset Size Description (Table 2661)
00h BYTE max length of command line, as in INT 21/AH=0Ah
01h BYTE count of bytes to follow, excluding terminating 0Dh
N BYTEs command line text, terminated by 0Dh
Format of command name buffer:
Offset Size Description (Table 2662)
00h BYTE length of command name
01h N BYTEs uppercased command name (blank-padded to 11 chars by 4DOS v4)
--------l-2FAE01-----------------------------
INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE
AX = AE01h
DX = magic value FFFFh
CH = 00h
CL = length of command name (4DOS v4.0)
DS:BX -> command line buffer (see #2661)
DS:SI -> command name buffer (see #2662)
Return: DS:SI buffer updated
if length byte is nonzero, the following bytes contain the uppercase
internal command to execute and the command line buffer contains the
command's parameters (the first DS:[SI] bytes are ignored)
Notes: this call requests execution of the command which a previous call to
AX=AE00h indicated was resident
APPEND hooks this call
BUG: Novell DOS 7.0's COMMAND.COM (prior to Update 12) will attempt to run
a disk program with the indicated name even if the returned length
byte is zero, because the register used to flag this case is
clobbered without first checking it. The workaround is to set the
command name buffer to "REM" followed by enough blanks to pad out
the original command's length, which will also work with MS-DOS 6.
(from padgett@tccslr.dnet.mmc.com)
SeeAlso: AX=AE00h
--------O-2FAF00-----------------------------
INT 2F - WinDOS v2.11 - INSTALLATION CHECK
AX = AF00h
Return: AL = FFh if installed
Program: WinDOS is a DOS clone (claimed to be mostly MS-DOS 5.0 API compatible)
written by Heiko Goemann
SeeAlso: AX=AF01h"WinDOS",INT 21/AH=30h
----------2FAF00-----------------------------
INT 2F U - ???
AX = AF00h
???
Return: AX = 0000h if interface supported
SeeAlso: AX=AF02h,AX=AF03h,AX=AF04h,AX=AF13h,AX=AF30h
--------O-2FAF01-----------------------------
INT 2F - WinDOS v2.11 - TURN ON ONLINE MODE
AX = AF01h
Return: nothing
Desc: indicate that the user will not exchange floppy disks, allowing WinDOS
to cache disk sectors in memory and avoid writing modified sectors
back out to the floppy disk
SeeAlso: AX=AF00h"WinDOS",AX=AF02h"WinDOS"
--------O-2FAF02-----------------------------
INT 2F - WinDOS v2.11 - TURN OFF ONLINE MODE
AX = AF02h
Return: nothing
Desc: indicate that the floppy disk may be removed, and that WinDOS should
write all buffered sectors out to the floppy disk
SeeAlso: AX=AF00h"WinDOS",AX=AF01h"WinDOS"
----------2FAF02-----------------------------
INT 2F U - ???
AX = AF02h
???
Return: ES = ???
SeeAlso: AX=AF00h
--------O-2FAF03-----------------------------
INT 2F - WinDOS v2.11 - TURN VIDMEM ON
AX = AF03h
Return: AX = status
0000h successful
0001h CPU not in mode set by DOS386=On
0002h video adapter in graphics mode
0003h memory chain corrupted
SeeAlso: AX=AF00h"WinDOS",AX=AF04h"WinDOS",AX=AF05h"WinDOS"
----------2FAF03-----------------------------
INT 2F U - ???
AX = AF03h
???
Return: DX = ???
SeeAlso: AX=AF00h
--------O-2FAF04-----------------------------
INT 2F - WinDOS v2.11 - TURN VIDMEM OFF
AX = AF04h
Return: AX = status
0000h successful
0001h video memory is in use
SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF05h"WinDOS"
----------2FAF04-----------------------------
INT 2F U - ???
AX = AF04h
???
Return: ???
SeeAlso: AX=AF00h
--------O-2FAF05-----------------------------
INT 2F - WinDOS v2.11 - GET VIDMEM STATE
AX = AF05h
Return: AX = status (0000h off, 0001h on)
SeeAlso: AX=AF00h"WinDOS",AX=AF03h"WinDOS",AX=AF04h"WinDOS"
----------2FAF05-----------------------------
INT 2F U - ???
AX = AF05h
???
Return: ???
SeeAlso: AX=AF00h
--------O-2FAF06-----------------------------
INT 2F - WinDOS v2.11 - MAKE PROGRAM UNBREAKABLE
AX = AF06h
DS:DX -> break handler
DI:BX = stack to use for break handler
Return: nothing
Desc: set a handler which should be invoked when Ctrl-C is pressed instead of
aborting the program
SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah"WinDOS",AX=AF0Ch"WinDOS"
--------O-2FAF07-----------------------------
INT 2F - WinDOS v2.11 - SIGNAL FATAL OVERLAY FAULT
AX = AF07h
Return: never -- system reset
Desc: pop up a window indicating that the system overlay file can not be
loaded
SeeAlso: AX=AF00h"WinDOS",AX=AF08h"WinDOS"
--------O-2FAF08-----------------------------
INT 2F - WinDOS v2.11 - SIGNAL RECOVERABLE OVERLAY FAULT
AX = AF08h
Return: nothing
Desc: pop up a window requesting that a disk containing SH.OVL be inserted
SeeAlso: AX=AF00h"WinDOS",AX=AF07h"WinDOS",AX=AF0Bh
--------O-2FAF09-----------------------------
INT 2F - WinDOS v2.11 - GET TERMINATED PSP
AX = AF09h
Return: DS = PSP segment of most recently ended TSR
SeeAlso: AX=AF00h"WinDOS",AX=AF0Ah
--------O-2FAF0A-----------------------------
INT 2F - WinDOS v2.11 - GET MAIN SHELL PSP
AX = AF0Ah
Return: AX = shell's PSP (same as DS on last call to AX=AF06h)
Desc: get the PSP address of the last program to call AX=AF06h (normally
the main command interpreter)
SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS",AX=AF09h
--------O-2FAF0B-----------------------------
INT 2F - WinDOS v2.11 - SIGNAL FATAL ERROR
AX = AF0Bh
Return: never -- system reset
Desc: pop up a window indicating a terminal system error
SeeAlso: AX=AF00h"WinDOS",AX=AF07h,AX=AF08h,AX=AF15h"WinDOS"
--------O-2FAF0C-----------------------------
INT 2F - WinDOS v2.11 - GET OTHER MAIN SHELL PARAMETERS
AX = AF0Ch
Return: DI:AX = stack
SI = offset of break handler
Desc: retrieve the parameters last set by AX=AF06h (normally by the main
command interpreter)
SeeAlso: AX=AF00h"WinDOS",AX=AF06h"WinDOS"
--------O-2FAF0D-----------------------------
INT 2F - WinDOS v2.11 - GET CURRENT PARAMETER
AX = AF0Dh
BX = offset of desired parameter in global data area
Return: AX = current value of parameter (AH undefined if byte value)
SeeAlso: AX=AF00h"WinDOS",AX=AF0Eh
--------O-2FAF0E-----------------------------
INT 2F - WinDOS v2.11 - SET CURRENT PARAMETER BYTE VALUE
AX = AF0Eh
BX = offset of desired parameter in global data area
DL = new value of parameter
Return: nothing
SeeAlso: AX=AF00h"WinDOS",AX=AF0Dh
--------O-2FAF0F-----------------------------
INT 2F - WinDOS v2.11 - GET HISTORY SEGMENT
AX = AF0Fh
Return: AX = segment of buffer for input history, or 0000h if none
SeeAlso: AX=AF00h"WinDOS",AX=AF10h"WinDOS"
--------O-2FAF10-----------------------------
INT 2F - WinDOS v2.11 - SET HISTORY SEGMENT
AX = AF10h
BX = segment of new buffer for input history
Return: nothing
Note: the buffer must have been allocated with INT 21/AH=48h
SeeAlso: AX=AF00h"WinDOS",AX=AF0Fh"WinDOS"
--------O-2FAF11-----------------------------
INT 2F - WinDOS v2.11 - FREE XMS BLOCKS
AX = AF11h
Return: nothing
Desc: free all XMS blocks whose XMS identification value (see AX=AF12h)
equals the current PSP
SeeAlso: AX=AF00h"WinDOS",AX=AF12h"WinDOS",INT 21/AH=50h
--------O-2FAF12-----------------------------
INT 2F - WinDOS v2.11 - SET XMS IDENTIFICATION VALUE
AX = AF12h
DS = new XMS identification value (normally caller's PSP segment)
Return: nothing
SeeAlso: AX=AF00h"WinDOS",AX=AF11h"WinDOS"
----------2FAF12-----------------------------
INT 2F U - ???
AX = AF12h
???
Return: ES = ???
SeeAlso: AX=AF00h
--------O-2FAF13-----------------------------
INT 2F - WinDOS v2.11 - SET ASSIGN VALUE
AX = AF13h
BL = number of drive to remap (00h = A:)
DL = number of drive to be accessed via drive number BL
Return: nothing
Desc: remap a drive letter
Note: the remapping can be canceled by specifying DL=BL
SeeAlso: AX=AF00h"WinDOS",AX=AF14h"WinDOS",AX=0601h
----------2FAF13-----------------------------
INT 2F U - ???
AX = AF13h
???
Return: ???
SeeAlso: AX=AF00h
--------O-2FAF14-----------------------------
INT 2F - WinDOS v2.11 - GET ASSIGN VALUE
AX = AF14h
BL = drive number (00h = A:)
Return: DL = drive number which is actually accessed by drive number BL
Desc: determine the current mapping for a drive
SeeAlso: AX=AF00h"WinDOS",AX=AF13h"WinDOS",AX=0601h
--------O-2FAF15-----------------------------
INT 2F - WinDOS v2.11 - SIGNAL STACK ERROR
AX = AF15h
Return: never -- system reset
Desc: pop up a window indicating a stack overflow
SeeAlso: AX=AF00h"WinDOS",AX=AF0Bh"WinDOS"
--------O-2FAF16-----------------------------
INT 2F - WinDOS v2.11 - GET SIMPLE TRUENAME
AX = AF16h
DS:SI -> path to be canonicalized
ES:DI -> buffer for canonicalized filename/pathname
Return: CF clear if successful
AX = 0000h
CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
Desc: partially canonicalize a path, omitting SUBST, JOIN, ASSIGN, and
network redirections
SeeAlso: AX=AF00h"WinDOS",INT 21/AH=60h
--------O-2FAF17-----------------------------
INT 2F - WinDOS v2.11 - QUERY FOR NEW CURRENT DRIVE
AX = AF17h
Return: nothing
Desc: pop up a dialog allowing the user to select a new default drive
SeeAlso: AX=AF00h"WinDOS"
--------O-2FAF18-----------------------------
INT 2F - WinDOS v2.11 - SET CTRL-C/CTRL-BREAK DISABLE FLAG
AX = AF18h
DL = new break-checking state (00h enabled, 01h disabled)
Return: nothing
SeeAlso: AX=AF00h"WinDOS"
--------O-2FAF19-----------------------------
INT 2F - WinDOS v2.11 - SET HEAD SETTLE FLAG
AX = AF19h
DL = new state
00h diskette head settling time reset to 15ms before each access
01h no additional head settling time used between accesses
Return: nothing
SeeAlso: AX=AF00h"WinDOS"
--------O-2FAF1A-----------------------------
INT 2F - WinDOS v2.11 - SEARCH FOR NON-FRAGMENTED DISK AREA
AX = AF1Ah
BL = drive (00h = current, 01h = A:, etc.)
CX = number of clusters desired
Return: CF clear if successful
DI = first free cluster on logical drive
BP = first cluster of contiguous free area
AX destroyed
CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
Desc: attempt to find an area of the disk containing the specified number
of contiguous unallocated clusters
SeeAlso: AX=AF00h"WinDOS"
----------2FAF30-----------------------------
INT 2F U - ???
AX = AF30h
???
Return: ???
SeeAlso: AX=AF00h
--------d-2FAFDE-----------------------------
INT 2F - Disk-Emu - INSTALLATION CHECK / GET VERSION
AX = AFDEh
ES:DI -> 14-byte buffer for data (see #2663)
Return: AX = CFDEh (Carlos Fernandez Disk-Emu) if installed
BX = version (BH = major, BL = minor)
Format of Disk-Emu information data:
Offset Size Description (Table 2663)
00h BYTE number of tracks
01h BYTE sectors per track
02h WORD bytes per sector
04h BYTE number of heads
05h BYTE flag: 00h inactive, 01h active
06h BYTE write protection (00h none, 01h full, 02h pseudo)
07h BYTE saved (00h some unsaved data, 01h all data saved)
08h BYTE disk in memory (00h no, 01h yes)
09h WORD EMS handle
0Bh WORD XMS handle
0Dh BYTE memory type used for disk (00h XMS, 01h EMS)
--------V-2FB000-----------------------------
INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK
AX = B000h
Return: AL = status
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
Notes: called by DISPLAY.SYS
documented for DOS 5.0, but undocumented in prior versions
SeeAlso: AX=2300h,AX=2E00h,AX=B001h
--------V-2FB001-----------------------------
INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE
AX = B001h
DS:BX -> DWORD buffer for address of 8x8 font table
Return: buffer filled
AL = FFh
Note: PC-DOS 3.30/4.01 and MS-DOS 6.0 set the font table offset to 0130h,
MS-DOS 3.30 sets it to 0030h
SeeAlso: AH=2Eh"GRAFTABL",AX=B000h
--------I-2FB400-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK
AX = B400h
Return: AL = FFh if installed
--------I-2FB401-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS
AX = B401h
Return: ES -> host screen buffer (PC ASCII format)
ES unchanged if communications not started
--------I-2FB402-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - ???
AX = B402h
BX = ???
Return: ???
--------I-2FB403-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - ???
AX = B403h
???
Return: ???
--------I-2FB404-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - ???
AX = B404h
???
Return: ???
--------I-2FB405-----------------------------
INT 2F - IBM PC3270 EMULATION PROG v3 - ???
AX = B405h
???
Return: ???
--------f-2FB700-----------------------------
INT 2F - APPEND - INSTALLATION CHECK
AX = B700h
Return: AL = status
00h not installed
FFh installed
Note: MS-DOS 3.30 APPEND refuses to install itself when run inside TopView or
a TopView-compatible environment
SeeAlso: AX=B702h
--------f-2FB701-----------------------------
INT 2F U - APPEND v3.21 only - GET APPEND PATH
AX = B701h
Return: ES:DI -> active APPEND path
Notes: the only version of APPEND known to support this call is the APPEND
shipped with Microtek MS-DOS 3.21; MS-DOS 3.30-6.00 APPEND displays
"Incorrect APPEND Version" and aborts the caller
use AX=B704h first, and only call this function if that one is not
supported
SeeAlso: AX=B700h,AX=B704h
--------f-2FB702-----------------------------
INT 2F - APPEND - GET VERSION
AX = B702h
Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND)
AL = major version number
AH = minor version number, otherwise
SeeAlso: AX=B700h,AX=B710h
--------f-2FB703-----------------------------
INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21
AX = B703h
ES:DI -> INT 21 handler APPEND should chain to
Return: ES:DI -> APPEND's INT 21 handler
Note: each invocation of this function toggles a flag which APPEND uses to
determine whether to chain to the user handler or the original
INT 21
SeeAlso: AX=B700h,AX=B706h
--------f-2FB704-----------------------------
INT 2F - DOS 3.3+ APPEND - GET APPEND PATH
AX = B704h
Return: ES:DI -> active APPEND path (128 bytes max)
Note: some versions of append do not support this call, and return ES
unchanged; in this case, you should call AX=B701h to get the APPEND
path
SeeAlso: AX=B701h
--------f-2FB706-----------------------------
INT 2F - DOS 4.0+ APPEND - GET APPEND FUNCTION STATE
AX = B706h
Return: BX = APPEND state (see #2664)
SeeAlso: AX=B700h,AX=B707h
Bitfields for APPEND state:
Bit(s) Description (Table 2664)
0 set if APPEND enabled
1-11 reserved
12 (DOS 5.0) set if APPEND applies directory search even if a drive has
been specified
13 set if /PATH flag active
14 set if /E flag active (environment var APPEND exists)
15 set if /X flag active
--------f-2FB707-----------------------------
INT 2F - DOS 4.0+ APPEND - SET APPEND FUNCTION STATE
AX = B707h
BX = APPEND state bits (see #2664)
SeeAlso: AX=B700h,AX=B706h
--------f-2FB710-----------------------------
INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO
AX = B710h
Return: AX = current APPEND state (see #2664)
BX = ??? (0000h in MS-DOS 3.30 and 5.00)
CX = ??? (0000h in MS-DOS 3.30 and 5.00)
DL = major version
DH = minor version
SeeAlso: AX=B700h,AX=B702h
--------f-2FB711-----------------------------
INT 2F - DOS 4.0+ APPEND - SET RETURN FOUND NAME STATE
AX = B711h
Note: if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or
6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename
is written over top of the filename passed to the INT 21h call. The
application must provide a sufficiently large buffer. This state is
reset after the next INT 21h call processed by APPEND.
APPEND uses the byte at offset 3Dh in the PSP
(see #1066 at INT 21/AH=26h) to store the flag telling it to
overwrite the filename
BUG: DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for
INT 21/AH=6Ch
SeeAlso: INT 21/AH=26h,INT 21/AH=4Eh
--------N-2FB800-----------------------------
INT 2F - NETWORK - INSTALLATION CHECK
AX = B800h
Return: AL = status
00h not installed
nonzero installed
BX = installed component flags (test in this order!)
bit 6 server
bit 2 messenger
bit 7 receiver
bit 3 redirector
bit 1 LANPUP (LANtastic 4.0)
Notes: this function is supported by PC LAN Program, LAN Manager, LANtastic,
NetWare Lite, SilverNET, 10NET, etc.
LANtastic and NetWare Lite use only BL for the return value, preserving
BH; LAN Manager and DOS LAN Requester return BH=00h. This permits
differentiation between those two groups by setting BH to a nonzero
value before the call and checking its value on return.
SeeAlso: AX=4E53h,AX=B809h
--------N-2FB800CXF041-----------------------
INT 2F - 10NET - INSTALLATION CHECK
AX = B800h
CX = F041h
Return: AL = status
00h not installed
nonzero installed
BX = installed component flags (test in this order!)
bit 6 server
bit 2 messenger
bit 7 receiver
bit 3 redirector
bit 1 LANPUP (LANtastic 4.0)
CX = 10Net data segment
CX:DX -> 10Net Configuration Table
(see #1377 at INT 21/AX=5E01h"10NET")
Note: if CX <> F041h on entry, neither CX nor DX will be changed, and this
call becomes identical to the standard installation check above
SeeAlso: AX=B800h"network",INT 21/AX=5E01h"10NET"
--------N-2FB803-----------------------------
INT 2F - NETWORK - GET NETWORK EVENT POST HANDLER
AX = B803h
Return: ES:BX -> current event post handler (see AX=B804h)
Note: this function is supported by PC LAN Program, 10NET v5.0,
NetSoft DOS-NET v1.20+
SeeAlso: AX=B800h,AX=B804h,AX=B903h
--------N-2FB804-----------------------------
INT 2F - NETWORK - SET NETWORK EVENT POST HANDLER
AX = B804h
CX = (10NET) 0370h if 10Windows is hooking post handler
ES:BX -> new event post handler (see #2665)
Notes: used in conjunction with AX=B803h to hook into the network event post
routine
this function is supported by PC LAN Program, 10NET v5.0,
NetSoft DOS-NET v1.20+
The specified handler is called on any network event. Two events are
defined: message received and critical network error.
SeeAlso: AX=B800h,AX=B803h,AX=B904h
(Table 2665)
Values network post routine is called with:
AX = 0000h single block message
DS:SI -> ASCIZ originator name
DS:DI -> ASCIZ destination name
ES:BX -> text header (see #2666)
AX = 0001h start multiple message block
CX = block group ID
DS:SI -> ASCIZ originator name
DS:DI -> ASCIZ destination name
AX = 0002h multiple block text
CX = block group ID
ES:BX -> text header (see #2666)
AX = 0003h end multiple block message
CX = block group ID
AX = 0004h message aborted due to error
CX = block group ID
AX = 0101h server received badly formatted network request
Return: AX = FFFFh (PC LAN will process error)
AX = 0102h unexpected network error
ES:BX -> NCB (see #2920 at INT 5C"NetBIOS")
AX = 0103h server received INT 24 error
other registers as for INT 24, except AH is in BH
Return: as below, but only 0000h and FFFFh allowed
Return: AX = response code
0000h user post routine processed message
0001h PC LAN will process message, but message window not displayed
FFFFh PC LAN will process message
Format of text header:
Offset Size Description (Table 2666)
00h WORD length of text (maximum 512 bytes)
02h N BYTEs text of message
Note: all CRLF sequences in message text are replaced by 14h; all other
values below 20h (space) are reserved
--------N-2FB807-----------------------------
INT 2F - NETWORK - GET NetBIOS NAME NUMBER OF MACHINE NAME
AX = B807h
Return: CH = NetBIOS name number of the machine name
SeeAlso: INT 21/AX=5E00h
--------N-2FB808-----------------------------
INT 2F U - NETWORK - RELINK KEYBOARD HANDLER
AX = B808h
ES:BX -> INT 09 handler network should call after it finishes INT 09
Notes: this call replaces the address to which the network software chains on
an INT 09 without preserving the original value. This allows a prior
handler to unlink, but does not allow a new handler to be added
such that the network gets the INT 09 first unless the new handler
completely takes over INT 09 and never chains.
this function is called by the DOS 3.2 KEYBxx.COM
SeeAlso: AX=B908h
--------N-2FB809-----------------------------
INT 2F - NETWORK - LANtastic, NetWare Lite - GET VERSION
AX = B809h
Return: AH = major version
AL = minor version (decimal)
Notes: this function is supported in this form by LANtastic, NetWare Lite,
SilverNET, ...
NetWare Lite returns its own version number rather than a PC LAN
compatibility version
SeeAlso: AX=4E53h,AX=B800h,AX=B809h"PC LAN Program"
--------N-2FB809-----------------------------
INT 2F - NETWORK - PC LAN Program - GET VERSION
AX = B809h
Return: AH = minor version (decimal)
AL = major version
Notes: this function is supported in this form by PC LAN Program, LAN Manager,
the DOS LAN Requester, and 10NET v5.0
10NET returns version 1.10 (AX=0A01h) for compatibility
SeeAlso: AX=4E53h,AX=B800h,AX=B809h"LANtastic"
--------N-2FB80A-----------------------------
INT 2F u - PC Network 1.00 - ???
AX = B80Ah
???
Return: ???
Program: PC Network is an early networking package which was renamed the
IBM PC Local Area Network Program (PC LAN Program) as of v1.10
Note: called by RECEIVER (equivalent to NetWare Lite SERVER)
--------N-2FB80E-----------------------------
INT 2F U - DOS LAN Requester - GET XSI2 ADDRESS / DATA
AX = B80Eh
Return: DS:DI -> XSI2 TSR's resident data (see #2667)
Note: this function is used by NET.COM to locate the USERID and DOMAIN of
the logged-in user (which may differ from the NET START domain
name from DOSLAN.INI which is returned by AX=B80Fh)
SeeAlso: AX=B800h,AX=B80Fh
Format of XSI2 resident data:
Offset Size Description (Table 2667)
00h 254 BYTEs ???
FEh 10 BYTEs user ID 1
108h 10 BYTEs user ID 2
112h 10 BYTEs domain name 1
11Ch 10 BYTEs domain name 2
126h ? BYTEs domain controller
--------N-2FB80F-----------------------------
INT 2F - DOS LAN Requester - GET START PARAMETERS
AX = B80Fh
CX = size of return data buffer
ES:DI -> return data buffer (see #2668)
Return: AX = status
00h network started
nonzero network not started
CX = number of bytes returned in buffer
ES:DI buffer filled
SeeAlso: AX=B809h"PC LAN Program",AX=B80Eh
Format of DOS LAN Requester return data buffer:
Offset Size Description (Table 2668)
00h BYTE major version
01h BYTE minor version
02h WORD configuration flags given when network was started (see #2669)
04h 15 BYTEs NET START machine name (space padded)
13h BYTE 00h
14h 9 BYTEs NET START domain name (NULL padded)
1Dh BYTE 00h
1Eh 32 BYTEs /WRK heuristics string (space padded, not terminated)
3Eh WORD /SRV value
40h WORD /ASG value
42h WORD /NBC value
44h WORD /NBS value
46h WORD /BBC value
48h WORD /BBS value
4Ah WORD /PBC value
4Ch WORD /PBS value
4Eh WORD /PFS value
50h WORD /PFT value
52h WORD /PWT value
54h WORD /KUC value
56h WORD /KST value
58h WORD /NVS value
5Ah WORD /NMS value
5Ch WORD /NDB value
5Eh WORD /MBI value
60h BYTE NetBIOS name number for machine name
61h BYTE NetBIOS name number for domain name
62h WORD NetBIOS sessions required for configuration
64h WORD NetBIOS commands required for configuration
66h WORD NetBIOS names required for configuration
68h 128 BYTEs NET START path (LANROOT)
E8h BYTE 00h
Bitfields for configuration flags:
Bit(s) Description (Table 2669)
0 /NVS nonzero
1 /NMS nonzero
2 /API
3 /HIM
4 /LIM
5 /ENC
6 /POP
7 /EMS
8 /RPL
9-12 reserved
13 RDR started
14 RCV started
15 User is currently logged on
--------!---Section--------------------------
Interrupt List, part 12 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------N-2FB900-----------------------------
INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK
AX = B900h
Return: AL = state
00h if not installed
FFh if installed
--------N-2FB901-----------------------------
INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS
AX = B901h
Return: AL = ???
ES:BX -> RECEIVER.COM INT 2F handler
Desc: allows more efficient execution by letting the caller bypass any other
INT 2F handlers which have been added since RECEIVER.COM was
installed
--------N-2FB903-----------------------------
INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS
AX = B903h
Return: ES:BX -> POST handler
SeeAlso: AX=B803h,AX=B904h
--------N-2FB904-----------------------------
INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS
AX = B904h
ES:BX -> new POST handler
SeeAlso: AX=B804h,AX=B903h
--------N-2FB905-----------------------------
INT 2F - PC Network RECEIVER.COM - GET FILENAME
AX = B905h
DS:BX -> 128-byte buffer for filename 1
DS:DX -> 128-byte buffer for filename 2
Return: buffers filled from RECEIVER.COM internal buffers
Note: use of filenames is unknown, but one appears to be for storing messages
SeeAlso: AX=B906h
--------N-2FB906-----------------------------
INT 2F - PC Network RECEIVER.COM - SET FILENAME
AX = B906h
DS:BX -> 128-byte buffer for filename 1
DS:DX -> 128-byte buffer for filename 2
Return: RECEIVER.COM internal buffers filled from user buffers
Note: use of filenames is unknown, but one appears to be for storing messages
SeeAlso: AX=B905h
--------N-2FB908-----------------------------
INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER
AX = B908h
ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09
Note: this call replaces the address to which RECEIVER.COM chains on an
INT 09 without preserving the original value. This allows a prior
handler to unlink, but does not allow a new handler to be added
such that RECEIVER gets the INT 09 first.
SeeAlso: AX=B808h
--------V-2FBC00-----------------------------
INT 2F - Windows 3.0, DOS 5+ EGA.SYS - INSTALLATION CHECK
AX = BC00h
Return: AL = state
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
BX = 5456h ("TV")
Range: AH=80h to AH=FFh, selected by commandline switch
SeeAlso: AX=BC06h"EGA",INT 10/AH=FAh"EGA"
--------s-2FBC00BX3F3F-----------------------
INT 2F - MediaVision MVSOUND.SYS - INSTALLATION CHECK
AX = BC00h
BX = 3F3Fh ('??')
CX = 0000h
DX = 0000h
Return: if installed, BX XOR CX XOR DX = 4D56h ('MV')
Program: MVSOUND.SYS is a driver for the MediaVision ProAudio Spectrum family
of sound boards; its primary programmer was Bryan Crane
SeeAlso: AX=BC01h"MVSOUND",AX=BC02h,AX=BC03h,AX=BC04h,AX=BC06h"MVSOUND"
--------s-2FBC01-----------------------------
INT 2F - MediaVision MVSOUND.SYS - GET VERSION
AX = BC01h
BX = magic value 6D20h ('m ')
CX = magic value 2076h (' v')
DX = magic value 2020h (' ')
Return: BX = ASCII major version (leading zeros significant)
CX = ASCII minor version (leading zeros significant)
SeeAlso: AX=BC00h/BX=3F3Fh
--------s-2FBC02-----------------------------
INT 2F - MediaVision MVSOUND.SYS - GET STATE TABLE POINTER
AX = BC02h
Return: AX = 4D56h ('MV')
BX:DX -> state table
SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC03h
--------s-2FBC03-----------------------------
INT 2F - MediaVision MVSOUND.SYS - GET FUNCTION TABLE POINTER
AX = BC03h
Return: AX = 4D56h ('MV')
BX:DX -> function table
CX = ??? (000Eh)
SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC02h
--------s-2FBC04-----------------------------
INT 2F - MediaVision MVSOUND.SYS - GET DMA AND IRQ CHANNELS
AX = BC04h
Return: AX = 4D56h ('MV')
BL = DMA channel
CL = IRQ number
SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND"
--------V-2FBC06-----------------------------
INT 2F U - MS Windows 3.0, DOS 5+ EGA.SYS - GET VERSION INFO
AX = BC06h
Return: BX = 5456h ("TV")
CH = major version
CL = minor version
DL = revision
SeeAlso: AX=BC00h"EGA",INT 10/AH=FAh"EGA"
--------s-2FBC06-----------------------------
INT 2F - MediaVision MVSOUND.SYS - GET STATUS STRING
AX = BC06h
Return: AX = 4D56h ('MV')
DX:BX -> status string (first byte 0Ch if no status message to display)
SeeAlso: AX=BC00h/BX=3F3Fh,AX=BC01h"MVSOUND",AX=BC0Bh"MVSOUND"
--------s-2FBC0B-----------------------------
INT 2F - MediaVision MVSOUND.SYS - GET EXECUTABLE PATH
AX = BC0Bh
Return: BX:DX -> ASCIZ path for MVPROAS.EXE, 0000h:0000h if not available
SeeAlso: AX=BC00h/BX=3F3Fh
--------s-2FBC0E-----------------------------
INT 2F - MediaVision MVSOUND.SYS - RE-INITIALIZE INT 09 HANDLER
AX = BC0Eh
Return: BX = status
0000h on failure
AX = 0000h
FFFFh if successful
DX:AX -> prior INT 09 handler
Desc: re-initialize INT 09 handler to re-enable hotkeys (e.g. after loading
KEYB)
--------U-2FBE00-----------------------------
INT 2F - REDVIEW - INSTALLATION CHECK
AX = BE00h
Return: AL = FFh if installed
Program: REDVIEW is a public-domain TSR by Alexandr Novy and Petr Horak which
copies data sent to standard output to standard error when the
former has been redirected to a file, thus allowing the data to
be seen on the screen at the same time it is captured in a file
--------N-2FBF00-----------------------------
INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK
AX = BF00h
Return: AL = FFh if installed
Note: this function is also supported by NetSoft's DOS-NET v1.20+; however,
none of the remaining BFxxh calls are supported
SeeAlso: AX=BF01h,AX=BF80h,INT 2A/AX=4147h
--------N-2FBF01-----------------------------
INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ???
AX = BF01h
???
Return: ???
SeeAlso: AX=BF00h
--------N-2FBF80-----------------------------
INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT
AX = BF80h
ES:DI -> FAR entry point to IFS handler in REDIRIFS
Return: AL = FFh if installed
ES:DI -> internal workspace
Note: all future IFS calls to REDIR.SYS are passed to the ES:DI entry point
SeeAlso: AX=BF00h
--------F-2FC0-------------------------------
INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - API
AH = C0h
AL = function code (01h to 15h)
Return: ???
SeeAlso: AX=C000h/BX=444Bh,AX=CB00h/BX=4D53h
--------N-2FC000-----------------------------
INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
DX:BX -> FAR entry point (see #2670,#2671,#2672)
ES:SI -> signature string "LINKSUP$"
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
Note: on return, ES = DX for LSL v1.10 and v2.05; LSL makes use of this in
its search for a previous installation
SeeAlso: AX=5100h,AX=C000h"NESL"
(Table 2670)
Call LSL function "Request MLID Registration" with:
BX = 0001h
ES:SI -> registration??? record (see #2674)
DS:DI -> buffer for LSL information block (see #2675)
Return: AX = completion code (0000h,8001h) (see #2673)
DS:DI buffer filled if successful
BX,CX corrupted
Note: see "Novell LAN Driver Developer's Guide, Volume III" for more details
(Table 2671)
Call LSL function "get support entry points" with:
BX = 0002h
ES:SI -> buffer for entry point record (see #2676)
Return: ES:SI buffer filled
(Table 2672)
Call LSL function "Request MLID API entry point" with:
BX = 0003h
Return: ES:SI -> MLID (Multiple Link Interface Driver) API entry point
(call with BX=function 00h-10h, not range-checked)
Note: LSL v1.10 and v2.05 execute BX=0003h for BX=0000h and any BX >= 0003h
(Table 2673)
Values for LSL completion code:
0000h successful
8001h out of resources
8002h bad parameter
8003h no more items
8004h item not present
8005h failed
8006h receive overflow
8007h canceled
8008h bad command
8009h duplicate entry
800Ah no such handler
800Bh no such driver
Format of LSL registration record:
Offset Size Description (Table 2674)
00h DWORD -> ??? FAR function (to be called with ES:SI -> ??? and
returning AX = completion code)
04h DWORD -> ???
08h DWORD -> ??? data (at least 3Eh bytes)
Format of LSL information block:
Offset Size Description (Table 2675)
00h DWORD -> ??? entry point (called with BX=function 00h-11h)
04h WORD ???
06h WORD ???
Note: due to a fencepost error, LSL v2.05 (distributed with Novell DOS 7)
will crash if the above entry point is called with BX=0012h
Format of entry point record:
Offset Size Description (Table 2676)
00h DWORD pointer to protocol support entry point in LSL (see #2677)
04h DWORD pointer to general support entry point in LSL (see #2678)
(Table 2677)
Call protocol support entry point with:
BX = function number
0000h ???
0001h ???
0002h ???
0003h "ScheduleAESEvent"
ES:SI -> AES ECB to be scheduled (see #2681)
Return: ES,SI preserved
0004h "CancelAESEvent"
ES:SI -> ECB to be cancelled (see #2681)
Return: ES,SI preserved
0005h "GetIntervalMarker"
Return: DX:AX = current interval marker in milliseconds
all other registers preserved
0006h "RegisterStack"
AX = logical board number
ES:SI -> bound stack info structure (see #2691)
Return: BX = assigned Stack ID if AX=0000h
0007h "DeRegisterStack"
AX = protocol stack's assigned Stack ID
0008h "RegisterDefaultStack"
AX = logical board number
ES:SI -> stack info structure (see #2692)
0009h "DeRegisterDefaultStack"
AX = logical board number
000Ah "RegisterPrescanStack"
AX = logical board number
ES:SI -> stack info structure (see #2692)
000Bh "DeRegisterPrescanStack"
AX = logical board number
000Ch "SendPacket"
ES:SI -> send ECB
Return: interrupts disabled
000Dh ???
000Eh ???
000Fh ???
0010h "GetStackIDFromName"
ES:SI -> counted NUL-terminated protocol name (max 15 chars)
Return: BX = Stack ID if AX=0000h
0011h "GetPIDFromStackIDBoard"
AX = Stack ID for protocol
CX = logical board number
ES:SI -> 6-byte buffer for protocol ID
0012h "GetMLIDControlEntry"
AX = logical board number
Return: ES:SI -> MLID control handler (see #2679) if AX=0000h
0013h "GetProtocolControlEntry"
AX = Stack ID or
FFFEh Prescan stack
CX = logical board number
FFFFh default protocol
CX = logical board number
Return: ES:SI -> protocol stack control entry point if AX=0000h
(see #2680)
0014h "GetLSLStatistics"
Return: AX = 0000h (successful)
ZF set
ES:SI -> LSL statistics table (see #2683)
0015h "BindStack"
AX = protocol stack's assigned Stack ID
CX = logical board number
0016h "UnbindStack"
AX = protocol stack's assigned Stack ID
CX = logical board number
0017h "AddProtocolID"
AX = frame type ID code
ES:SI -> 6-byte protocol ID
CX:DI -> counted NUL-terminated short protocol name (max 15 ch)
0018h "RelinquishControl"
Return: after LSL performs any necessary background processing
0019h "GetLSLConfiguration"
Return: AX = 0000h (successful)
ZF set
ES:SI -> LSL configuration table (see #2682)
001Ah "GetTickMarker"
Return: AX = number of 55ms ticks since LSL loaded
BX destroyed
Return: AX = completion code (see #2673)
ZF set if successful
SS:SP, DS, BP preserved; most other registers may be destroyed
(Table 2678)
Call general support entry point with:
BX = function number
0000h "Allocate Memory" (obsolete)
always returns AX=8008h (BAD_COMMAND)
0001h "Free Memory" (obsolete)
always returns AX=8008h (BAD_COMMAND)
0002h "Realloc Memory" (obsolete)
always returns AX=8008h (BAD_COMMAND)
0003h "Memory Statistics" (obsolete)
always returns AX=8008h (BAD_COMMAND)
0004h "Add Memory To Pool" (obsolete)
always returns AX=8008h (BAD_COMMAND)
0005h "AddGeneralService"
ES:SI -> General Service Control Block (see #2693)
0006h "RemoveGeneralService"
ES:SI -> General Service Control Block (see #2693)
0007h "GetNETcfgPath"
Return: AX = 0000h (successful)
DS:DX -> ASCIZ pathname for NET.CFG
0008h U ??? (in LSL 1.10)
Return: AX = 0000h
ES:SI -> ??? (a 22-byte data area)
000Ah "GetCriticalSectionStatus"
Return: BX = total outstanding calls to "StartCriticalSection"
000Bh "ServiceEvents"
interrupts disabled
Return: interrupts disabled
0010h "GetStackECB"
DS:DI -> Lookahead structure (see #2694)
interrupts disabled
Return: ES:SI -> ECB if successful (AX=0000h,ZF set)
interrupts disabled
8000h-FFFFh reserved for user general service providers
Return: AX = completion code (see #2673)
ZF set if successful
SS:SP, DS, BP preserved
(Table 2679)
Call MLID control handler with:
AX = logical board number
BX = function number
0000h "GetMLIDConfiguration"
Return: ES:SI -> MLID's configuration table if successful
(see #2686 for format)
0001h "GetMLIDStatistics"
Return: ES:SI -> MLID's statistics table if successful
(see #2686 for format)
0002h "AddMulticastAddress"
ES:SI -> 6-byte multicast address to add
0003h "DeleteMulticastAddress"
ES:SI -> 6-byte multicast address to delete
0005h "MLIDShutdown"
CX = type
0000h permanent (also deregisters from LSL)
other temporary (shutdown hardware only)
0006h "MLIDReset" reinitialize board / restart from temp shutdown
0007h "Create Connection" (obsolete?)
???
0008h "Delete Connection" (obsolete?)
???
0009h "SetLookAheadSize"
CX = requested lookahead size (00h-80h)
000Ah "PromiscuousChange"
CX = what to receive promiscuously
bit 0: MAC frames
bit 1: non-MAC frames
000Bh "RegisterReceiveMonitor"
CX = subfunction
0000h disable receive monitoring
else enable receive monitoring
ES:SI -> monitor receive routine
ES:DI -> monitor transmit routine
000Ch "Driver Poll" (obsolete?)
???
Return: AX = completion code (see #2673)
ZF set if successful
Note: not all boards/MLIDs support function 0010h; see bit 13 in the MLID
mode flags field of the MLID's configuration table
(Table 2680)
Call protocol stack control entry point with:
BX = function number
0000h "GetProtocolStackConfiguration"
Return: ES:SI -> protocol stack's configuration table
(see #2685)
0001h "GetProtocolStackStatistics"
Return: ES:SI -> protocol stack's statistics table (see #2684)
0002h "BindToMLID"
CX = board number to bind to
ES:SI -> implementation-dependant parameter string
0003h "UnBindFromMLID"
CX = board number from which protocol should unbind
ES:SI -> optional implementation-dependant parameter string
0004h "MLIDDeRegistered"
CX = board number that has de-registered from LSL
Return: AX = status
0000h successful
else implementation-dependant error codes
ZF set if successful
SS:SP, DS, BP preserved
Format of AES ECB:
Offset Size Description (Table 2681)
00h DWORD "AESLink" pointer used by LSL for list management
04h DWORD number of milliseconds to wait
08h DWORD "AESStatus" (is set to 00000000h when AES ESR is invoked)
0Ch DWORD -> function to be invoked when time expires
ES:SI will point to this structure on entry,
DS, BP, and SS:SP must be preserved.
SeeAlso: #2695
Format of LSL Configuration Table:
Offset Size Description (Table 2682)
00h BYTE major version of configuration table
01h BYTE minor version of configuration table (decimal, 0-99)
02h 8 BYTEs reserved
0Ah BYTE LSL major version (decimal)
0Bh BYTE LSL minor version (decimal, 0-99)
---LSL 1.0x ---
0Ch 14 BYTEs reserved
---LSL 1.10+ ---
0Ch WORD maximum number of boards which LSL can handle
0Eh WORD maximum number of protocol IDs which LSL can handle
10h 12 BYTEs reserved
Format of LSL Statistics Table:
Offset Size Description (Table 2683)
00h BYTE major version of statistics table format
01h BYTE minor version of statistics table format (decimal, 0-99)
02h WORD "GenericCounters" number of counters in static portion of
table
04h DWORD "ValidCountersMask" bit mask indicating which generic
counters are actually used. Bit 31 = TotalTxPackets, bit 30
is the next field, etc.
08h DWORD "TotalTxPackets" total SendPacket requests made
0Ch DWORD reserved
10h DWORD reserved
14h DWORD "AESEventsCount" number of completed AES events
18h DWORD "PostponedEvents" number of events postponed due to critical
sections inside the MLIDs
1Ch DWORD "CancelAESFailures" number of times CancelAESEvent failed
20h DWORD reserved
24h DWORD reserved
28h DWORD "TotalRxPackets" total number of GetStackECB requests
2Ch DWORD "UnclaimedPackets" total number of packets not consumed by a
protocol stack
30h WORD "NumberCustom" number of custom variables that follow
32h N DWORDs custom counters
N DWORDs -> CustomCounterStrN (one per custom counter)
var length-prepended and NULL terminated string for Counter 0
...
var length-prepended and NULL terminated string for Counter N-1
SeeAlso: #2684,#2690
Format of Protocol Stack Statistics Table:
Offset Size Description (Table 2684)
00h BYTE statistics table major version
01h BYTE statistics table minor version (decimal, 0-99)
02h WORD number of generic counters following
04h DWORD "ValidCountersMask" (bitmask, bit 31 is TotalTxPackets)
08h DWORD TotalTxPackets
0Ch DWORD TotalRxPackets
10h DWORD IgnoredRxPackets
14h WORD number of custom counters
16h N DWORDs custom counters
N DWORDs -> CustomCounterStrN (one per custom counter)
var length-prepended and NULL terminated string for Counter 0
...
var length-prepended and NULL terminated string for Counter N-1
SeeAlso: #2683,#2690
Format of Protocol Stack Configuration Table:
Offset Size Description (Table 2685)
00h BYTE configuration table major version
01h BYTE configuration table minor version (decimal, 0-99)
02h DWORD -> counted NUL-terminated long descriptive name for protocol
06h DWORD -> counted NUL-terminated short name for protocol (15 chars)
0Ah BYTE protocol stack major version
0Bh BYTE protocol stack minor version (decimal, 0-99)
0Ch 16 BYTEs reserved for future use
Format of MLID Configuration Table:
Offset Size Description (Table 2686)
00h 26 BYTEs signature 'HardwareDriverMLID ' (8 spaces on end)
1Ah BYTE configuration table major version
1Bh BYTE configuration table minor version (decimal, 0-99)
1Ch 6 BYTEs node address
22h WORD MLID mode flags (see #2687)
24h WORD board number
26h WORD board instance (if more than one of same board installed)
28h WORD maximum packet size
2Ah WORD BestDataSize
2Ch WORD WorstDataSize
2Eh DWORD -> counted NUL-terminated long name for NIC
32h DWORD -> counted NUL-terminated short name for NIC (8 chars max)
36h DWORD -> counted NUL-terminated Frame and Media type
3Ah WORD reserved (0000h)
3Ch WORD frame type ID
3Eh WORD TransportTime (milliseconds)
40h DWORD -> SourceRouteHandler for TokenRing. (Used by ROUTE.COM)
44h WORD lookahead size
46h WORD line speed (Mbps if high bit clear, else Kbps)
48h WORD QueueDepth
4Ah 6 BYTEs reserved (0)
50h BYTE driver major version
51h BYTE driver minor version (decimal, 0-99)
52h WORD bus/multicast flags (see #2688)
54h WORD send retries
56h DWORD ConfigTableLink
5Ah WORD MLID sharing flags (see #2689)
5Ch WORD slot number
5Eh WORD I/O address 1
60h WORD I/O range 1
62h WORD I/O address 2
64h WORD I/O range 2
66h DWORD memory address 1
6Ah WORD memory size 1
6Ch DWORD memory address 2
70h WORD memory size 2
72h BYTE interrupt line 1
73h BYTE interrupt line 2
74h BYTE DMA line 1
75h BYTE DMA line 2
Bitfields for MLID mode flags:
Bit(s) Description (Table 2687)
15 MLID supports Octet Reversal
14 node address is non-canonical
13 promiscuous mode is supported
12-8 reserved
7 LDataSize field in LookAhead structure supported
6 raw send supported
5 MLID needs to be polled by LSL
4 reserved (0)
3 multicasting is supported
2 not currently used by DOS ODI, set to 0.
1 network card uses DMA.
0 RealDriverBit, always set to 1.
Bitfields for bus/multicast flags:
Bit(s) Description (Table 2688)
10-9 specialized multicast support
00 = Group addressing is default for medium
01 = Invalid
10 = Filter group address in MLID.
11 = Adapter filters group address.
2 supports Micro Channel cards
1 supports ISA cards
0 supports EISA cards
Bitfields for MLID sharing flags:
Bit(s) Description (Table 2689)
8 NIC can share DMA2
7 NIC can share DMA1
6 NIC can share IRQ2
5 NIC can share IRQ1
4 NIC can share Memory2
3 NIC can share Memory1
2 NIC can share IO2
1 NIC can share IO1
0 MLID is currently shut down
Format of MLID Statistics Table:
Offset Size Description (Table 2690)
00h BYTE driver statistics table major version
01h BYTE driver statistics table minor version (decimal, 0-99)
02h WORD number of generic counters (typically 13)
04h DWORD "ValidCountersMask" (bit mask, bit 31 is TotalTxCount)
08h DWORD TotalTxCount
0Ch DWORD TotalRxCount
10h DWORD NoECBAvailableCount
14h DWORD TxTooBigCount
18h DWORD TxTooSmallCount
1Ch DWORD RxOverflowCount
20h DWORD RxTooBigCount
24h DWORD RxTooSmallCount
28h DWORD TxMiscCount
2Ch DWORD RxMiscCount
30h DWORD TxRetryCount
34h DWORD RxChecksumErrorCount
38h DWORD RxMismatchCount
3Ch WORD number of custom counters
3Eh N DWORDs custom counters
N DWORDs -> CustomCounterStrN (one per custom counter)
var length-prepended and NULL terminated string for Counter 0
...
var length-prepended and NULL terminated string for Counter N-1
SeeAlso: #2683,#2684
Format of bound stack info structure:
Offset Size Description (Table 2691)
00h DWORD -> protocol stack's short name (counted, NUL-terminated)
04h DWORD -> receive handler
08h DWORD -> control handler
Format of stack info structure:
Offset Size Description (Table 2692)
00h DWORD -> receive handler
04h DWORD -> control handler
Format of General Service Control Block:
Offset Size Description (Table 2693)
00h DWORD -> next GSCB (maintained internally by LSL)
04h DWORD -> entry point for general service handler
08h WORD command code for this general service (8000h-FFFFh)
Note: the control block must not be altered or deallocated until the general
service is removed
Format of Lookahead structure:
Offset Size Description (Table 2694)
00h DWORD -> Media header
04h DWORD -> lookahead buffer
08h WORD length of lookahead buffer
0Ah 6 BYTEs protocol ID
10h WORD logical board number
12h WORD lookahead size
Format of ODI ECB:
Offset Size Description (Table 2695)
00h DWORD link to next ECB
04h DWORD link to previous ECB
08h WORD general status
0000h received successfully
8006h packet overflow
8007h reception aborted (data not valid)
0Ah DWORD -> event service routine or RETF (never 0000h:0000h)(see #2696)
0Eh WORD protocol stack identifier
10h 6 BYTEs protocol ID (sending only)
16h WORD MLID board number (sending only)
18h 6 BYTEs MAC destination address
1Eh 4 BYTEs driver workspace
22h 8 BYTEs protocol workspace
2Ah WORD total length of sent buffer
2Ch WORD fragment count
2Eh 2 WORDs segment,offset of first fragment buffer
32h WORD length of first fragment buffer
...
SeeAlso: #2681
(Table 2696)
Values event service routine is called with:
ES:SI -> associated ODI ECB (see #2695)
interrupts disabled
Return: DS,BP,SS,SP preserved
interrupt disabled
Notes: the service routine may invoke any IPX/ODI function except CloseSocket
it is safe to send a packet and wait for completion if enough stack
space is available
--------N-2FC000-----------------------------
INT 2F - Novell NetWare Event Service Layer (NESL) 1.0 - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
DX:BX -> FAR entry point (see #2697,#2698,#2699,#2700,#2701,#2702)
ES:SI -> signature string "NESL_EVENTS"
Program: NESL is a generic interface for event handling in ODI drivers and
other NetWare-oriented modules. Primarily intended to support
power management and "hot swapping" of PCMCIA cards, but it is not
limited to this.
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"Link Support Layer",AX=C000h"NETWARN"
(Table 2697)
Call NESL function GetNESLConfigPointer with:
BX = 0000h
Return: AX = completion code (0000h,8008h) (see #2703)
ES:SI -> NESL configuration table if successful (see #2704)
BP,DS,STACK preserved
Desc: Obtain a pointer to the NESL Configuration Table
SeeAlso: #2698,#2701
(Table 2698)
Call NESL function RegisterEventProducer with:
BX = 0001h
ES:SI -> Producer Event Control Block (PECB) (see #2705)
Return: AX = completion code (0000h, 8005h, 8008h) (see #2703)
ES:SI -> still points to PECB
BP,DS,STACK preserved
Desc: Allows a module to register as a producer of a given event class
Note: PECB_ClassName and PECB_Flags must be filled in on entry
SeeAlso: #2556,#2699,#2700,#2701
(Table 2699)
Call NESL function DeRegisterEventProducer with:
BX = 0002h
ES:SI -> PECB previously passed to RegisterEventProducer (see #2705)
Return: AX = completion code (0000h, 8002h, 8008h) (see #2703)
ES:SI -> still points to PECB
BP,DS,STACK preserved
Desc: Allows a module to de-register as a producer of a given event class
SeeAlso: #2698,#2702
(Table 2700)
Call NESL function EventNotification with:
BX = 0003h
ES:SI -> PECB previously registered (see #2705)
Return: AX = completion code (0h, 8005h, 8008h) (see #2703)
ES:SI -> still points to PECB
BP,DS,STACK preserved
Desc: Allows a module to signal that an event has just occurred in a given
event class.
Notes: Once called, NESL will generate corresponding callouts for this
event, as described in Table #2707.
on entry, the PECB_DataPtr must point at an Event Parameter Block (EPB)
(see #2708) filled in to match the desired event
SeeAlso: #2698
(Table 2701)
Call NESL function RegisterEventConsumer with:
BX = 0004h
ES:SI -> Consumer Event Control Block (CECB) (see #2706)
Return: AX = completion code (0h, 8005h, 8008h) (see #2703)
ES:SI -> still points to CECB
BP,DS,STACK preserved
Desc: Allows a module to register as a consumer of a given event class
Note: on entry, the CECB_ClassName, CECB_NotifProc and CECB_OSILevel must be
filled in.
SeeAlso: #2698,#2702
(Table 2702)
Call NESL function DeRegisterEventConsumer with:
BX = 0005h
ES:SI -> CECB previously passed to RegisterEventConsumer (see #2706)
Return: AX = completion code (0h, 8002h, 8008h) (see #2703)
ES:SI -> still points to CECB
BP,DS,STACK preserved
Desc: Allows a module to de-register as a consumer of a given event class
SeeAlso: #2699,#2701
(Table 2703)
Values for NESL Error code:
0000h Successful
8002h Bad Parameter
8005h Fail
8008h Bad Command
Format of NESL Configuration Table:
Offset Size Description (Table 2704)
00h WORD NESL_Cfg_MajVer Major Version of this table (=1)
02h WORD NESL_Cfg_MinVer Minor Version of this table (=0)
04h DWORD NESL_Cfg_ModLName -> ASCIZ long name of NESL module
(typically -> "NetWare Event Service Layer for 16-Bit DOS")
08h DWORD NESL_Cfg_ModSName -> ASCIZ short name of NESL module
(typically -> "NESL")
0Ch WORD NESL_Cfg_ModMajVer Major Version of NESL itself (=1)
0Eh WORD NESL_Cfg_ModMinVer Minor Version of NESL itself (=0)
Format of NESL Producer Event Control Block (PECB):
Offset Size Description (Table 2705)
00h WORD PECB_MajVer Major Version of this structure (=1)
02h WORD PECB_MinVer Minor Version of this structure (=0)
04h DWORD PECB_NextProducer -> next PECB. NULL if last.
08h DWORD PECB_ClassName -> ASCIZ string identifying event
class (see #2709)
0Ch DWORD PECB_ConsumerList -> list of consumers for this event class
10h DWORD PECB_DataPtr -> points to additional data during events
14h DWORD PECB_Flags
Bit 0 =0 consumers should be called "top down" for this
event class. (OSI level 7 down to OSI level 1)
=1 consumers should be called "bottom up"
Bits 1-31 Reserved =0
18h 8 BYTEs PECB_Reserved (all zeros)
Note: Although the event producer provides the memory for the PECB, the
NESL module controls this memory until the event class is
de-registered.
While owned by NESL, this structure should be treated as read-only,
except for the PECB_DataPtr field.
Format of NESL Consumer Event Control Block (CECB):
Offset Size Description (Table 2706)
00h WORD CECB_MajVer Major Version of this structure (=1)
02h WORD CECB_MinVer Minor Version of this structure (=0)
04h DWORD CECB_NextConsumer -> next CECB. NULL if last.
08h DWORD CECB_ClassName -> ASCIZ string identifying event
class (see #2709)
0Ch DWORD CECB_NotifProc -> FAR CALL event handler (see #2707)
10h WORD CECB_OSILevel
Bits 4-7 = OSI Layer of this module (1 through 7)
Bits 0-3 = relative ordering with other modules on same layer
13h 14 BYTEs CECB_Reserved (all zeros)
Note: Although the event consumer provides the memory for the CECB, the
NESL module controls this memory until the consumer is de-registered.
While owned by NESL, this structure should be treated as read-only,
(Table 2707)
Values NESL Consumer Notification Procedure is called with:
ES:SI -> Event Parameter Block (EPB) (see #2708)
Return: AX = completion code (0000h, 8005h) (see #2703)
ES:SI -> still points to EPB
Desc: Called by NESL to notify the consumer when an event has occurred in
an event class for which it has registered.
SeeAlso: #2706
Format of NESL Event Parameter Block (EPB):
Offset Size Description (Table 2708)
00h WORD EPB_MajVer Major Version of this structure (=1)
02h WORD EPB_MinVer Minor Version of this structure (=0)
04h DWORD EPB_ClassName -> ASCIZ string identifying event class
(see #2709)
08h DWORD EPB_EventName -> ASCIZ string identifying event within
class (see #2710)
0Ch DWORD EPB_ModuleName -> ASCIZ string identifying module
producing event
10h DWORD EPB_DataPtr0 -> event-defined data or NULL if not used
14h DWORD EPB_DataPtr1 -> event-defined data or NULL if not used
18h 8 BYTEs EPB_Reserved (all zeros)
(Table 2709)
Values for NESL Event Class Names:
Event Class Description
------------------- -----------------------------------------
Service Suspend Suspension of a service. Called top-down.
Service Resume Resumption/availability of a service. Called bottom-up.
Service/Status Change Change in status or level of service. Called top-down.
Suspend Request Request to suspend a service. Called bottom-up.
Note: Contact Novell Labs to register new event classes.
(Table 2710)
Values for NESL Event Names:
Event Name Class Description
-------------------------- ------------- ---------------------------
MLID Cable Disconnect Service Suspend Cable disconnected from NIC
MLID Card Removal Service Suspend PCMCIA card removed
MLID Hardware Failure Service Suspend Serious hardware
failure in NIC
MLID Not In Range Service Suspend Wireless access point
is out of range
MLID Shutdown Service Suspend MLID was shut down
MLID Media Access Denied Service Suspend Access to physical
medium unsuccessful
MLID Cable Reconnect Service Resume Cable re-connected to NIC
MLID Card Insertion Complete Service Resume PCMCIA card inserted
MLID In Range Service Resume Wireless access point
in range
MLID Reset Service Resume MLID was just reset
MLID Access Point Change Serv/Status Change Station has moved to
new access point
MLID Speed Change Serv/Status Change Change in communic. speed
Note: Contact Novell Labs to register new event names.
For all predefined events above, EPB_DataPtr0 (see #2708) points
to the MLID Configuration table (see AX=C000h"ODI") for the
affected MLID.
--------N-2FC000-----------------------------
INT 2F - Novell NetWare Connect NETWARN - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
SI = segment of resident portion
Program: NETWARN is a utility supplied with NetWare Connect to warn a
remote dialup user when programs are about to be loaded slowly over
the modem link.
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
Note: on return, verify that it is NETWARN responding by examining signature
at in NETWARN's data table in the resident segment (see #2711)
SeeAlso: AX=C000h"ODI",AX=C000h"NESL"
Format of NETWARN Configuration structure:
Offset Size Description (Table 2711)
103h 7 BYTEs signature string "NETWARN"
10Ah BYTE major version in ASCII (="1")
10Bh BYTE minor version in ASCII (="0")
10Ch DWORD minimum size of EXE cared about in bytes (/S=xxxx)
110h WORD same value in kilobytes (see #2712 [bit 4])
112h BYTE multiplex code (AH value) actually being used
113h WORD options (see #2712)
115h DWORD INT 21h vector before NETWARN loaded
119h DWORD INT 2Fh vector before NETWARN loaded
11Dh 16 BYTEs ASCIIZ local name of last device which was checked
12Dh 128 BYTEs ASCIIZ remote name of last device which was checked
Note: the specified offsets are from the start of the resident segment
Bitfields for NETWARN options:
Bit(s) Description (Table 2712)
0 ??? (=0)
1 /U (Unload) selected (never in resident)
2 /E (Enabled) Will trap & check EXEC's
3 /D (Disabled) No EXEC checking done
4 /S (Size) was set (see #2711 [offsets 010Ch and 0110h])
5 /P (Path shown)
6 /H or /? (Help) (never in resident)
SeeAlso: #2711
--------f-2FC000-----------------------------
INT 2F - FN32 32 character filename utilities - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
ES:DI -> signature string "FN32 32CHAR TSR"
Program: FN32 is a TSR which supports 32 character filenames under PC/MS-DOS
Note: the TSR intercepts INT 21 calls and performs filename substitution by
managing dictionary files in each directory which contains long
filenames
--------M-2FC000-----------------------------
INT 2F - QMR - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
ES:DI -> signature string "QMR1!"
Program: QMR (Cove Software, Quick Mouse Reset) monitors the mouse
service interrupt (int 33h) and substitutes a fast software
reset (mouse fn 21h) for the slow hardware reset (mouse fn 0).
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C001h"QMR",AX=C002h"QMR",AX=C003h"QMR"
--------V-2FC000-----------------------------
INT 2F - VGAsave v1.93 - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
BX = segment of resident code
Program: VGAsave is a freeware VGA-specific, mouse-aware screenblanker by Bill
Javurek
Range: AH=C0h to AH=FFh, selected by scanning for a free multiplex number
Note: the transient portion of VGAsave compares the first 38 bytes of the
resident code (addressed through BX) against its own copy of the
resident code to complete the installation check
SeeAlso: INT 14/AX=AA01h,INT 2F/AH=93h
Index: screen saver;VGAsave
--------V-2FC000-----------------------------
INT 2F - AD-DOS - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
BX = 4144h ('AD')
CX = 2D44h ('-D')
DX = 4F53h ('OS')
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C001h"AD-DOS",AX=C003h"AD-DOS",AX=C005h"AD-DOS",AX=C007h"AD-DOS"
SeeAlso: AX=C009h"AD-DOS",AX=C020h"AD-DOS",INT 14/AX=AA01h
Index: screen saver;AD-DOS
--------U-2FC000-----------------------------
INT 2F U - WANG_ER.COM - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
ES = segment of resident code
Program: WANG_ER is a TSR from Compaq which permits Compaq systems equipped
with 3-mode floppy drives to read Wang document diskettes
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
Note: The installation check is completed by comparing the resident code
with the copy in the transient program
--------i-2FC000-----------------------------
INT 2F O - ASPIHOOK.SYS - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if multiplex number in use
ES:DI -> ASCIZ signature "ASPIHOOK" if ASPIHOOK.SYS installed
Program: ASPIHOOK is a device driver for monitoring SCSI activity through an
ASPI host manager; it is part of the Personal Measure system
activity monitor from Spirit of Performance, Inc.
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"PMEASURE"
--------i-2FC000-----------------------------
INT 2F - PMEASURE.EXE - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if multiplex number in use
ES:DI -> ASCIZ signature "PMEASURE.EXE" if PMEASURE.EXE installed
Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
is part of the Personal Measure system activity monitor from Spirit
of Performance, Inc.
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
Note: If a Personal Measure Hook Module, such as ASPIHOOK.SYS, is already
installed, PMEASURE.EXE uses the next highest free multiplex number.
SeeAlso: AX=C000h"ASPIHOOK",AX=C000h"PERSONAL MEASURE"
--------i-2FC000-----------------------------
INT 2F - PERSONAL MEASURE - HOOK MODULE INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
ES:DI -> signature string "PMEASUREHOOK"
AX = C000 if not installed, per mux id conventions
DH = major release number (binary)
DL = minor release number (binary)
Program: The Personal Measure system activity monitor from Spirit of
Performance, Inc. uses an extensible series of modules to hook
into various operating system interfaces and monitor system calls.
Current hook modules are ASPIHOOK.SYS for ASPI device activity
and CDRHOOK.SYS for non-ASPI CD-ROM activity. All hook modules
share the same mux id.
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"PMEASURE.EXE",AX=C001h"PERSONAL MEASURE"
--------c-2FC000-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
SI = signature value 20D6h
DI = signature value 8761h
ES:BX -> configuration table (see #2713)
CX = ??? (0300h)
DX = ??? (0020h)
Program: PCACHE is the resident print spooler portion of PrintCache by
LaserTools; it may use either memory or disk space to spool output
Range: AH=C0h to AH=FFh, selected by commandline switch
SeeAlso: AX=0100h/SI=20D6h,AX=C001h"PCACHE"
Format of PrintCache configuration table:
Offset Size Description (Table 2713)
00h 26 BYTEs ASCIZ signature string "TORQ Configuration Table: "
1Ah 2 BYTEs ???
1Ch DWORD -> data table (see #2714)
20h 4 BYTEs ASCIZ version string ("3.1" for v3.1)
24h 5 BYTEs ???
29h 12 BYTEs ASCIZ version date string ("Aug 31 1993" for v3.1)
35h WORD buffered port type (01h = LPT, 02h = COM)
37h WORD buffered port BIOS port number
39h 5 BYTEs ASCIZ buffered port name ("LPTn" or "COMn")
3Eh WORD physical port type (01h = LPT, 02h = COM)
40h WORD physical port BIOS port number
42h 5 BYTEs ASCIZ physical port name ("LPTn" or "COMn")
47h BYTE port driver IRQ
48h 21 BYTEs ???
5Dh WORD buffer size in K
5Fh 27 BYTEs ???
7Ah BYTE popup hotkey shift states (see #0506 at INT 16/AH=02h)
7Bh BYTE popup hotkey scan code (see #0005 at INT 09"IRQ1")
7Ch 4 BYTEs ???
80h 20 BYTEs ASCIZ printer type name
???
Format of PrintCache data table:
Offset Size Description (Table 2714)
00h 2 BYTEs ???
02h DWORD -> ??? entry point
???
--------U-2FC000-----------------------------
INT 2F - Frank Kintrup TSR Utilities - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
BX = program ID (see #2715)
CX = 464Bh (signature "FK")
DX = revision number (DH = major, DL = minor)
ES = resident segment of TSR
Range: AH=C0h to AH=FFh, selected by searching for a free multiplex number
SeeAlso: AX=C001h"Kintrup",AX=C002h"Kintrup"
(Table 2715)
Values for Frank Kintrup TSR program ID:
4153h "AS" ASCII.COM ASCII table with paste function
434Ch "CL" CLOCK.COM clock with date/time display and alarm
5043h "PC" PCALC.COM programmer's calculator with paste function
5343h "SC" SCRSAVE.COM screen saver with mouse support and hotkey
5544h "UD" UNDEL.COM undelete program like SMARTCAN or DPROTECT
--------K-2FC000-----------------------------
INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if possibly installed
Range: AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
SeeAlso: AX=C001h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
--------V-2FC000-----------------------------
INT 2F - DIMWIT - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if installed
ES:DI -> signature string "DIMDOS" or "DIMWIN"
Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
Index: screen saver;DIMWIT
--------F-2FC000BX444B-----------------------
INT 2F - MTEZ XpressFax Hardware TSR (CLASS2) - INSTALLATION CHECK
AX = C000h
BX = 444Bh ('DK')
CX = 4A4Eh ('AN')
Return: AL = status
00h not installed, OK to install
FFh installed
BX = 646Bh ('dk')
CX = 6A6Eh ('an')
Range: AH=C0h to AH=FFh, selected automatically
SeeAlso: AH=C0h"MTEZ"
--------V-2FC000-----------------------------
INT 2F U - TSENGP.COM - INSTALLATION CHECK
AX = C000h
Return: AL = status
00h not installed, OK to install
FFh installed
DS = segment of resident code
Program: TSENGP.COM is a TSR supplied by Compaq to fix an incompatibility
between some applications and Tseng ET4000-based video adapters
Range: AH=C0h to AH=FFh, selected automatically
Note: the installation check is completed by comparing the first eleven
bytes at DS:005Fh against the TSR's code (80h FCh 06h 74h 0Ah
80h FCh 07h 74h 05h EAh)
--------N-2FC000-----------------------------
INT 2F U - LapLink RemoteAccess (LLRA) - INSTALLATION CHECK
AX = C000h
Return: AL = FFh if one of the components is installed
CX:BX -> signature within LLRA component:
"TSI_LapLinkCore" for LLRA1.EXE
"TSI_Blackbird" for LLRA2.EXE
"TSI_Redirector" for LLRA3.EXE
"TSI_Compression" for LLRA4.EXE
DL = major version number
DH = minor version number
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
Note: LapLink components are installed in the order listed above, but not
necessarily all four; each gets its own multiplex number (default
C0h-C3h)
SeeAlso: AX=C002h"LapLink",AX=C205h"LapLink",AX=C2F0h"LapLink"
SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
SeeAlso: AX=C3F1h"LapLink"
--------M-2FC001-----------------------------
INT 2F - QMR - REQUEST HARDWARE RESET
AX = C001h
Return: ES = QMR code segment
AL destroyed
Desc: this function is used to force a full mouse reset when QMR is installed
SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
--------V-2FC001-----------------------------
INT 2F - DIMWIT - GET CONFIGURATION DATA
AX = C001h
Return: ES:DI -> TSR configuration data (see #2716)
Program: DIMWIT is a freeware Windows-aware screen blanker by Larry Board
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"DIMWIT",AX=C001h"AD-DOS"
Index: screen saver;DIMWIT
Format of DIMWIT TSR configuration data:
Offset Size Description (Table 2716)
00h WORD blanking delay in clock ticks
02h BYTE instant-blanking hotkey scan code (see #0005)
Ctrl and Alt must also be pressed
--------V-2FC001ES0000-----------------------
INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT
AX = C001h
ES = 0000h
Return: AL = 00h if successful
ES = AD-DOS TSR Code Segment
SeeAlso: AX=C000h"AD-DOS",AX=C001h"DIMWIT"
Index: screen saver;AD-DOS
--------c-2FC001-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ENTRY POINTS
AX = C001h
Return: AL = FFh if installed
ES:BX -> ???
ES:DX -> ???
ES:SI -> ???
ES:DI -> ??? (equivalent to AX=C002h)
SeeAlso: AX=C000h"PCACHE",AX=C002h"PCACHE"
--------U-2FC001-----------------------------
INT 2F - Frank Kintrup TSR Utilities - CLOCK - DISABLE DISPLAY UPDATE
AX = C001h
Range: AH=C0h to AH=FFh, selected by searching for a free multiplex number
SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
--------K-2FC001CX03FB-----------------------
INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - UNINSTALL
AX = C001h
CX = 03FBh return address to continue uninstall if possible
Return: program uninstalled
Range: AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
SeeAlso: AX=C000h"HP 100LX",AX=C0AEh"HP 100LX",AX=C0AFh"HP 100LX"
--------i-2FC001-----------------------------
INT 2F - PERSONAL MEASURE - PASS PARAMETERS TO HOOK MODULE(S)
AX = C001h
DX = segment of PMEASURE.EXE or 0000h
BX = offset in PMEASURE.EXE or 0000h
CX = offset in PMEASURE.EXE or 0000h
Return: None
Program: PMEASURE.EXE is a TSR for monitoring system hardware activity which
is part of the Personal Measure system activity monitor from Spirit
of Performance, Inc. PMEASURE uses this call to inform its hook
modules whether or not it is running and to pass information about
shared data and procedures.
Warning: This information documents a function that is private to Personal
Measure and is provided as information only. It should NOT be called
by any software other than Personal Measure.
SeeAlso: AX=C000h"PERSONAL MEASURE"
--------V-2FC002-----------------------------
INT 2F - AD-DOS - CHECK FOR NEW INPUT
AX = C002h
Return: AL = 00h if successful
BX = status
0000h no input since last check
0001h new input available
Note: this call also resets the new-input flag
SeeAlso: AX=C000h"AD-DOS",AX=C004h
Index: screen saver;AD-DOS
--------M-2FC002-----------------------------
INT 2F - QMR - DISABLE QMR
AX = C002h
Return: ES = QMR code segment
AL destroyed
Desc: this call temporarily disables QMR
SeeAlso: AX=C000h"QMR",AX=C003h"QMR"
--------c-2FC002-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - GET BUFFER SIZE
AX = C002h
Return: AX = ??? in K
BX = size of print buffer in K
Program: PCACHE is the resident print spooler portion of PrintCache by
LaserTools; it may use either memory or disk space to spool output
SeeAlso: AX=C000h"PCACHE"
--------U-2FC002-----------------------------
INT 2F - Frank Kintrup TSR Utilities - CLOCK - ENABLE DISPLAY UPDATE
AX = C002h
Range: AH=C0h to AH=FFh, selected by searching for a free multiplex number
SeeAlso: AX=C000h"Kintrup",AX=C002h"Kintrup"
--------N-2FC002-----------------------------
INT 2F U - LapLink RemoteAccess (LLRA) - Core - ???
AX = C002h
details not yet available
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
--------V-2FC003-----------------------------
INT 2F - AD-DOS - SET MINUTES TO WAIT
AX = C003h
BX = minutes to wait before blanking screen
Return: AL = 00h if successful
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
Note: this call also resets the delay timer
SeeAlso: AX=C000h"AD-DOS",AX=C004h
Index: screen saver;AD-DOS
--------M-2FC003-----------------------------
INT 2F - QMR - ENABLE QMR
AX = C003h
Return: ES = QMR code segment
AL destroyed
Desc: this call enables QMR after it has been disabled
SeeAlso: AX=C000h"QMR",AX=C002h"QMR"
--------c-2FC003-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
AX = C003h
Return: BX destroyed
SeeAlso: AX=C004h"PCACHE"
--------V-2FC004-----------------------------
INT 2F - AD-DOS - GET MINUTES TO WAIT
AX = C004h
Return: AL = 00h if successful
BX = minutes to wait before blanking screen
SeeAlso: AX=C000h"AD-DOS",AX=C003h"AD-DOS"
Index: screen saver;AD-DOS
--------c-2FC004-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
AX = C004h
Return: BX destroyed
SeeAlso: AX=C003h"PCACHE"
--------V-2FC005-----------------------------
INT 2F - AD-DOS - SET BLANKER STATUS
AX = C005h
BX = new state (0000h inactive, 0001h active) (default 0001h)
Return: AL = 00h if successful
SeeAlso: AX=C006h"AD-DOS"
Index: screen saver;AD-DOS
--------c-2FC005-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C005h
???
Return: BX destroyed
???
Program: PCACHE is the resident print spooler portion of PrintCache by
LaserTools; it may use either memory or disk space to spool output
Range: AH=C0h to AH=FFh, selected by commandline switch
SeeAlso: AX=C000h"PCACHE"
--------V-2FC006-----------------------------
INT 2F - AD-DOS - GET BLANKER STATUS
AX = C006h
Return: AL = 00h if successful
BX = current state of screen blanker (0000h inactive, 0001h active)
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"AD-DOS",AX=C005h"AD-DOS"
Index: screen saver;AD-DOS
--------c-2FC006-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C006h
???
Return: BX destroyed
???
Note: this function appears to be identical to AX=C007h
SeeAlso: AX=C000h"PCACHE",AX=C007h"PCACHE"
--------V-2FC007-----------------------------
INT 2F - AD-DOS - SET HOT KEY
AX = C007h
BX = hot key
CL = hot key shift status
Return: AL = 00h if successful
SeeAlso: AX=C008h"AD-DOS"
Index: screen saver;AD-DOS
--------c-2FC007-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C007h
???
Return: BX destroyed
???
Note: this function appears to be identical to AX=C006h
SeeAlso: AX=C000h"PCACHE",AX=C006h"PCACHE"
--------V-2FC008-----------------------------
INT 2F - AD-DOS - GET CURRENT HOT KEY
AX = C008h
Return: AX = status
0000h successful
BX = Hot Key
CL = Hot Key Shift Status
0008h otherwise
SeeAlso: AX=C000h"AD-DOS",AX=C007h"AD-DOS"
Index: screen saver;AD-DOS
--------c-2FC008-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
AX = C008h
Return: BX destroyed
SeeAlso: AX=C000h"PCACHE",AX=C009h"PCACHE"
--------V-2FC009-----------------------------
INT 2F - AD-DOS - UNBLANK MONITOR
AX = C009h
Return: AL = 00h if successful
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
Note: this function works by simulating keyboard activity
Index: screen saver;AD-DOS
--------c-2FC009-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
AX = C009h
Return: BX destroyed
Program: PCACHE is the resident print spooler portion of PrintCache by
LaserTools; it may use either memory or disk space to spool output
Range: AH=C0h to AH=FFh, selected by commandline switch
SeeAlso: AX=C000h"PCACHE",AX=C008h"PCACHE"
--------V-2FC00A-----------------------------
INT 2F - AD-DOS - ???
AX = C00Ah
Return: AX = status
0000h successful
BH = ??
BL = ??
000Ah failed
Index: screen saver;AD-DOS
--------c-2FC00A-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C00Ah
???
Return: AH = bit flags
bit 5: ???
AL = bit flags
bit 4: ???
bit 3: ???
BX destroyed
???
SeeAlso: AX=C000h"PCACHE"
--------V-2FC00B-----------------------------
INT 2F - AD-DOS - ???
AX = C00Bh
Return: AX = status
0000h successful
000Bh failed
Index: screen saver;AD-DOS
--------c-2FC00B-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
AX = C00Bh
Return: BX destroyed
SeeAlso: AX=C000h"PCACHE"
--------V-2FC00C-----------------------------
INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h
AX = C00Ch
Return: AX = status
0000h successful
000Ch failed
Program: AD-DOS is the DOS version of the After Dark screen blanker for
MS Windows
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
Index: screen saver;AD-DOS
--------c-2FC00C-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
AX = C00Ch
Return: AX = ??? (0000h)
BX = ??? (0000h)
CX = ??? (0100h)
DL = ???
DH = ???
SeeAlso: AX=C000h"PCACHE"
--------c-2FC00D-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ???
AX = C00Dh
DL = ???
Return: BX destroyed
Program: PCACHE is the resident print spooler portion of PrintCache by
LaserTools; it may use either memory or disk space to spool output
Range: AH=C0h to AH=FFh, selected by commandline switch
SeeAlso: AX=C000h"PCACHE"
--------V-2FC00E-----------------------------
INT 2F - AD-DOS - SET PASSWORD STATUS
AX = C00Eh
BX = new state (0000h disabled, 0001h enabled)
Return: ???
SeeAlso: AX=C000h"AD-DOS",AX=C00Fh"AD-DOS"
Index: screen saver;AD-DOS
--------c-2FC00E-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - INSTALL ???
AX = C00Eh
ES:DX -> ???
Return: BX destroyed
Note: ES:DX is stored internally if the variable is currently 0000h:0000h,
but ignored if already set; a counter is incremented
SeeAlso: AX=C000h"PCACHE",AX=C00Fh"PCACHE"
--------V-2FC00F-----------------------------
INT 2F - AD-DOS - GET PASSWORD STATUS
AX = C00Fh
Return: BX = current state (0000h disabled, 0001h enabled)
SeeAlso: AX=C00Eh"AD-DOS"
Index: screen saver;AD-DOS
--------c-2FC00F-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - REMOVE ???
AX = C00Fh
Return: BX destroyed
Note: this function decrements the counter used by AX=C00Eh, and clears the
internal pointer variable to 0000h:0000h when it reaches zero
SeeAlso: AX=C000h"PCACHE",AX=C00Eh"PCACHE"
--------c-2FC010-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
AX = C010h
CX = index of ??? table (00h-02h, others treated as 00h)
SI = offset into data table
Return: AL = byte at specified offset into table
BX destroyed
SeeAlso: AX=C000h"PCACHE"
--------c-2FC011-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
AX = C011h
Return: AX = ??? (0007h)
BX = ??? (0001h)
CH = ???
CL = ???
SeeAlso: AX=C000h"PCACHE"
--------c-2FC012-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - GET ???
AX = C012h
Return: AX = ???
BX = ???
CX = ???
DX = ???
SeeAlso: AX=C000h"PCACHE"
--------c-2FC013-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C013h
???
Return: BX destroyed
???
Program: PCACHE is the resident print spooler portion of PrintCache by
LaserTools; it may use either memory or disk space to spool output
Range: AH=C0h to AH=FFh, selected by commandline switch
SeeAlso: AX=C000h"PCACHE"
--------c-2FC014-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C014h
???
Return: BX destroyed
???
SeeAlso: AX=C000h"PCACHE"
--------c-2FC015-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C015h
???
Return: BX destroyed
???
SeeAlso: AX=C000h"PCACHE"
--------c-2FC016-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - INCREMENT ???
AX = C016h
Return: BX destroyed
SeeAlso: AX=C000h"PCACHE",AX=C017h"PCACHE"
--------c-2FC017-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - DECREMENT ???
AX = C017h
Return: BX destroyed
SeeAlso: AX=C000h"PCACHE",AX=C016h"PCACH"
--------c-2FC018-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C018h
???
Return: BX destroyed
???
Note: the first instruction of this function is an indirect jump which points
at a RET by default
SeeAlso: AX=C000h"PCACHE",AX=C019h"PCACHE"
--------c-2FC019-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C019h
???
Return: BX destroyed
???
Note: the first instruction of this function is an indirect jump which points
at a RET by default
SeeAlso: AX=C000h"PCACHE",AX=C018h"PCACHE"
--------c-2FC01A-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - CLEAR ??? FLAG
AX = C01Ah
Return: BX destroyed
SeeAlso: AX=C000h"PCACHE",AX=C01Bh"PCACHE"
--------c-2FC01B-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - SET ??? FLAG
AX = C01Bh
Return: BX destroyed
SeeAlso: AX=C000h"PCACHE",AX=C01Ah"PCACHE"
--------c-2FC01C-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - ???
AX = C01Ch
???
Return: AX = ???
BX destroyed
SeeAlso: AX=C000h"PCACHE"
--------c-2FC01D-----------------------------
INT 2F U - PrintCache v3.1 PCACHE.EXE - NOP
AX = C01Dh to C01Fh
Return: BX destroyed
Program: PCACHE is the resident print spooler portion of PrintCache by
LaserTools; it may use either memory or disk space to spool output
Range: AH=C0h to AH=FFh, selected by commandline switch
SeeAlso: AX=C000h"PCACHE"
--------V-2FC020-----------------------------
INT 2F - AD-DOS - GET AND RESET VxD API STATUS
AX = C020h
Return: AL = 00h if successful
BX = VxD API Status
0000h no error
0001h error
0100h neither Windows 3.X enhanced mode nor Windows/386 2.x
is running
0200h VM API entry point not found (VxD not installed)
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
Note: this call resets the VxD API Status to zero
SeeAlso: AX=1602h,AX=1607h"CALL OUT API"
Index: screen saver;AD-DOS
--------V-2FC04E-----------------------------
INT 2F - Explosiv v2.00+ - NON-TSR EXECUTING CHECK
AX = C04Eh
Return: AL = 4Fh if Explosiv is running but not memory-resident
Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
by H&G Software (Reidar Gresseth and Chris Hook)
Range: AH=C0h to AH=C9h, selected by configuration
SeeAlso: AX=C050h
Index: screen saver;Explosiv
--------V-2FC050-----------------------------
INT 2F - Explosiv v2.00+ - INSTALLATION CHECK
AX = C050h
Return: AL = 51h if installed
---v3.0+ ---
BX = interval in clock ticks
CH = animation display color (00h mono, 01h tinge, 02h color)
CL = animation delay factor
DH = animation parameters
DL = INT 10 checking (00h on, 01h off)
SI = number of bytes available for animation code
DI = display type (00h VGA, 01h EGA, 02h CGA, 03h HGC, 04h MDA)
Program: Explosiv is a shareware animated screen blanker for DOS and Windows 3
by H&G Software (Reidar Gresseth and Chris Hook)
Range: AH=C0h to AH=C9h, selected by configuration
SeeAlso: AH=93h,AX=C000h"AD-DOS",AX=C04Eh,AX=C052h,AX=C054h"v3"
SeeAlso: INT 14/AX=AA01h
Index: screen saver;Explosiv
--------V-2FC052-----------------------------
INT 2F - Explosiv v2.00+ - UNINSTALL
AX = C052h
DX:BX = address to return to on successful uninstall
Return: at specified address if successful
AL = 53h on error
Note: specified return address must have the segment of the caller's PSP
SeeAlso: AX=C050h
Index: screen saver;Explosiv
--------V-2FC054-----------------------------
INT 2F - Explosiv v2.x - GET ANIMATION DELAY FACTOR
AX = C054h
Return: AL = delay factor
SeeAlso: AX=C057h
Index: screen saver;Explosiv
--------V-2FC054-----------------------------
INT 2F - Explosiv v3.0+ - UPDATE PARAMETERS
AX = C054h
BX = new interval in clock ticks
CH = animation display color (00h mono, 01h tinge, 02h color)
CL = animation delay factor
DH = animation parameters
DL = INT 10 checking (00h on, 01h off)
SeeAlso: AX=C050h
Index: screen saver;Explosiv
--------V-2FC055-----------------------------
INT 2F - Explosiv v2.x - SET BLANKING INTERVAL
AX = C055h
BX = new interval in clock ticks
Index: screen saver;Explosiv
--------V-2FC056-----------------------------
INT 2F - Explosiv v2.x - SET ANIMATION DISPLAY TYPE
AX = C056h
BL = animated display type (00h mono, 01h color)
SeeAlso: AX=C058h"v2.x"
Index: screen saver;Explosiv
--------V-2FC056-----------------------------
INT 2F - Explosiv v3.0+ - ENABLE/DISABLE EXPLOSIV
AX = C056h
BX = new state
0000h disabled
0100h enabled
0101h enabled, but never blank
0102h enabled, always blank
--------V-2FC057-----------------------------
INT 2F - Explosiv v2.x - SET ANIMATION DELAY FACTOR
AX = C057h
BL = delay factor
SeeAlso: AX=C054h"v2.x"
Index: screen saver;Explosiv
--------V-2FC058-----------------------------
INT 2F - Explosiv v2.x - SET ANIMATION PARAMETER
AX = C058h
BL = animation parameter
Note: the animation parameter has different interpretations for each display
SeeAlso: AX=C056h"v2.x"
Index: screen saver;Explosiv
--------V-2FC058-----------------------------
INT 2F - Explosiv v3.0+ - LOAD NEW ANIMATION DISPLAY CODE
AX = C058h
BX = file handle for file containing display code
CX = number of bytes to load
DX = offset at which animation code should be loaded
Return: AL = status (see #2717)
Note: if AL=00h-03h on return, the file will be closed
Index: screen saver;Explosiv
(Table 2717)
Values for Explosiv function status:
00h successful
01h code too large to available space
02h no data read, load aborted
03h incomplete load, default blanking display loaded instead
58h unexpected offset in DX
--------V-2FC059-----------------------------
INT 2F - Explosiv v2.x - DISABLE EXPLOSIV
AX = C059h
Note: clears flag set by AX=C05Ah
SeeAlso: AX=C05Ah
Index: screen saver;Explosiv
--------V-2FC05A-----------------------------
INT 2F u - Explosiv v2.x - ENABLE EXPLOSIV
AX = C05Ah
BL = ???
Note: sets flag cleared by AX=C059h then stores BL
SeeAlso: AX=C059h,AX=C05Bh
Index: screen saver;Explosiv
--------V-2FC05B-----------------------------
INT 2F - Explosiv v2.x - CHANGE ANIMATION DISPLAY
AX = C05Bh
BL = animation display
Note: this function fails silently if the requested display is not in memory
SeeAlso: AX=C05Ah,AX=C05Ch
Index: screen saver;Explosiv
--------V-2FC05C-----------------------------
INT 2F - Explosiv v2.x - SET INT 10 CHECKING
AX = C05Ch
BL = new state of INT 10 checking (00h enabled, 01h disabled)
SeeAlso: AX=C05Bh
Index: screen saver;Explosiv
--------v-2FC080-----------------------------
INT 2F U - AMI IAM.SYS - INSTALL ??? CALLBACK
AX = C080h
CX:DX -> ??? callback
DI = segment of ??? buffer (first WORD copied into IAM.SYS)
Program: IAM.SYS is the Illegal Activity Monitor portion of American
Megatrends, Inc.'s PC-Defender anti-virus product
Note: also sets ??? flag
SeeAlso: AX=C081h
Format of IAM.SYS buffer:
Offset Size Description (Table 2718)
00h BYTE ???
01h BYTE ???
02h N BYTEs ??? (ASCIZ strings)
--------v-2FC081-----------------------------
INT 2F U - AMI IAM.SYS - CLEAR ???
AX = C081h
Desc: clears the ??? flag that AX=C080h sets
SeeAlso: AX=C080h
--------K-2FC0AE-----------------------------
INT 2F U - HP 100LX/200LX - PUSHKEYS - INSTALLATION CHECK
AX = C0AEh
Return: AX = 4453h if installed
CX = 5259h if installed
Range: AH=C0h to AH=FFh, selected by scanning for signature
SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AFh"HP 100LX"
--------K-2FC0AF-----------------------------
INT 2F U - HP 100LX/200LX - PUSHKEYS - INTERNAL - GET BUFFER ADDRESS
AX = C0AFh
Return: ES:DI -> buffer (behind code)
Range: AH=C0h to AH=FFh, selected by scanning for signature with AL=AEh
SeeAlso: AX=C000h"HP 100LX",AX=C001h"HP 100LX",AX=C0AEh"HP 100LX"
--------N-2FC100-----------------------------
INT 2F U - Personal NetWare - STPIPX v1.00 - INSTALLATION CHECK
AX = C100h
Return: AL = FFh if installed
ES:SI -> signature string "STP-IPX$"
BX = version??? (0001h for v1.00)
DI corrupted
Note: AH=C1h is the default value; STPIPX probably scans a range of
multiplex numbers to find a free one, as LSL does
SeeAlso: AX=C000h"LSL",AX=C101h
--------N-2FC101-----------------------------
INT 2F U - Personal NetWare - STPIPX v1.00 - UNINSTALL
AX = C101h
Return: AL = status???
BX corrupted
SeeAlso: AX=C101h
--------N-2FC205-----------------------------
INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
AX = C205h
details not yet available
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C2F0h"LapLink"
SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
--------N-2FC2F0-----------------------------
INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
AX = C2F0h
details not yet available
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
SeeAlso: AX=C2F1h"LapLink",AX=C301h"LapLink"
--------N-2FC2F1-----------------------------
INT 2F U - LapLink RemoteAccess (LLRA) - Redirector - ???
AX = C2F1h
details not yet available
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink"
--------d-2FC300-----------------------------
INT 2F - SETWPR.COM - INSTALLATION CHECK
AX = C300h
Return: AL = FFh if installed
Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
SeeAlso: AX=C302h"SETWPR"
--------k-2FC300DX0000-----------------------
INT 2F U - SpaceManager - INSTALLATION CHECK
AX = C300h
DX = 0000h
Return: AL = FFh if any SpaceManager programs installed
BX = 6F73h
CX = 6F68h
Program: SpaceManager is an enhancement for MS-DOS DoubleSpace by Vertisoft
Systems, Inc.
Range: AH=C3h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C300h/BX=4F53h
--------k-2FC300BX4F53-----------------------
INT 2F U - SpaceManager - INSTALLATION VERIFICATION
AX = C300h
BX = 4F53h ('OS')
CX = 4F48h ('OH')
DX = program identifier (see #2719) or 0666h for any SpaceManager prog
Return: AL = FFh if BX/CX as specified and specified program installed
BX = 6F73h ('os')
CX = 6F68h ('oh')
Range: AH=C3h to AH=FFh, selected by scanning for first free multiplex number
Note: this call is chained if BX,CX, or DX are not as specified above
SeeAlso: AX=C300h/DX=0000h
(Table 2719)
Values for SpaceManager program identifier:
9000h SMOUNT (SuperMount)
9001h SELECTC (SelectCompress)
9002h SUPERX (SuperExchange)
9003h FORTUNE (FortuneTeller)
--------k-2FC301-----------------------------
INT 2F U - SpaceManager - ???
AX = C301h
DX = program identifier (9000h,9001h,9003h) (see #2719)
???
Return: ???
--------N-2FC301-----------------------------
INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
AX = C301h
details not yet available
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
SeeAlso: AX=C2F0h"LapLink",AX=C3F0h"LapLink",AX=C3F1h"LapLink"
--------k-2FC302-----------------------------
INT 2F U - SpaceManager - ENABLE PROGRAM
AX = C302h
DX = program identifier (9000h,9001h,9003h) (see #2719)
Return: AX destroyed
SeeAlso: AX=C303h,AX=C306h
--------d-2FC302-----------------------------
INT 2F - SETWPR.COM - SET WRITE-PROTECTION STATE
AX = C302h
BL = new state
00h disk may be written
01h disk write-protected
Return: AL = FFh if installed
Program: SETWPR is a hard-disk write-protection TSR by Jaroslaw Rafa
SeeAlso: AX=C300h"SETWPR"
--------k-2FC303-----------------------------
INT 2F U - SpaceManager - DISABLE PROGRAM
AX = C303h
DX = program identifier (9000h,9001h,9003h) (see #2719)
Return: AX destroyed
SeeAlso: AX=C302h,AX=C306h
--------k-2FC304-----------------------------
INT 2F U - SpaceManager - GET PER-DRIVE ENABLEMENT TABLE
AX = C304h
DX = program identifier (9000h,9001h,9003h) (see #2719)
Return: ES:BX -> 26-byte drive table (00h disabled for drive, 01h enabled)
AX destroyed
--------k-2FC305DX9003-----------------------
INT 2F U - SpaceManager - FORTUNE.EXE - NOP
AX = C305h
DX = 9003h
Return: AX destroyed
--------k-2FC305-----------------------------
INT 2F U - SpaceManager - ???
AX = C305h
DX = program identifier (9000h,9001h) (see #2719)
???
Return: ???
--------k-2FC306-----------------------------
INT 2F U - SpaceManager - CHECK WHETHER PROGRAM ENABLED
AX = C306h
DX = program identifier (9000h,9001h,9003h) (see #2719)
Return: AL = current state (00h disabled, FAh enabled)
AH destroyed
SeeAlso: AX=C302h,AX=C303h
--------k-2FC307DX9001-----------------------
INT 2F U - SpaceManager - SELECTC - ???
AX = C307h
DX = 9001h
BX = ???
CX = ???
???
Return: ???
--------k-2FC308DX9001-----------------------
INT 2F U - SpaceManager - SELECTC - ???
AX = C308h
DX = 9001h
???
Return: ???
--------N-2FC3F0-----------------------------
INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
AX = C3F0h
details not yet available
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F1h"LapLink"
--------N-2FC3F1-----------------------------
INT 2F U - LapLink RemoteAccess (LLRA) - Compression - ???
AX = C3F1h
details not yet available
Range: AH=C0h to AH=FFh, selected by scanning for first free multiplex number
SeeAlso: AX=C000h"LapLink",AX=C002h"LapLink",AX=C205h"LapLink"
SeeAlso: AX=C2F0h"LapLink",AX=C301h"LapLink",AX=C3F0h"LapLink"
--------d-2FC64CBX5553-----------------------
INT 2F U - Smart Prompt - INSTALLATION CHECK
AX = C64Ch
BX = 5553h
Return: AX = 4CC6h if installed
BX = 5355h if installed
Program: Smart Prompt (SMARTPMT) is a freeware TSR by Steve Gibson which
forces an immediate flush of SmartDrive's (and compatible caches')
buffers on returning to the DOS prompt
--------V-2FC700CX434C-----------------------
INT 2F u - COLAP - INSTALLATION CHECK
AX = C700h
CX = 434Ch "CL"
Return: AL = FFh if installed
Program: colap.com is a freeware TSR by Eric Meyer which controls contrast
and brightness of color laptops by changing the VGA palette colors;
for Toshiba laptops there are more hotkeys for shutting off display
and harddisk.
--------v-2FC900BP0000-----------------------
INT 2F U - ThunderByte??? - INSTALLATION CHECK
AX = C900h
BP = 0000h
Return: AL = FFh if installed
BP >= 0014h
Note: called by TBSCANX
SeeAlso: AX=C987h,AX=CA00h
--------v-2FC987-----------------------------
INT 2F U - ThunderByte??? - DISINFECT FILE???
AX = C987h
BX:DX -> filename
BX:CX -> virus name
Return: AX = status
0000h successful???
Note: called by TBSCANX
SeeAlso: AX=CA00h
--------v-2FC9FD-----------------------------
INT 2F - ThunderByte TBLOG - WRITE STRING TO LOG
AX = C9FDh
DS:SI -> ASCIZ string (max 110 chars)
Return: AH = 00h
AL = last character in string
CX = number of unused characters in string
SI,DI destroyed
Notes: The string can also be terminated with a '%'-character.
This function is never called within ThunderBYTE Anti-Virus.
SeeAlso: AX=C900h
--------r-2FC9FF-----------------------------
INT 2F C - StackMan - INSTALLATION BROADCAST
AX = C9FFh
BL = BCD version number
CX = number of stacks
DX = stack size in bytes
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
Notes: called by StackMan when it goes resident to inform interested TSRs that
its API is available
the installation check consists of testing for the string "STACKXXX" at
offset 0Ah from the INT B4 handler
SeeAlso: INT B4"StackMan",INT B5"StackMan"
Index: installation check;STACKMAN|broadcasts;STACKMAN installation
--------F-2FCA-------------------------------
INT 2F - FAXPLUS - FAX TSR
AH = CAh
???
Return: ???
Program: FAXTSR is a resident FAX send/receive module for FAXPLUS by Frans
Veldman
SeeAlso: AH=2Ah"Gammafax"
--------v-2FCA00BX5442-----------------------
INT 2F - TBSCANX - INSTALLATION CHECK
AX = CA00h
BX = 5442h ('TB')
Return: AL = state
00h not installed
FFh installed
BX = 7462h ('tb') if BX was 5442h on entry
Program: TBSCANX is a resident virus scanning module by Frans Veldman.
Notes: programs may perform virus checks on themselves, other program files,
or their data files by invoking the TBSCANX API.
current versions of TBScanX don't actually check the value of BX
SeeAlso: AX=4653h/CX=0002h,AX=4653h/CX=0007h,AX=C900h
--------v-2FCA01-----------------------------
INT 2F - TBSCANX - GET STATUS
AX = CA01h
Return: AH = BCD version number (v2.2+)
CAh for versions before 2.2
AL = state (00h = disabled, 01h = enabled)
CX = number of signatures which will be searched
---v2.0---
BX = EMS handle, 0000h if not using EMS
---v2.3+---
BX = segment of swap area, 0000h if not swapped
DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS
SeeAlso: AX=CA02h
--------v-2FCA02-----------------------------
INT 2F - TBSCANX - SET STATE
AX = CA02h
BL = new state (00h = disabled, 01h = enabled)
SeeAlso: AX=CA01h
--------v-2FCA03-----------------------------
INT 2F - TBSCANX - SCAN BUFFER
AX = CA03h
CX = size of buffer
DS:DX -> buffer containing data to scan
Return: CF clear if no virus signatures found
BX,ES destroyed
CF set if signature found
ES:BX -> ASCIZ virus name (v2.3+)
DS:DX -> ASCIZ virus name (v2.0)
AX,CX,DX destroyed (v2.3+)
all other registers except CS:IP and SS:SP destroyed (v2.0)
SeeAlso: AX=CA04h
--------v-2FCA04-----------------------------
INT 2F - TBSCANX - SCAN FILE
AX = CA04h
DS:DX -> filename
Return: CF clear if no virus signatures found
BX,SI,DI,ES destroyed
CF set if signature found
ES:BX -> ASCIZ virus name
AX,CX,DX destroyed
Note: this function requires at least 4K free memory
SeeAlso: AX=CA03h
--------U-2FCAFEBX0000-----------------------
INT 2F U - THELP v3.0 - INSTALLATION CHECK
AX = CAFEh
BX = 0000h
Return: BX = segment of resident code if installed
0000h if not installed
SeeAlso: AX=5453h,INT 2D"AMIS"
--------F-2FCB00-----------------------------
INT 2F - Communicating Applications Specification - INSTALLATION CHECK
AX = CB00h
Return: AL = status
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
Note: AH = CBh is the default identifier, but may be reconfigured
SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=CB0Eh,AX=CBDCh
--------F-2FCB00BX4D53-----------------------
INT 2F - MTEZ XpressFax CASMGR - INSTALLATION CHECK
AX = CB00h
BX = 4D53h ('MS')
CX = 4949h ('II')
Return: AL = status
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
BX = 6D73h ('ms')
CX = 6969h ('ii')
Note: this function is equivalent to the standard CASMGR installation check,
but uses the additional magic values to identify which CAS is
installed
SeeAlso: AH=2Ah,AX=8000h"FaxBIOS",AX=C000h/BX=444Bh,AX=CB0Eh,AX=CB16h
--------F-2FCB01-----------------------------
INT 2F - Communicating Applications Specification - SUBMIT A TASK
AX = CB01h
DS:DX -> ASCIZ name of task control file
Return: AX >= 0: event handle
AX < 0: two's complement of error code (see #2720)
Note: files needed for an event must be kept until task is complete or error
SeeAlso: AX=CB0Bh,AX=CB15h
(Table 2720)
Values for CAS error code:
(AH = class, AL = subcode, value passed back is 2's complement)
Class 00h --- FAX warnings
Subcode 00h no error
02h bad scanline count
03h page sent with errors, could not retransmit
04h received data lost
05h invalid or missing logo file
06h filename does not match nonstandard format (NSF) header
07h file size does not match NSF header
Class 01h --- DOS warnings (data was sent)
Subcode 01h invalid function
05h access denied
06h invalid handle
others see #1366 at INT 21/AH=59h/BX=0000h
Class 02h --- fatal errors (data not sent)
Subcode 00h multiplex handler failed
01h unknown command
02h bad event handle
03h FIND NEXT attempted before FIND FIRST
04h no more events
07h invalid queue type
08h bad control file
09h communication board busy
0Ah invalid command parameter
0Bh can't uninstall resident code
0Ch file exists
80h unknown task type
81h bad phone number
82h bad .PCX file header
83h unexpected EOF
84h unexpected disconnect
85h too many dialing retries
86h no file specified for send
87h communication board timeout
88h received too many pages (>1023) of data
89h manual connect initiated too long ago
8Ah hardware command set error
8Bh bad NonStandard Format (NSF) header file
Class 03h --- fatal DOS errors
Subcode 02h file not found
03h path not found
others see #1366 at INT 21/AH=59h/BX=0000h
Class 04h --- FAX errors
Subcode 01h remote unit not Group 3 compatible
02h remote unit did not send capabilities
03h other FAX machine incompatible
04h other FAX incapable of file transfers
05h exceeded retrain or FAX resend limit
06h line noise or failure to agree on bit rate
07h remote disconnected after receiving data
08h no response from remote after sending data
09h remote's capabilities incompatible
0Ah no dial tone (v1.2+)
0Bh invalid response from remote unit after sending data
0Dh phone line dead or remote unit disconnected
0Eh timeout while waiting for secondary dial tone (v1.2+)
11h invalid command from remote after receiving data
15h tried to receive from incompatible hardware
5Ch received data overflowed input buffer
5Dh remote unexpectedly stopped sending data
5Eh other FAX machine jammed (no data sent)
5Fh remote took too long to send fax scan line
63h can't get through to remote unit
64h user canceled event
Class 05h --- application-specific (v1.2+)
---Intel FAXPOP.EXE
Subcode 00h tried to send while in graphics mode
01h insufficient disk space
02h internal buffer overflow
Class 06h --- CAS implementation-specific (v1.2+)
--------F-2FCB02-----------------------------
INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT
AX = CB02h
Return: AX >= 0: event handle of aborted event
AX < 0: error code (see #2720)
Note: termination could take up to 30 seconds
SeeAlso: AX=CB08h,AX=CB10h
--------F-2FCB05-----------------------------
INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY
AX = CB05h
CX = status of events to find
0000h successful completion
0001h waiting to be processed
0002h number has been dialed
0003h connection established, sending
0004h connection established, receiving
0005h event aborted
FFFFh find any event, regardless of status
other negative values, match error code
DH = direction
00h chronological order, earliest to latest
01h reverse chronological order, latest to earliest
DL = queue to search
00h task queue
01h receive queue
02h log queue
Return: AX = 0000h successful
BX = event handle for found event
AX < 0 error code (see #2720)
SeeAlso: AX=CB06h,AX=CB07h
--------F-2FCB06-----------------------------
INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY
AX = CB06h
DL = queue to search
00h task queue
01h receive queue
02h log queue
Return: AX = 0000h successful
BX = event handle for found event
AX < 0 error code (see #2720)
Note: direction of search is same as preceding FIND FIRST call
SeeAlso: AX=CB05h
--------F-2FCB07-----------------------------
INT 2F - Communicating Applications Specification - OPEN FILE
AX = CB07h
BX = event handle from find (AL=05h,06h) or submit task (AL=01h)
CX = receive file number (ignored for task queue and log queue)
0000h open receive control file
N open Nth received data file
DL = queue
00h task queue
01h receive queue control file or received file, as given by CX
02h log queue
03h group file in task queue (v1.2+)
04h group file in log queue (v1.2+)
Return: AX = 0000h successful
BX = DOS file handle for requested file
AX < 0 error code (see #2720)
Note: the returned file handle has been opened in read-only mode and should
be closed with INT 21/AH=3Eh after use
SeeAlso: AX=CB01h,AX=CB05h,AX=CB14h
--------F-2FCB08-----------------------------
INT 2F - Communicating Applications Specification - DELETE FILE
AX = CB08h
BX = event handle
CX = receive file number
0000h delete ALL received files and receive control file
N delete Nth received file
DL = queue
00h delete control file in task queue and corresponding group file
if it exists
01h delete file in receive queue, as given by CX
02h delete control file in log queue (individual deletions not
recommended, to maintain integrity of log) and corresponding
group file if it exists
Return: AX = 0000h successful
AX < 0 error code (see #2720)
SeeAlso: AX=CB02h,AX=CB09h
--------F-2FCB09-----------------------------
INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q
AX = CB09h
DL = queue
00h delete all control files in task queue, including all group
files
01h delete all files in receive queue
02h delete all control files in log queue, including all group
files
Return: AX = 0000h successful
AX < 0 error code (see #2720)
SeeAlso: AX=CB08h
--------F-2FCB0A-----------------------------
INT 2F - Communicating Applications Specification - GET EVENT DATE
AX = CB0Ah
BX = event handle
DL = queue
00h task queue
01h receive queue
02h log queue
Return: AX = 0000h successful
CX = year
DH = month
DL = day
AX < 0 error code (see #2720)
SeeAlso: AX=CB0Bh,AX=CB0Ch
--------F-2FCB0B-----------------------------
INT 2F - Communicating Applications Specification - SET TASK DATE
AX = CB0Bh
BX = event handle (task event only)
CX = year
DH = month
DL = day
Return: AX = 0000h successful
AX < 0 error code (see #2720)
Note: setting a task's date and time to before the current date and time
causes it to execute immediately
SeeAlso: AX=CB01h,AX=CB0Ah,AX=CB0Dh
--------F-2FCB0C-----------------------------
INT 2F - Communicating Applications Specification - GET EVENT TIME
AX = CB0Ch
BX = event handle
DL = queue
00h task queue
01h receive queue
02h log queue
Return: AX = 0000h successful
CH = hour
CL = minute
DH = second
DL = 00h
AX < 0 error code (see #2720)
SeeAlso: AX=CB0Ah,AX=CB0Dh
--------F-2FCB0D-----------------------------
INT 2F - Communicating Applications Specification - SET TASK TIME
AX = CB0Dh
BX = event handle (task events only)
CH = hour
CL = minute
DH = second
DL unused
Return: AX = 0000h successful
AX < 0 error code (see #2720)
Note: setting a task's date and time to before the current date and time
causes it to execute immediately
SeeAlso: AX=CB0Bh,AX=CB0Ch,AX=CB10h
--------F-2FCB0E-----------------------------
INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK
AX = CB0Eh
DS:DX -> 256-byte buffer for external data block (see #2721)
Return: AX = 0000h successful
DS:DX buffer filled
AX < 0 error code (see #2720)
Format of CAS external data block:
Offset Size Description (Table 2721)
00h BYTE CAS major version
01h BYTE CAS minor version
02h 68 BYTEs ASCIZ path to directory containing CAS software, ends in slash
46h 13 BYTEs ASCIZ name of current phonebook (in CAS directory)
53h 13 BYTEs ASCIZ name of current logo file (in CAS directory)
60h 32 BYTEs ASCIZ default sender name
80h 21 BYTEs ASCIZ CCITT identification of fax device
95h 107 BYTEs reserved
--------F-2FCB0F-----------------------------
INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE
AX = CB0Fh
DL = subfunction
00h get current autoreceive state
01h set autoreceive state
DH = number of rings before answer, 00h = never
Return: AX = 0000h autoreceive disabled
AX = N number of rings before answer
AX < 0 error code (see #2720)
--------F-2FCB10-----------------------------
INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS
AX = CB10h
DS:DX -> 512-byte buffer for status area (see #2723)
Return: AX = 0000h successful
BX = event handle of current event or negative error code if
no current event
buffer filled
AX < 0 error code (see #2720)
SeeAlso: AX=CB02h,AX=CB0Dh
(Table 2722)
Values for CAS event type:
00h send
01h receive
02h polled send
03h polled receive
04h to 7Fh reserved
FFh serious hardware error
Format of CAS status area:
Offset Size Description (Table 2723)
00h BYTE event type (see #2722)
01h BYTE transfer type
00h 200x200 dpi, FAX mode
01h 100x200 dpi, FAX mode
02h file transfer mode
03h to 7Fh reserved
02h WORD event status (see #2724)
04h WORD event time (packed DOS time format, see INT 21/AX=5700h)
06h WORD event date (packed DOS date format, see INT 21/AX=5700h)
08h WORD number of files to transfer, max 7FFFh
0Ah WORD offset of file transfer record
0Ch 47 BYTEs ASCIZ phone number to call
3Bh 64 BYTEs ASCIZ application-specific tag string
7Bh BYTE reserved (00h)
7Ch BYTE connect time, seconds
7Dh BYTE connect time, minutes
7Eh BYTE connect time, hours
7Fh DWORD total number of pages in all files
83h DWORD pages already transmitted
87h WORD number of files already transmitted
89h BYTE cover page flag
00h don't transmit cover page
01h transmit cover page
02h to 7Fh reserved
8Ah WORD total number of transmission errors
8Ch 78 BYTEs reserved (zeros)
DAh 21 BYTEs ASCIZ remote FAX's CCITT identification
EFH 32 BYTEs ASCIZ destination name
10Fh 32 BYTEs ASCIZ sender name
12Fh 80 BYTEs filename of PCX logo file (max 1780x800 pixels)
17Fh 128 BYTEs file transfer record for current event (see #2725)
(Table 2724)
Values for CAS event status:
0000h completed successfully
0001h waiting
0002h number dialed
0003h connected, sending
0004h connected, receiving
0005h aborted
0006h to 007Fh reserved
0080h to 7FFFh application-specific events
8000h to FFFFh error codes
Format of CAS file transfer record:
Offset Size Description (Table 2725)
00h BYTE file type (ignored unless FAX)
00h ASCII
01h PCX
02h DCX
03h to 7Fh reserved
01h BYTE text size for ASCII FAX file
00h = 80 columns by 66 lines (11 inches)
01h = 132 columns by 88 lines (11 inches)
02h to 7Fh reserved
02h BYTE status of file
00h untouched
01h opened
02h moved
03h deleted
04h not yet received
05h to 7Fh reserved
03h DWORD bytes already transmitted
07h DWORD file size in bytes
0Bh WORD pages alread transmitted
0Dh WORD number of pages in file
0Fh 80 BYTEs ASCIZ filename
5Fh BYTE 1/8 inch page length
if page length below set to 01h through 7Fh, this value
specifies additional 1/8 inch increments to page length
60h BYTE page length
00h = 11 inches
01h to 7Fh = page length is this number of inches plus value of
1/8 inch field above
80h to FEh reserved
FFh = ASCII pages ending with formfeed
61h 31 BYTEs reserved (zeros)
--------F-2FCB11-----------------------------
INT 2F - Communicating Applications Specification - GET QUEUE STATUS
AX = CB11h
DL = queue to get status of
00h task queue
01h receive queue
02h log queue
03h send events (v1.2+)
04h receive events (v1.2+)
Return: AX >= 0 total number of changes made to queue, modulo 32768
BX = number of control files currently in queue
CX = number of received files (zero for task and log queues)
AX < 0 error code (see #2720)
SeeAlso: AX=CB12h
--------F-2FCB11DL03-------------------------
INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS
AX = CB11h
DL = 03h
Return: AX = number of successful sends since resident manager started
BX = number of unsuccessful sends, including warnings
SeeAlso: AX=CB11h/DL=04h
--------F-2FCB11DL04-------------------------
INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS
AX = CB11h
DL = 04h
Return: AX = number of received file events since resident manager started
BX = number of received FAX events
SeeAlso: AX=CB11h/DL=03h
--------F-2FCB12-----------------------------
INT 2F - Communicating Applications Specification - GET HARDWARE STATUS
AX = CB12h
DS:DX -> 128-byte status buffer (see #2726,#2728)
Return: AX = 0000h successful
DS:DX buffer filled with hardware-dependent status information
< 0 error code (see #2720)
SeeAlso: AX=CB10h,AX=CB11h
Format of status buffer for Intel Connection CoProcessor:
Offset Size Description (Table 2726)
00h BYTE Connection CoProcessor connection status flags (see #2729)
01h BYTE number of kilobytes of free buffer space
02h BYTE page buffer status
bit 7: Connection CoProcessor has documents to send
bits 6-0: number of pages in buffer
03h BYTE number of retries left for dialing number
04h BYTE page number to retransmit
05h BYTE communications status (see #2730)
06h BYTE baud rate (see #2727)
07h 3 BYTEs reserved
0Ah BYTE Connection CoProcessor hardware status (see #2731)
0Bh BYTE Connection CoProcessor switch states (see #2732)
0Ch BYTE communications flags (see #2733)
0Dh BYTE reserved
0Eh WORD error count (only valid while busy, reset when idle)
10h DWORD size of nonstandard format (NSF) file in bytes
14h BYTE 'A' if Connection CoProcessor board present
15h 9 BYTEs reserved
1Eh 21 BYTEs ASCIZ CCITT identification
33h 77 BYTEs reserved
Note: the Intel Connection CoProcessor and SatisFAXtion may be distinguished
by examining the byte at offset 14h
Bitfields for Connection CoProcessor baud rate:
Bit(s) Description (Table 2727)
7 reserved
6-4 baud rate
000 = 300 baud (V.21 SDLC or HDLC mode)
100 = 2400 baud (V.27 ter)
101 = 4800 baud (V.27 ter)
110 = 7200 baud (V.29)
111 = 9600 baud (V.29)
3-0 reserved, should be 0110
Format of status buffer for Intel SatisFAXtion board:
Offset Size Description (Table 2728)
00h BYTE SatisFAXtion connection status flags (see #2734)
01h BYTE SatisFAXtion board state (see #2735)
02h BYTE number of KB free in buffer
03h BYTE number of pages or files in buffer
04h BYTE number of redials remaining on current number
05h BYTE FAX page number to retransmit
06h BYTE current page/file in block transfer
07h BYTE number of rings received (only if auto-answer enabled)
08h WORD error count
0Ah DWORD length of file being transferred
0Eh 6 BYTEs reserved
14h BYTE 'B' if SatisFAXtion board present
15h 13 BYTEs ASCIZ transfer agent name
22h 5 BYTEs ASCIZ transfer agent version number
27h 13 BYTEs ASCIZ resident loader name
34h 5 BYTEs ASCIZ resident loader version number
39h 21 BYTEs ASCIZ remote CSID
4Eh 13 BYTEs ASCIZ resident manager name
5Bh 5 BYTEs ASCIZ resident manager version number
60h 32 BYTEs reserved
Note: the Intel Connection CoProcessor and SatisFAXtion may be distinguished
by examining the byte at offset 14h
Bitfields for Connection CoProcessor connection status flags:
Bit(s) Description (Table 2729)
7 hardware busy sending or receiving
6 last page of data
5 no data on current page
4 retransmit request for current page being transmitted
3 NSF (nonstandard file) mode active
2-0 reserved
Bitfields for communications status:
Bit(s) Description (Table 2730)
7 originating call
6 FAX message to be sent
5 on line
4 ring detected and receive enabled
3 buffer dumped on receive
2-0 hardware sequence state
000 idle
001 dial
010 answer
011 transmit
100 receive
101 pre-message
110 post-message
111 disconnect
Bitfields for Connection CoProcessor hardware status:
Bit(s) Description (Table 2731)
7 modem option installed
6 Connection CoProcessor has control of DAA (not latched)
5 on line (not latched)
4 ring detected (not latched)
3 data in command buffer (not latched)
2 set if using DMA channel 1, clear if using DMA channel 3
1 line length compensation 1 set (not latched)
0 line length compensation 0 set (not latched)
Bitfields for Connection CoProcessor switch states:
Bit(s) Description (Table 2732)
7 reserved
6 unused
5 spare switch open
4 FAX ADR1 switch open
3 FAX ADR0 switch open
2 alternate interrupt switch open
1 COM SEL 1 switch open
0 COM SEL 0 switch open
Note: valid combinations of 0-2 are
000 COM2 IRQ3 IObase 2F8h
001 COM1 IRQ4 IObase 3F8h
010 COM4 IRQ3 IObase 2E8h
011 COM3 IRQ4 IObase 3E8h
110 COM4 IRQ2 IObase 2E8h
111 COM3 IRQ5 IObase 3E8h
Bitfields for communications flags:
Bit(s) Description (Table 2733)
7 reserved
6 auxiliary relay forced ON
5 modem select relay forced ON
4 offhook relay forced ON
3 9600 bps enabled
2 7200 bps enabled
1 4800 bps enabled
0 2400 bps enabled
Bitfields for SatisFAXtion connection status flags:
Bit(s) Description (Table 2734)
7 busy in T.30 CCITT fax protocol
6 data on current page/file (only used for block xfers)
5 retransmission of last page requested
4 in file transfer mode
3 data in buffer
2 data buffer dumped on receive
1 200x100 dpi resolution instead of 200x200 dpi
0 data modem in use, FAX image modem not available
Bitfields for SatisFAXtion board state:
Bit(s) Description (Table 2735)
7 reserved
6 handset jack active, data and FAX modems not available
5-3 current rate
000 300 bps (V.21 HDLC)
100 2400 bps (V.27 ter)
101 4800 bps (V.27 ter)
110 7200 bps (V.29)
111 9600 bps (V.29)
2-0 T.30 CCITT protocol state
000 idle
001 dialing
010 answering
011 transmitting
100 receiving
101 pre-message
110 post-message
111 disconnect
--------F-2FCB13DL00-------------------------
INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS
AX = CB13h
DL = 00h
Return: AX = 0040h in progress
>= 0 passed
< 0 hardware-dependent failure code (see #2736,#2737)
SeeAlso: AX=CB13h/DL=01h
Bitfields for Intel Connection CoProcessor failure codes:
Bit(s) Description (Table 2736)
3 9600 bps FAX modem module failed
2 SDLC chip failed
1 RAM failed
0 ROM checksum failed
Bitfields for Intel SatisFAXtion failure codes:
Bit(s) Description (Table 2737)
1 2400 bps data modem failed
0 9600 bps FAX modem failed
--------F-2FCB13DL01-------------------------
INT 2F - Communicating Applications Specification - START DIAGNOSTICS
AX = CB13h
DL = 01h
Return: AX = 0000h successfully started
AX < 0 error code (see #2720)
SeeAlso: AX=CB13h/DL=00h
--------F-2FCB14-----------------------------
INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE
AX = CB14h
BX = event handle
CX = receive file number
0001h first received file
N Nth received file
DS:DX -> ASCIZ string specifying new name for file (must not exist)
Return: AX = 0000h successful
AX < 0 error code (see #2720)
--------F-2FCB15-----------------------------
INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND
AX = CB15h
DS:DX -> variable-length data area (see #2738)
Return: AX >= 0 event handle
AX < 0 error code (see #2720)
SeeAlso: AX=CB01h
Format of CAS file submission data area:
Offset Size Description (Table 2738)
00h BYTE transfer type
00h = 200x200 dpi, fax mode
01h = 100x200 dpi, fax mode
02h = file transfer mode
03h to 7Fh reserved
01h BYTE text size
00h = 80 columns
01h = 132 columns
02h to 7Fh reserved
02h WORD time to send (DOS packed time, see #1351 at INT 21/AX=5700h)
04h WORD date to send (DOS packed date, see #1352 at INT 21/AX=5700h)
06h 32 BYTEs ASCIZ destination name
26h 80 BYTEs ASCIZ name of file to send
76h 47 BYTEs ASCIZ phone number to dial
A5h 64 BYTEs ASCIZ application-specific tag string
E5h BYTE reserved (00h)
E6h BYTE cover page
00h don't send cover page
01h send cover page
02h to 7Fh reserved
E7h 23 BYTEs reserved (zeros)
FEh variable ASCIZ string containing text of cover page (if cover page flag
set to 01h)
--------F-2FCB16BX1234-----------------------
INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER
AX = CB16h
BX = 1234h
CX = 5678h
DX = 9ABCh
Return: AX = 0000h successful
AX < 0 error code
Note: the MTEZ XpressFax CASMGR ignores the values in BX,CX, and DX
SeeAlso: AX=C000h/BX=444Bh,AX=CB00h
Index: uninstall;CAS Manager
--------F-2FCB17-----------------------------
INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS
AX = CB17h
BX = event handle
CL = cover page status
00h not read
01h read by user
Return: AX = 0000h successful
AX < 0 error code
--------F-2FCB80-----------------------------
INT 2F - Intel SatisFAXtion CASMGR - ???
AX = CB80h
???
Return: ???
--------F-2FCB81-----------------------------
INT 2F - Intel SatisFAXtion CASMGR - ???
AX = CB81h
???
Return: ???
--------F-2FCB82-----------------------------
INT 2F - Intel SatisFAXtion CASMGR - ???
AX = CB82h
???
Return: ???
--------F-2FCBDCBL56-------------------------
INT 2F - Comwave Microfax Specification - GET STATUS ARRAY
AX = CBDCh
BL = 56h
BH = line number (starts with 1)
CX:DX -> 32-byte status buffer or 80 character string
Return: AX = number of cards installed, or FFFFh on error
Program: Comwave manufacturers the Microfax line of fax cards which are a
high-performance multi-card FAX solution for OEMs.
Note: defaults to AH=CBh but can be changed
SeeAlso: AX=CBDDh,AX=DA00h
--------F-2FCBDDBL56-------------------------
INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION
AX = CBDDh
BL = 56h
BH = ?
CX:DX -> command to execute
Return: AX = status
0000h success
FFFFh on error
SeeAlso: AH=2Ah,AX=CBDCh,AX=80FBh
--------c-2FCC--SI5453-----------------------
INT 2F U - PC-Kwik Programs - API
AH = CCh
SI = 5453h or 7473h
AL = function number (at least 00h,01h,04h,05h,07h,80h)
DL = program identifier (see #2739)
Return: SI = 7473h
other registers vary by function
Note: Qualitas Qcache v4.00 is an OEM version of Super PC-Kwik v4.00, and
thus supports this call
SeeAlso: INT 21/AH=2Bh/CX=4358h
(Table 2739)
Values for PC-Kwik program identifier:
00h all installed PowerPak programs
01h SUPERPCK/SUPER/QCACHE v4.00+ (disk cache)
02h PCKSPL (print spooler)
04h PCKSCRN (screen accelerator)
05h PCKKEY (keyboard enhancer)
06h PCKRAMD (RAM disk)
08h PCKWIK.SYS
10h PCKCDROM (CD-ROM support for SUPERPCK)
--------N-2FCC00-----------------------------
INT 2F - Tsoft NFSDRVR - INSTALLATION CHECK
AX = CC00h
Return: AX = 7777h
BX = ???
CX = ???
DX = ???
ES = data segment of resident portion
SeeAlso: AX=CC01h,AX=CC06h
--------N-2FCC01-----------------------------
INT 2F - Tsoft NFSDRVR - ???
AX = CC01h
???
Return: ???
SeeAlso: AX=CC00h
--------N-2FCC02-----------------------------
INT 2F - Tsoft NFSDRVR - ???
AX = CC02h
???
Return: ???
SeeAlso: AX=CC00h
--------N-2FCC03-----------------------------
INT 2F - Tsoft NFSDRVR - ???
AX = CC03h
???
Return: ???
SeeAlso: AX=CC00h
--------N-2FCC04-----------------------------
INT 2F - Tsoft NFSDRVR - ???
AX = CC04h
???
Return: ???
SeeAlso: AX=CC00h
--------N-2FCC05-----------------------------
INT 2F - Tsoft NFSDRVR - ???
AX = CC05h
???
Return: ???
SeeAlso: AX=CC00h
--------N-2FCC06-----------------------------
INT 2F - Tsoft NFSDRVR - ???
AX = CC06h
???
Return: ???
SeeAlso: AX=CC00h
--------P-2FCD00-----------------------------
INT 2F - Intel Image Processing Interface - INSTALLATION CHECK
AX = CD00h
Return: AL = state
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
SeeAlso: AX=CD02h"Image"
--------P-2FCD00-----------------------------
INT 2F - LaserPort Interface - INSTALLATION CHECK
AX = CD00h
Return: AL = status
FFh installed
SeeAlso: AX=CD0Fh"LaserPort"
--------U-2FCD00-----------------------------
INT 2F - SWELL.EXE - INSTALLATION CHECK
AX = CD00h
Return: AX = 00FFh installed
BH = major version
BL = minor version
Program: SWELL.EXE is a TSR which swaps programs to disk when they EXEC a
child process with INT 21/AH=4Bh
--------s-2FCD00BX464F-----------------------
INT 2F - Forte/Gravis ULTRAMID - INSTALLATION CHECK
AX = CD00h
BX = 464Fh ('FO')
CX = 5254h ('RT')
DX = 4520h ('E ')
Return: AL = FFh if installed
BX = 4155h ('AU')
CX = 4449h ('DI')
DX = 4F20h ('O ')
ES:SI -> program ID string
Program: ULTRAMID is a MIDI driver for the Gravis UltraSound which allows use
of AIL drivers with other software
Range: AH=CDh-ECh, selected by scanning for an available multiplex number
SeeAlso: INT 21/AX=FD12h,AX=CD00h/DX=4957h
--------s-2FCD00DX4957-----------------------
INT 2F R - InterWave Game API - INSTALLATION CHECK
AX = CD00h
DX = 4957h ('IW')
SI = 5645h ('VE')
Return: AL = FFh if installed
DX = 4554h ('ET')
SI = 454Bh ('EK')
Range: AH=CDh-ECh, selected by scanning for an available multiplex number
SeeAlso: AX=CD00h/BX=464Fh,AX=CD01h"InterWave",AX=CD21h"InterWave"
SeeAlso: AX=CD80h"InterWave"
--------P-2FCD01-----------------------------
INT 2F - Intel Image Processing Interface - SET DEVICE NAME
AX = CD01h
CX:BX -> ASCIZ character device name ("LPTn", "COMn", "PRN")
Return: AL = status
00h successful
CX:BX -> internal character device name
80h error
--------U-2FCD01-----------------------------
INT 2F - SWELL.EXE - SUSPEND ONCE
AX = CD01h
Return: AX = 0000h
SeeAlso: AX=CD02h"SWELL"
--------s-2FCD01BX0000-----------------------
INT 2F R - InterWave Game API - GET NUMBER OF INTERWAVE PROGRAMS / PROGRAM ID
AX = CD01h
BX = 0000h
Return: BX = number of programs currently installed on the Game API
Desc: get the number of programs supporting the InterWave Game API which are
currently installed in memory, which also forms the next program ID
number if the caller wishes to go resident on the API
Range: AH=CDh-ECh, selected by scanning for an available multiplex number
Notes: the first program to install on the IW Game API must use ID 00h
the AMD-recommended implementation is for the handler to increment
BX and chain to the previous handler (if any), but this will fail
if TSRs are unloaded out-of-order
SeeAlso: AX=CD00h"InterWave",AX=CD02h"InterWave",AX=CD03h"InterWave"
SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
--------P-2FCD02-----------------------------
INT 2F - Intel Image Processing Interface - GET VERSION NUMBER
AX = CD02h
Return: AL = status
00h/01h successful
BH = major version number (BCD)
BL = minor version number (BCD)
80h error
Note: if return AL = 01h, the IPI supports network redirection
SeeAlso: AX=CD00h"Image"
--------U-2FCD02-----------------------------
INT 2F - SWELL.EXE - SUSPEND
AX = CD02h
Return: AX = 0000h
SeeAlso: AX=CD03h"SWELL"
--------s-2FCD02-----------------------------
INT 2F R - InterWave Game API - GET PROGRAM STATUS AND INFORMATION
AX = CD02h
BX = program identifier
Return: CX = program status
bit 0: using synthesizer
bit 1: using Codec
bit 2: supports at least one Game Device (see AX=CD21h,AX=CD22h)
BX = supported API version (BCD, BH=major, BL=minor) if CX bit 2 set
ES:DI -> ASCIZ identification string
Range: AH=CDh-ECh, selected by scanning for an available multiplex number
Note: ordinarily, an application will loop through all valid program
identifiers (as returned by AX=CD01h); if any of the installed
programs conflicts with the use the caller wishes to make of the
InterWave chip, it should be disabled with AX=CD03h first
SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD03h"InterWave"
SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
--------P-2FCD03-----------------------------
INT 2F - Intel Image Processing Interface - SELECT SCAN LINE
AX = CD03h
BX = scan line
CX = requested density in dots per inch (300, 600, or 1200)
Return: AL = status (see also AX=CD04h"Image")
00h successful
CX = density at which scan line was mapped
ES:DI -> start of scan line
80h unsuccessful
81h scan line out of range
82h unsupported scan line density
83h out of memory
SeeAlso: AX=CD04h"Image"
--------U-2FCD03-----------------------------
INT 2F - SWELL.EXE - ACTIVATE
AX = CD03h
Return: AX = 0000h
SeeAlso: AX=CD02h"SWELL"
--------s-2FCD03-----------------------------
INT 2F R - InterWave Game API - SUSPEND PROGRAM
AX = CD03h
BX = installed program identifier
CX = InterWave section to be released
0000h all
0001h synthesizer
0002h Codec
Return: AL = status
00h successful
BX = base port
CL = IRQ
CH = DMA channel (Codec only)
else failed
SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
SeeAlso: AX=CD04h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
--------P-2FCD04-----------------------------
INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE
AX = CD04h
CX:BX -> structure (see #2741)
Return: AL = status (see #2740)
SeeAlso: AX=CD03h"Image"
(Table 2740)
Values for IPI function status:
00h successful
80h unsuccessful
81h scan line out of range
82h unsupported scan line density
83h out of memory
84h unrecognized source
85h initialization error
Format of structure:
Offset Size Description (Table 2741)
00h WORD image source (0 = conventional memory, 1 = expanded memory)
02h DWORD pointer to image data
06h WORD scan line on which to place
08h WORD bit offset from start of scan line at which to place
0Ah WORD density of bitmap data (300, 600, or 1200 dpi)
0Ch WORD width in bits of data
0Eh WORD source logical page number
10h WORD source handle (only if source in expanded memory)
12h WORD source offset (only if source in expanded memory)
--------U-2FCD04-----------------------------
INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE
AX = CD04h
Return: AX = 0000h
SeeAlso: AX=CD05h"SWELL"
--------s-2FCD04-----------------------------
INT 2F R - InterWave Game API - WAKE PROGRAM
AX = CD04h
BX = installed program identifier
Return: AL = status
00h successful
else failed
Note: this function should only be called after the program has been
suspended with AX=CD03h
SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD03h"InterWave"
SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
SeeAlso: INT 7E/AL=84h"IWSBSDRV"
--------P-2FCD05-----------------------------
INT 2F - Intel Image Processing Interface - PRINT PAGE
AX = CD05h
Return: AL = status (00h,80h) (see #2740)
Note: page image is retained, so multiple calls will print multiple copies of
the page
SeeAlso: AX=CD06h"Image"
--------U-2FCD05-----------------------------
INT 2F - SWELL.EXE - TURN ON VERBOSE MODE
AX = CD05h
Return: AX = 0000h
SeeAlso: AX=CD04h"SWELL"
--------s-2FCD05-----------------------------
INT 2F R - InterWave Game API - UNINSTALL RESIDENT DEVICE DRIVER
AX = CD05h
BX = installed program identifier
Return: AL = status
00h successful
else failed
SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
SeeAlso: AX=CD03h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
--------P-2FCD06-----------------------------
INT 2F - Intel Image Processing Interface - CLEAR PAGE
AX = CD06h
Return: AL = status (00h,80h) (see #2740)
Note: palette is reset to default
SeeAlso: AX=CD09h"Image"
--------U-2FCD06-----------------------------
INT 2F - SWELL.EXE - UNINSTALL
AX = CD06h
Return: AX = status
0000h uninstalled
8002h programs still swapped, not uninstalled
--------P-2FCD07-----------------------------
INT 2F - Intel Image Processing Interface - reserved
AX = CD07h
SeeAlso: AX=CD00h"Image"
--------U-2FCD07-----------------------------
INT 2F - SWELL.EXE - GET INFO
AX = CD07h
ES:BX -> 32-byte buffer for info (see #2742)
Return: AX = status
0000h successful
ES:BX buffer filled
8001h buffer wrong size
Format of SWELL.EXE info buffer:
Offset Size Description (Table 2742)
00h WORD 20h (total size of buffer)
02h BYTE suspend-once mode active if nonzero
03h BYTE 00h active, 01h suspended
04h BYTE 00h quiet, 01h verbose
05h BYTE "Borland support" (allowing INT 21/AX=4B01h) on if nonzero
06h 26 BYTEs unused???
--------P-2FCD08-----------------------------
INT 2F - Intel Image Processing Interface - SCREEN IMAGE
AX = CD08h
CX:BX -> structure (see #2743)
Return: AL = status (00h,80h-85h) (see #2740)
SeeAlso: AX=CD05h"Image",AX=CD09h"Image"
Format of IPI screen image structure:
Offset Size Description (Table 2743)
00h WORD image source (0 = conventional memory, 1 = expanded memory)
02h DWORD pointer to image data
06h WORD horizontal position on paper of left edge (in 1200 dpi units)
08h WORD vertical position on paper of top edge (in 1200 dpi units)
0Ah WORD left cropping (currently must be zero)
0Ch WORD top cropping (currently must be zero)
0Eh WORD width (currently must be 8000h)
10h WORD height (currently must be 8000h)
12h WORD horizontal size of image in 1200 dpi units
14h WORD vertical size of image in 1200 dpi units
16h WORD aspect ratio (currently reserved)
18h WORD initialization flag (if 01h, initialization is performed)
1Ah WORD pixels per line of source data
1Ch WORD number of scan lines in source data
1Eh WORD number of scan lines in packet
20h WORD bits per pixel (1,2,4,6, or 8)
22h WORD pixels per byte (1,2,4, or 8)
24h WORD compression type (currently only 00h [uncompressed] supported)
26h WORD source page number (if in expanded memory)
28h WORD source handle (if in expanded memory)
2Ah WORD source offset (if in expanded memory)
--------U-2FCD08-----------------------------
INT 2F - SWELL.EXE - UNUSED
AX = CD08h
Return: AX = FFFFh (error)
--------P-2FCD09-----------------------------
INT 2F - Intel Image Processing Interface - LOAD SCREEN
AX = CD09h
CX:BX -> structure (see #2744)
Return: AL = status (00h,80h) (see #2740)
SeeAlso: AX=CD06h"Image Processing",AX=CD0Ah"Image Processing"
Format of IPI load screen structure:
Offset Size Description (Table 2744)
00h BYTE style
44h ('D') diamond style
4Ch ('L') line style
01h BYTE reserved (00h)
02h WORD frequency in lines per inch [sic]
currently, coerced to nearest of 50, 60, 68, 70, 75, 85, or 100
04h WORD screen angle in degrees (-360 to 360)
currently coerced to nearest of -45, 0, 45, or 90
--------U-2FCD09-----------------------------
INT 2F - SWELL.EXE - TURN OFF "BORLAND SUPPORT"
AX = CD09h
Return: AX = 0000h
SeeAlso: AX=CD0Ah"SWELL"
--------P-2FCD0A-----------------------------
INT 2F - Intel Image Processing Interface - LOAD PALETTE
AX = CD0Ah
CX:BX -> palette structure (see #2745)
Return: AL = status (00h,80h) (see #2740)
SeeAlso: AX=CD09h"Image Processing"
Format of IPI palette structure:
Offset Size Description (Table 2745)
00h BYTE bits per pixel for which palette is to be used (1,2,4,6, or 8)
01h 2**N palette translation values, one per possible pixel value
--------U-2FCD0A-----------------------------
INT 2F - SWELL.EXE - TURN ON "BORLAND SUPPORT"
AX = CD0Ah
Return: AX = 0000h
SeeAlso: AX=CD09h"SWELL"
--------P-2FCD0F-----------------------------
INT 2F - LaserPort Interface - EXECUTE FUNCTION
AX = CD0Fh
BL = function
01h enable
02h disable
03h ???
Return: AL = status
00h success
SeeAlso: AX=CD00h"LaserPort"
--------s-2FCD21-----------------------------
INT 2F R - InterWave Game API - OPEN GAME DEVICE
AX = CD21h
BX = installed program identifier
ES:DI -> ASCIZ device name
"MIDISIMPLE"
"MIDICOMPLEX"
"DIRECTCODEC"
Return: AL = status
00h successful
DX = device handle
---MIDISIMPLE and MIDICOMPLEX---
BX = real-mode interrupt number (see #2746,#2747)
---DIRECTCODEC---
BX = base port
CL = IRQ
CH = DMA channel (04h = no DMA)
SI = size of FIFO in bytes (0000h = use DMA)
nonzero failed (not supported or already in use)
AH may be destroyed
Range: AH=CDh-ECh, selected by scanning for an available multiplex number
SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
SeeAlso: AX=CD05h"InterWave",AX=CD22h"InterWave",AX=CD80h"InterWave"
(Table 2746)
Call MIDISIMPLE with:
EAX = function number
0001h MIDI byte out
BL = MIDI byte to send
0002h MIDI string out
ECX = length of MIDI string in bytes
ES:EDI -> MIDI string to send (should not include timing info)
DX = device handle
INT xxh (as returned by AX=CD21h)
Return: EAX = status
00000000h if successful
FFFFFFFFh on error (bad handle)
SeeAlso: #2747,INT 7E/AX=0001h"IWSBSDRV",INT 7E/AX=0002h"IWSBSDRV"
(Table 2747)
Call MIDICOMPLEX with:
EAX = function number
??? (specification is still in development)
DX = device handle
INT xxh (as returned by AX=CD21h)
Return: EAX = status
00000000h if successful
FFFFFFFFh on error (bad handle)
SeeAlso: #2746
--------s-2FCD22-----------------------------
INT 2F R - InterWave Game API - CLOSE GAME DEVICE
AX = CD22h
BX = installed program identifier
DX = device handle (from AX=CD21h)
Return: AL = status
00h successful
FFh inavlid handle or device is not open
Range: AH=CDh-ECh, selected by scanning for an available multiplex number
SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD80h"InterWave"
--------s-2FCD80-----------------------------
INT 2F RC - InterWave Game API - MIXER SETTINGS CHANGED BROADCAST
AX = CD80h
Return: nothing
Desc: called by an application controlling the InterWave chip's mixer
whenever the mixer's settings are changed
Range: AH=CDh-ECh, selected by scanning for an available multiplex number
Note: when an application intercepts this function call, it must read the
new mixer settings from the InterWave chip
SeeAlso: AX=CD00h"InterWave",AX=CD01h"InterWave",AX=CD02h"InterWave"
SeeAlso: AX=CD05h"InterWave",AX=CD21h"InterWave",AX=CD22h"InterWave"
--------K-2FCF00-----------------------------
INT 2F - TEMPLEXX 1.0 - INSTALLATION CHECK
AX = CF00h
Return: AL = FFh if installed
Program: TEMPLEXX is a popup keyboard template by Henson Scientific, Inc.
Note: values in AL other than 00h cause an immediate return without modifying
any registers
--------G-2FD000-----------------------------
INT 2F C - MDEBUG display driver - GET DRIVER STATUS
AX = D000h
Return: CF set on error
all other registers must be unchanged)
CF clear if successful
AL = FFh
AH = driver semaphor
00h driver is not active
01h driver is active
BX = CS of the driver
CX = driver version (CH = major, CL = minor, must be >= 013Ch)
DL = buffer semaphor
00h driver is not pending
01h driver is pending between functions 02h and 03h
DH = show semaphor
00h driver is not pending
01h driver is pending between functions 04h and 05h
Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
Schemmer, including a memory monitor, an interpreter and a
disassembler
Range: AH=C0h to AH=FFh, selected by switch or programmatically
Notes: MDEBUG can use any two consecutive multiplex numbers between C0h and
FFh; the default is D0h for the display driver and D1h for the
command driver (call INT 60/AH=00h"MDEBUG" for the actual multiplex
numbers used)
this function MUST be reentrant, as MDEBUG calls it after every popup
before any other actions. The handler should not change any
registers if the display is in an unsupported mode or in a mode
MDEBUG supports itself, e.g. a normal text mode with at least 80x25
characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will
not call any of the other functions for this popup session.
MDEBUG will not call the other functions if the returned version is
less than the actual version of MDEBUG.
if the driver is reentrant, DL and DH should be 00h
SeeAlso: AX=D001h,AX=D002h,AX=D003h,AX=D004h,AX=D005h
--------M-2FD000-----------------------------
INT 2F - ZWmous - INSTALLATION CHECK
AX = D000h
Return: AX = 5A57h ("ZW") if installed
BX = segment of resident code
Program: ZWmous is a shareware TSR by Zen Wu which permits the use of a mouse
with many non-mouse applications by entering the letter under the
mouse cursor on button presses
SeeAlso: INT 33/AX=0003h
--------N-2FD000-----------------------------
INT 2F - Lotus CD/Networker - INSTALLATION CHECK
AX = D000h
Return: AL = FFh if CD/Networker TSR is loaded
BX = 4D44h ("MD") signature
CX = Windows mode word (from INT 2F/AX=1600h) at time of TSR load
DX = bitmap identifying all loaded CD/Networker TSRs.
Notes: INT 2F/AH=D0h is used by CD/Networker to communicate between a
resident redirector TSR and a transient program that controls the
TSR's CD-ROM drive emulation (volume attachments, caching, etc).
At present there is only one CD/Networker TSR; the bitmap always = 4.
SeeAlso: AX=D002h"Lotus",INT 2F/AX=1500h"CD-ROM"
--------G-2FD001-----------------------------
INT 2F C - MDEBUG display driver - INITIALIZE DRIVER
AX = D001h
Return: CF set on error
AL = driver semaphor
AH = buffer semaphor
Range: AH=C0h to AH=FFh, selected by switch or programmatically
Notes: MDEBUG calls this function after every successful call of the function
00h. The function should reset all internal data and the status of
the driver. If this function returns an error, MDEBUG will not call
the other functions in this popup session.
MDEBUG can use any two consecutive multiplex numbers between C0h and
FFh; the default is D0h for the display driver and D1h for the
command driver
SeeAlso: AX=D000h
--------G-2FD002-----------------------------
INT 2F C - MDEBUG display driver - SAVE GRAPHIC DATA
AX = D002h
Return: CF set on error
CF clear if successful
display memory saved and display switched to one of the text modes
02h, 03h or 07h.
Note: MDEBUG calls this function only once every popup session before
displaying its windows.
SeeAlso: AX=D000h,AX=D003h
--------N-2FD002BX4D44-----------------------
INT 2F - Multiplex - Lotus CD/Networker GET DATA AREA
AX = D002h
BX = 4D44h
DX = bitmap identifying one loaded CD/Networker TSR
Return: ES:DI -> data area owned by TSR
Note: the format of the data area changes with each minor revision, so it
cannot be counted on
SeeAlso: AX=D000h"Lotus"
--------G-2FD003-----------------------------
INT 2F C - MDEBUG display driver - RESTORE GRAPHIC DATA
AX = D003h
Return: CF set on error
CF clear if successful
display restored to the mode it was in before calling AX=D002h and
the display memory is restored
Note: MDEBUG calls this function only once every popup session just before
it exits to normal DOS.
SeeAlso: AX=D000h,AX=D002h
--------G-2FD004-----------------------------
INT 2F - MDEBUG display driver - SHOW SAVED DATA
AX = D004h
Return: CF set on error
CF clear if successful
display switched to mode it was in before calling AX=D002h and the
display memory is restored
Note: This function needn't save the display memory before changing it.
SeeAlso: AX=D000h,AX=D005h
--------G-2FD005-----------------------------
INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN
AX = D005h
Return: CF set on error
CF clear if successful
display restored to mode it was in before calling AX=D004h
Note: This function needn't save or change the display memory
SeeAlso: AX=D000h,AX=D004h
--------G-2FD0-------------------------------
INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS
AH = D0h
AL = 06h-7Fh
Note: these functions are reserved for future use
--------G-2FD0-------------------------------
INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS
AH = D0h
AL = 80h-FFh
Note: these functions numbers are reserved for user defined features (e.g.
communication between the transient und resident parts of the driver)
--------G-2FD100-----------------------------
INT 2F C - MDEBUG command driver - GET STATUS
AX = D100h
BX = version of MDEBUG (BH = major, BL = minor)
CX = command driver counter
---v1.60+---
DS:SI -> MDEBUG identification table (see #2748)
ES = segment of display memory used by MDEBUG
DI = size of video mode used by MDEBUG
(high byte = lines, low byte = columns)
Return: DL = FFh
BX = version number of the driver if it is less than the version in BX,
else unchanged
CX incremented
Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
Schemmer, including a memory monitor, an interpreter, and a
disassembler
Range: AH=C0h to AH=FFh, selected by switch or programmatically
Notes: called by MDEBUG at start of popup session; if the version number
returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will
not call any of the other functions during this popup session
MDEBUG can use any two consecutive multiplex numbers between C0h and
FFh; the default is D0h for the display driver and D1h for the
command driver (call INT 60/AH=00h"MDEBUG" for the multiplex numbers
actually used)
this function must end with a far call to the old INT 2F handler after
changing the registers
this function MUST be reentrant
command drivers must also declare the following data at the given
offsets in the code segment
100h 3 BYTEs JMP-command in .COM-files
103h BYTE NOP-command (90h)
104h 26 BYTEs signature "Kommandotreiber f<>r MDEBUG"
11Eh 12 BYTEs name of driver, e.g. "MDHISDRV.COM"
each driver must have a unique name
MDEBUG will pass every key and command to the command driver(s) before
checking for a valid internal command
SeeAlso: AX=D000h,AX=D101h
Format of MDEBUG identification table:
Offset Size Description (Table 2748)
-2 WORD entry offset
00h WORD CS of MDEBUG
02h DWORD old INT 08h vector
06h DWORD old INT 09h vector
0Ah DWORD address INT 16h routine used by MDEBUG
0Eh BYTE length of version string
0Fh N BYTEs version string
--------G-2FD101-----------------------------
INT 2F - MDEBUG command driver - INITIALIZE DRIVER
AX = D101h
CX = command driver counter
Return: DL = status
FFh if successful
CX incremented
else error: all registers unchanged
Note: this function must end with a far call to the old INT 2F handler after
changing the registers
this function must be reentrant
--------G-2FD102-----------------------------
INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND
AX = D102h
BL = first character of the interpreter command
BH = last character of the interpreter command (or blank)
DS:SI -> parameter for the interpreter command as ASCIZ string
DS:DI -> MDEBUG data structure (see #2750)
Return: AL = FFh
CF set on error
AH = error number (see #2749)
DS:SI -> ASCIZ error message (max 30 characters) if AH=0Ch
CF clear if successful
AH = return code
00h continue processing the command line
01h leave MDEBUG popup session
02h leave MDEBUG popup session and automatically popup again
if the InDOS flag is zero
03h not used (same as 00h)
04h not used (same as 00h)
05h put new command line into the input buffer,
DS:SI -> new command line (ASCIZ string, max 66 chars)
06h process new command line
DS:SI -> new command line (ASCIZ string, max 66 chars)
else unknown status, but continue processing commmand line
Note: this function must end with a far call to the old INT 2F handler (with
registers unchanged) if the driver does not support the interpreter
command in BX. Otherwise, the driver must not chain to the old
INT 2F.
(Table 2749)
Values for MDEBUG error number:
01h syntax error
02h first shell of the command.com is activ
03h Esc pressed
04h break pressed
05h DOS is busy
06h command ended
07h division by zero
08h invalid display driver
09h invalid command driver
0Ah error 8 and 9
0Bh unknown error
0Ch new error
else unknown error
Format of MDEBUG data structure:
Offset Size Description (Table 2750)
00h WORD register SE
02h WORD register OF
04h WORD register FS
06h WORD register FO
08h WORD register AX
0Ah WORD register BX
0Ch WORD register CX
0Eh WORD register DX
10h WORD register SI
12h WORD register DI
14h WORD register DS
16h WORD register ES
18h WORD register BP
1Ah WORD register SS
1Ch WORD register SP
1Eh WORD register FL (flags)
20h WORD register R0
22h WORD register R1
24h WORD register R2
26h WORD register R3
28h WORD register R4
2Ah WORD register R5
2Ch WORD register R6
2Eh WORD register R7
30h WORD register R8
32h WORD register CS, return-address
34h WORD register IP, return-address
36h DWORD saved pointer to data for key <F6> (v1.60)
saved monitor address (v1.70)
3Ah 12 WORDs saved register values on last popup entry (for <F8> key)
(original register values at popup entry of MDEBUG)
AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
52h 12 WORDs saved register values on last popup exit (for <SHIFT-F8> key)
AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags
6Ah DWORD address of the DOS-invars-table
6Eh DWORD address of the InDOS flag
72h WORD offset of the register which is used for the segment of the
first monitor window
74h WORD offset of the register which is used for the offset of the
first monitor window
76h WORD name of the register which is used for the segment of the
first monitor segment
78h WORD name of the register which is used for the offset of the first
monitor window
7Ah WORD pseudo register 1
7Ch WORD pseudo register 2
--------G-2FD103-----------------------------
INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR
AX = D103h
BX = key code (like result of an interrupt 16h call)
CX = cursor position
0000h in the ASCII column of the monitor
0001h in one of the hex fields of the monitor
DS:SI -> MDEBUG data structure (see #2750)
ES:DI -> actual byte in the monitor
Return: AL = FFh
AH = return code
00h key processed, read next key
01h leave MDEBUG popup session
02h leave MDEBUG popup session and automatically popup again if DOS
is not busy
03h signal an error (beep)
04h driver has redefined the key, proceed with the new key
BX = new key code
MDEBUG will not pass the new key to the command driver(s)
else treat like code 00h
Note: this function must end with a far call to the old INT 2F handler (with
registers unchanged) if the driver does not support the key in BX.
Otherwise, the driver must not chain to the old INT 2F.
SeeAlso: AX=D104h
--------G-2FD104-----------------------------
INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER
AX = D104h
DS:SI -> MDEBUG data structure (see #2750)
Return: AL = FFh
AH = return code
00h key processed, read next key
01h leave MDEBUG popup session
02h leave MDEBUG popup session and automactically popup again if
DOS is not busy
03h signal an error (beep)
04h driver has redefined the key, proceed with the new key
BX = new key code
MDEBUG won't pass the new key to the command driver(s)
05h put new command line into the input buffer
DS:SI -> new command line (ASCIZ string, max 66 chars)
06h process new command line
DS:SI -> new command line (ASCIZ string, max 66 chars)
else treat like code 00h
Note: this function must end with a far call to the old INT 2F handler if the
driver does not support the key in BX. Otherwise, the driver must
not chain to the old INT 2F.
SeeAlso: AX=D103h
--------G-2FD1-------------------------------
INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
AH = D1h
AL = 05h-0Ah
Note: these functions are reserved for future use
--------G-2FD110-----------------------------
INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F
AX = D110h
Return: DL = FFh
ES:BX -> next program in the chain for INT 2F
CX = code segment of this driver
DI = offset of driver identification table (see #2751) (v1.60+)
Notes: only called by the transient part of the driver
must be reentrant and the driver must not chain this function to the
old INT 2F
Format of the MDEBUG driver identification table:
Offset Size Description (Table 2751)
00h 26 BYTEs signature "Kommandotreiber f<>r MDEBUG"
^- Note: ASCII 129,German U-umlaut
27h 12 BYTEs name of driver, e.g. "MDHISDRV.COM"
each driver must have a unique name
--------G-2FD111-----------------------------
INT 2F - MDEBUG command driver - START DRIVER
AX = D111h
Return: DL = FFh
Notes: only called by the transient part of the driver to inform the resident
part that it is installed
the function must be reentrant and the driver mustn't chain this
function to the old INT 2F
SeeAlso: AX=D101h,AX=D112h
--------G-2FD112-----------------------------
INT 2F - MDEBUG command driver - END DRIVER
AX = D112h
Return: DL = FFh
Notes: only called by the transient part of the driver to inform the resident
part that it will be released after this function
the function must be reentrant and the driver mustn't chain this
function to the old INT 2F
SeeAlso: AX=D101h,AX=D111h
--------G-2FD1-------------------------------
INT 2F - MDEBUG command driver - RESERVED FUNCTIONS
AH = D1h
AL = 13h-7Fh
Note: these functions are reserved for future use
--------G-2FD1-------------------------------
INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS
AH = D1h
AL = 80h-FFh
Note: these functions are reserved for user defined features (e.g.
communication between the transient und resident parts of the driver)
--------U-2FD200-----------------------------
INT 2F - PCL-838.EXE - INSTALLATION CHECK
AX = D200h
Return: AL = FFh if installed??? (documented as AX = return value)
Program: PCL-838 is a resident utility for controlling a stepmotor adapter
board by Advantec
SeeAlso: AX=D201h"PCL-838",AX=D202h"PCL-838"
--------Q-2FD200BX5144-----------------------
INT 2F - Quarterdeck RPCI - INSTALLATION CHECK
AX = D200h
BX = 5144h ("QD")
CX = 4D45h ("ME")
DX = 4D30h ("M0")
Return: AL = FFh installed
if BX,CX,DX registers were as specified on entry:
BX = 4D45h ("ME")
CX = 4D44h ("MD")
DX = 5652h ("VR")
Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
Notes: the Quarterdeck RPCI (Resident Program Communication Interface) is
supported by QEMM v5.0+, QRAM, MANIFEST, VIDRAM, etc.
for AL <> 0, if the BX/CX/DX values don't match the identifier of a
Quarterdeck product, it just chains to the previous INT 2F handler
SeeAlso: AX=D201h/BX=4849h,AX=D201h/BX=4D41h,AX=D201h/BX=4D45h
SeeAlso: AX=D201h/BX=5145h,AX=D201h/BX=5649h
--------U-2FD201-----------------------------
INT 2F - PCL-838.EXE - UNINSTALL
AX = D201h
Return: AX = return value
SeeAlso: AX=D200h"PCL-838",AX=D202h"PCL-838"
--------m-2FD201BX4849-----------------------
INT 2F - Quarterdeck RPCI - GET QD HIMEM PRESENCE
AX = D201h
BX = 4849h ("HI")
CX = 4D45h ("ME")
DX = 4D51h ("MQ")
Return: BX = 4F4Bh ("OK")
ES:DI -> HIMEM entry point
Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
SeeAlso: AX=D200h,AX=D201h/BX=5145h
--------m-2FD201BX4849-----------------------
INT 2F - Quarterdeck RPCI - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN
AX = D201h
BX = 4849h ("HI")
CX = 5241h ("RA")
DX = 4D30h ("M0")
Return: BX = 4F4Bh ("OK")
CX = segment of start of HIRAM chain
DX = reserved block owner (QEMM/QRAM code segment)
Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
Note: the HIRAM memory chain has the same format as the regular DOS 4.0
memory chain (see #1314 at INT 21/AH=52h), except that XMS Upper
Memory Blocks have the block header program name field set to
"UMB"; blocks whose "owner" field is set to the reserved segment
returned in DX are locked-out regions such as video memory and ROMs.
SeeAlso: AX=12FFh/BX=0006h,AX=D200h
--------G-2FD201BX4D41-----------------------
INT 2F U - Quarterdeck RPCI - MANIFEST v1.0+ - INSTALLATION CHECK
AX = D201h
BX = 4D41h ("MA")
CX = 4E49h ("NI")
DX = 4645h ("FE")
Return: BX = 5354h ("ST") if installed
Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
SeeAlso: AX=D200h
--------E-2FD201BX4D45-----------------------
INT 2F U - Quarterdeck RPCI - DVDOS4GX.DVR - ???
AX = D201h
BX = 4D45h ("ME")
CX = 5155h ("QU")
DX = 5044h ("PD")
Return: AL = FFh
BX = 4F4Bh ("OK")
Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
Note: this function is called by QEMM 6.03
performs a variety of actions before setting return registers
SeeAlso: AX=D200h
--------m-2FD201BX5145-----------------------
INT 2F - Quarterdeck RPCI - QEMM v5.0+ - INSTALLATION CHECK
AX = D201h
BX = 5145h ("QE")
CX = 4D4Dh ("MM")
DX = 3432h ("42")
Return: BX = 4F4Bh ("OK")
ES:DI -> QEMM API entry point (see INT 67/AH=3Fh)
Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
Note: this call is not available under QEMM v6.00 unless Windows3 support
has been disabled with the NW3 switch to QEMM386.SYS
SeeAlso: AX=D200h,AX=D201h/BX=4849h,INT 67/AH=3Fh
--------V-2FD201BX5649-----------------------
INT 2F u - Quarterdeck RPCI - VIDRAM v5.0+ - INSTALLATION CHECK
AX = D201h
BX = 5649h ("VI")
CX = 4452h ("DR")
DX = 414Dh ("AM")
Return: BX = 4F4Bh ("OK")
ES:DI -> VIDRAM entry point (see #2752)
Range: AH=C0h to AH=FFh, selected by scanning AH=D2h-FFh, then AH=C0h-D1h
SeeAlso: AX=D200h
(Table 2752)
Call VIDRAM entry point with:
AH = 00h get status
Return: AL = VIDRAM state (see #2753)
BL = extra RAM status (see #2754)
BH = feature flags (see #2755)
CL = current monitor (01h = mono, 80h = color)
SI = current top of memory (paragraph)
DI = segment of start of HiRAM chain
AH = 01h setup
AL = VIDRAM state (see #2753)
BL = extra RAM status (see #2754)
BH = feature flags (see #2755)
CL = monitor (01h = monochrome, 80h = color)
SI = new top of memory (paragraph)
DI = segment of start of HiRAM chain
AH = 02h get end address of VIDRAM code
Return: ES:DI -> VIDRAM partial map context (see #2756,#2757)
Return: CF set on error
CF clear if successful
(Table 2753)
Values for VIDRAM state:
00h off
01h no EGA graphics
02h no graphics at all
(Table 2754)
Values for VIDRAM extra RAM status:
00h VIDRAM does not use extra RAM
01h VIDRAM uses EMS as extra RAM
02h VIDRAM uses EGA as extra RAM
Bitfields for VIDRAM feature flags:
Bit(s) Description (Table 2755)
0 override enabled
1 mapped memory detected in A000h-B000h range
2 top of memory not at 640K
3 MDA detected
4 high RAM exists in video area
5 mapped memory detected in video area
6-7 reserved???
Format of VIDRAM partial map context (EMS 3.2):
Offset Size Description (Table 2756)
00h BYTE EMS version ID (32h)
01h WORD EMM handle for this entry
03h BYTE number of frames
04h BYTE first page frame
05h WORD offset from ES to previously saved map
Format of VIDRAM partial map context (EMS 4.0):
Offset Size Description (Table 2757)
00h BYTE EMS version ID (40h)
01h WORD mappable segment count
03h N WORD mappable segments
WORD offset to previously saved map???
--------U-2FD202-----------------------------
INT 2F - PCL-838.EXE - EXECUTE PCL838 COMMANDS
AX = D202h
CX:BX -> parameter table
Return: AX = return value
SeeAlso: AX=D200h"PCL-838",AX=D201h"PCL-838"
--------R-2FD300BX4562-----------------------
INT 2F U - TeleReplica - INSTALLATION CHECK
AX = D300h
BX = 4562h
CX = 2745h
DX = serial port I/O base address??? (03F8h for v3.9)
Return: SI = segment of resident code
AX = 251Dh
BX = DF21h
CX = F321h
DX = ???
--------R-2FD3CB-----------------------------
INT 2F U - LapLink Quick Connect v6 - API
AX = D3CBh
CX = function
0002h get ???
Return: BX:AX -> ???
CL = ???
CH = ???
DX = ???
DI = COM1 I/O port???
SI = COM2 I/O port???
0003h initialization???
0004h ???
0005h initialization???
0006h reset/clear ???
Return: AX = 0000h
ES:DI -> next byte after ??? cleared by this call
0007h initialization???
0008h uninstall
Return: BX = status
0000h successful
FFFFh incomplete, stub remains in memory
Return: CX = 534Bh (except function 0002h)
Index: uninstall;LapLink Quick Connect
--------K-2FD3D3BH00-------------------------
INT 2F - KDRIVE v2.x - INSTALLATION CHECK
AX = D3D3h
BH = 00h
Return: BX = 3D3Dh if installed
CF clear if installed
AX = driver ID??? (returns 0087h for KDRIVE.EXE and 0880h for
KDRIVOS2.EXE in one examined version)
Program: KDRIVE is a shareware extended German keyboard driver by Martin
Austermeier, originally based on K3 by Martin Gerdes as published
in c't magazine 7/1988
--------l-2FD44D-----------------------------
INT 2F - 4DOS.COM v2.1+ - API
AX = D44Dh
BH = function
00h installation check
Return: AX = 44DDh
BL = major version number
BH = minor version number
CX = PSP segment address for current invocation
DL = 4DOS shell number (0 for the first (root) shell,
updated each time a new copy is loaded)
01h (internal, v2.1-3.03) terminate current copy of 4DOS
Return: nothing
(internal, v4.0+) ???
Return: AX = 44DDh
ES:BX -> data area (see #2758)
02h ???
DX = ???
Note: v5.52 signals "unrecoverable error" and then terminates
with INT 21/AH=4Ch or enters a deliberate infinite
loop if ???
---v2.1-3.03 only---
03h EXEC program
CX:DX -> EXEC record (see #2759)
FEh deallocate shell number (passed through to root shell)
???
FFh allocate shell number (passed through to root shell)
---v5.52---
03h get ???
BL = ??? (00h/01h)
Return: DX = current value of ???
04h set ???
BL = ??? (00h/01h)
DX = new value for ???
Note: a bug in v3.00 will crash the system if unrecognized value in BH
SeeAlso: AX=D44Eh,AX=D44Fh/BX=0000h,AX=E44Dh,INT 21/AX=4403h"DOS"
SeeAlso: INT 14/AX=7000h
Index: installation check;4DOS|installation check;NDOS
Format of 4DOS v4.0 data area:
Offset Size Description (Table 2758)
00h 2 BYTEs ???
06h WORD XMS handle for swapping
???
SeeAlso: #2759
Format of 4DOS EXEC v2.1-v3.03 record:
Offset Size Description (Table 2759)
00h WORD offset of ASCIZ program name in same segment as EXEC record
02h WORD offset of DOS commandline in same segment as EXEC record
04h WORD segment of environment for child process (see INT 21/AH=26h)
SeeAlso: #2758
--------l-2FD44E-----------------------------
INT 2F C - 4DOS v3.0+ - AWAITING USER INPUT
AX = D44Eh
---4DOS v3.01+---
BX = condition
0000h 4DOS is ready to display prompt
0001h 4DOS has displayed the prompt, about to accept user input
Return: the handler must preserve SI, DI, BP, SP, DS, ES, and SS
Note: v3.00 only makes the call corresponding to BX=0001h, does not set BX
SeeAlso: AX=D44Dh
--------K-2FD44FBX0000-----------------------
INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
AX = D44Fh
BX = 0000h
Return: AX = 44DDh if installed
Note: this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
which emulate the 4DOS and NDOS keystack
SeeAlso: AX=D44Dh,AX=D44Fh/BX=0001h,AX=E44Fh/BX=0000h
--------K-2FD44FBX0001-----------------------
INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
AX = D44Fh
BX = 0001h
CX = number of keystrokes (01h-FFh)
DS:DX -> keystroke list (one word per keystroke)
Return: AX = status
0000h successful
nonzero failed
BX,CX,DX destroyed
Notes: the keystrokes are the exact values to return from subsequent calls to
INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
0000h causes subfunctions 01h and 11h to indicate an empty
keyboard buffer
FFFFh is followed by a word indicating the number of clock
ticks to delay before the next faked keystroke
v4.00 KSTACK overwrites any unread keystrokes from the previous
invocation, and does not range-check CX; it will overwrite memory
following the resident portion if CX is greater than 100h.
this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
which emulate the 4DOS and NDOS keystack
SeeAlso: AX=D44Dh,AX=D44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h"DOS"
--------G-2FD600-----------------------------
INT 2F - HEART.COM - INSTALLATION CHECK
AX = D600h
Return: AX = 0303h (two hearts) if installed
ES:DI -> buffer (see #2760)
Program: HEART.COM is a CPU lock-up/critical indicator utility by Mitch Davis.
Notes: Once the host program has identified the address of the data area, it
can change this to indicate safe/critical, alternate colours, etc.
The entries for the color table are in char/attrib form. Every two
entries form a pair which is alternated between 68 times a minute.
The first half of the table is for color videos, the second mono.
Within each half, the first half is for the safe chars, and the
second for the critical chars.
Format of HEART.COM buffer:
Offset Size Description (Table 2760)
00h 8 WORDs table of colors/attributes (refer to notes above)
10h BYTE flags
bit 0: program is in critical section, so flash double
exclamation mark
bit 1: program is in safe code, so flash the heart character
11h WORD position of heartbeat on screen, normally 009Eh (last column
of second line)
--------T-2FD600-----------------------------
INT 2F U - VEDIT VSWAP - INSTALLATION CHECK
AX = D600h
Return: AL = D6h if installed
Program: VSWAP is the resident portion of VEDIT's "swapper" capability; VEDIT
is a programmer's text editor by Greenview Data.
SeeAlso: AX=D601h,AX=D602h
--------T-2FD601-----------------------------
INT 2F U - VEDIT VSWAP - ???
AX = D601h
BL = subfunction number???
Return: BL = return code ???
ES = resident portion's data??? segment
DX = resident portion's code segment
SeeAlso: AX=D600h"VSWAP"
--------T-2FD602-----------------------------
INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP
AX = D602h
other registers set as for INT 21/AX=4B00h
Return: CF set on error
AL = error code
82h = failure due to ???
CF clear on success
SeeAlso: AX=D600h"VSWAP",INT 21/AH=4Bh"EXEC"
--------N-2FD701BX0000-----------------------
INT 2F - Banyan VINES v4+ - GET BANV INTERRUPT NUMBER
AX = D701h
BX = 0000h
Return: AX = 0000h if installed
BX = interrupt number (60h to 66h)
nonzero not present
Note: if AX is nonzero, VINES 3.x or earlier may be installed, thus it is
necessary to examine the four bytes preceding the handlers for
INT 60 through INT 66 for the string "BANV"
SeeAlso: AX=D702h,AX=D703h,AX=D704h
--------N-2FD702-----------------------------
INT 2F U - Banyan VINES v4+ - PCPRINT interface
AX = D702h
BX = function
???
Return: ???
SeeAlso: AX=D701h,AX=D703h,INT 61/AX=0005h"Banyan"
--------N-2FD703-----------------------------
INT 2F U - Banyan VINES v4+ - MAIL interface
AX = D703h
BX = function
???
Return: ???
SeeAlso: AX=D702h,AX=D704h
--------N-2FD704-----------------------------
INT 2F U - Banyan VINES v4+ - Streettalk Directory Assistance interface
AX = D704h
BX = function
???
Return: ???
SeeAlso: AX=D703h,INT 61/AX=0007h/BX=0002h"Banyan",INT 61/AX=0007h/BX=0008h
--------N-2FD800-----------------------------
INT 2F U - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK
AX = D800h
Return: AL = FFh if installed
DX = version number (0100h for v1.0, 0101h for v1.1)
BX = data segment of resident copy
ES:DI -> private API entry point (see #2761)
SI = segment of resident code
SeeAlso: AX=7A00h,AX=D880h
(Table 2761)
Call CLIENT API entry point with:
BX = function
0000h get ???
Return: DX = CLIENT version??? (0101h for v1.1)
ES:BX -> ??? data
0001h ???
0002h ???
0003h ???
0004h ???
0005h ???
DL = ???
???
Return: ???
0006h get module name???
ES:DI -> 16-byte buffer
Return: CX = ???
ES:DI filled with "NWLITE_CLIENT" 00h 00h 00h
0007h ???
DX:CX = ???
???
Return: ???
0008h ???
0009h ???
DL = ???
ES:DI -> 16-byte buffer for ???
Return: CF clear if successful
AX = 0000h
CX = 0000h
SI,DI destroyed
CF set on error
AX = error code 4903h
000Ah ???
AH = subfunction
00h get ???
01h clear/set ??? flag
AL = new state (00h cleared, 01h set)
02h set ???
DX = new value of ???
Return: DX = old value of ???
000Bh ???
AX = ???
???
Return: ???
000Ch ???
AX = ???
???
Return: ???
000Dh ???
AX = ???
???
Return: ???
000Eh get original INT 17
Return: CF clear
ES:BX -> original INT 17
000Fh ???
0010h ???
AX = ???
???
Return: ???
0011h get ???
Return: CF clear
DL = ???
0012h get ???
AL = index of ???
ES:DI -> 10-byte buffer for ???
Return: CF clear if successful
ES:DI buffer filled
AX,CX destroyed
CF set on error
AX = error code (4907h if AL out of range)
0013h get ???
Return: CF clear
DH = ???
DL = ???
0014h ???
DL = ???
???
Return: CF clear if successful
???
CF set on error
AX = error code 8056h
0015h ???
DX = ???
Return: ES:DI -> ???
other
Return: CF set
AX = 0001h (invalid function)
--------N-2FD856-----------------------------
INT 2F U - Novell NetWare Lite v1.1 - SERVER - GET ???
AX = D856h
Return: AX = 0001h if supported???
BX = ??? (0004h for v1.1)
CX = ??? (0F20h for v1.1)
DS = segment of resident code
ES = data segment of resident copy
Note: this function is also supported by Personal NetWare SERVER, bundled
with Novell DOS 7
--------N-2FD880-----------------------------
INT 2F U - Novell NetWare Lite v1.0+ - SERVER - INSTALLATION CHECK
AX = D880h
Return: AL = FFh if installed
DX = version number (0100h for v1.0, 0101h for v1.1)
BX = data segment of resident copy
CL = current state (00h SERVER is disabled, 01h SERVER is active)
ES:DI -> private API entry point (see #2762)
SI = ??? (offset of configuration info?)
Note: this function is also supported by Personal NetWare SERVER, but DI is
not set; instead, ES:SI points at the API entry point
SeeAlso: AX=7A00h,AX=D800h,INT 2A/AX=D852h
(Table 2762)
Call SERVER API entry point with:
BX = function
0000h ???
???
Return: ???
Note: closes open files by calling INT 21/AH=3Eh
0001h get connection information
DX = connection number (0001h-max connections)
ES:DI -> 28-byte buffer for connection information
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = FFFFh
---Personal NetWare only---
0002h ???
0003h ???
0004h ???
0005h ???
0006h ???
0007h ???
other
Return: CF set
AX = 0001h (invalid function)
--------d-2FD8C0-----------------------------
INT 2F U - Novell NLCACHE,NWCACHE - INSTALLATION CHECK
AX = D8C0h
Return: AL = FFh if installed
CL = cache variant (01h NLCACHEC, 02h NLCACHEX, 03h NLCACHEM)
DH = major version??? (01h for v1.1)
DL = minor version??? (01h for v1.1)
ES:DI -> private API entry point (see #2763)
Program: NLCACHE is a disk cache included with NetWare Lite
SeeAlso: AX=D800h,AX=D880h
(Table 2763)
Call NLCACHE/NWCACHE API entry point with:
BX = function
0000h ???
???
Return: CF clear if successful
AX = 0000h
???
CF set on error
AX = error code
0001h (NWCACHE only) ???
ES:DI -> buffer for ???
Return: ???
other
Return: CF set
AX = 0001h (invalid function)
--------F-2FDA00-----------------------------
INT 2F - ZyXEL ZFAX v1.x - INSTALLATION CHECK
AX = DA00h
Return: AH = enabled state (00h = enabled, 01h = disabled)
AL = 5Ah installed
Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
fax modems.
Note: This function, and the other DAxxh functions, may apply only to version
1 of the software; see AX=DB00h for the version 2 installation check
SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
--------F-2FDA01-----------------------------
INT 2F - ZyXEL ZFAX v1.x - UNINSTALL
AX = DA01h
Return: AL = 00h Success
01h Failure
SeeAlso: AX=DA00h,AX=DB01h
--------F-2FDA02-----------------------------
INT 2F - ZyXEL ZFAX v.1x - DISABLE
AX = DA02h
Return: AL = 00h
SeeAlso: AX=DA03h,AX=DB02h
--------F-2FDA03-----------------------------
INT 2F - ZyXEL ZFAX v1.x - ENABLE
AX = DA03h
Return: AL = 00h
SeeAlso: AX=DA02h,AX=DB03h
--------G-2FDA55-----------------------------
INT 2F U - TRAP.COM - INSTALLATION CHECK
AX = DA55h
DL = interrupt number
DH = ???
Return: if installed
AH = interrupt number
AL = ???
ES:BX -> ???
Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
Note: a separate copy of TRAP is loaded for each interrupt to be traced; thus
the interrupt number is part of the installation check
--------N-2FDAB2-----------------------------
INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
AX = DAB2h
Return: AX = 00FFh if installed
BX:CX -> MIB table
Program: BWSNMP is part of the BW-NFS package
SeeAlso: INT 62/AH=00h"ETHDEV"
--------F-2FDB00-----------------------------
INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
AX = DB00h
Return: AL = 5Bh if installed (v2.x)
ES:BX -> configuration table???
AX = 00DBh if installed (v3)
ES:BX -> ZFAX configuration table (see #2764)
Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
Fax modems.
SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
Format of ZFAX Configuration Table:
Offset Size Description (Table 2764)
00h WORD table version number (0300h for v3.0-v4.01)
02h BYTE reserved
03h 70 BYTEs ZFAX working path
49h 128 BYTEs path to external editor
C9h 128 BYTEs path to external terminal emulator
149h 128 BYTEs path to Ring Shell
1C9h 128 BYTEs path to DOS Shell
249h 128 BYTEs path to Data Shell
2C9h 70 BYTEs path to Chinese font
30Fh BYTE printer type (see #2765)
310h BYTE printer port (00h = LPT1, etc.)
311h BYTE type of graphics adapter
(00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
312h BYTE display type
(00h auto-detect, 01h LCD, 02h color, 03h mono)
313h BYTE scan code for ZFAX hotkey (see #0005)
314h BYTE shift mask for ZFAX hotkey
315h BYTE tone/pulse dialing (00h tone, 01h pulse)
316h BYTE Caller ID (00h disabled, 01h enabled)
317h BYTE Distinctive Ring (00h disabled, 01h enabled)
318h BYTE normal ring answer type (see #2766)
319h BYTE Ring 1 answer type (see #2766)
31Ah BYTE Ring 2 answer type (see #2766)
31Bh BYTE Ring 3 answer type (see #2766)
31Ch BYTE COM port for modem
31Dh BYTE speaker volume (00h-07h)
31Eh BYTE modem dial timer, seconds
31Fh WORD user-defined COM port I/O address
321h BYTE user-defined COM port IRQ number
322h 81 BYTEs dial prefix string
373h 79 BYTEs dial postfix string
3C2h BYTE ring count until automatic answer
3C3h BYTE retry count on busy signal
3C4h BYTE redial delay in seconds
3C5h WORD system password
3C7h BYTE reserved
3C8h BYTE voice file compression format
00h CELP at 9600bps
01h two-bit ADPCM at 19200bps
02h three-bit ADPCM at 28800bps
3C9h BYTE voice system: DTMF 0 action (see #2767)
3CAh BYTE voice system: DTMF 1 action
3CBh BYTE voice system: DTMF 2 action
3CCh BYTE voice system: DTMF 3 action
3CDh BYTE voice system: DTMF 4 action
3CEh BYTE voice system: DTMF 5 action
3CFh BYTE voice system: DTMF 6 action
3D0h BYTE voice system: DTMF 7 action
3D1h BYTE voice system: DTMF 8 action
3D2h BYTE voice system: DTMF 9 action (see #2767)
3D3h WORD reserved
3D5h 25 BYTEs local FAX ID to display on page header
3EEh 20 BYTEs local FAX ID sent to remote FAX
402h BYTE FAX page size
00h A4 (210x297mm)
01h B4 (250x353mm)
02h A3 (297x420mm)
403h BYTE FAX resolution
00h normal (3.85 pixels/mm)
01h high (7.7 pixels/mm)
404h BYTE FAX coding scheme
00h 1-D, modified Huffman coding
01h 2-D, modified READ coding
405h BYTE left margin for text in millimeters
406h BYTE vertical insertion for text in mm (0-20)
407h BYTE horizontal insertion in mm (0-20)
408h BYTE maximum text lines per page
409h BYTE text type (00h ASCII, 01h WordStar-formatted)
40Ah BYTE PCX image resize (00h disabled, 01h enabled)
40Bh BYTE AutoPrint (00h disabled, 01h enabled)
40Ch BYTE cover page (00h disabled, 01h enabled)
40Dh 81 BYTEs cover page logo filename
45Eh 65 BYTEs cover page sender name
49Fh BYTE print capture (00h disabled, 01h enabled)
4A0h BYTE send immediately (00h disabled, 01h enabled)
4A1h BYTE print capture printer port
4A2h BYTE print capture timer in seconds
4A3h BYTE scan code for print capture hotkey (see #0005)
4A4h BYTE shift mask for print capture hotkey
4A5h BYTE DataShell type
00h internal Zmodem, 01h Data Shell, 02h disable
4A6h BYTE video I/O type
00h auto-detect, 01h use BIOS, 02h direct writes
4A7h BYTE call transfer digits (0-9)
4A8h WORD voice recorder maximum time in seconds (0-999)
(Table 2765)
Values for ZFAX printer type:
00h EPSON FX (9 pins)
01h EPSON LQ (24 pins)
02h HP Laser Jet II, letter size
03h HP Laser Jet II, legal size
04h HP Laser Jet II, A4 size
05h HP Laser Jet III, letter size
06h HP Laser Jet III, legal size
07h HP Laser Jet III, A4 size
SeeAlso: #2764
(Table 2766)
Values for Ring Answer Type:
00h voice system
01h FAX only
02h Data Shell
03h Ring Shell
04h DOS Shell
05h ignore
SeeAlso: #2764
(Table 2767)
Values for DTMF action:
00h none
01h page operator
02h FaxBack
03h announcement
04h call transfer
05h receive FAX
06h receive data
07h voice mailbox
08h DOS Shell Out
09h Data Shell Out
SeeAlso: #2764
--------U-2FDB00-----------------------------
INT 2F U - WINGO.COM - INSTALLATION CHECK
AX = DB00h
Return: AX = FFFFh if installed
CX = 5749h ('WI') if installed
DX = 4E47h ('NG') if installed
ES = segment of resident code
Program: WINGO.COM is TSR for starting Windows programs from DOS
prompt (together with companion Windows program
WINSTART.EXE) written by Douglas Boling, contributing editor of
PC Magazine
Range: AH=DBh to AH=FFh, selected by scanning for a free multiplex number
SeeAlso: AX=DB01h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
--------F-2FDB01-----------------------------
INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
AX = DB01h
Return: AX = status
0000h successful
0001h ZFAX is busy
0002h another program resident above ZFAX
Note: this function unhooks the vectors taken by the ZFAX TSR if they have
not been hooked by other TSRs and releases the TSR's memory
ZFAX v2.x crashes the contributor's machine when this function is
called
SeeAlso: AX=DA01h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
--------U-2FDB01-----------------------------
INT 2F U - WINGO.COM - SET CALLBACK FUNCTION POINTER
AX = DB01h
CX:DX -> new callback function
Return: AX = 0000h
CX:DX -> end of resident code (stack ???)
Desc: the callback function is used for WINGO <-> WINSTART communication
SeeAlso: AX=DB00h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
--------F-2FDB02-----------------------------
INT 2F - ZyXEL ZFAX v2.x - DISABLE
AX = DB02h
Return: AL = 00h
SeeAlso: AX=DA02h,AX=DB00h"ZFAX",AX=DB01h"ZFAX",AX=DB03h"ZFAX"
--------U-2FDB02-----------------------------
INT 2F U - WINGO.COM - RESET CALLBACK FUNCTION POINTER
AX = DB02h
Return: AX = 0000h
Desc: the callback function is used for WINGO <-> WINSTART communication
SeeAlso: AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
--------F-2FDB03-----------------------------
INT 2F - ZyXEL ZFAX v2.x - ENABLE
AX = DB03h
Return: AL = 00h
SeeAlso: AX=DA03h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
--------U-2FDB03-----------------------------
INT 2F U - WINGO.COM - SET ??? FLAG
AX = DB03h
Return: AX = 0000h
SeeAlso: AX=DB00h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
--------U-2FDB04-----------------------------
INT 2F U - WINGO.COM - RESET ??? FLAG
AX = DB04h
Return: AX = 0000h
SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
--------U-2FDB05-----------------------------
INT 2F U - WINGO.COM - GET ??? FLAG
AX = DB05h
Return: AX = 0000h
DX = unknown flag - 0 or 1
Program: WINGO.COM is TSR for starting Windows programs from DOS
prompt (together with companion Windows program
WINSTART.EXE) written by Douglas Boling, contributing editor of
PC Magazine
SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
--------U-2FDB06-----------------------------
INT 2F U - WINGO.COM - CALL CALLBACK FUNCTION
AX = DB06h
Return: AX = return value of INT 2F/AX=1685h
Note: uses Windows service INT 2F/AX=1685h (SWITCH VMs AND CALLBACK) to
call the callback function previously set by AX=DB01h
used for WINGO <-> WINSTART communication
SeeAlso: AX=1685h, AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB02h"WINGO",
SeeAlso: AX=DB03h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO"
--------F-2FDB10-----------------------------
INT 2F - ZyXEL ZFAX v3+ - EXECUTE ZFAX MAIN MENU
AX = DB10h
SeeAlso: AX=DB00h"ZFAX",AX=DB11h"ZFAX"
--------F-2FDB11-----------------------------
INT 2F - ZyXEL ZFAX v3+ - SEND FAX
AX = DB11h
DS:SI -> filename including path (max 128 characters)
DS:BX -> remote FAX number
Return: AX = status (see #2768)
SeeAlso: AX=DB00h"ZFAX",AX=DB12h,AX=DB13h,AX=DB14h,AX=DB15h,AX=DB20h,AX=DB21h
(Table 2768)
Values for ZFAX status:
00h OK
01h invalid DOS function
02h file not found
03h path not found
04h no file handle available
05h access denied by DOS
06h invalid handle
07h disk full
10h printer error
11h no graphics font
12h no ZFAX font
20h DCD dropped while sending
21h not ZyXEL modem
22h busy
23h no response from COM port
24h no carrier
25h no dial tone
26h no answer
27h no response
28h failed to send FAX
30h user aborted
40h critical error on disk
50h parameter error
--------F-2FDB12-----------------------------
INT 2F - ZyXEL ZFAX v3+ - PRINT FAX
AX = DB12h
DS:SI -> filename, including path (max 128 characters)
Return: AX = status (see #2768)
SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
--------F-2FDB13-----------------------------
INT 2F - ZyXEL ZFAX v3+ - CONVERT FAX
AX = DB13h
DS:SI -> source filename, including path (max 128 characters)
DS:BX -> destination filename, including path (max 80 characters)
CX = destination file format
00h FAX, 01h PCX, 02h TIFF, 03h PRN
Return: AX = status (see #2768)
SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
--------F-2FDB14-----------------------------
INT 2F - ZyXEL ZFAX v3+ - VIEW FAX
AX = DB14h
DS:SI -> source filename, including path (max 128 characters)
Return: AX = status (see #2768)
SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
--------F-2FDB15-----------------------------
INT 2F - ZyXEL ZFAX v4.01 - SEND FAX WITH LOGO AND SIGNATURE
AX = DB15h
DS:SI -> source filename, including path (max 128 characters)
DS:BX -> remote FAX number
DS:CX -> Logo filename
DS:DX -> Signature filename
Return: AX = status (see #2768)
SeeAlso: AX=DB00h"ZFAX",AX=DB11h
--------F-2FDB16-----------------------------
INT 2F - ZyXEL ZFAX v4.01 - QUOTE PREVIOUS STATUS
AX = DB16h
Return: DX:AX -> previous receive state transaction log (see #2769)
BX = type (00h incoming FAX, 01h incoming data, 02h incoming voice)
SeeAlso: AX=DB00h"ZFAX",AX=DB11h,AX=DB17h
Format of ZFAX transaction log receive state:
Offset Size Description (Table 2769)
00h WORD year
02h WORD date
04h WORD time
06h WORD extension number
08h WORD type: 00h incoming FAX, 01h outgoing FAX, 02h voice message
0Ah WORD status: 00h normal, 01h remote delete
0Ch 125 BYTEs filename
89h 24 BYTEs caller ID
A1h 20 BYTEs FAX number
B5h 20 BYTEs remote FAX ID
C9h WORD error code
CBh WORD connection direction (00h transmit, 01h receive)
CDh BYTE connection time minutes
CEh BYTE connection time seconds
CFh BYTE ???
D0h WORD connection speed (24, 48, 72, 96, 12, 144)
D2h WORD connection page size (A4, B4, A3)
D4h WORD connection coding scheme (1-DN, 1-DH, 2-DN, 2-DH)
D6h WORD page count
--------F-2FDB17-----------------------------
INT 2F - ZyXEL ZFAX v4.01 - BEGIN RECEIVING INCOMING CALL
AX = DB17h
Return: AX = status (0000h successful, 0001h unable to start at this time)
SeeAlso: AX=DB00h"ZFAX"
--------F-2FDB18-----------------------------
INT 2F - ZyXEL ZFAX v4.01 - SCHEDULE CALL
AX = DB18h
DS:SI -> schedule data (see #2769)
Return: AX = status (see #2768)
SeeAlso: AX=DB00h"ZFAX"
--------F-2FDB20-----------------------------
INT 2F - ZyXEL ZFAX v3+ - POLL FAX
AX = DB20h
DS:SI -> remote FAX number
Return: AX = status (see #2768)
SeeAlso: AX=DB11h,AX=DB21h
--------F-2FDB21-----------------------------
INT 2F - ZyXEL ZFAX v3+ - SEND VOICE
AX = DB21h
DS:SI -> filename including path (max 128 characters)
DS:BX -> remote phone number
Return: AX = status (see #2768)
SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
--------F-2FDB22-----------------------------
INT 2F - ZyXEL ZFAX v3+ - CONVERT VOICE FILE
AX = DB22h
DS:SI -> source filename, including path (max 128 characters)
DS:BX -> destination filename, including path (max 80 characters)
CX = destination format
00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
Return: AX = status (see #2768)
SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
--------F-2FDB23-----------------------------
INT 2F - ZyXEL ZFAX v3+ - RECORD VOICE FILE
AX = DB23h
DS:SI -> destination filename, including path (max 128 characters)
CX = recording channel (0 = telephone line, 1 = microphone/speaker)
DX = voice file format
00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
Return: AX = status (see #2768)
SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
--------F-2FDB24-----------------------------
INT 2F - ZyXEL ZFAX v3+ - PLAY VOICE FILE
AX = DB24h
DS:SI -> name of voice file, including path (max 128 characters)
CX = playback channel (0 = telephone line, 1 = microphone/speaker)
Return: AX = status (see #2768)
SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
--------F-2FDB25-----------------------------
INT 2F - ZyXEL ZFAX v3+ - ANSWER MODEM WITH VOICE SYSTEM
AX = DB25h
Return: AX = status (see #2768)
SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
--------F-2FDB26-----------------------------
INT 2F - ZyXEL ZFAX v3+ - DIAL PHONE
AX = DB26h
DS:SI -> remote phone number
Return: AX = status (see #2768)
SeeAlso: AX=DB25h
--------F-2FDB27-----------------------------
INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
AX = DB27h
Return: AX = status (see #2768)
SeeAlso: AX=DB25h,AX=DB28h
--------F-2FDB28-----------------------------
INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
AX = DB28h
Return: AX = status (see #2768)
SeeAlso: AX=DB25h,AX=DB27h,AX=DB41h
--------F-2FDB40-----------------------------
INT 2F - ZyXEL ZFAX v3+ - INTERNAL TERMINAL
AX = DB40h
Return: AX = status (see #2768)
SeeAlso: AX=DB00h
--------F-2FDB41-----------------------------
INT 2F - ZyXEL ZFAX v3+ - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
AX = DB41h
DS:SI -> source file name, including path (max 128 characters)
DS:BX -> remote data number
Return: AX = status (see #2768)
SeeAlso: AX=DB00h,AX=DB28h
--------K-2FDC00-----------------------------
INT 2F - GOLD.COM - INSTALLATION CHECK
AX = DC00h
Return: AL = state
00h not installed
FFh installed
Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the
code for F1; the purpose is to improve Kermit's VTxxx emulation
--------K-2FDC01-----------------------------
INT 2F - GOLD.COM - GET STATE
AX = DC01h
Return: AL = status
00h off
01h on
SeeAlso: AX=DC00h,AX=DC02h
--------K-2FDC02-----------------------------
INT 2F - GOLD.COM - SET STATE
AX = DC02h
DL = new state
00h off
01h on
Return: AL = 00h (OK)
SeeAlso: AX=DC01h
--------t-2FDD-------------------------------
INT 2F - CappaCom programs - API
AH = DDh
AL = 00h general installation check
Return: AL = FFh if any CappaCom programs are resident
AL = FEh get info
Return: ES:BX -> TSR info list (see #2770)
AL = program identifier
BH = function
FDh get version
Return: BX = version
FFh installation check
Return: AL = FFh if installed
BX = version
ES = segment of resident code
others vary by program
Return: AL = status
bit 7 set on error
AL = 81h unknown function
Note: CappaCom was originally SoftCom but changed its name due to a trademark
conflict
Index: installation check;SoftCom programs
Index: installation check;CappaCom programs
Format of CappaCom TSR info list:
Offset Size Description (Table 2770)
00h 9 BYTEs blank-padded ASCIZ program name
09h BYTE program ID
0Ah WORD program's PSP segment
0Ch WORD program version (major in high byte)
0Eh DWORD pointer to next item in info list or 0000h:0000h
12h BYTE number of interrupts hooked
13h 5 BYTEs interrupt numbers hooked by program
18h 8 BYTEs reserved
----------2FDD-------------------------------
INT 2F - MIXFIX.EXE - API
AH = DDh
AL = function
00h installation check
Return: AX = 00DDh if installed
BX = version (BH = major, BL = minor)
41h/61h get From: address
Return: AX = 0001h
ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
49h/69h get To: address
Return: AX = 0001h
ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
4Ah/6Ah get subject of mail
Return: AX = 0001h
ES:BX -> ASCIZ subject of handled mail
4Dh/6Dh get mail name
Return: AX = 0001h
ES:BX -> ASCIZ full name of current mail file
4Eh/6Eh get From: field
Return: AX = 0001h
ES:BX -> ASCIZ From: field of mail (mail sender's name)
Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
other programs for mail handling. The called programs may use the
services described here to retrieve information about the mail being
handled.
Index: installation check;MIXFIX.EXE
--------d-2FDD--BX7844-----------------------
INT 2F - xDISK v3.32+ - INSTALLATION CHECK
AH = DDh
BX = 7844h ('xD')
CX = 4953h ('IS')
DX = 4B3Fh ('K?')
AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
ES:DI -> 25-byte data buffer (see #2771)
Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
BX = 87BBh
DX = B4C0h
ES:DI buffer filled
CX,CF destroyed
SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
Format of xDISK data buffer:
Offset Size Description (Table 2771)
00h DWORD pointer to ASCIZ driver signature "xDISK unit: X"
04h BYTE flag: 01h if disk linked to DOS, 00h if unlinked
05h BYTE flag: 01h if write protected, 00h if not
06h BYTE flag: 01h if root directory full, 00h if not
07h BYTE flag: 01h if free space uncompacted, 00h if compacted
08h BYTE resizing state: 00h not resizable, 01h resized, 80h resizable
09h BYTE flag: 01h inelastic resizable disk, 00h elastic
0Ah 2 BYTEs reserved
0Ch BYTE flag: 01h collapsed disk, 00h not collapsed
0Dh BYTE flag: 01h using all EMS, 00h some EMS free
0Eh BYTE flag: 01h password enabled, 00h disabled
0Fh BYTE flag: 01h password audio feedback, 00h no feedback
10h BYTE flag: 01h password video feedback, 00h no feedback
11h BYTE flag: 01h confirm changes, 00h no confirmation
12h BYTE flag: 01h terse display, 00h verbose display
13h BYTE flag: 01h click speaker on disk access, 00h no click
14h BYTE flag: 01h flash icon on disk access, 00h no icon flash
15h BYTE FAT entry size: 00h 12-bit, FFh 16-bit
16h WORD count of open files in RAM disk
18h BYTE unused
--------N-2FDE00BL00-------------------------
INT 2F U - Novell Netware - RPRINTER, NPRINTER - INSTALLATION CHECK
AX = DE00h
BL = 00h
Return: AL = FFh If Rprinter/Nprinter Installed
BX -> Program Segment Prefix N/Rprinter.exe
--------Q-2FDE00BX4456-----------------------
INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
AX = DE00h
BX = 4456h ("DV")
CX = 5844h ("XD")
DX = 4931h ("I1")
Return: AL = FFh if installed (even if other registers do not match)
if BX,CX, and DX were as specified on entry,
BX = 4845h ("HE")
CX = 5245h ("RE")
DX = 4456h ("DV")
Range: AH=C0h to AH=FFh, selected by scanning AH=DEh-FFh, then AH=C0h-DDh
Note: the XDI handler should not issue any DOS or BIOS calls, nor should it
issue DESQview API calls other than those allowed from hardware ints
SeeAlso: AX=DE02h,INT 15/AX=5400h
--------Q-2FDE01-----------------------------
INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
AX = DE01h
BX = driver ID
other registers as needed by driver
Notes: XDI drivers should pass this call through to previous handler if ID
does not match
DESQview never calls this function
--------Q-2FDE01BX4450-----------------------
INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
AX = DE01h
BX = 4450h ("DP")
CX = 4D49h ("MI")
DX = 3039h ("09")
Return: AL = FFh if installed
BX = 4D42h ("MB")
CX = 4921h ("I!")
DX = 8F4Fh
ES:DI -> filename of DPMI host overlay
Note: the installation check consists of testing for the existence of the
character device QDPMI$$$
SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
Index: installation check;QDPMI
--------U-2FDE01BX5242-----------------------
INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
AX = DE01h
BX = 5242h ("RB")
CX:DX = program identifier
656F7000h ("eop",0) for DVeop
Return: AX = 5242h ("RB") if installed
ES:BX -> data or entry point (see #2772)
CX = version number (CH = major, CL = minor)
(Table 2772)
Call DVeop entry point with:
ES:DI -> callback address or 0000h:0000h to remove callback
Return: AX = status
0000h failed (callback table full or attempted to remove non-
existent callback)
0001h successful
ES:DI -> chaining address
BX,CX,DX destroyed
Notes: the callback function is called with a simulated interrupt when the
DESQview window containing it is closed; it should perform all
necessary cleanup and then perform a FAR jump to the chaining address
or an IRET if the chaining address is 0000h:0000h
if the program wishes to remove itself before the window is closed, it
should call the DVeop entry point with the previously returned
chaining address and ignore the returned chaining address.
--------U-2FDE01BX7474-----------------------
INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
AX = DE01h
BX = 7474h
CL = function
00h installation check
Return: AL = FFh
01h get process handle
DX = keys on Open Window menu (DL = first, DH = second)
Return: AX = process handle or 0000h if not running
02h (v1.3+) set TMAN handle
DX = TMAN process handle
03h (v1.3+) set open keys to ignore on next CL=01h call
DX = keys on Open Window menu (DL = first, DH = second)
Return: BX = 4F4Bh ("OK")
DL destroyed
Note: DVTXDI is distributed as part of the shareware products DVTree (DOS
shell/DESQview process manager) and DVTMAN by Mike Weaver
Index: installation check;DVTXDI
--------U-2FDE01BX7575-----------------------
INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
AX = DE01h
BX = 7575h
CX = function
0000h installation check
Return: AX = 00FFh if installed
0001h turn on notification (currently unused)
Return: AX = 0001h
0002h turn off notification (currently unused)
Return: AX = 0001h
0003h get process information
Return: AX = status
0000h failed
0001h successful
BX = last instantaneous time slice
in 1/100s (v1.10)
in 1/18s (v1.11+)
CX = number of processes
DX = number of "(starting)" records (v2.00+)
SI = number of records in process info array
(v2.00+) (always 15 for v1.x)
ES:DI -> process info array (see #2773,#2774)
0004h get version
Return: AH = major version
AL = minor version
0005h (v1.10+) get time since DESQview started
Return: DX:AX = 1/100s since DV start (v1.10)
DX:AX = 1/18s since DV start (v1.11+)
0006h (v1.10+) get number of task switches
Return: DX:AX = total task switches
CX = task switches in last instantaneous interval
Notes: DVSIXDI is part of the DVSI (DESQview System Information) package by
Daniel J. Bodoh
for v1.00, function 0003h allocates common memory, which the caller
must deallocate after reading the process information; only the
currently used records are placed in the buffer
for v1.10+, function 0003h merely returns a pointer to the internal
array of process information; the caller should make a copy of the
array while inside a critical section (see INT 15/AX=101Bh). Only
those records with bit 7 of the first byte set are valid.
Index: installation check;DVSIXDI
Format of DVSIXDI v1.00 information for one process:
Offset Size Description (Table 2773)
00h BYTE flags
bit 7: process slot is valid
01h WORD offset into DESQVIEW.DVO of program's record if started from
Open Windows menu, else undefined
03h WORD Switch Windows window number
05h WORD segment of process handle
07h WORD number of tasks owned by process
09h WORD mapping context of process (see #0342 at INT 15/AX=1016h)
0Bh DWORD hook for other programs
Format of DVSIXDI v1.10-v2.00 information for one process:
Offset Size Description (Table 2774)
00h BYTE process flags (see #2775)
01h WORD Open Window keys
03h WORD Switch Windows number
05h WORD segment of process handle
07h WORD number of tasks for process
09h WORD process mapping context
0Bh DWORD time process started (relative to start of DESQview)
0Fh DWORD time process last got CPU (relative to start of DESQview)
13h DWORD time process last gave up CPU (relative to start of DESQview)
17h DWORD total CPU time since process started
1Bh DWORD CPU time at start of current instantaneous interval
1Fh DWORD CPU time in current instantaneous interval
23h DWORD hook for other programs
Note: all times are in 1/100s for v1.10, in 1/18s for v1.11+
Bitfields for DVSIXDI process flags:
Bit(s) Description (Table 2775)
7 valid record
6 (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
and only offsets 01h and 09h are valid
5 (v2.00+) this app currently owns the CPU
4 reserved (0)
3 DESQview system task
2 reserved (0)
1 task has keyboard (currently unused)
0 task swapped out (currently unused)
--------Q-2FDE01BXFFFE-----------------------
INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
AX = DE01h
BX = FFFEh
CX = 4D47h ("MG")
DX = 0052h (0,"R")
Return: AL = FFh
DX = 584Dh
--------Q-2FDE02-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
AX = DE02h
BX = mapping context of DESQview
DX = handle of DESQview system task
Note: driver should pass this call to previous handler after doing its work
SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
--------Q-2FDE03-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
AX = DE03h
BX = mapping context of DESQview
DX = handle of DESQview system task
Notes: driver should pass this call to previous handler before doing its work
DESQview makes this call when it is exiting, but before unhooking any
interrupt vectors
SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
--------Q-2FDE04-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
AX = DE04h
BX = mapping context of new process (see #0342 at INT 15/AX=1016h)
DX = handle of process
Return: nothing
Notes: XMS XDI handler (installed by default) allocates a 22-byte record
(see #2776) from "common" memory to control access to XMS memory
all DOS, BIOS, and DV API calls are valid in handler
driver should pass this call to previous handler after processing it
SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
Format of XMS XDI structure:
Offset Size Description (Table 2776)
00h DWORD pointer to 10-byte record???
04h DWORD pointer to next XMS XDI structure
08h WORD mapping context
0Ah BYTE ???
0Bh 5 BYTEs XMS entry point to return for INT 2F/AX=4310h"XMS"
(FAR jump to next field)
10h 6 BYTEs FAR handler for XMS driver entry point
(consists of a FAR CALL followed by RETF)
--------Q-2FDE05-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
AX = DE05h
BX = mapping context of process (see #0342 at INT 15/AX=1016h)
DX = handle of last task in process
Return: nothing
Notes: XMS XDI handler releases the structure allocated by AX=DE04h
driver should pass this call to previous handler before processing it
all DOS, BIOS, and DV API calls except those generating a task switch
are valid in handler
SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
--------Q-2FDE06-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
AX = DE06h
BX = mapping context of process containing task
DX = handle of new task
Notes: driver should pass this call to previous handler after processing it
all DOS, BIOS, and DV API calls are valid in handler
--------Q-2FDE07-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
AX = DE07h
BX = mapping context of process containing task
DX = handle of task
Notes: driver should pass this call to previous handler before processing it
all DOS, BIOS, and DV API calls except those generating a task switch
are valid in handler
SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
--------Q-2FDE08-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
AX = DE08h
BX = mapping context of task being switched from
(see #0342 at INT 15/AX=1016h)
DX = handle of task being switched from
Notes: invoked prior to task swap, interrupts, etc
driver should pass this call to previous handler after processing it
SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
--------Q-2FDE09-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
AX = DE09h
BX = mapping context of task being switched to
(see #0342 at INT 15/AX=1016h)
DX = handle of task being switched to
Notes: state is restored except for interrupts
driver should pass this call to previous handler before processing it
SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
--------Q-2FDE0A-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
AX = DE0Ah
BX = mapping context of task receiving focus
DX = handle of running task
Notes: driver should pass this call to previous handler before processing it
this call often occurs inside a keyboard interrupt
DV 2.42 does not provide this call to XDI handlers running inside a
window; instead, it directly calls the INT 2F handler which was
active at the time DV started
SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
--------Q-2FDE0B-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
AX = DE0Bh
BX = mapping context of DESQview system task
CX = number of system memory paragraphs required for the use of all
XDI drivers (DV will add this to system memory in DVP buffer)
DX = handle of DESQview system task
SI = mapping context of new process if it starts
ES:DI -> DVP buffer
Return: CX incremented as needed
Notes: once DV invokes this function, the DVP buffer contents may be changed
driver should pass this call to previous handler before processing it
--------Q-2FDE0C-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
AX = DE0Ch
BX = mapping context of task being swapped out
(see #0342 at INT 15/AX=1016h)
DX = handle of DESQview system task
Note: driver should pass this call to previous handler after processing it
--------Q-2FDE0D-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
AX = DE0Dh
BX = mapping context of process just swapped in
(see #0342 at INT 15/AX=1016h)
DX = handle of DESQview system task
Note: driver should pass this call to previous handler before processing it
--------Q-2FDE0E-----------------------------
INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
AX = DE0Eh
BX = mapping context of DESQview system task
DX = handle of DESQview system task
SI = mapping context of failed process (same as for call to AX=DE0Bh)
Note: driver should pass this call to previous handler after processing it
--------Q-2FDE0F-----------------------------
INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
AX = DE0Fh
Note: DESQview 2.50+ calls this function just before it completes its
initialization. At the time of the call, DESQview has not yet
changed any interrupt vectors
SeeAlso: AX=DE02h
--------Q-2FDE10-----------------------------
INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
AX = DE10h
BX = mapping context of process (see #0342 at INT 15/AX=1016h)
DX = task handle of process
Note: DESQview 2.50+ calls this function before it frees the task; it is
similar to AX=DE07h but allows the XDI handler to make calls which
cause context switches
SeeAlso: AX=DE06h,AX=DE07h
--------c-2FDF00-----------------------------
INT 2F - HyperWare programs - INSTALLATION CHECK
AX = DF00h
BX = product code (see #2777)
CX = 0000h
DX = 0000h
Return: AL = status
00h not installed
FFh multiplex number in use
CX = 5948h ('YH') if selected product installed
---HyperDisk---
BX = code segment of resident portion
DX = HyperDisk local data version
Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
Range: AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
SeeAlso: INT 13/AX=8EEDh
Index: installation check;HyperDisk|installation check;HyperStb
Index: installation check;HyperKey|installation check;HyperScreen
Index: HyperDisk;installation check|HyperStb;installation check
Index: HyperKey;installation check|HyperScreen;installation check
(Table 2777)
Values for HyperWare product code:
4248h ('BH') HyperStb
4448h ('DH') HyperDisk v4.20+
4B48h ('KH') HyperKey
5348h ('SH') HyperScreen
--------Q-2FDF00BX5445-----------------------
INT 2F U - Quarterdeck TELTSR.COM - INSTALLATION CHECK
AX = DF00h
BX = 5445h ('TE')
CX = 4C54h ('LT')
DX = 5352h ('SR')
Return: BX = 5454h ('TT') if installed
CX = 494Eh ('IN') if installed
DX = 5454h ('ST') if installed
Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
which provides an INT 14h interface to the network
Range: AH=DEh to AH=FFh and AH=C0h to AH=DDh, selected by scanning
SeeAlso: AX=DF01h"TELTSR",AX=DF02h"TELTSR",INT 14/AH=56h
--------N-2FDF01BX0000-----------------------
INT 2F U - MSG.COM - INSTALLATION CHECK
AX = DF01h
BX = 0000h
Return: AX = FDFFh if installed
BX = segment of resident code
Program: MSG.COM is a TSR for intercepting incoming Novell broadcast
messages written by Gary Dobbins (Dobbins@Arizona.Edu)
--------c-2FDF01BX4448-----------------------
INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
AX = DF01h
BX = 4448h ('DH')
Return: AX = 0000h if function supported
BX = number of cache buffers in use
CX = number of cache buffers which have been modified
DL = caching flags (see #2778)
Range: AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
SeeAlso: AX=DF00h,AX=DF02h
Bitfields for HyperDisk caching flags:
Bit(s) Description (Table 2778)
0 staged writes enabled for floppy disks
1 staged writes enabled for hard disks
2 writes verified on floppy disks
3 writes verified on hard disks
4 reserved (0)
5 reserved (0)
6 floppy caching enabled
7 all caching functions enabled
--------Q-2FDF01-----------------------------
INT 2F U - Quarterdeck TELTSR.COM - CLOSE CONNECTION
AX = DF01h
Return: nothing???
Note: invokes the DESQview/X socket API (see INT 15/AX=DE2Eh) function 0006h
to close the socket corresponding to the file handle set with
AX=DF02h; NOP if no file handle was ever set
SeeAlso: AX=DF00h"TELTSR",AX=DF02h"TELTSR"
--------c-2FDF02BX4448-----------------------
INT 2F - HyperDisk v4.50+ - SET CACHE STATE
AX = DF02h
BX = 4448h ('DH')
DL = new caching flags (see #2778)
Return: AX = 0000h if supported
BX = number of cache buffers in use
CX = number of cache buffers which have been modified
DL = previous caching flags (see #2778)
Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
Range: AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
SeeAlso: AX=DF00h,AX=DF01h
--------Q-2FDF02-----------------------------
INT 2F U - Quarterdeck TELTSR.COM - OPEN CONNECTION
AX = DF02h
BX = file handle for connection's socket
Return: AX = status
0000h successful
FFFFh no more room in TELTSR's JFT
Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
Notes: the indicated file handle becomes owned by TELTSR, and is closed in
the caller's JFT
multiple calls to this function will override the previous assignment
without closing the previous file; use AX=DF01h before further calls
SeeAlso: AX=DF00h"TELTSR",AX=DF01h"TELTSR"
--------U-2FE000-----------------------------
INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
AX = E000h
Return: AX = 4A52h ("JR") if present
Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
apparent DOS version analogously to MS-DOS SETVER
Notes: this installation check differs from the usual one of returning AL=FFh
the SETDRVER API is fully emulated by Matthias Paul's FREEVER
SeeAlso: AX=E000h/DX=4D50h,AX=E001h,INT 21/AH=52h
--------j-2FE000-----------------------------
INT 2F - KAOSHIDE - INSTALLATION CHECK
AX = E000h
Return: AL = FFh if installed
Program: KAOSHIDE ('Hidden Kaos') is a PD joke TSR which randomly capitalizes
alphabetic keys, written by Philip Maland. Although not a virus,
v2.0 uses some viral-like techniques to hide itself from
memory-reports by reducing DOS memory size.
--------U-2FE000DX4D50-----------------------
INT 2F - FREEVER v1.0+ - INSTALLATION CHECK
AX = E000h
DX = 4D50h ('MP')
Return: AL = FFh if installed
AH = AMIS INT 2Dh multiplex ID
CX = FREEVER version (CH=major, CL=minor)
DX:DI -> AMIS-compliant signature (see #2257)
(vendor ID is "M. Paul ", program name is "FREEVER ")
Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
to SETVER for any DOS-compatible OS, written by Matthias Paul
Note: FREEVER emulates INT 21/AH=30h, INT 21/AX=3306h, INT 21/AX=4412h,
INT 21/AX=4452h, and SETDRVER's API on INT 2F/AX=E00xh, as well as
providing an AMIS API on INT 2Dh
SeeAlso: AX=E000h"SETDRVER",INT 21/AH=30h,INT 21/AX=3306h,INT 21/AX=4452h
--------K-2FE000DX5354-----------------------
INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
AX = E000h
DX = 5354h ("ST")
Return: AL = FFh if installed
BX = version (BH = major, BL = BCD minor)
DX = segment of resident code
Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
--------U-2FE001-----------------------------
INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
AX = E001h
Return: AH = major version
AL = minor version
SeeAlso: AX=E000h
--------U-2FE002-----------------------------
INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
AX = E002h
Return: AL = FFh if successful
BH = major DOS version
BL = minor DOS version
CH = DOS version flag
CL = OEM number
DH = major DR DOS version number (FFh if unknown)
DL = minor DR DOS version number (FFh if unknown)
SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
--------U-2FE003-----------------------------
INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
AX = E003h
BH = new major DOS version
BL = new minor DOS version
CH = new DOS version flag
CL = new DOS revision number
DH = new OEM number
SeeAlso: AX=E002h
--------U-2FE004-----------------------------
INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
AX = E004h
Return: AL = FFh if successful
SeeAlso: AX=E000h,AX=E005h,AX=E006h
--------U-2FE005-----------------------------
INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
AX = E005h
Return: AL = FFh if successful
SeeAlso: AX=E000h,AX=E004h,AX=E006h
--------U-2FE006-----------------------------
INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
AX = E006h
Return: AL = FFh if successful
BL = status
01h resident and active
02h resident and inactive
--------U-2FE007-----------------------------
INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
AX = E007h
Return: AL = FFh if successful
BL = status
00h if TaskMAX not loaded before SETDRVER
FFh if TaskMAX was loaded before SETDRVER
SeeAlso: AX=E003h
--------U-2FE0-------------------------------
INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
AH = E0h
AL = 08h-10h
--------K-2FE100-----------------------------
INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
AX = E100h
Return: AX = 0001h if installed
DS:SI -> ASCIZ hotkey name
DS:DI -> ASCIZ recording filename
Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
by P2 Enterprises
SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
Index: hotkeys;Phantom2
--------K-2FE101-----------------------------
INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
AX = E101h
BX = function mask (see #2779)
CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
DS:DX -> ASCIZ filespec if BX bit 7 set
SeeAlso: AX=E100h
Index: hotkeys;Phantom2
Bitfields for Phantom2 function mask:
Bit(s) Description (Table 2779)
0 record
1 play
2 QuickPlay
3 loop
4 mode display toggle
5 sound toggle
6 set hotkey
7 set filespec
--------K-2FE102-----------------------------
INT 2F - Phantom2 v1.1+ - UNINSTALL
AX = E102h
Return: AX = status
0001h removal successful
0002h not installed as TSR
FFFFh disabled but not removed
SeeAlso: AX=E100h
--------K-2FE103-----------------------------
INT 2F - Phantom2 v2.8 - SET ??? FLAG
AX = E103h
Return: AX = 0001h
SeeAlso: AX=E100h
--------y-2FE200-----------------------------
INT 2F - SecureDevice - LOGIN TO DRIVE
AX = E200h
DL = drive number (0 = A:)
DS:SI -> 104-byte key
Return: AL = status
00h unable to determine key's validity
01h key is valid
FFh key is invalid
Program: SecureDevice is a copylefted device driver by Max Loewenthal and
Arthur Helwig which turns one or more disk files into encrypted
logical drives
SeeAlso: AX=E201h,AX=E203h,AX=E209h
--------y-2FE201-----------------------------
INT 2F - SecureDevice - GET INFORMATION
AX = E201h
DX = driver index (0000h = first loaded)
Return: AL = number of volumes handled by driver
DL = drive number of first volume (00h = A:)
SeeAlso: AX=E200h,AX=E203h,AX=E209h
--------y-2FE203-----------------------------
INT 2F - SecureDevice - DESTROY PASSWORD (LOGOUT FROM DRIVE)
AX = E203h
DL = drive number (00h = A:) or FFh for all drives
Return: nothing
SeeAlso: AX=E200h,AX=E209h
--------y-2FE209DX0000-----------------------
INT 2F - SecureDevice - INSTALLATION CHECK
AX = E209h
DX = 0000h
Return: AX = 1DEAh if installed
DX = number of drivers installed
--------K-2FE300-----------------------------
INT 2F - ANARKEY.COM - INSTALLATION CHECK
AX = E300h
Return: AL = state
00h not installed
FEh if installed but suspended (v3.0+)
FFh installed
Program: ANARKEY.COM is a commandline recall program by Steven Calwas
Range: AH=C0h to AH=FFh, selected by commandline switch
SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
SeeAlso: AX=E307h,INT 66"Newkey"
--------V-2FE300-----------------------------
INT 2F - Blank - INSTALLATION CHECK
AX = E300h
Return: AL = FFh if installed
ES = resident code segment
Program: Blank is a shareware screen blanker by Yonah Schmeidler
Note: AH=E3h is the default, which may be reconfigured by the installation
program in the registered version
SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
Index: screen saver;Blank
--------K-2FE301-----------------------------
INT 2F U - ANARKEY.COM v2+ - GET ???
AX = E301h
Return: DX:BX -> ??? (see #2780,#2781)
SeeAlso: AX=E300h
Format of returned data structure for ANARKEY v2.0:
Offset Size Description (Table 2780)
-7 7 BYTEs signature ('ANARKEY')
00h WORD ??? (I see 0001h in v2.0)
02h WORD ??? (I see 0001h in v2.0)
04h WORD ??? (I see 0 in v2.0)
06h WORD PSP segment of next program loaded
Format of returned data structure for ANARKEY v3+:
Offset Size Description (Table 2781)
-1 BYTE multiplex number
00h WORD ??? (I see 0001h in v3.0-4.0)
02h WORD ??? (I see 0001h in v3.0-4.0)
04h BYTE ??? (I see 0 in v3.0-4.0)
05h WORD PSP segment of next program loaded
--------K-2FE302-----------------------------
INT 2F U - ANARKEY.COM v3+ - ???
AX = E302h
BL = ???
Return: ???
SeeAlso: AX=E300h
--------K-2FE303-----------------------------
INT 2F U - ANARKEY.COM v3+ - ANARKMD API
AX = E303h
BL = function
01h toggle insert mode
02h display contents of history buffer
03h write history buffer to file
ES:DX -> file name
04h clear history buffer
05h undefine all aliases
06h show aliases
07h list programs using Unix switchar
08h jump to bottom of history buffer
09h (v4.0) add string to history buffer
ES:DX -> ASCIZ string
0Ah (v4.0) ???
ES:DX -> ???
0Bh (v4.0) copy string to edit buffer for use as next input line
ES:DX -> ASCIZ string
0Ch (v4.0) ???
0Dh (v4.0) copy ??? to ???
0Eh (v4.0) ???
0Fh (v4.0) ???
10h (v4.0) set ??? flag
11h (v4.0) display error message about running in EMS under Windows
Return: ???
SeeAlso: AX=E300h
--------K-2FE304-----------------------------
INT 2F U - ANARKEY.COM v2+ - ???
AX = E304h
BL = ???
Return: ???
SeeAlso: AX=E300h
--------K-2FE305-----------------------------
INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
AX = E305h
BL = new state
01h suspended
00h enabled
SeeAlso: AX=E300h
--------K-2FE306-----------------------------
INT 2F U - ANARKEY.COM v4.0 - GET ???
AX = E306h
Return: AX = ???
SeeAlso: AX=E300h
--------K-2FE307-----------------------------
INT 2F U - ANARKEY.COM v4.0 - GET ???
AX = E307h
Return: AX = ???
BL = ???
SeeAlso: AX=E300h
--------K-2FE337-----------------------------
INT 2F - INT16.COM - INSTALLATION CHECK
AX = E337h
Return: AX = 0013h if installed
Program: INT16.COM is an INT16 keyboard BIOS replacement for
INT 16/AH=00h-02h,10h-12h (based on K3) written by Martin Gerdes
and published in c't 05/1990.
SeeAlso: AX=ED58h
--------l-2FE44D-----------------------------
INT 2F - NDOS - API
AX = E44Dh
Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
Norton Utilities
Note: as NDOS is a licensed version of 4DOS v3.03, the API is identical to
that for 4DOS, except that AH=E4h instead of D4h and the installation
check returns AX=44EEh instead of AX=44DDh
SeeAlso: AX=D44Dh,AX=E44Eh
--------l-2FE44E-----------------------------
INT 2F C - NDOS - AWAITING USER INPUT
AX = E44Eh
BX = condition
0000h NDOS is ready to display prompt
0001h NDOS has displayed the prompt, about to accept user input
Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
SeeAlso: AX=E44Dh
--------K-2FE44FBX0000-----------------------
INT 2F - NDOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
AX = E44Fh
BX = 0000h
Return: AX = 44EEh if installed
Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
Norton Utilities
Note: this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
which emulate the 4DOS and NDOS keystack
SeeAlso: AX=D44Fh/BX=0000h,AX=E44Fh/BX=0001h
--------K-2FE44FBX0001-----------------------
INT 2F - NDOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
AX = E44Fh
BX = 0001h
CX = number of keystrokes (01h-FFh)
DS:DX -> keystroke list (one word per keystroke)
Return: AX = status
0000h successful
nonzero failed
BX,CX,DX destroyed
Notes: the keystrokes are the exact values to return from subsequent calls to
INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
0000h causes subfunctions 01h and 11h to indicate an empty
keyboard buffer
FFFFh is followed by a word indicating the number of clock
ticks to delay before the next faked keystroke
v4.00 KSTACK overwrites any unread keystrokes from the previous
invocation, and does not range-check CX; it will overwrite memory
following the resident portion if CX is greater than 100h.
this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
which emulate the 4DOS and NDOS keystack
SeeAlso: AX=E44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h"DOS"
--------U-2FE600CL30-------------------------
INT 2F - Virtual 486 - INSTALLATION CHECK
AX = E600h
CL = 30h
BX = C0DEh
Return: BX = DEC0h if installed
Program: Virtual 486 is a 80486 CPU emulator for an 80386 by Solar Designer
----------2FE700BX4158-----------------------
INT 2F - Multiplex - ??? - INSTALLATION CHECK???
AX = E700h
BX = 4158h ("AX")
CX = 4953h ("IS")
DX = 4845h ("HE")
Return: AL = FFh if installed
BX = 4C4Fh ("LO") if ??? installed
CX = 4F4Bh ("OK")
DX = 4F55h ("OU")
ES:DI -> ???
Range: AH=C0h to AH=FFh, selected by scanning AH=E7-FFh, then AH=C0h-E6h
Note: called by QDPMI when its Real to Protected Mode Switch Entry Point
is called
--------f-2FE77EBX0000-----------------------
INT 2F - CTDEMN - INSTALLATION CHECK
AX = E77Eh
BX = 0000h
CX = 4F4Dh ('OM')
DX = 5453h ('TS')
Return: AX = 7EE7h if installed
BX = resident code segment
CX = 6F6Dh ('om')
DX = 7473h ('ts')
Program: CTDEMN is a file daemon TSR by Simultan AG
--------E-2FED00-----------------------------
INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
AX = ED00h
BL = DOS extender ID (see #2782)
Return: AL = status
00h not installed
FFh installed
SI = 5048h ("PH")
DI = 4152h ("AR")
CH = major version number
CL = minor version number
DX = flags
bit 0: running under DPMI
bit 1: running under Phar Lap VMM
if running under DPMI:
BX = DPMI version (BH = major, BL = minor)
SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
(Table 2782)
Values for Phar Lap DOS extender ID:
01h 286dosx v1.3+ (Software Development Kit)
02h 286dosx v1.3+ (Run-Time Kit)
03h 386dosx v4.0+ (SDK)
04h 386dosx v4.0+ (RTK)
--------E-2FED03-----------------------------
INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
AX = ED03h
CX = real-mode code segment
DX = real-mode data segment
Return: CF clear if successful
CX = protected-mode code segment selector
DX = protected-mode data segment selector
ES:DI -> real-mode entry point for calling protected-mode functions
(see INT 21/AX=250Dh)
CF set on error
AX = error code
0008h unable to allocate LDT descriptors
--------E-2FED10BL05-------------------------
INT 2F - Pharlap DOS Extender - ???
AX = ED10h
BL = 05h
ES:SI -> ??? structure
Return: AX = ???
SI = ???
DI = ???
SeeAlso: AX=ED00h,AX=ED11h
--------E-2FED11BL05-------------------------
INT 2F - Pharlap DOS Extender - FATAL EXIT TO REAL MODE ???
AX = ED11h
BL = 05h
CX = ???
DX = ???
ES:SI -> ??? structure
SS:SP = new stack ???
Return: ???
Note: called immediately prior to terminating program with INT 21/AX=4CFFh
SeeAlso: AX=ED00h,AX=ED10h
--------K-2FED58-----------------------------
INT 2F U - K5.COM - INSTALLATION CHECK
AX = ED58h
Return: AX = 000Dh if installed
ES = resident code segment
BX = ??? (9999h)
???
Program: K5 is an extended keyboard driver by Martin Gerdes, based on his K3
SeeAlso: AX=E337h,INT 16/AX=AF20h
--------E-2FED80-----------------------------
INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
AX = ED80h
BL = DOS extender ID (see #2782)
SI = 5048h ("PH")
DI = 4152h ("AR")
???
Return: ???
--------O-2FEDC8BX0000-----------------------
INT 2F - Novell ??? - INSTALLATION CHECK???
AX = EDC8h ('EDC' = Novell European Development Center)
BX = 0000h
CX = 0000h
DX = 1234h
Return: ???
Desc: called by Novell DOS 7 LOCK command during installation; purpose
unknown
--------y-2FEE00-----------------------------
INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
AX = EE00h
Return: AL = FFh if installed
Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
SeeAlso: INT 21/AH=40h"NB.SYS"
--------U-2FEE00-----------------------------
INT 2F - XVIEW - INSTALLATION CHECK
AX = EE00h
Return: AX = 00FFh if installed
Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
--------N-2FEE00-----------------------------
INT 2F - WEB v4.02 - INSTALLATION CHECK
AX = EE00h
Return: AL = status
00h not installed
FFh installed
Program: WEB is an IPX-based peer-to-peer network by Webcorp.
SeeAlso: AH=EEh"WEB",AX=EEF0h
--------U-2FEE01-----------------------------
INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
AX = EE01h
DS:DX -> ASCIZ string containing case-insensitive keyword to look up
Return: AX = status (see #2783)
Note: the specified keyword should be a hyperlink in the _IndexPage of some
database; the current database is searched first
SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
(Table 2783)
Values for XVIEW function status:
0000h successful
00F1h unknown subfunction
00F2h unable to pop up
--------U-2FEE02-----------------------------
INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
AX = EE02h
DX = physical page number or anchor page number (see #2784)
Return: AX = status (see #2783)
Note: physical page numbers are assigned by the hypertext compiler, and
will change if a page is inserted in the middle
SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
(Table 2784)
Values for XVIEW anchor page number:
FFEAh _Credits
FFECh _SearchTopics
FFEDh _SearchText
FFF0h _ManualList
FFF5h _HelpOnHelp
FFF8h _HomePage
FFF9h _IndexPage
--------U-2FEE03-----------------------------
INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
AX = EE03h
DS:DX -> data packet (see #2785)
Return: AX = status (see #2783)
SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
Format of XVIEW data packet:
Offset Size Description (Table 2785)
00h DWORD -> ASCIZ database filespec (0000h:0000h for current database)
04h DWORD -> ASCIZ text to look up or 0000h:0000h
08h WORD page number (0000h if keyword used)
0Ah 6 BYTEs reserved
--------U-2FEE04-----------------------------
INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
AX = EE04h
Return: AX = status (see #2783)
Note: equivalent to the action taken when the user presses the Alt-L hotkey
SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
--------U-2FEE05-----------------------------
INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
AX = EE05h
Return: AX = status (see #2783)
Note: equivalent to the action taken when the user presses the Alt-H hotkey
SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
--------U-2FEE06-----------------------------
INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
AX = EE06h
Return: AX = status (see also AX=EE01h)
0001h specified filename is not an xText database
0002h no databases found
0003h bad data in file
0004h memory shortage
0005h unable to open the requested file
0007h invalid page number for file
Note: although this call is not required, the exit code can alert the
caller to problems; if the call is not made, the program should
enforce a delay of about 1/2 second to allow the viewer to pop up,
and should not get keyboard input or attempt disk accesses during
the delay
SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
--------N-2FEE-------------------------------
INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
AH = EEh
AL = module ID (see #2786)
Return: AX = 0000h if installed
ES:DI -> far entry point for module-specific API calls
(see #2787,#2788,#2789,#2790,#2791)
Program: WEB is an IPX-based peer-to-peer network by Webcorp.
SeeAlso: AX=EE00h"WEB"
(Table 2786)
Values for WEB module ID:
10h server module (SERVER.EXE)
20h client module (CLIENT.EXE)
30h mail module (MAIL.EXE)
40h spooler (PCSPOOL.EXE)
50h kernel module (KERNEL.EXE)
60h SAP module (KERNEL.EXE)
70h resident station manager (SM.EXE)
90h router module (ROUTER.EXE)
(Table 2787)
Call server module entry point with:
BX = function
0000h remove server module
Return: AX = status (0000h if successful, else WEB error code)
0001h create SYSINFO file
Note: the SYSINFO file is used by the station manager when
displaying info for a particular station
0002h get server object table
Return: CX = number of server objects
ES:DI -> server object table
Note: server objects include drives and devices that the
server module controls
0003h get server variables
Return: ES:DI -> server variables
(Table 2788)
Call client module entry point with:
BX = function
0000h remove client module
Return: AX = status (0000h if successful, else WEB error code)
0001h decrement client-only flag
0002h increment client-only flag
0005h set device capture
Note: decrements DeviceOutput flag, telling the spooler that
it may trap device output again
0006h clear device capture
Note: increments DeviceOutput flag, telling the spooler that
it should not trap device output (this is used
internally by the spooler to prevent it from trapping
its own output)
0007h get client debug pointer
Return: ES:DI -> client debug data structure (see #2792)
0008h get root drive
Return: AL = WEB startup drive
0009h get maximum possible drive/device redirections
Return: AL = maximum drive redirections
CH = maximum LPTx redirections
CL = maximum COMx redirections
000Ah suspend client
Return: AX = previous value of Suspend flag
000Bh resume client
Return: AX = previous value of Suspend flag
000Ch get instance data
CX = maximum number of structures in array
ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
(see #2793)
Return: CX = number of structures actually returned
Note: used internally by WEB4WIN
(Table 2789)
Call mail module entry point with:
BX = function
0000h remove mail module
Return: AX = status (0000h successful, else WEB error code)
0001h set mail poll
Note: schedules the WEB mail module
0002h set mail notify
Note: sets the Notify flag, which determines whether the
user will be notified when mail is received
0003h clear mail notify
Note: clears the Notify flag, which determines whether the
user will be notified when mail is received
0004h check whether new mail has arrived
Return: AL = new mail status
00h no new mail since last call
else new mail has arrived
Note: also clears the new-mail flag after retrieving it
0005h send notify
ES:DI -> name of WEB user to be notified
0006h get post office
Return: ES:DI -> full network path of Post Office subdirectory
(Table 2790)
Call spooler entry point with:
BX = function
0000h remove PCSpool module
Return: AX = status (0000h successful, else WEB error code)
0001h set spooler poll
Note: schedules the WEB spooler
0002h check spooler changed
Return: AX = 0000h
Note: this call is a NOP in current versions of WEB
(Table 2791)
Call kernel entry point with:
BX = function
0000h remove kernel module
Return: AX = status (0000h successful, else WEB error code)
0001h set kernel ^S filter
DL = new state (00h don't filter ^S, nonzero do filter)
0002h get kernel data area
Return: ES:DI -> kernel data area
0003h display dialog box
CL = dialog box type
00h password
01h E-Note received notification
02h Novell login
03h general notification
DL = number of rows to display
ES:SI -> array of far pointers to rows to be displayed
ES:DI -> Pascal-style input buffer
Return: AX = status (0000h successful, else error code)
0004h kernel service events
0005h get kernel's in-critical-section flag
Return: ES:DI -> kernel InCriticalSection flag
0006h schedule DOS event
AL = directive
00h do not ignore WEB ExtraBusy flag
01h ignore ExtraBusy flag
02h (WEB4WIN) check that current Windows VM is foregrnd VM
ES:SI -> WEB AES Event Control Block (ECB) (see #2794)
Notes: the WEB Asynchronous Event Scheduler is similar to the
one used by IPX; this call schedules a special ECB
to be executed at a later time. Unlike IPX ECBs,
the timeout must be set explicitly by the caller
this function also calls function 0004h
0007h check busy
AL = directive
00h do not ignore WEB ExtraBusy flag
01h ignore ExtraBusy flag
02h (WEB4WIN) check that current Windows VM is foregrnd VM
Return: AX = status (0000h not busy, else busy)
0008h set keyboard intercept
Note: currently a NOP which returns immediately
0009h get keyboard intercept
Note: currently a NOP which returns immediately
000Ah get dialog flags
Return: ES:DI -> kernel dialog flags (see #2795)
000Bh get network path
Return: ES:DI -> fully-qualified network path of file where
the screen is stored on Dialog calls
000Ch kernel alternate dialog
CL = dialog box type
00h password
01h E-Note received notification
02h Novell login
03h general notification
DL = number of rows to display
ES:SI -> array of far pointers to rows to be displayed
ES:DI -> Pascal-style input buffer
Return: AX = status (0000h successful, else error code)
Note: this function is identical to function 0003h except
that it does not notify WEB4WIN of the impending
dialog request
000Dh get machine/operating system type
Return: AX = machine/operating system type
01h IBM PC, MS-DOS
02h IBM PC, DOSV (Japanese)
03h NEC PC-9800, JDOS (Japanese)
04h IBM PC, Korean DBC DOS
Format of client debug data structure:
Offset Size Description (Table 2792)
00h WORD total files
02h WORD files free
04h WORD no files
06h WORD minimum files
08h WORD total FCBs
0Ah WORD total safe FCBs
0Ch WORD FCBs in use
0Eh WORD wrong FCB
10h WORD compressed
12h WORD retransmits
Format of WIN_INSTANCE_DATA structure:
Offset Size Description (Table 2793)
00h DWORD real-mode pointer to data to be instanced
04h WORD size of data to be instanced
Format of WEB AES Event Control Block:
Offset Size Description (Table 2794)
00h DWORD link address
04h WORD ESR address
08h BYTE InUse flag
09h BYTE completion code
0Ah 3 BYTEs reserved
0Dh WORD timeout
0Fh BYTE IgnoreExtra flag
10h WORD PSP
12h DWORD DTA
16h WORD AX value for DOS critical information
18h WORD BX value for DOS critical information
1Ah WORD CX value for DOS critical information
1Ch WORD DX value for DOS critical information
(Table 2795)
Values for kernel dialog flags:
01h dialog will timeout
02h display stars instead of entered keystrokes
--------N-2FEEF0-----------------------------
INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
AX = EEF0h
BX = notification function ID (see #2796)
Return: varies by notification function
Program: WEB is an IPX-based peer-to-peer network by Webcorp.
Note: the notification functions are used internally by WEB modules to notify
other modules and external programs of actions or event, and should
never be called by an application
SeeAlso: AX=EE00h"WEB"
(Table 2796)
Values for WEB Notification Function ID:
00h node added
01h node deleted
02h dial attempt
03h dial failed
04h file close
05h close connection
07h check Windows mode
20h link up
21h link down
--------K-2FF000-----------------------------
INT 2F U - 4MAP - INSTALLATION CHECK
AX = F000h
Return: AX = 00FFh
Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
Note: returns AX=00FFh for any value of AL not listed here
SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
--------K-2FF001-----------------------------
INT 2F U - 4MAP - GET KEY MAPPINGS
AX = F001h
Return: ES:BX -> key mappings
SeeAlso: AX=F000h
--------K-2FF002-----------------------------
INT 2F U - 4MAP - INSERT CHARACTER INTO ???
AX = F002h
BL = character to insert
Return: AX = status
0000h successful
0001h buffer full
SeeAlso: AX=F000h,AX=F003h
--------K-2FF003-----------------------------
INT 2F U - 4MAP - INSERT CHARACTER INTO ???
AX = F003h
BL = character to insert
Return: AX = status
0000h successful
0001h buffer full
Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
SeeAlso: AX=F000h,AX=F002h
--------m-2FF1-------------------------------
INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
AH = F1h
AL <> F1h
Return: AL = F1h if installed
Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
popup TSRs to be loaded but swapped out to disk, EMS, or XMS. One
TSR at a time is brought back into memory at the user's request.
--------E-2FF100-----------------------------
INT 2F - DOS EXTENDER INSTALLATION CHECK
AX = F100h
Return: AL = FFh if DOS extender present
SI = 444Fh ("DO")
DI = 5358h ("SX")
Note: supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
--------W-2FF200-----------------------------
INT 2F - WINX - INSTALLATION CHECK
AX = F200h
Return: AX = 00FFh if installed
Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
launch Windows applications from a DOS Box; it was published in
"DOS and Windows Protected Mode-Programming with DOS Extenders"
(Addison-Wesley) and should not be confused with the Windows driver
of the same name which is part of the DESQview/X package
--------W-2FF201-----------------------------
INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
AX = F201h
Return: AX = status
FFFFh if WINX is busy processing a different request
0000h if successful
BX:CX = address of server buffer (see #2797)
Format of WINX server buffer:
Offset Size Description (Table 2797)
00h BYTE command/status
00h buffer available
01h buffer contains result
02h change directory
03h execute program
FFh terminate windows portion of WINX
01h ? BYTEs command (03h) or directory (02h)
or
01h DWORD result (01h)
--------W-2FF202-----------------------------
INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
AX = F202h
BX:CX -> directory
Return: AX = status
FFFFh if WINX is busy processing a different request
0000h if successful
SeeAlso: AX=F200h,AX=F203h
--------W-2FF203-----------------------------
INT 2F - WINX - EXECUTE COMMAND
AX = F203h
BX:CX -> command
Return: AX = status
0000h if successful
FFFFh if WINX is busy processing a different request
SeeAlso: AX=F200h,AX=F202h
--------G-2FF400-----------------------------
INT 2F - FINDIRQ.COM - INSTALLATION CHECK
AX = F400h
Return: AL = 01h if installed
Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
of PC Magazine; when run as a TSR it can determine which IRQs are
used only when a device is active
SeeAlso: AX=F401h
--------N-2FF400-----------------------------
INT 2F - PowerLAN - INSTALLATION CHECK???
AX = F400h
???
Return: ???
Note: this function is called by PowerLAN's NET.EXE just prior to calling
AX=F401h (get version)
SeeAlso: AX=F401h"PowerLAN"
--------N-2FF401-----------------------------
INT 2F - PowerLAN - GET VERSION
AX = F401h
Return: ES:BX -> WORD containing 100*version (in decimal)
Program: PowerLAN is a networking product by Performance Technology
SeeAlso: AX=F400h"PowerLAN",AX=F483h"PowerLAN"
--------G-2FF401CX5121-----------------------
INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
AX = F401h
CX = 5121h ('Q!')
Return: AX:DX -> hooked interrupt table (see #2798)
SeeAlso: AX=F400h
Format of FINDIRQ hooked interrupt table:
Offset Size Description (Table 2798)
00h BYTE 1Ch
01h DWORD FINDIRQ's INT 1C handler
05h DWORD original INT 1C handler
09h BYTE 28h
0Ah DWORD FINDIRQ's INT 28 handler
0Eh DWORD original INT 28 handler
12h BYTE 2Fh
13h DWORD FINDIRQ's INT 2F handler
17h DWORD original INT 2F handler
--------N-2FF483-----------------------------
INT 2F - PowerLAN - ???
AX = F483h
???
Return: ???
SeeAlso: AX=F400h"PowerLAN",AX=F401h"PowerLAN"
--------d-2FF700-----------------------------
INT 2F - AUTOPARK.COM - INSTALLATION CHECK
AX = F700h
Return: AL = state
00h not installed
FFh installed
Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
--------d-2FF701-----------------------------
INT 2F - AUTOPARK.COM - SET PARKING DELAY
AX = F701h
BX:CX = 32-bit count of 55ms timer ticks
--------d-2FF800CX4455-----------------------
INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
AX = F800h
CX = 4455h ("DU")
DL = 45h ("E")
Return: AL = FFh if installed
ES:BX -> ASCII signature "Universal Data Exchange"
Program: SuperStor is a disk-compression program by Addstor.
Note: returns AX=0001h if AL is not 00h or 01h
SeeAlso: AX=1001h,AX=F801h
--------d-2FF801CX4455-----------------------
INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
AX = F801h
CX = 4455h ("DU")
DL = 45h ("E")
ES:BX = return address if successful
Return: at specified address if successfully removed from memory
else
AL = error code
???
Program: SuperStor is a disk-compression program by Addstor.
Note: returns AX=0001h if AL is not 00h or 01h
SeeAlso: AX=1001h,AX=F800h
----------2FFA00-----------------------------
INT 2F - Multiplex - ??? - INSTALLATION CHECK???
AX = FA00h
BX = ??? (0408h)
CX = ??? (001Fh)
DX = ??? (0102h)
SI = ??? (5ACCh)
DI = ??? (0632h)
Return: ???
Note: called by WinEmacs at startup
----------2FFA00-----------------------------
INT 2F - Multiplex - ??? - INSTALLATION CHECK???
AX = FA00h
BX = ??? (03FCh)
CX = ??? (003Fh)
DX = ??? (00FFh)
SI = ??? (5AA6h)
DI = ??? (0620h)
Return: ???
Note: called by Matlab at startup
--------*-2FFB-------------------------------
INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
AH = FBh
SeeAlso: AX=FB42h/BX=0001h
--------f-2FFB-------------------------------
INT 2F U - Conner Backup Exec AUTORES - API
AH = FBh
BL = function number (00h-07h)
???
Return: ???
Program: AUTORES is a resident program launcher for unattended backups
--------a-2FFB00-----------------------------
INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
AX = FB00h
Return: AX = 00FFh if installed
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
--------U-2FFB00-----------------------------
INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
AX = FB00h
Return: AX = FFFFh if installed
BX = version (BCD, BH=major, BL=minor)
SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
--------a-2FFB01-----------------------------
INT 2F U - AutoBraille v1.1A - ???
AX = FB01h
???
Return: ???
--------U-2FFB01-----------------------------
INT 2F U - Jot-It! v1.50 - GET USER NAME
AX = FB01h
Return: DX:BX -> ASCIZ user name
SeeAlso: AX=FB02h"Jot-It"
--------a-2FFB02-----------------------------
INT 2F U - AutoBraille v1.1A - ???
AX = FB02h
Return: AH = ???
AL = ???
--------U-2FFB02-----------------------------
INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
AX = FB02h
Return: DX:BX -> ASCIZ name of directory in which messages are stored
SeeAlso: AX=FB01h"Jot-It"
--------a-2FFB03-----------------------------
INT 2F U - AutoBraille v1.1A - GET NEXT ???
AX = FB03h
Return: AX = ???
--------U-2FFB03-----------------------------
INT 2F U - Jot-It! v1.50 - UNINSTALL
AX = FB03h
Return: resident code removed from memory
Note: CAUTION: NO checks are performed to ensure that the interrupt vectors
being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
SeeAlso: AX=FB00h"Jot-It"
--------a-2FFB-------------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AH = FBh
AL = 04h-08h
Return: AX = 0000h
--------a-2FFB-------------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AH = FBh
AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
Return: ???
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
--------a-2FFB-------------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AH = FBh
AL = 10h-1Fh
???
Return: ???
--------a-2FFB20-----------------------------
INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
AX = FB20h
BL = flags to set
SeeAlso: AX=FB21h"AutoBraille"
--------a-2FFB21-----------------------------
INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
AX = FB21h
BL = flags to clear
SeeAlso: AX=FB20h"AutoBraille"
--------a-2FFB22-----------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AX = FB22h
BL = ???
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
--------a-2FFB28-----------------------------
INT 2F U - AutoBraille v1.1A - ???
AX = FB28h
BX = ???
???
Return: ???
SeeAlso: AX=FB29h"AutoBraille"
--------a-2FFB29-----------------------------
INT 2F U - AutoBraille v1.1A - ???
AX = FB29h
BX = ???
???
Return: ???
SeeAlso: AX=FB28h"AutoBraille"
--------a-2FFB-------------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AH = FBh
AL = 2Bh-34h
BX = ???
--------a-2FFB35-----------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AX = FB35h
BL = ???
--------a-2FFB36-----------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AX = FB36h
BL = ???
--------a-2FFB37-----------------------------
INT 2F U - AutoBraille v1.1A - SET ???
AX = FB37h
BL = ???
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
--------E-2FFB42BX0001-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
AX = FB42h
BX = 0001h
Return: AX = version number??? (AL=major, AH=minor)
CX = next-selector increment
---BC2.0---
ES:BX -> 80-byte buffer for ???
DX = DPMI version
---BC3.0---
BX = ??? (0000h)
DX = ???
ES:SI -> list of valid selectors ???
Notes: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
as version 1.000, while the version distributed with BC++ 3.0
identifies itself as version 1.0; the former is 10864 bytes, the
latter 22180 bytes. The BC2.0 version is a DPMI loader, while
the BC3.0 version also adds a DPMI host and DOS extender
the BC++ 2.0 version displays an error message if called with BX
values other than 0001h-0008h
SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
--------E-2FFB42BX0002-----------------------
INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
AX = FB42h
BX = 0002h
CX = size in bytes
DX = bit flags
bit 2: set to allocate DOS memory, clear for DPMI memory
SI = selector of descriptor to be modified to access allocated memory
DI = selector of a second descriptor to be modified
Return: AX = ??? or 0000h on error
CX:DX = linear base address of DPMI memory block
SI:DI = handle for DPMI memory block or FFFFh:FFFFh
???
Note: two segment descriptors may be set if a code and an aliased data
segment are required; if only one descriptor is needed, SI should
equal DI on entry
BUG: when allocating DOS memory, the code computes the linear address by
multiplying the segment number by 4 rather than shifting by 4
SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
--------E-2FFB42BX0002-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
AX = FB42h
BX = 0002h
ES:SI -> memory block info (see #2799)
Return: ???
Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
as version 1.000, while the version distributed with BC++ 3.0
identifies itself as version 1.0; the former is 10864 bytes, the
latter 22180 bytes.
SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
Format of DPMILOAD memory block info:
Offset Size Description (Table 2799)
00h WORD flags (see #2800)
02h DWORD block size in bytes
---DPMI memory block---
06h DWORD DPMI memory block handle
---DOS memory block---
06h WORD real-mode segment of memory block
08h WORD selector of memory block
---
0Ah DWORD linear address of memory
0Eh WORD memory operation error code
0008h no more free LDT descriptors
---if flags bit 0 clear---
10h WORD code segment selector for memory block or 0000h or FFFFh
12h WORD data alias selector for memory block or 0000h or FFFFh
---if flags bit 0 set---
10h WORD data segment selector for memory block or 0000h or FFFFh
12h WORD unused???
Bitfields for DPMILOAD memory block flags:
Bit(s) Description (Table 2800)
0 set if data segment rather than code segment
1 information valid
2 set if DOS memory block rather than DPMI memory block
4 ???
15 set if no LDT selectors for memory block???
SeeAlso: #2799
--------E-2FFB42BX0003-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
AX = FB42h
BX = 0003h
Return: DX:AX = size of largest free block in paragraphs
0000h:0000h on error (BC3.0 version only)
Note: AX and DX are destroyed on error, but no other error indicator is
returned, under the BC++ 2.0 version of DPMILOAD
SeeAlso: AX=FB42h/BX=0002h
--------E-2FFB42BX0004-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
AX = FB42h
BX = 0004h
DS:DX -> ASCIZ filename of protected-mode executable
Return: CX = selector of ??? or 0000h
---BC3.0---
DX = status (0000h,FFF4h,others???) (see #2801)
Note: the filename may also be terminated by a CR rather than a NUL under the
BC++ 3.0 version of DPMILOAD
(Table 2801)
Values for DPMILOAD function status:
0000h successful
0001h ??? failure
0002h invalid selector
0004h unknown error
0008h no more LDT descriptors available???
FFDEh unable to set descriptor
FFDFh unable to get segment base address
FFE0h ???
FFF2h invalid parameter value
FFF4h component of filename too long (name not in 8.3 format)
FFF5h pathname too long (>79 chars)
FFF6h ???
FFF8h ???
FFF9h index out of range
FFFAh ???
FFFCh invalid access to code segment???
FFFEh ???
FFFFh general error
--------E-2FFB42BX0005-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
AX = FB42h
BX = 0005h
CX = selector of DPMILOAD data (see #2802)
DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
Return: DX = status (see #2801)
0000h successful
AX:BX -> ??? FAR function (called with two words on top of stk)
else
BX destroyed
SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
Format of DPMILOAD data:
Offset Size Description (Table 2802)
00h 12 BYTEs ???
0Ch WORD ??? bit flags
0Eh 14 BYTEs ???
1Ch WORD number of memory control records (see #2805)
1Eh 25 BYTEs ???
37h BYTE ??? bit flags
bit 4: data valid???
38h 4 BYTEs ???
3Ch WORD ???
3Eh 12 BYTEs ???
46h BYTE ??? counter
47h BYTE ???
48h BYTE ???
49h BYTE ???
4Ah WORD ???
4Ch 2 BYTEs ???
4Eh WORD offset of array of 64-byte memory control records
52h WORD offset of name list (see #2803)
54h 4 BYTEs ???
58h WORD offset of array of 6-byte objects (see #2804)
5Ah 8 BYTEs ???
62h 9 BYTEs ASCIZ name for ???
6Bh 9 BYTEs ASCIZ name for ???
???
Format of name list entry [array]:
Offset Size Description (Table 2803)
00h BYTE length of name (00h if end of array)
01h N BYTEs name
N+1 WORD 1-based index into array of unknown 6-byte objects
Format of 6-byte objects:
Offset Size Description (Table 2804)
00h BYTE ???
01h BYTE ???
02h BYTE ???
03h BYTE 1-based index of memory control record
04h WORD ???
Format of memory control record:
Offset Size Description (Table 2805)
00h 20 BYTEs memory block info (see #2799)
14h 6 BYTEs ???
1Ah BYTE ???
1Bh 2 BYTEs ???
1Dh BYTE ??? bit flags
1Eh 14 BYTEs ???
2Ch DWORD pointer to ??? memory control record or 0000h:0000h
30h DWORD pointer to ??? memory control record or 0000h:0000h
34h DWORD pointer to next??? memory control record or 0000h:0000h
38h DWORD pointer to prev??? memory control record or 0000h:0000h
3Ch 4 BYTEs ???
Note: the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
the pointers at offsets 34h and 38h
--------E-2FFB42BX0006-----------------------
INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
AX = FB42h
BX = 0006h
CX = selector of DPMILOAD data (see #2802)
DX = 1-based index into array of ??? 6-byte objects
Return: DX = status (see #2801)
0000h successful
AX:BX -> ??? FAR function (called with two words on top of stk)
else
BX destroyed
SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
--------E-2FFB42BX0007-----------------------
INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0007h
CX = selector of ???
Return: ???
Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
as version 1.000, while the version distributed with BC++ 3.0
identifies itself as version 1.0; the former is 10864 bytes, the
latter 22180 bytes.
--------E-2FFB42BX0007-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0007h
CX = selector of DPMILOAD data (see #2802)
???
Return: DX = status (see #2801)
0000h successful
AX = ???
--------E-2FFB42BX0008-----------------------
INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
AX = FB42h
BX = 0008h
CX = bit flags
bit 2: set if DPMI memory, clear if DOS memory
DX = selector of DOS memory block
SI:DI = handle of DPMI memory block
Return: DX = 0000h on error, unchanged if succcessful
Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
as version 1.000, while the version distributed with BC++ 3.0
identifies itself as version 1.0; the former is 10864 bytes, the
latter 22180 bytes.
SeeAlso: AX=FB42h/BX=0002h
--------E-2FFB42BX0008-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
AX = FB42h
BX = 0008h
ES:SI -> memory block info (see #2799)
Return: ???
SeeAlso: AX=FB42h/BX=0009h
--------E-2FFB42BX0009-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
AX = FB42h
BX = 0009h
ES:SI -> memory block info (see #2799)
???
Return: ???
SeeAlso: AX=FB42h/BX=0008h"3.0"
--------E-2FFB42BX000A-----------------------
INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
AX = FB42h
BX = 000Ah
CX = 0001h
DX = ???
SI = ???
Return: after user exits subshell
Notes: this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
function is not available in protected mode.
the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
version also adds a DPMI host and DOS extender.
SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
--------E-2FFB42BX000B-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
AX = FB42h
BX = 000Bh
--------E-2FFB42BX000C-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
AX = FB42h
BX = 000Ch
ES:SI -> memory block info ??? (see #2799)
Return: DX = status???
SeeAlso: AX=FB42h/BX=000Fh
--------E-2FFB42BX000D-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
AX = FB42h
BX = 000Dh
CX = number of words to copy from protected-mode to real mode stack
DL = interrupt number
DH = flags
bit 0: reset the interrupt controller and A20 line
ES:DI -> real-mode call structure (see #2819 at INT 31/AX=0300h)
Return: CX = status
0000h successful
0001h failed
SeeAlso: INT 31/AX=0300h
--------E-2FFB42BX000E-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
AX = FB42h
BX = 000Eh
DS:DX -> ASCIZ or CR-terminated name of ???
Return: CX = selector of DPMILOAD data (see #2802) corresponding to name,
0000h on error
SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
--------E-2FFB42BX000F-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
AX = FB42h
BX = 000Fh
ES:SI -> memory block info (see #2799)
Return: ???
SeeAlso: AX=FB42h/BX=000Ch
--------E-2FFB42BX0010-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
AX = FB42h
BX = 0010h
DX = segment number
Return: CX = status (0000h,0008h) (see also AX=FB42h/BX=0004h)
0000h successful
DX = selector number for descriptor
0008h failed
SeeAlso: AX=FB42h/BX=0023h
--------E-2FFB42BX0011-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0011h
CX = selector of DPMILOAD data (see #2802)
???
Return: DX = status (0000h,0002h,FFFEh) (see also #2801)
0000h successful
AX:BX -> ??? name
FFFEh ??? error
--------E-2FFB42BX0012-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0012h
CX = selector for ???
Return: CX = selector for ???
--------E-2FFB42BX0013-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0013h
CX = selector of DPMILOAD data (see #2802)
DX = 1-based index of ???
Return: CX = status (0000h,0002h,FFF9h) (see also #2801)
0000h successful
BX = ??? or 0000h
FFF9h ??? error
--------E-2FFB42BX0014-----------------------
INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
AX = FB42h
BX = 0014h
CX = 0001h
Return: BX = 0000h if installed
Note: unlike most of the DPMILOAD functions, this call is available only in
real or V86 mode
SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
--------E-2FFB42BX0015-----------------------
INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
AX = FB42h
BX = 0015h
CX = 0001h
Return: ???
Note: unlike most of the DPMILOAD functions, this call is available only in
real or V86 mode
SeeAlso: AX=FB42h/BX=000Ah
--------E-2FFB42BX0016-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
AX = FB42h
BX = 0016h
CX = selector of DPMILOAD data (see #2802)
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
CX = ???
--------E-2FFB42BX0017-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0017h
CX = ???
DX = ???
???
Return: DX = status (0000h,0001h) (see #2801)
--------E-2FFB42BX0018-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
AX = FB42h
BX = 0018h
CX = ???
--------E-2FFB42BX0019-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0019h
CX = selector for ???
???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
CX = selector for ???
--------E-2FFB42BX001A-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 001Ah
CX = selector for ???
???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
0004h failed
CX:BX -> ???
--------E-2FFB42BX001B-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 001Bh
CX = selector of DPMILOAD data (see #2802)
DX = offset of ???
Return: DX = status (0000h,0002h) (see also #2801)
0000h successful
BX = selector for ???
CX = selector for ???
--------E-2FFB42BX001C-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 001Ch
ES = selector for DPMILOAD data (see #2802)
CX = 1-based index of ???
DX = 1-based index of ???
Return: DX = status (0000h,0002h,FFF9h) (see #2801)
--------E-2FFB42BX001D-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
AX = FB42h
BX = 001Dh
Return: CX:DX = ???
--------E-2FFB42BX001E-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 001Eh
CX = ???
???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
FFF7h ??? error
CX:BX -> ???
--------E-2FFB42BX001F-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
AX = FB42h
BX = 001Fh
DS:DX -> 8-character name of ???
???
Return: CX = selector of DPMILOAD data (see #2802) for ???
0000h on error
SeeAlso: AX=FB42h/BX=000Eh
--------E-2FFB42BX0020-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
AX = FB42h
BX = 0020h
Return: DX = ??? (always 0000h)
--------E-2FFB42BX0021-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
AX = FB42h
BX = 0021h
CL = exception number (00h-1Fh)
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
AX:BX = selector:offset of handler
FFF2h unable to get exception handler vector
SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
--------E-2FFB42BX0022-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
AX = FB42h
BX = 0022h
CL = exception number (00h-1Fh)
SI:DX = selector:offset of new handler
Return: DX = status (0000h,0004h,FFF2h) (see #2801)
SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
--------E-2FFB42BX0023-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
AX = FB42h
BX = 0023h
CX = selector
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
CX = real-mode segment number
FFF2h descriptor has invalid base address for real-mode segment
SeeAlso: AX=FB42h/BX=0010h
--------E-2FFB42BX0024-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
AX = FB42h
BX = 0024h
CL = interrupt number
Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
AX:BX = selector:offset of handler
SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
--------E-2FFB42BX0025-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
AX = FB42h
BX = 0025h
CL = interrupt number
SI:DX = selector:offset of new handler
Return: DX = status (0000h,0004h,FFF2h) (see #2801)
SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
--------E-2FFB42BX0026-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
AX = FB42h
BX = 0026h
CX = selector of DPMILOAD data (see #2802)
DX = 1-based index of ???
???
Return: DX = status (0000h,0002h,FFF9h) (see #2801)
0000h successful
BX = offset of ??? within data structure
--------E-2FFB42BX0027-----------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
AX = FB42h
BX = 0027h
CX = selector of DPMILOAD data (see #2802)
DX = offset of ???
Return: DX = status (see also AX=FB42h/BX=0004h)
0000h successful
BX = ???
--------E-2FFB42BX0080-----------------------
INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
AX = FB42h
BX = 0080h
???
Return: AX = ???
???
--------E-2FFB42BX0081-----------------------
INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
AX = FB42h
BX = 0081h
???
Return: AX = ???
???
--------E-2FFB42BX1001-----------------------
INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
AX = FB42h
BX = 1001h
Return: BX = 0000h
SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
--------E-2FFB42BX1002-----------------------
INT 2F U - Borland RTM.EXE 1.0 - ???
AX = FB42h
BX = 1002h
???
Return: ???
SeeAlso: AX=FB42h/BX=1001h
--------E-2FFB42BX1003-----------------------
INT 2F U - Borland RTM.EXE 1.0 - ???
AX = FB42h
BX = 1003h
???
Return: ???
SeeAlso: AX=FB42h/BX=1001h
--------E-2FFB43-----------------------------
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
AX = FB43h
BX = subfunction (at least 0000h-000Eh)
Notes: this function is only present in protected mode; it does nothing but
an immediate IRET
DPMILOAD.EXE itself calls various subfunctions:
subfunction 0004h is called with CX=selector of ???, DI=selector
of DPMILOAD data
subfunction 0008h is called with CX=selector of DPMILOAD data
SeeAlso: AX=FB42h/BX=0001h
--------G-2FFB43BX0100-----------------------
INT 2F PU - Borland TDX - INSTALLATION CHECK
AX = FB43h
BX = 0100h
Return: BX = FB43h if loaded
Program: TDX is Borland's Turbo Debugger variant for DPMI programs
Note: Borland Pascal 7 DPMI programs use this call to check whether they
should install their own stack and general protection exception
handlers, or allow TDX to handle those exceptions
--------a-2FFB64-----------------------------
INT 2F U - AutoBraille v1.1A - GET ???
AX = FB64h
Return: AX = ??? (0006h seen)
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
--------E-2FFBA1BX0081-----------------------
INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
AX = FBA1h
BX = 0081h
ES:DI -> 16-byte buffer
Return: if installed, first four bytes of ES:DI buffer are "IABH"
Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
Note: TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
extender was moved into DPMILOAD.
SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
SeeAlso: INT 21/AX=4403h"AI Architects"
--------E-2FFBA1BX0082-----------------------
INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
AX = FBA1h
BX = 0082h
ES:DI -> response buffer (see #2806)
Return: ES:DI buffer filled
SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
Format of TKERNEL response buffer:
Offset Size Description (Table 2806)
00h 4 BYTEs signature "IABH"
04h DWORD pointer to FAR extender entry point (see #2807)
(Table 2807)
Call TKERNEL entry point with:
AX = function number
0000h initialize???
STACK: WORD ???
Return: AX = status???
STACK unchanged
0001h get version???
Return: AX = 0200h for v2.0.34
0002h get ???
Return: AX = ??? (011Eh or 0182h seen)
0003h load protected-mode executable
STACK: DWORD -> ASCIZ filename of executable
DWORD ???
DWORD -> program arguments (counted string plus CR)
DWORD -> environment for protected-mode executable
(terminated with two consecutive NULs)
DWORD -> WORD buffer for ???
Return: AX = status???
STACK unchanged
0004h get descriptor
STACK: WORD selector for which to get descriptor
WORD segment number (when running in real mode)
DWORD -> buffer for descriptor
Return: CF clear if successful
buffer filled
CF set on error
AX destroyed???
STACK unchanged
0005h ???
STACK: WORD selector for ???
WORD subfunction number???
0000h run previously-loaded program???
0001h ??? (similar to 0000h)
0002h
0003h
0005h ??? (similar to 0000h and 0001h)
Return: AX = status???
STACK unchanged
0006h ???
STACK: WORD ???
DWORD -> WORD (call) max iterations of ???
(ret) remaining iterations
Return: AX = ???
STACK unchanged
0007h unused
Return: AX = 0001h
0008h unused
Return: AX = 0001h
0009h copy protected-mode memory into conventional memory
STACK: WORD selector for source segment
WORD segment of source if in real mode???
DWORD offset of source
WORD number of bytes to copy
DWORD -> low-memory destination
Return: AX = status
STACK unchanged
000Ah copy conventional memory into protected-mode memory
STACK: WORD selector for destination segment
WORD segment of destination if in real mode???
DWORD offset of destination
WORD number of bytes to copy
DWORD -> low-memory source
Return: AX = status
STACK unchanged
000Bh get ??? pointers
STACK: WORD desired pointer
0000h get ???
0002h get protected-mode CR3
0003h get 4K page table buffer pointer
else Return: DX:AX = FFFFh:FFFFh
Return: DX:AX = requested pointer
STACK unchanged
000Ch set ??? pointers
STACK: WORD desired pointer
0000h set ???
0002h set protected-mode CR3
0003h set 4K page table buffer pointer
else ignore
DWORD new value for pointer
Return: STACK unchanged
000Dh get ??? pointers
STACK: WORD desired pointer
0000h get ???
0001h get ???
0002h get ???
0003h get ???
0004h get ???
0005h get ???
0006h get ???
0007h get ???
else Return: DX:AX = FFFFh:FFFFh
Return: DX:AX = desired pointer
STACK unchanged
000Eh set ??? pointer
STACK: WORD desired pointer
0000h set ???
0001h set ???
0002h set ???
0003h set ???
0004h set ???
0005h set ???
0006h set ???
0007h set ???
else Return: DX:AX = FFFFh:FFFFh
Return: STACK unchanged
000Fh get ???
Return: AX = ??? (seen 0008h)
0010h get ???
Return: AX = ???
0011h determine whether selector is valid
STACK: WORD possible selector
Return: AX = selector or 0000h if invalid
STACK unchanged
0012h get physical address
STACK: WORD selector for desired segment
WORD segment number if in real mode
DWORD offset within segment
Return: DX:AX = 32-bit physical address or 00000000h on error
BX destroyed
STACK unchanged
0013h ???
Note: normally jumps to code for function 0012h
0014h copy protected-mode memory to conventional memory, with ???
STACK: WORD selector for source segment
WORD segment of source if in real mode???
DWORD offset of source
WORD number of bytes to copy
DWORD -> low-memory destination
Return: AX = status???
STACK unchanged
0015h copy conventional memory to protected-mode memory, with ???
STACK: WORD selector for destination segment
WORD segment of destination if in real mode???
DWORD offset of destination
WORD number of bytes to copy
DWORD -> low-memory source
Return: AX = status???
STACK unchanged
0016h set ??? pointer
STACK: WORD unused
DWORD -> ??? or 0000h:0000h
Return: AX = 0000h
STACK unchanged
0017h allocate real-mode procedure???
STACK: DWORD ASCIZ name of procedure
DWORD ???
DWORD address of subroutine to invoke
Return: AX = status
0032h procedure by that name exists
0033h no more real-mode procedures available
DX destroyed
STACK unchanged
0018h unused
Return: AX = 0001h
0019h get parameter block
Return: DX:AX -> parameter block (format unknown at this time,
but 92h bytes)
(preceded by signature "!!PARAM-BLOCK!!")
001Ah get ???
Return: AX = ??? (0148h seen)
001Bh free real-mode procedure???
STACK: DWORD -> ASCIZ name of procedure
Return: ???
STACK unchanged
001Ch check whether packets from protected mode task pending
Return: AX = 0001h if packets pending, 0000h if not
001Dh set ???
STACK: DWORD ??? or 0000h:0000h
Return: AX,BX destroyed
STACK unchanged
001Eh ???
STACK: WORD ??? (high byte ignored)
DWORD -> data structure (below)
Return: AX,BX,CX,DX destroyed
data structure updated
STACK unchanged
Format of data structure:
Offset Size Description
00h 2 BYTEs unused
02h WORD ???
04h WORD ???
06h WORD ???
08h 2 BYTEs unused
0Ah WORD ???
0Ch WORD (call) ???
(ret) offset of this data structure (BUG?)
001Fh set ???
STACK: WORD ??? (set to 0001h if zero)
Return: AX destroyed
STACK unchanged
0020h ???
STACK: DWORD -> ??? (8 bytes of data)
Return: AX = ???
STACK unchanged
0021h ???
STACK: DWORD -> ??? (8 bytes of data)
WORD ???
WORD ???
Return: AX = ???
STACK unchanged
0022h ???
STACK: DWORD -> ??? (8 bytes of data)
DWORD -> 4-byte buffer for results
Return: AX = ???
STACK unchanged
0023h ???
STACK: DWORD -> ??? (8 bytes of data)
Return: AX = ???
STACK unchanged
0024h set ???
STACK: WORD ???
Return: AX destroyed
STACK unchanged
0025h get ???
Return: AX = ??? (value set with func 0024h)
0026h BUG: jumps to hyperspace due to fencepost error
FFFFh set DOS memory management functions
BX:SI -> FAR routine for allocating DOS memory
(called with AH=48h,BX=number of paragraphs to alloc;
returns CF clear, AX=segment of allocated memory, or
CF set on error)
CX:DI -> FAR routine for freeing DOS memory
(called with AH=49h,ES=segment of block to free;
returns CF set on error, AX=error code)
Note: each of these pointers normally points at INT 21/RETF
other Return: AX = 0001h
Note: BX may be destroyed by any of the API calls
--------E-2FFBA1BX0084-----------------------
INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
AX = FBA1h
BX = 0084h
ES:DI -> response buffer (see #2808)
Return: ES:DI buffer filled
SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
Format of TKERNEL response buffer:
Offset Size Description (Table 2808)
00h 4 BYTEs signature "IABH"
04h WORD success indicator
0001h failed (INT 2F hooked by another program)
unchanged if successful
06h WORD segment of ???
08h WORD segment of ??? memory block to free if nonzero
0Ah WORD segment of ??? memory block to free if nonzero
--------s-2FFBFBES0000-----------------------
INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
AX = FBFBh
ES = 0000h
Return: ES nonzero if installed
ES:BX -> entry point data structure (see #2809)
SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
Format of SoundBlaster entry point data structure:
Offset Size Description (Table 2809)
00h 3 BYTEs signature "FB "
03h BYTE driver major version number???
04h DWORD speech driver entry point (see #2810)
08h 24 BYTEs ???
20h ? BYTEs data buffer for calling speech driver
(can be 117 bytes or more)
(Table 2810)
Call SoundBlaster speech driver entry point with:
AL = function
07h speak a string
data buffer (see #2809) contains:
BYTE length of string
N BYTEs string to speak
--------K-2FFD12-----------------------------
INT 2F - KS/KEYSTKCT.EXE - INSTALLATION CHECK
AX = FD12h
Return: AX = 0093h if installed
ES = resident code segment
ES:CX -> internal "putbuf" routine
Program: KS/KEYSTKCT.EXE is a key stacking utility (4DOS KEYSTACK.SYS
look-alike) by Martin Gerdes, published in c't 11/1991, which can be
loaded as a device driver or as a TSR. It does not emulate 4DOS
KSTACK API
Note: the default buffer size is 128 keys
--------N-2FFE00BX4454-----------------------
INT 2F - PC-NFS ??? - INSTALLATION CHECK
AX = FE00h
BX = 4454h ("DT")
CX = 4B52h ("KR")
DX = 4E4Dh ("NM")
Return: AL = FFh if installed
BX = 524Eh ("RM")
CX = 4D44h ("MD")
DX = 544Bh ("TK")
Note: DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
SeeAlso: AX=FE08h
--------N-2FFE00BX4454-----------------------
INT 2F - PC-NFS ??? - INSTALLATION CHECK
AX = FE00h
BX = 4454h ("DT")
CX = 4B52h ("KR")
DX = 544Dh ("TM")
Return: AL = FFh if installed
BX = 5254h ("RT")
CX = 4D44h ("MD")
DX = 544Bh ("TK")
Note: DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
SeeAlso: AX=FE08h
--------U-2FFE00DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
AX = FE00h
DI = 4E55h ("NU")
SI = TSR identifier (see #2811)
Return: SI = TSR reply
lowercase version of SI on entry (i.e. SI OR 2020h)
execpt SMARTCAN v8.0, which returns SI=6673h ('fs')
AH = status
00h installed but disabled internally
01h installed and enabled
AL = installed product
00h NCACHE-x or DISKREET
01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
02h NCACHE2 / SMARTCAN
45h DISKMON v5 installed
BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
(see #2812,#2813)
CX = segment of resident portion
FFFFh if completely loaded high (NCACHE)
---FILESAVE/EP---
DL = ??? (apparently always 00h)
---DISKMON---
DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
Notes: the value returned in CX is incorrect for NCACHE 6.00
all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
to detect Diskreet NDisk drives use CDS/DPB (see INT 21/AH=52h)
SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
SeeAlso: INT 21/AX=4402h"SMARTDRV"
(Table 2811)
Values for Norton Utilities TSR identifier:
4346h ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7+) / SPEEDRV
4353h ("CS") NCACHE-S (v5 only)
4443h ("DC") DISKREET
444Dh ("DM") DISKMON
4653h ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7+)
Format of DISKMON.INI file:
Offset Size Description (Table 2812)
-6Ch 108 BYTEs (in memory copy only)
list of filenames which are always protected:
IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
MIO.SYS/IO.BIN, COMMAND.COM
00h BYTE ??? always 01h
01h BYTE disk light (00h off, 01h on)
02h BYTE disk protection (00h off, 01h on)
03h BYTE protected areas
01h system area
02h files
03h system area and files
04h entire disk
04h BYTE floppy access (00h not allowed, 01h allowed)
05h 27 BYTEs filename extension list (9 entries)
(lowercase, blank padded or = 000000h)
20h 240 BYTEs filename list (20 entries)
(lowercase, name and extension blank padded, with '.')
Note: CX:0508h -> copy in installed TSR (v5)
CX:052Fh -> copy in installed TSR (v6)
CX:04E0h -> copy in installed TSR (v7-v8)
Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
Offset Size Description (Table 2813)
00h 26 BITs drive list (bit set: file protection on, cleared: off):
00h BYTE drives A: - H:
01h BYTE drives I: - P:
02h BYTE drives Q: - X:
03h BYTE drives Y: - Z:
04h BYTE which files to protect
00h all files
01h all files with extension in list
02h all files except those with extension in list
05h 27 BYTEs filename extension list (9 entries, uppercase, ASCIZ)
20h BYTE include files with archive bit clear (00h no, 01h yes)
21h WORD number of days after which files are purged (0 = never)
23h WORD max kilobytes of erased file space to hold (0 = all)
Note: CX:03D2h -> copy in installed TSR (v5)
CX:03F5h -> copy in installed TSR (v6)
CX:0434h -> copy in installed TSR (v7-v8)
--------U-2FFE00DX474F-----------------------
INT 2F - GO! v3.22+ - API
AX = FE00h
DX = 474Fh ('GO')
SI = function number
0063h (BCD for '?') installation check
0078h (BCD for 'N') non-registered search (two levels only)
0082h (BCD for 'R') reserved for registered version
0083h (BCD for 'S') reserved for registered version
0085h (BCD for 'U') uninstall
BX:CX -> buffer (for search functions)
buffer filled with search spec, i.e. "APL" to get first
directory containing the substring APL, ":\APL" to find
the first top-level directory beginning with the letters
APL
Return: BX:CX buffer filled with result (search functions only)
result is counted ASCIZ directory name, empty string if
no matches (i.e. first byte is length of name, followed by
name)
Program: GO! is a shareware directory locator TSR by Steve Ryckman
Note: the application-supplied buffer for the requests and results which
BX:CX points at must lie outside the conventional (low-640K)
memory, since the TSR swaps memory on pop-up; a common location is
the last 96 bytes of the video memory or a UMB
--------U-2FFE01DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
AX = FE01h
DI = 4E55h ("NU")
SI = TSR identifier (see #2811)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
AX = status
0002h successful (DISKMON, FILESAVE, EP)
FE00h successful (NCACHE-x, DISKREET)
Notes: if the enable/disable calls are used on DISKMON or NCACHE-x, the status
report generated by the programs still indicates the previous state,
and DISKMON.INI is not updated
apparently has no effect on DISKREET
SeeAlso: AX=FE00h,AX=FE02h
--------U-2FFE02DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
AX = FE02h
DI = 4E55h ("NU")
SI = TSR identifier (see #2811)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
AX = status
0004h successful (DISKMON, FILESAVE)
FE00h successful (NCACHE-x, DISKREET)
Notes: (see also AX=FE01h)
this function appears to be unsafe, as the cache buffers are not
flushed
SeeAlso: AX=FE00h,AX=FE01h
--------U-2FFE03DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
AX = FE03h
DI = 4E55h ("NU")
SI = TSR identifier (see #2811)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
AX = status
0006h successful???
Notes: only supported by DISKMON, FILESAVE, and NCACHE-x
useful for flushing NCACHE before rebooting
SeeAlso: AX=FE00h,AX=FE10h
--------U-2FFE04DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
AX = FE04h
DI = 4E55h ("NU")
SI = TSR identifier (see #2811)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
AX = status
0008h successful???
SeeAlso: AX=FE00h
--------U-2FFE05DI4E55-----------------------
INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
AX = FE05h
DI = 4E55h ("NU")
SI = TSR identifier (see #2811)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
AX = status
000Ah successful???
Note: reportedly dangerous
SeeAlso: AX=FE00h
--------N-2FFE08-----------------------------
INT 2F - PC-NFS ??? - GET ???
AX = FE08h
Return: ES:BX -> ???
Notes: DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
to AX=FE00h/DX=544Dh support this function
SeeAlso: AX=FE00h/BX=4454h
--------U-2FFE10DI4E55-----------------------
INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
AX = FE10h
DI = 4E55h ("NU")
SI = TSR identifier (see #2811)
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
AX = status
Note: probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
detected
SeeAlso: AX=FE03h
--------S-2FFEEF-----------------------------
INT 2F - RTS Control TSR - INSTALLATION CHECK
AX = FEEFh
Return: AX = EFFEh if installed
BX = port address
Program: RTS Control TSR is a utility by Michal Szokolo to lower the RTS
signal on a COM port during disk accesses to avoid losing incoming
data
--------N-2FFF00-----------------------------
INT 2F - Topware Network Operating System - INSTALLATION CHECK
AX = FF00h
Return: AL = status
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF00h"Topware",INT 7A"Topware"
--------N-2FFF01-----------------------------
INT 2F - Topware Network Operating System - GET VERSION
AX = FF01h
Return: AX = version
SeeAlso: AX=FF00h,AX=FF02h
--------N-2FFF02-----------------------------
INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
AX = FF02h
Return: ES:BX -> version string
SeeAlso: AX=FF00h,AX=FF01h
--------N-2FFF10-----------------------------
INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
AX = FF10h
Return: AL = status (00h not installed, 01h installed)
SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
--------N-2FFF11-----------------------------
INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
AX = FF11h
Note: this function is only available on workstations, not on the server
SeeAlso: AX=FF10h,AX=FF12h
--------N-2FFF12-----------------------------
INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
AX = FF12h
Note: this function is only available on workstations, not on the server
SeeAlso: AX=FF10h,AX=FF11h
--------N-2FFF13-----------------------------
INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
AX = FF13h
CL = new state (00h off, 01h on)
SeeAlso: AX=FF10h
--------N-2FFF14-----------------------------
INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
AX = FF14h
Note: this function is only available on workstations, not on the server
SeeAlso: AX=FF10h,AX=FF15h
--------N-2FFF15-----------------------------
INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
AX = FF15h
Note: this function is only available on workstations, not on the server
SeeAlso: AX=FF10h,AX=FF14h
--------N-2FFF16-----------------------------
INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
AX = FF16h
BL = which to set (00h TopShow, FFh TopTerm)
CX = destination screen
0000h all stations
0000h-00FFh (TopTerm only) send to group CL
8001h-80FEh send to station CL
SeeAlso: AX=FF18h
--------N-2FFF18-----------------------------
INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
AX = FF18h
SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
--------N-2FFF23-----------------------------
INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
AX = FF23h
SeeAlso: AX=FF00h
--------N-2FFF27-----------------------------
INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
AX = FF27h
Return: AL = type (00h complete version, 01h simple version)
BL = "show" functions flag (00h disabled, 01h enabled)
SeeAlso: AX=FF16h,AX=FF18h
--------D-30---------------------------------
INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
the CALL 5 entry point does a FAR jump to here
Note: under DOS 2+, the instruction at PSP:0005 points two bytes too low in
memory
SeeAlso: INT 21/AH=26h
--------V-30---------------------------------
INT 30 - QRIP/TSR - USED BY GRAPHICS LIBRARY
Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
provide a graphical user interface
SeeAlso: INT 2F/AX=ACF0h
--------W-30---------------------------------
INT 30 P - MS Windows 3.1+ - PROTECTED-MODE CALLBACK
SeeAlso: INT 20"Windows"
--------D-31---------------------------------
INT 31 - overwritten by CP/M jump instruction in INT 30
--------v-31---------------------------------
INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
Note: if one of the Vacsina viruses is resident, the low byte of this
interrupt still contains the last byte of the INT 30 CP/M JMP
instruction, but the remaining three bytes are 7Fh 39h followed
by the Vacsina version number
SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
--------E-310000-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
AX = 0000h
CX = number of descriptors to allocate
Return: CF clear if successful
AX = base selector
CF set on error
AX = error code (DPMI 1.0+) (see #2814)
Notes: DPMI is the DOS Protected-Mode Interface
the base and limit of the returned descriptors will be 0, and the type
will be "data"
add the value returned by INT 31/AX=0003h to move to subsequent
descriptors if multiple descriptors were allocated
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
(Table 2814)
Values for DPMI 1.0 error code:
0000h-7FFFh DOS error passed through by DPMI
8001h unsupported function
8002h object in wrong state for function
8003h system integrity would be endangered
8004h deadlock detected
8005h pending serialization request cancelled
8010h out of DPMI internal resources
8011h descriptor unavailable
8012h linear memory unavailable
8013h physical memory unavailable
8014h backing store unavailable
8015h callback unavailable
8016h handle unavailable
8017h maximum lock count exceeded
8018h shared memory already serialized exclusively by another
8019h shared memory already serialized shared by another client
8021h invalid value for numeric or flag parameter
8022h invalid segment selector
8023h invalid handle
8024h invalid callback
8025h invalid linear address
8026h request not supported by hardware
--------E-310001-----------------------------
INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
AX = 0001h
BX = selector to free
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see #2814)
Notes: only one descriptor is freed per call
the program's initial CS, DS, and SS descriptors may be freed
(DPMI 1.0+) any segment registers containing the freed selector are
set to 0000h
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
--------E-310002-----------------------------
INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
AX = 0002h
BX = real mode segment
Return: CF clear if successful
AX = selector corresponding to real mode segment (64K limit)
CF set on error
AX = error code (DPMI 1.0+) (8011h) (see #2814)
Notes: multiple calls for the same real mode segment return the same selector
the returned descriptor can never be modified or freed
not supported by MS Windows 3.0 in Standard mode
--------E-310003-----------------------------
INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
AX = 0003h
Return: CF clear
AX = value to add to get next sequential selector
Notes: the increment will be a power of two
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0000h
--------E-310004-----------------------------
INT 31 P - DPMI 0.9+ - LOCK SELECTOR
AX = 0004h
BX = selector to lock (prevent paging)
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0005h,AX=0600h
--------E-310005-----------------------------
INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
AX = 0005h
BX = selector to unlock (permit paging)
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0004h,AX=0601h
--------E-310006-----------------------------
INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
AX = 0006h
BX = selector
Return: CF clear if successful
CX:DX = linear base address of segment
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see #2814)
Note: not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,INT 21/AX=3504h
--------E-310007-----------------------------
INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
AX = 0007h
BX = selector
CX:DX = linear base address
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8022h,8025h) (see #2814)
Notes: only modify descriptors allocated with INT 31/AX=0000h
only the low 24 bits of the address will be used by 16-bit DPMI
implementations even on a 386 or higher
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
--------E-310008-----------------------------
INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
AX = 0008h
BX = selector
CX:DX = segment limit
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #2814)
Notes: CX must be zero for 16-bit DPMI implementations
limits greater than 1MB must be page aligned (low 12 bits set)
only modify descriptors allocated with INT 31/AX=0000h
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
SeeAlso: INT 2C/AX=0003h,#0427 at INT 15/AH=89h
--------E-310009-----------------------------
INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
AX = 0009h
BX = selector
CL = access rights/type byte (see #0428 at INT 15/AH=89h)
CH = 80386 extended rights/type byte (see #0429 at INT 15/AH=89h)
(32-bit DPMI implementations only)
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #2814)
Notes: if the Present bit is clear, CL bits 0-3 may have any value
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
SeeAlso: INT 2C/AX=0005h
--------E-31000A-----------------------------
INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
AX = 000Ah
BX = selector
Return: CF clear if successful
AX = new data selector
CF set on error
AX = error code (DPMI 1.0+) (8011h,8022h) (see #2814)
Notes: fails if selector in BX is not a code segment or is invalid
use INT 31/AX=0001h to free new selector
future changes to the original selector will not be reflected in the
returned alias selector
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0001h
--------E-31000B-----------------------------
INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
AX = 000Bh
BX = LDT selector
ES:(E)DI -> 8-byte buffer for copy of descriptor
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see #2814)
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=000Ch
--------E-31000C-----------------------------
INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
AX = 000Ch
BX = LDT selector
ES:(E)DI -> 8-byte buffer containing descriptor
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #2814)
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
only modify descriptors allocated with INT 31/AX=0000h
DPMI 1.0+ automatically reloads any segment registers containing the
selector being modified
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=000Bh
--------E-31000D-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
AX = 000Dh
BX = LDT selector
Return: CF clear if successful
descriptor allocated
CF set on error
AX = error code (DPMI 1.0+) (8011h,8022h) (see #2814)
Notes: free descriptor with INT 31/AX=0001h
the first 16 descriptors (04h-7Ch) are reserved for this function, but
some may already be in use by other applications under DPMI 0.9;
DPMI 1.0 guarantees 16 descriptors per client
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0000h,AX=0001h
--------E-31000E-----------------------------
INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
AX = 000Eh
CX = number of descriptors to copy
ES:(E)DI -> descriptor buffer (see #2815)
Return: CF clear if successful
descriptors copied
CF set on error
AX = error code (8022h) (see #2814)
CX = number of descriptors successfully copied
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
if the function fails, the first CX descriptors are valid; the
remainder are not modified
SeeAlso: AX=000Bh,AX=000Fh
Format of DPMI descriptor buffer entry (one per descriptor to get):
Offset Size Description (Table 2815)
00h WORD selector (set by client)
02h QWORD descriptor (set by host)
--------E-31000F-----------------------------
INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
AX = 000Fh
CX = number of descriptors to copy
ES:(E)DI -> descriptor buffer (see #2816)
Return: CF clear if successful
descriptors copied
CF set on error
AX = error code (8021h,8022h,8025h) (see #2814)
CX = number of descriptors successfully copied
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
if the function fails, the first CX descriptors are valid; the
remainder are not modified
DPMI 1.0+ automatically reloads any segment registers containing a
selector being modified
SeeAlso: AX=000Ch,AX=000Eh
Format of DPMI descriptor buffer entry (one per descriptor to set):
Offset Size Description (Table 2816)
00h WORD selector
02h QWORD descriptor
--------E-310100-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
AX = 0100h
BX = number of paragraphs to allocate
Return: CF clear if successful
AX = real mode segment of allocated block
DX = first selector for allocated block
CF set on error
AX = DOS error code (07h,08h) (see #1366 at INT 21/AH=59h/BX=0000h)
(DPMI 1.0+) DPMI error code (8011h) (see #2814)
BX = size (in paragraphs) of largest available block
Notes: multiple contiguous selectors are allocated for blocks of more than 64K
if the caller is a 16-bit program
never modify or deallocate returned descriptors
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0101h,AX=0501h
--------E-310101-----------------------------
INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
AX = 0101h
DX = selector of block
Return: CF set if successful
CF set on error
AX = DOS error code (07h,09h) (see #1366 at INT 21/AH=59h/BX=0000h)
Notes: all descriptors allocated for the block are automatically freed
DPMI 1.0+ automatically zeros any segment registers containing a
selector freed by this function
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0100h,AX=0102h,AX=0502h
--------E-310102-----------------------------
INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
AX = 0102h
BX = new block size in paragraphs
DX = selector of block
Return: CF clear if successful
CF set on error
AX = DOS error code (07h,08h,09h)
(see #1366 at INT 21/AH=59h/BX=0000h)
(DPMI 1.0+) DPMI error code (8011h,8022h) (see #2814)
BX = maximum block size (in paragraphs) possible
Notes: increasing the size of a block past a 64K boundary will fail if the
next descriptor in the LDT is already in use
shrinking a block past a 64K boundary will cause some selectors to be
freed; DPMI 1.0+ automatically zeros any segment registers containing
a selector freed by this function
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0100h
--------E-310200-----------------------------
INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
AX = 0200h
BL = interrupt number
Return: CF clear
CX:DX = segment:offset of real mode interrupt handler
Note: the DPMI implementation is required to support all 256 vectors
SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
--------E-310201-----------------------------
INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
AX = 0201h
BL = interrupt number
CX:DX = segment:offset of real mode handler
Return: CF clear
Note: all memory that may be touched by a hardware interrupt handler must be
locked down with INT 31/AX=0600h
SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
--------E-310202-----------------------------
INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
AX = 0202h
BL = exception number (00h-1Fh)
Return: CF clear if successful
CX:(E)DX = selector:offset of handler
CF set on error
AX = error code (DPMI 1.0+) (8021h) (see #2814)
Notes: 16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
DPMI 1.0+ supports this function only for backward compatibility; use
AX=0210h or AX=0211h instead
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
--------E-310203-----------------------------
INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
AX = 0203h
BL = exception number (00h-1Fh)
CX:(E)DX = selector:offset of handler
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h) (see #2814)
Notes: 32-bit programs must supply an offset in EDX and use a 32-bit interrupt
stack frame on chaining to the next exception handler
the handler should return using a FAR return
all fault stack frames contain an error code, but it is only valid for
exceptions 08h and 0Ah-0Eh
handlers will only be called if the exception occurs in protected mode,
and the DPMI host does not transparently handle the exception
the handler may change certain values on the stack frame
(see #2817,#2818)
DPMI 1.0+ supports this function only for backward compatibility; use
AX=0212h or AX=0213h instead
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
Format of stack frame for 16-bit programs: (offset from SS:SP)
Offset Size Description (Table 2817)
00h DWORD return CS:IP (do not change)
04h WORD error code
06h DWORD CS:IP of exception
0Ah WORD flags
0Ch DWORD SS:SP
Format of stack frame for 32-bit programs: (offset from SS:ESP)
Offset Size Description (Table 2818)
00h DWORD return EIP (do not change)
04h WORD return CS selector (do not change)
06h WORD reserved (do not change)
08h DWORD error code
0Ch DWORD EIP of exception
10h WORD CS selector of exception
12h WORD reserved (do not change)
14h DWORD EFLAGS
18h DWORD ESP
1Ch WORD SS
1Eh WORD reserved (do not change)
--------E-310204-----------------------------
INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
AX = 0204h
BL = interrupt number
Return: CF clear
CX:(E)DX = selector:offset of handler
Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
DPMI implementations are required to support all 256 vectors
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
SeeAlso: INT 2F/AX=FB42h/BX=0024h
--------E-310205-----------------------------
INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
AX = 0205h
BL = interrupt number
CX:(E)DX = selector:offset of handler
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8022h) (see #2814)
Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
32-bit programs must use a 32-bit interrupt stack frame when chaining
to the next handler
DPMI implementations are required to support all 256 vectors
hardware interrupts are reflected to the virtual machine's primary
client, software interrupts to the current client
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
SeeAlso: INT 2F/AX=FB42h/BX=0025h
--------E-310210-----------------------------
INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0210h
BL = exception number (00h-1Fh)
Return: CF clear if successful
CX:(E)DX = selector:offset of exception handler
CF set on error
AX = error code (8021h) (see #2814)
Note: DPMI host reflects exception to current client's handler
SeeAlso: AX=0202h,AX=0211h,AX=0212h
--------E-310211-----------------------------
INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0211h
BL = exception number (00h-1Fh)
Return: CF clear if successful
CX:(E)DX = selector:offset of exception handler
CF set on error
AX = error code (8021h) (see #2814)
Notes: returns address of protected-mode handler for real-mode exception
DPMI host performs a switch to protected mode, reflects the exception
to the virtual machine's primary client, and returns to real mode
on the handler's completion
SeeAlso: AX=0202h,AX=0210h,AX=0213h
--------E-310212-----------------------------
INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0212h
BL = exception or fault number (00h-1Fh)
CX:(E)DX = exception handler selector:offset
Return: CF clear if successful
CF set on error
AX = error code (8021h,8022h) (see #2814)
Note: DPMI host sends exception to current client's handler
SeeAlso: AX=0203h,AX=0210h,AX=0213h
--------E-310213-----------------------------
INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
AX = 0213h
BL = exception or fault number (00h-1Fh)
CX:(E)DX = exception handler selector:offset
Return: CF clear if successful
CF set on error
AX = error code (8021h,8022h) (see #2814)
Notes: specifies address of protected-mode handler for real-mode exception
DPMI host performs a switch to protected mode, reflects the exception
to the virtual machine's primary client, and returns to real mode
on the handler's completion
SeeAlso: AX=0203h,AX=0211h,AX=0212h
--------E-310300-----------------------------
INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
AX = 0300h
BL = interrupt number
BH = flags
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
reserved, must be 0 (DPMI 1.0+)
others: reserved, must be 0
CX = number of words to copy from protected mode to real mode stack
ES:(E)DI = selector:offset of real mode call structure (see #2819)
Return: CF clear if successful
real mode call structure modified (all fields except SS:SP, CS:IP
filled with return values from real mode interrupt)
CF set on error
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #2814)
protected mode stack unchanged
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
CS:IP in the real mode call structure is ignored for this call,
instead, the indicated interrupt vector is used for the address
the flags in the call structure are pushed on the real mode stack to
form an interrupt stack frame, and the trace and interrupt flags are
clear on entry to the handler
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
the real mode handler must return with the stack in the same state as
it was on being called
SeeAlso: AX=0302h,AX=FF01h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286"
SeeAlso: INT 2C/AX=0026h,INT 2F/AX=FB42h/BX=000Dh
Format of DPMI real mode call structure:
Offset Size Description (Table 2819)
00h DWORD EDI
04h DWORD ESI
08h DWORD EBP
0Ch DWORD reserved (00h)
10h DWORD EBX
14h DWORD EDX
18h DWORD ECX
1Ch DWORD EAX
20h WORD flags
22h WORD ES
24h WORD DS
26h WORD FS
28h WORD GS
2Ah WORD IP
2Ch WORD CS
2Eh WORD SP
30h WORD SS
--------E-310301-----------------------------
INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
AX = 0301h
BH = flags
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
reserved, must be 0 (DPMI 1.0+)
others: reserved must be 0
CX = number of words to copy from protected mode to real mode stack
ES:(E)DI = selector:offset of real mode call structure
(see #2819 at INT 31/AX=0300h)
Return: CF clear if successful
real mode call structure modified (all fields except SS:SP, CS:IP
filled with return values from real mode interrupt)
CF set on error
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #2814)
protected mode stack unchanged
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
the real mode procedure must exit with a FAR return
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
the real mode handler must return with the stack in the same state as
it was on being called
SeeAlso: AX=0300h,AX=0302h,AX=FF02h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
SeeAlso: INT 2C/AX=0025h
--------E-310302-----------------------------
INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
AX = 0302h
BH = flags
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
reserved, must be 0 (DPMI 1.0+)
others: reserved, must be 0
CX = number of words to copy from protected mode to real mode stack
ES:(E)DI = selector:offset of real mode call structure
(see #2819 at INT 31/AX=0300h)
Return: CF clear if successful
real mode call structure modified (all fields except SS:SP, CS:IP
filled with return values from real mode interrupt)
CF set on error
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #2814)
protected mode stack unchanged
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
the flags in the call structure are pushed on the real mode stack to
form an interrupt stack frame, and the trace and interrupt flags are
clear on entry to the handler
the real mode procedure must exit with an IRET
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
the real mode handler must return with the stack in the same state as
it was on being called
SeeAlso: AX=0300h
--------E-310303-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
AX = 0303h
DS:(E)SI = selector:offset of procedure to call
ES:(E)DI = selector:offset of real mode call structure (see #2819)
Return: CF clear if successful
CX:DX = segment:offset of real mode call address (see #2820)
CF set on error
AX = error code (DPMI 1.0+) (8015h) (see #2814)
Notes: the real mode call structure is static, causing reentrancy problems;
its contents are only valid at the time of a callback
the called procedure must modify the real mode CS:IP before returning
values are returned to real mode by modifying the real mode call struc
DPMI hosts must provide at least 16 callbacks per client
the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
not support this function
SeeAlso: AX=0304h,AX=0C00h
(Table 2820)
Values DPMI real-mode callback procedure is called with:
DS:(E)SI = selector:offset of real mode SS:SP
ES:(E)DI = selector:offset of real mode call structure
SS:(E)SP = locked protected mode API stack
interrupts disabled
Return: (with IRET)
ES:(E)DI = selector:offset of real mode call structure to restore
--------E-310304-----------------------------
INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
AX = 0304h
CX:DX = real mode callback address
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8024h) (see #2814)
Note: the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
not support this function
SeeAlso: AX=0303h
--------E-310305-----------------------------
INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
AX = 0305h
Return: CF clear
AX = size in bytes of state buffer
BX:CX = real mode address of procedure to save/restore state
SI:(E)DI = protected mode procedure to save/restore state (see #2821)
Notes: the buffer size will be zero if it is not necessary to preserve state
16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
this function is only needed if using the raw mode switch service
SeeAlso: AX=0306h
(Table 2821)
Call DPMI state-save procedures with:
AL = direction
00h save state
01h restore state
ES:(E)DI -> state buffer
Return: all registers preserved
--------E-310306-----------------------------
INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
AX = 0306h
Return: CF clear
BX:CX -> procedure to switch from real to protected mode (see #2822)
SI:(E)DI -> procedure to switch from protected to real mode
Notes: 16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
the caller must save and restore the state of the task with AX=0305h
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0305h
(Table 2822)
Values to JUMP at mode-switch procedures with:
AX = new DS
CX = new ES
DX = new SS
(E)BX = new (E)SP
SI:(E)DI = new CS:(E)IP
Notes: BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
interrupts will stay disabled during the entire mode switch if they
are disabled on entry to the mode-switch procedure
--------E-310400-----------------------------
INT 31 P - DPMI 0.9+ - GET DPMI VERSION
AX = 0400h
Return: CF clear
AH = major version of DPMI spec supported
AL = two-digit minor version of DPMI spec supported
BX = DPMI host flags (see #2823)
CL = processor type (02h=80286, 03h=80386, 04h=80486)
DH = curr value of virtual master interrupt controller base interrupt
DL = curr value of virtual slave interrupt controller base interrupt
BUG: Windows NT versions from the March 1993 beta to at least the Final
release with fixes to CSD002 report version 0090h (0.144); this has
reportedly been corrected in the Windows NT 3.5 beta
SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 4B/AX=8102h/DX=0000h
SeeAlso: INT 67/AX=DE0Ah
Bitfields for DPMI host flags:
Bit(s) Description (Table 2823)
0 running under an 80386 (32-bit) implementation
1 processor returns to real mode for reflected interrupts instead of V86
mode
2 virtual memory supported
3 reserved (undefined)
4-15 reserved (zero)
--------E-310401-----------------------------
INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
AX = 0401h
ES:(E)DI -> 128-byte buffer for host description (see #2824)
Return: CF clear if successful
AX = capabilities (see #2825)
CX = reserved (00h)
DX = reserved (00h)
buffer filled
CF set on error (DPMI 0.9 only)
SeeAlso: AX=0400h
Format of DPMI host description:
Offset Size Description (Table 2824)
00h BYTE host major version number
01h BYTE host minor version number
02h 126 BYTEs ASCIZ host vendor name
Bitfields for DPMI capabilities:
Bit(s) Description (Table 2825)
0 paged accessed/dirty supported (see AX=0506h,AX=0507h)
1 exceptions restartability supported
2 device mapping supported (see AX=0508h)
3 conventional memory mapping supported (see AX=0509h)
4 demand zero-fill supported
5 write-protect client capability supported
6 write-protect host capability supported
7-15 reserved
--------E-310500-----------------------------
INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
AX = 0500h
ES:(E)DI -> buffer for memory information (see #2826)
Return: CF clear
Notes: 16-bit programs use ES:DI, 32-bit programs use ES:EDI
this function must be considered advisory because other applications
may affect the results at any time after the call
fields not supported by the DPMI implementation are filled with
FFFFFFFFh
DPMI 1.0+ supports this function solely for backward compatibility; use
AX=050Bh instead
the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
returns the first field in the memory information record
SeeAlso: AX=0501h,AX=050Bh,AX=0604h
Format of DPMI memory information:
Offset Size Description (Table 2826)
00h DWORD largest available block in bytes
04h DWORD maximum unlocked page allocation
08h DWORD maximum locked page allocation
0Ch DWORD total linear address space in pages
10h DWORD total unlocked pages
14h DWORD free pages
18h DWORD total physical pages
1Ch DWORD free linear address space in pages
20h DWORD size of paging file/partition in pages
24h 12 BYTEs reserved
--------E-310501-----------------------------
INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
AX = 0501h
BX:CX = size in bytes
Return: CF clear if successful
BX:CX = linear address of block
SI:DI = memory block handle for resizing and freeing block
CF set on error
AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #2814)
Notes: no selectors are allocated
the memory block is allocated unlocked (can be locked with AX=0600h)
allocations are often page granular (see AX=0604h)
under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
for this function to fail even if AX=0500h indicates that enough
memory is available
SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
SeeAlso: INT 2F/AX=FB42h/BX=0002h
--------E-310502-----------------------------
INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
AX = 0502h
SI:DI = handle of memory block
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see #2814)
Note: any selectors allocated for the memory block must also be freed,
preferably before freeing the memory block
SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
--------E-310503-----------------------------
INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
AX = 0503h
BX:CX = new size in bytes (nonzero)
SI:DI = handle of memory block
Return: CF clear if successful
BX:CX = new linear address
SI:DI = new handle of memory block
CF set on error
AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
(see #2814)
Notes: any selectors pointing at the block must be updated
the previous memory block handle becomes invalid
an error is returned if the new size is 0
SeeAlso: AX=0102h,AX=0501h,AX=0505h
--------E-310504-----------------------------
INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
AX = 0504h
EBX = page-aligned linear address of memory block (00000000h if any
address is acceptable)
ECX = size in bytes (nonzero)
EDX = flags
bit 0: set to create committed pages instead of uncommitted pages
bits 1-31 reserved (0)
Return: CF clear if successful
EBX = linear address of memory block
ESI = memory block handle
CF set on error
AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see #2814)
Note: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
SeeAlso: AX=0501h,AX=0505h
--------E-310505-----------------------------
INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
AX = 0505h
ESI = memory block handle
ECX = new size in bytes (nonzero)
EDX = flags
bit 0: create committed pages rather than uncommitted pages
bit 1: segment descriptor update required
ES:EBX -> buffer containing array of WORDs with selectors
EDI = number of selectors in array
bits 2-31 reserved (0)
Return: CF clear if successful
EBX = new linear base address
ESI = new memory block handle
CF set on error
AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see #2814)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
the old memory block handle becomes invalid
if EDX bit 1 set and the block's base address is changed, DPMI updates
all descriptors for selectors in the update buffer which fall within
the memory block
SeeAlso: AX=0503h,AX=0504h
--------E-310506-----------------------------
INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
AX = 0506h
ESI = memory block handle
EBX = offset in memory block of first page
ECX = number of pages
ES:EDX -> array of WORDs to hold page attributes (see #2827)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (8001h,8023h,8025h) (see #2814)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
if EBX is not page-aligned, it will be rounded down
SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
Bitfields for DPMI page attribute word:
Bit(s) Description (Table 2827)
0-2 page type
000 uncommitted
001 committed
010 mapped (see AX=0508h,AX=0509h)
other currently unused
3 page is read/write rather than read-only
4 accessed/dirty bits supplied in bits 5 and 6
5 page has been accessed (only valid if bit 4 set)
6 page has been written (only valid if bit 4 set)
7-15 reserved (0)
--------E-310507-----------------------------
INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
AX = 0507h
ESI = memory block handle
EBX = offset in memory block of first page
ECX = number of pages
ES:EDX -> array of WORDs with new page attributes (see #2827)
Return: CF clear if successful
CF set on error
AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
(see #2814)
ECX = number of pages which have been set
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
if EBX is not page-aligned, it will be rounded down
SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
--------E-310508-----------------------------
INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
AX = 0508h
ESI = memory block handle
EBX = page-aligned offset within memory block of page(s) to be mapped
ECX = number of pages to map
EDX = page-aligned physical address of device
Return: CF clear if successful
CF set on error
AX = error code (8001h,8003h,8023h,8025h) (see #2814)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
support of this function is optional; hosts are also allowed to support
the function for some devices but not others
SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
--------E-310509-----------------------------
INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
AX = 0509h
ESI = memory block handle
EBX = page-aligned offset within memory block of page(s) to map
ECX = number of pages to map
EDX = page-aligned linear address of conventional (below 1M) memory
Return: CF clear if successful
CF set on error
AX = error code (8001h,8003h,8023h,8025h) (see #2814)
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
support of this function is optional
SeeAlso: AX=0504h,AX=0508h,AX=0801h
--------E-31050A-----------------------------
INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
AX = 050Ah
SI:DI = memory block handle
Return: CF clear if successful
SI:DI = size in bytes
BX:CX = base address
CF set on error
AX = error code (8023h) (see #2814)
SeeAlso: AX=0501h,AX=0504h
--------E-31050B-----------------------------
INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
AX = 050Bh
ES:(E)DI -> 128-byte buffer for memory information (see #2828)
Return: CF clear if successful
CF set on error (DPMI 0.9 only)
Note: 16-bit programs use ES:DI, 32-bit programs must use ES:EDI
SeeAlso: AX=0500h
Format of DPMI memory information:
Offset Size Description (Table 2828)
00h DWORD total allocated bytes of physical memory controlled by host
04h DWORD total allocated bytes of virtual memory controlled by host
08h DWORD total available bytes of virtual memory controlled by host
0Ch DWORD total allocated bytes of virtual memory for curr virtual mach
10h DWORD total available bytes of virtual memory for curr virtual mach
14h DWORD total allocated bytes of virtual memory for current client
18h DWORD total available bytes of virtual memory for current client
1Ch DWORD total locked bytes for current client
20h DWORD maximum locked bytes for current client
24h DWORD highest linear address available to current client
28h DWORD largest available memory block in bytes
2Ch DWORD minimum allocation unit in bytes
30h DWORD allocation alignment unit size in bytes
34h 76 BYTEs reserved (00h)
--------E-310600-----------------------------
INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
AX = 0600h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is locked
AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see #2814)
Notes: pages at beginning and end will be locked if the region overlaps them
may be called multiple times for a given page; the DPMI host keeps a
lock count for each page
SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
--------E-310601-----------------------------
INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
AX = 0601h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is unlocked
AX = error code (DPMI 1.0+) (8002h,8025h) (see #2814)
Notes: pages at beginning and end will be unlocked if the region overlaps them
memory whose lock count has not reached zero remains locked
SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
--------E-310602-----------------------------
INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
AX = 0602h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is made pageable
AX = error code (DPMI 1.0+) (8002h,8025h) (see #2814)
Notes: must relock all unlocked real mode memory before terminating process
for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
pages at beginning and end will be unlocked if the region overlaps them
pageability of real mode pages is binary, not a count
SeeAlso: AX=0600h,AX=0603h
--------E-310603-----------------------------
INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
AX = 0603h
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
none of the memory is relocked
AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see #2814)
Notes: pages at beginning and end will be relocked if the region overlaps them
pageability of real mode pages is binary, not a count
SeeAlso: AX=0602h
--------E-310604-----------------------------
INT 31 P - DPMI 0.9+ - GET PAGE SIZE
AX = 0604h
Return: CF clear if successful
BX:CX = page size in bytes
CF set on error
AX = error code (DPMI 1.0+) (see also #2814)
8001h unsupported, 16-bit host
BUG: the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
unchanged
--------E-310700-----------------------------
INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
AX = 0700h
BX:CX = starting linear page number
SI:DI = number of pages to mark as paging candidates
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0701h,AX=0702h
--------E-310701-----------------------------
INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
AX = 0701h
BX:CX = starting linear page number
SI:DI = number of pages to discard
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0700h,AX=0703h
--------E-310702-----------------------------
INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
AX = 0702h
BX:CX = starting linear address
SI:DI = number of bytes to mark as paging candidates
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8025h) (see #2814)
Notes: this function is advisory, and does not force immediate paging
partial pages will not be discarded
SeeAlso: AX=0700h,AX=0703h
--------E-310703-----------------------------
INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
AX = 0703h
BX:CX = starting linear address
SI:DI = number of bytes to mark as discarded
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8025h) (see #2814)
Notes: this function is advisory, and may be ignored by DPMI implementations
partial pages will not be discarded
SeeAlso: AX=0701h,AX=0702h
--------E-310800-----------------------------
INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
AX = 0800h
BX:CX = physical address (should be above 1 MB)
SI:DI = size in bytes
Return: CF clear if successful
BX:CX = linear address which maps the requested physical memory
CF set on error
AX = error code (DPMI 1.0+) (8003h,8021h) (see #2814)
Notes: implementations may refuse this call because it can circumvent protects
the caller must build an appropriate selector for the memory
do not use for memory mapped in the first megabyte
SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
--------E-310801-----------------------------
INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
AX = 0801h
BX:CX = linear address returned by AX=0800h
Return: CF clear if successful
CF set on error
AX = error code (8025h) (see #2814)
Note: should be called at end of access to device mapped with AX=0800h
SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
--------E-310900-----------------------------
INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
AX = 0900h
Return: CF clear
virtual interrupts disabled
AL = previous interrupt state (00h disabled, 01h enabled)
AH preserved
Notes: the previous state may be restored simply by executing another INT 31
a CLI instruction may be used if the previous state is unimportant,
but should be assumed to be very slow due to trapping by the host
SeeAlso: AX=0901h,AX=0902h
--------E-310901-----------------------------
INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
AX = 0901h
Return: CF clear
virtual interrupts enabled
AL = previous interrupt state (00h disabled, 01h enabled)
AH preserved
Notes: the previous state may be restored simply by executing another INT 31
a STI instruction may be used if the previous state is unimportant,
but should be assumed to be very slow due to trapping by the host
SeeAlso: AX=0900h,AX=0902h
--------E-310902-----------------------------
INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
AX = 0902h
Return: CF clear
AL = current interrupt state (00h disabled, 01h enabled)
Note: should be used rather than PUSHF because that instruction yields the
physical interrupt state rather than the per-client virtualized
interrupt flag
SeeAlso: AX=0900h,AX=0901h
--------E-310A00-----------------------------
INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
AX = 0A00h
DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
Return: CF clear if successful
ES:(E)DI -> FAR extended API entry point
DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
CF set on error
AX = error code (DPMI 1.0+) (8001h) (see #2814)
Notes: extended API parameters are vendor-specific
DPMI 1.0+ supports this function solely for backward compatibility; use
INT 2F/AX=168Ah instead
this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
or QDPMI v1.0x; use INT 2F/AX=168Ah instead. It is supported by
386MAX v7.01.
SeeAlso: INT 2F/AX=168Ah
--------E-310B00-----------------------------
INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
AX = 0B00h
BX:CX = linear address
DL = size (1,2,4 bytes)
DH = type (00h execute, 01h write, 02h read/write)
Return: CF clear if successful
BX = watchpoint handle
CF set on error
AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see #2814)
SeeAlso: AX=0212h,AX=0601h
--------E-310B01-----------------------------
INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
AX = 0B01h
BX = watchpoint handle
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see #2814)
Note: the watchpoint handle is freed
SeeAlso: AX=0B00h
--------E-310B02-----------------------------
INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
AX = 0B02h
BX = watchpoint handle
Return: CF clear if successful
AX = status flags
bit 0: watch point has been executed since AX=0B00h or AX=0B03h
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see #2814)
SeeAlso: AX=0B00h,AX=0B03h
--------E-310B03-----------------------------
INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
AX = 0B03h
BX = watchpoint handle
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8023h) (see #2814)
SeeAlso: AX=0B02h
--------E-310C00-----------------------------
INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
AX = 0C00h
ES:(E)DI -> resident service provider structure (see #2829)
Return: CF clear if successful
CF set on error
AX = error code (8015h,8021h,8025h) (see #2814 at AX=0000h)
Note: calling this function declares an intent to provide resident
protected mode services after terminating with AX=0C01h
SeeAlso: AX=0303h,AX=0C01h
Format of DPMI resident service provider structure:
Offset Size Description (Table 2829)
00h QWORD descriptor for 16-bit data segment
08h QWORD descriptor for 16-bit code segment (zeros if not supported)
10h WORD offset of 16-bit callback procedure
12h 2 BYTEs reserved
14h QWORD descriptor for 32-bit data segment
1Ch QWORD descriptor for 32-bit code segment (zeros if not supported)
24h DWORD offset of 32-bit callback procedure
--------E-310C01-----------------------------
INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
AX = 0C01h
BL = return code
DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
Return: never
Notes: should only be used if the program will only provide services to
other DPMI programs
any protected mode memory remains allocated to the program unless
explicitly freed before this call
must first call AX=0C00h or program will simply be terminated
SeeAlso: AX=0C00h,INT 21/AH=31h
--------E-310D00-----------------------------
INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
AX = 0D00h
ES:(E)DI -> shared memory allocation request structure (see #2830)
Return: CF clear if successful
request structure updated
CF set on error
AX = error code (8012h,8013h,8014h,8016h,8021h) (see #2814)
Note: first 16 bytes of memory block will be initialized to zeros on the
first allocation
SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
Format of DPMI shared memory allocation request structure:
Offset Size Description (Table 2830)
00h DWORD requested length of shared memory block in bytes
04h DWORD (ret) allocated length of block
08h DWORD (ret) shared memory handle
0Ch DWORD (ret) linear address of memory block
10h PWORD selector:offset32 of ASCIZ name for memory block
(name max 128 bytes)
16h 2 BYTEs reserved
18h 4 BYTEs reserved (00h)
--------E-310D01-----------------------------
INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
AX = 0D01h
SI:DI = shared memory block handle
Return: CF clear if successful
CF set on error
AX = error code (8023h) (see #2814)
Notes: handle becomes invalid after this call
DPMI maintains separate global and virtual machine use counts for each
shared memory block; when the global use counts reaches zero, the
block is finally destroyed
SeeAlso: AX=0502h,AX=0D00h
--------E-310D02-----------------------------
INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
AX = 0D02h
SI:DI = shared memory block handle
DX = flags
bit 0: return immediately rather than suspending if serialization
unavailable
bit 1: shared rather than exclusive serialization
bits 2-15 reserved (0)
Return: CF clear if successful
CF set on error
AX = error code (8004h,8005h,8017h-8019h,8023h) (see #2814)
Notes: an exclusive serialization blocks any other serialization attempts for
the same block by another virtual machine; a shared serialization
blocks attempts at exclusive serialization by another virtual machine
hosts are not required to detect deadlock
a client's interrupt handler can cancel a serialization call which
caused it to block by calling AX=0D03h
SeeAlso: AX=0D00h,AX=0D03h
--------E-310D03-----------------------------
INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
AX = 0D03h
SI:DI = shared memory block handle
DX = flags
bit 0: release shared serialization rather than exclusive serialztn
bit 1: free pending serialization
bits 2-15 reserved (0)
Return: CF clear if successful
CF set on error
AX = error code (8002h,8023h) (see #2814 at AX=0000h)
SeeAlso: AX=0D00h,AX=0D02h
--------E-310E00-----------------------------
INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
AX = 0E00h
Return: CF clear
AX = coprocessor status (see #2831)
Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
SeeAlso: AX=0E01h
Bitfields for DPMI coprocessor status:
Bit(s) Description (Table 2831)
0 numeric coprocessor enabled for current client
1 client is emulating coprocessor
2 numeric coprocessor is present
3 host is emulating coprocessor instructions
4-7 coprocessor type
0000 none
0010 80287
0011 80387
0100 80486 with numeric coprocessor
other reserved
8-15 not used
--------E-310E01-----------------------------
INT 31 P - DPMI 1.0+ - SET EMULATION
AX = 0E01h
BX = coprocessor flag bits (see #2832)
Return: CF clear if successful
CF set on error
AX = error code (8026h) (see #2814 at AX=0000h)
Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
SeeAlso: AX=0E00h
Bitfields for DPMI coprocessor flags:
Bit(s) Description (Table 2832)
0 enable numeric coprocessor for current client
1 client will emulate coprocessor
2-15 not used
--------E-3157-------------------------------
INT 31 - Netroom3 DPMI.EXE v3.00 - ???
AH = 57h
AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
???
Return: ???
SeeAlso: INT 2C/AX=0000h"Cloaking"
--------E-315702-----------------------------
INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
AX = 5702h
DX = PSP segment of caller
STACK: WORD ???
WORD flags (bit 0 set if 32-bit program)
Return: as for DPMI mode-switch entry point (see #2405 at INT 2F/AX=1687h)
Note: this function is called by the real-mode DPMI mode-switch entry point
SeeAlso: INT 2F/AX=1687h
--------E-31EE00------------------------
INT 31 - DOS32 v3.0+ - GET DOS32 VERSION AND SELECTOR VALUES
AX = EE00h
Return: AL = minor version (BCD)
AH = major version (BCD)
DL = system type (1=raw DOS, 2=XMS, 4=VCPI, 8=DPMI)
BX = selector of 4GB data segment with zero base address
Program: DOS32 is a 32 bit DOS extender by Adam Seychell.
SeeAlso: AX=EE02h
--------E-31EE02------------------------
INT 31 - DOS32 v3.0+ - GET DOS32 ADDRESS INFORMATION
AX = EE02h
Return: AX = real-mode segment of temporary 8K buffer (v3.1+)
EBX = 32bit linear address of the program segment
EDX = Total size in bytes of the programs .EXE file after linking.
ESI = offset address of PSP
EDI = offset address of program environment
ECX = offset address of the program's .EXE ASCIZ file name and path
SeeAlso: AX=EE00h,AX=EE20h
--------E-31EE10------------------------
INT 31 - DOS32 v3.2+ - SET UP A DOS32 LOADABLE LIBRARY
AX = EE10h
EDX -> library ASCIZ path\filename
EBX = number of bytes to seek from beginning of file
Return: CF clear if successful
EAX = size of memory block required to store library
EBX = size of library file
CF set on error
AL = error code.
01h error opening or reading file
02h bad DOS32 library file
SeeAlso: AX=EE00h,AX=EE11h
--------E-31EE11------------------------
INT 31 - DOS32 v3.2+ - LOAD LIBRARY FILE
AX = EE11h
EDX -> near pointer of memory block to store library
Return: CF clear if successful
EDX = near pointer to the dynamic library public
CF set on error
Note: must first successfuly call function AX=EE10h before calling this
function
SeeAlso: AX=EE00h,AX=EE10h
--------E-31EE20------------------------
INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH RETF STACK FRAME
AX = EE20h
ESI = offset of the real mode call back function
Return: CF clear if successful
CX:DX = real mode address to call up to the protected mode
procedure
CF set on error
SeeAlso: AX=EE00h,AX=EE02h,AX=EE21h
--------E-31EE21------------------------
INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH IRET STACK FRAME
AX = EE21h
ESI = offset of the real mode call back function
Return: CF clear if successful
CX:DX = real mode address to call up to the protected mode
procedure
CF set on error
SeeAlso: AX=EE20h
--------E-31EE30------------------------
INT 31 - DOS32 v3.0+ - TERMINATE AND STAY RESIDENT
AX = EE30h
SeeAlso: AX=EE21h,AX=EE40h,INT 21/AH=31h
--------E-31EE40------------------------
INT 31 - DOS32 v3.0+ - UNDO PREVIOUS MEMORY ALLOCATION or DMA BUFFER
AX = EE40h
Return: CF clear if successful
CF set on error
SeeAlso: AX=EE41h,AX=EE42h
--------E-31EE41------------------------
INT 31 - DOS32 v3.0+ - ALLOCATE 16KB DMA BLOCK
AX = EE41h
Return: CF clear if successful
EBX -> 16KB DMA block (physical address)
EDX -> 16KB DMA block (offset address)
CF set on error
SeeAlso: AX=EE40h,AX=EE42h
--------E-31EE42------------------------
INT 31 - DOS32 v3.0+ - ALLOCATE MEMORY BLOCK
AX = EE42h
EDX = size in bytes
Return: CF clear if successful
EAX = size in bytes
EDX -> memory block
CF set on error
Note: size is rounded off to the next 4KB boundary
SeeAlso: AX=EE40h,AX=EE41h
--------E-31FF00-----------------------------
INT 31 P - CauseWay - "Info" - GET SYSTEM SELECTORS/FLAGS
AX = FF00h
Return: AX = selector for flag address space (base 00000000h, limit 4GB)
BX = selector for current PSP segment (limit 0100h)
(E)CX = size of DOS transfer buffer (max 64K)
DX = real-mode segment address of DOS transfer buffer
ES:(E)SI = protected-mode address of DOS transfer buffer
EDI = system flags (see #2833)
Program: CauseWay is a 386 DOS extender by Michael Devore and John Wildsmith
for use with Watcom C++ or assembly language programs
Notes: the entire transfer buffer can be addressed with a 16-bit offset in
protected mode
CauseWay always maps selector 0040h to the BIOS data segment at
real-mode segment 0040h; when not running under a DPMI host, CauseWay
also provides selectors A000h, B000h, and B800h mapped to video
memory
SeeAlso: AX=FF25h
Bitfields for CauseWay system flags:
Bit(s) Description (Table 2833)
0 32-bit code
1 virtual memory manage enabled
3-2 mode: 00 raw extended memory, 01 VCPI, 10 DPMI
4 DPMI available
5 VCPI available
6 no memory managers
7 application descriptor table type: 0 = GDT, 1 = LDT
14-8 reserved
15 debugging engine present
--------E-31FF01-----------------------------
INT 31 P - CauseWay - "IntXX" - SIMULATE REAL-MODE INTERRUPT
AX = FF01h
BL = interrupt number
ES:(E)DI -> real-mode register list (see #2819 at AX=0300h)
Return: register list updated
Note: CauseWay fills in the values for SS, SP, and FLAGS itself, and ignores
the values specified for CS and IP
SeeAlso: AX=0300h,AX=FF02h
--------E-31FF02-----------------------------
INT 31 P - CauseWay - "FarCallReal" - SIMULATE REAL-MODE FAR CALL
AX = FF02h
ES:(E)DI -> real-mode register list (see #2819 at AX=0300h)
Return: register list updated
SeeAlso: AX=0301h,AX=FF01h
--------E-31FF03-----------------------------
INT 31 P - CauseWay - "GetSel" - ALLOCATE NEW SELECTOR
AX = FF03h
Return: CF clear if successful
BX = new selector
CF set on error
Note: the new selector is initialized with a base address of 000000h, a limit
of 0000h, and attributes read/write expand-up data
SeeAlso: AX=FF04h,AX=FF05h,AX=FF06h
--------E-31FF04-----------------------------
INT 31 P - CauseWay - "RelSel" - RELEASE A SELECTOR
AX = FF04h
BX = selector
Return: CF clear if successful
CF set on error
SeeAlso: AX=FF03h,AX=FF06h
--------E-31FF05-----------------------------
INT 31 P - CauseWay - "CodeSel" - CONVERT SELECTOR TO EXECUTABLE CODE SELECTOR
AX = FF05h
BX = selector
CL = default operation size (00h = 16-bit, 01h = 32-bit)
Return: CF clear if successful
CF set on error
SeeAlso: AX=FF03h
--------E-31FF06-----------------------------
INT 31 P - CauseWay - "AliasSel" - CREATE READ/WRITE DATA ALIAS SELECTOR
AX = FF06h
BX = original selector
Return: CF clear if successful
AX = new data selector aliasing original selector
CF set on error
SeeAlso: AX=FF03h,AX=FF04h
--------E-31FF07-----------------------------
INT 31 P - CauseWay - "GetSelDet" - GET SELECTOR BASE AND LIMIT
AX = FF07h
BX = selector
Return: CF clear if successful
CX:DX = base address
SI:DI = limit (bytes)
CF set on error
SeeAlso: AX=FF08h,AX=FF09h
--------E-31FF08-----------------------------
INT 31 P - CauseWay - "GetSelDet32" - GET SELECTOR BASE AND LIMIT (32-bit)
AX = FF08h
Return: CF clear if successful
EDX = base address
ECX = limit (bytes)
CF set on error
SeeAlso: AX=FF07h,AX=FF0Ah
--------E-31FF09-----------------------------
INT 31 P - CauseWay - "SetSelDet" - SET SELECTOR BASE AND LIMIT
AX = FF09h
BX = selector
CX:DX = new base address
SI:DI = new byte-granular limit
Return: CF clear if successful
CF set on error
SeeAlso: AX=FF07h,AX=FF0Ah
--------E-31FF0A-----------------------------
INT 31 P - CauseWay - "SetSelDet32" - SET SELECTOR BASE AND LIMIT (32-bit)
AX = FF0Ah
BX = selector
EDX = new base address
ECX = new byte-granular limit
Return: CF clear if successful
CF set on error
SeeAlso: AX=FF08h,AX=FF09h
--------E-31FF0B-----------------------------
INT 31 P - CauseWay - "GetMem" - ALLOCATE BLOCK OF MEMORY
AX = FF0Bh
CX:DX = size in bytes (FFFFh:FFFFh to get size of largest available)
Return: CF clear if successful
BX = selector for accessing block if requested size not FFFFh:FFFFh
CX:DX = size of largest available block if requested FFFFh:FFFFh
CF set on error
SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF0Fh,AX=FF10h,AX=FF2Ch
--------E-31FF0C-----------------------------
INT 31 P - CauseWay - "GetMem32" - ALLOCATE BLOCK OF MEMORY (32-bit)
AX = FF0Ch
ECX = size in bytes (FFFFFFFFh to get size of largest available block)
Return: CF clear if successful
BX = selector for accessing block if requested size not FFFFh:FFFFh
ECX = size of largest available block if requested FFFFh:FFFFh
CF set on error
SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF0Fh,AX=FF11h
--------E-31FF0D-----------------------------
INT 31 P - CauseWay - "ResMem" - RESIZE MEMORY BLOCK
AX = FF0Dh
BX = selector for block to be resized
CX:DX = new size in bytes
Return: CF clear if successful
CF set on error
Note: the memory block may have to be copied to another location in order
to satisfy the requested new size, in which case the base address
of the selector is updated
SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF12h
--------E-31FF0E-----------------------------
INT 31 P - CauseWay - "ResMem32" - RESIZE MEMORY BLOCK (32-bit)
AX = FF0Eh
BX = selector for block to be resized
ECX = new size in bytes
Return: CF clear if successful
CF set on error
Note: the memory block may have to be copied to another location in order
to satisfy the requested new size, in which case the base address
of the selector is updated
SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF13h
--------E-31FF0F-----------------------------
INT 31 P - CauseWay - "RelMem" - RELEASE PREVIOUSLY ALLOCATED MEMORY
AX = FF0Fh
BX = selector for block to be released
Return: CF clear if successful
CF set on error
SeeAlso: AX=FF0Bh,AX=FF0Ch,AX=FF14h
--------E-31FF10-----------------------------
INT 31 P - CauseWay - "GetMemLinear" - ALLOCATE MEMORY WITHOUT SELECTOR
AX = FF10h
CX:DX = size of block in bytes
Return: CF clear if successful
SI:DI = linear address of allocated block
CF set on error
Note: this function may return addresses above 16M
SeeAlso: AX=FF0Bh,AX=FF11h,AX=FF12h,AX=FF14h
--------E-31FF11-----------------------------
INT 31 P - CauseWay - "GetMemLinear32" - ALLOCATE MEMORY WITHOUT SELECTOR
AX = FF11h
ECX = size of block in bytes
Return: CF clear if successful
ESI = linear address of allocated block
CF set on error
Note: this function may return addresses above 16M
SeeAlso: AX=FF0Ch,AX=FF10h,AX=FF13h,AX=FF14h
--------E-31FF12-----------------------------
INT 31 P - CauseWay - "ResMemLinear" - RESIZE LINEAR MEMORY BLOCK
AX = FF12h
CX:DX = new size in bytes
SI:DI = linear address of block to be resized
Return: CF clear if successful
SI:DI = new linear address of block
CF set on error
SeeAlso: AX=FF0Dh,AX=FF10h,AX=FF13h
--------E-31FF13-----------------------------
INT 31 P - CauseWay - "ResMemLinear32" - RESIZE LINEAR MEMORY BLOCK (32-bit)
AX = FF13h
ECX = new size in bytes
ESI = linear address of block to be resized
Return: CF clear if successful
ESI = new linear address of block
CF set on error
SeeAlso: AX=FF0Eh,AX=FF11h,AX=FF12h
--------E-31FF14-----------------------------
INT 31 P - CauseWay - "RelMemLinear" - RELEASE LINEAR MEMORY BLOCK
AX = FF14h
SI:DI = linear address of block to be released
Return: CF clear if successful
CF set on error
SeeAlso: AX=FF0Fh,AX=FF10h,AX=FF15h
--------E-31FF15-----------------------------
INT 31 P - CauseWay - "RelMemLinear32" - RELEASE LINEAR MEMORY BLOCK (32-bit)
AX = FF15h
ESI = linear address of block to be released
Return: CF clear if successful
CF set on error
SeeAlso: AX=FF0Fh,AX=FF11h,AX=FF15h
--------E-31FF16-----------------------------
INT 31 P - CauseWay - "GetMemNear" - ALLOCATE APPLICATION-RELATIVE MEMORY
AX = FF16h
EBX = size in bytes of block to allocate
Return: CF clear if successful
ESI = application-relative linear address of allocated block
CF set on error
SeeAlso: AX=FF17h,AX=FF18h,AX=FF19h
--------E-31FF17-----------------------------
INT 31 P - CauseWay - "ResMemNear" - RESIZE APPLICATION-RELATIVE MEMORY BLOCK
AX = FF17h
EBX = size in bytes of block to allocate
ESI = application-relative linear address of block
Return: CF clear if successful
ESI = new application-relative linear address of block
CF set on error
SeeAlso: AX=FF16h,AX=FF18h,AX=FF19h
--------E-31FF18-----------------------------
INT 31 P - CauseWay - "RelMemNear" - RELEASE APPLICATION-RELATIVE MEMORY BLOCK
AX = FF18h
ESI = application-relative linear address of block
Return: CF clear if successful
CF set on error
SeeAlso: AX=FF16h,AX=FF17h,AX=FF19h
--------E-31FF19-----------------------------
INT 31 P - CauseWay - "Linear2Near" - CONVERT LINEAR TO APP-RELATIVE ADDRESS
AX = FF19h
ESI = linear address
Return: ESI = application-relative linear address
SeeAlso: AX=FF1Ah
--------E-31FF1A-----------------------------
INT 31 P - CauseWay - "Near2Linear" - CONVERT APP-RELATIVE TO LINEAR ADDRESS
AX = FF1Ah
ESI = application-relative linear address
Return: ESI = linear address
SeeAlso: AX=FF19h
--------E-31FF1B-----------------------------
INT 31 P - CauseWay - "LockMem" - LOCK REGION OF MEMORY
AX = FF1Bh
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
Desc: prevent memory from being swapped out by the virtual memory manager
Note: locks are applied on 4K page boundaries, so memory above and below
the specified region may be locked as well
SeeAlso: AX=FF1Ch,AX=FF1Dh
--------E-31FF1C-----------------------------
INT 31 P - CauseWay - "LockMem32" - LOCK REGION OF MEMORY (32-bit)
AX = FF1Ch
ESI = starting linear address
ECX = size of region in bytes
Return: CF clear if successful
CF set on error
Desc: prevent memory from being swapped out by the virtual memory manager
Note: locks are applied on 4K page boundaries, so memory above and below
the specified region may be locked as well
SeeAlso: AX=FF1Bh,AX=FF1Eh,AX=FF1Fh
--------E-31FF1D-----------------------------
INT 31 P - CauseWay - "UnLockMem" - UNLOCK REGION OF MEMORY
AX = FF1Dh
BX:CX = starting linear address
SI:DI = size of region in bytes
Return: CF clear if successful
CF set on error
Desc: allow memory to be swapped out by the virtual memory manager
Note: locks are applied on 4K page boundaries, so memory above and below
the specified region may be unlocked as well
SeeAlso: AX=FF1Bh,AX=FF1Eh
--------E-31FF1E-----------------------------
INT 31 P - CauseWay - "UnLockMem32" - UNLOCK REGION OF MEMORY (32-bit)
AX = FF1Eh
ESI = starting linear address
ECX = size of region in bytes
Return: CF clear if successful
CF set on error
Desc: allow memory to be swapped out by the virtual memory manager
Note: locks are applied on 4K page boundaries, so memory above and below
the specified region may be unlocked as well
SeeAlso: AX=FF1Ch,AX=FF1Dh,AX=FF20h
--------E-31FF1F-----------------------------
INT 31 P - CauseWay - "LockMemNear" - LOCK APPLICATION-RELATIVE MEMORY REGION
AX = FF1Fh
ESI = starting application-relative linear address
EBX = size of region in bytes
Return: CF clear if successful
CF set on error
Desc: prevent memory from being swapped out by the virtual memory manager
Note: locks are applied on 4K page boundaries, so memory above and below
the specified region may be locked as well
SeeAlso: AX=FF1Ch,AX=FF20h
--------E-31FF20-----------------------------
INT 31 P - CauseWay - "UnLockMemNear" - UNLOCK APP-RELATIVE MEMORY REGION
AX = FF20h
ESI = starting application-relative linear address
ECX = size of region in bytes
Return: CF clear if successful
CF set on error
Desc: allow memory to be swapped out by the virtual memory manager
Note: locks are applied on 4K page boundaries, so memory above and below
the specified region may be unlocked as well
SeeAlso: AX=FF1Eh,AX=FF1Fh
--------E-31FF21-----------------------------
INT 31 P - CauseWay - "GetMemDOS" - ALLOCATE CONVENTIONAL MEMORY
AX = FF21h
BX = number of paragraphs to allocate
Return: CF clear if successful
AX = real-mode segment of allocated block
DX = initial selector for block
CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
BX = size of largest available block
Note: if the requested size is greater than 64K, contiguous selectors will
be allocated, one for each 64K; for 32-bit applications, the first
selector's limit will be set to the size of the entire block, while
that selector will have a limit of 64K for 16-bit applications. All
selectors after the first one have a limit of 64K except the final
one
SeeAlso: AX=FF22h,AX=FF23h,INT 21/AH=48h
--------E-31FF22-----------------------------
INT 31 P - CauseWay - "ResMemDOS" - RESIZE CONVENTIONAL MEMORY BLOCK
AX = FF22h
BX = new size in paragraphs
DX = initial selector for block
Return: CF clear if successful
CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
BX = maximum number of paragraphs available
Note: this function will also fail if the block is expanded past a 64K
boundary and the next selector is already in use
SeeAlso: AX=FF21h,AX=FF23h,INT 21/AH=49h
--------E-31FF23-----------------------------
INT 31 P - CauseWay - "RelMemDOS" - RELEASE CONVENTIONAL MEMORY BLOCK
AX = FF23h
DX = initial selector for block
Return: CF clear if successful
CF set on error
AX = DOS error code (see #1366 at INT 21/AH=59h/BX=0000h)
Note: all descriptors allocated for the block are freed
SeeAlso: AX=FF21h,AX=FF22h,INT 21/AH=4Ah
--------E-31FF24-----------------------------
INT 31 P - CauseWay - "ExecOverlay" - LOAD AND OPTIONALLY EXECUTE APP CODE
AX = FF24h
EBX = flags
bit 0: don't execute (overlay only)
bit 1: don't preserve relocation information
ES:EDX -> filename (see also #2834)
FS:ESI -> commandline (ESI = 00000000h if no commandline)
GS:EDI -> name (CW's /o option)
Return: CF clear if successful
---EBX bit 0 set---
CX:EDX = program entry point (CS:EIP)
SI = segment of PSP
---EBX bit 1 set---
BX:EAX = initial SS:ESP
EDI high word = base segment
EDI low word = number of segments
EBP = start of segment definitions
CF set on error
AX = error code
0001h DOS file access error
0002h not a CuaseWay 3P file
0003h not enough memory
SeeAlso: AX=FF2Ah,INT 21/AH=4Bh
Format of CauseWay executable:
Offset Size Description (Table 2834)
00h 2 BYTEs signature "3P"
02h DWORD size of header data in bytes
06h DWORD size of EXE image data in bytes
0Ah DWORD number of bytes of program memory required
0Eh WORD number of segment definitions (see #2836)
10h DWORD number of relocation table entries
14h DWORD offset of program entry point
18h WORD segment list entry number for entry point's CS
1Ah DWORD initial ESP
1Eh WORD segment list entry number for initial SS
20h DWORD control flags (see #2835)
24h DWORD automatic stack size in bytes if ESP entry = 00000000h
28h BYTE length of name (name follows program image)
29h 23 BYTEs reserved
SeeAlso: #1280,#1295 at INT 21/AH=4Bh
Bitfields for CauseWay executable control flags:
Bit(s) Description (Table 2835)
0 16-bit interrupt stack frame
7 descriptor table type (0 = GDT, 1 = LDT)
14 16-bit default data size
31 compressed EXE image
Note: bits 0 and 14 should always be equal
SeeAlso: #2834
Format of CauseWay segment definition [array]:
Offset Size Description (Table 2836)
00h DWORD start offset within program image
04h DWORD length and type
bits 0-19: length
bit 20: granularity (if set, length is in 4K pages)
bits 21-24: type
0000 code
0001 read/write data
0010 stack
0011 read-only data
bit 25: force segment descriptor's D bit to 0
bit 26: force segmetn descriptor's D bit to 1
SeeAlso: #2834
--------E-31FF25-----------------------------
INT 31 P - CauseWay - "GetDOSTrans" - GET DOS TRANSFER BUFFER
AX = FF25h
Return: BX = real-mode segment of transfer buffer
ECX = transfer buffer size
DX = protected-mode selector for transfer buffer
Note: the default buffer size of 8K is sufficient for most applications,
but an application performing large amounts of file I/O may benefit
from allocating its own, larger buffer
SeeAlso: AX=FF00h,AX=FF26h
--------E-31FF26-----------------------------
INT 31 P - CauseWay - "SetDOSTrans" - SET DOS TRANSFER BUFFER
AX = FF26h
BX = real-mode segment of new transfer buffer
ECX = new transfer buffer size
DX = protected-mode selector for new transfer buffer
Return: nothing
Note: the specific buffer must be located in conventional memory; only the
first 64K will be used
SeeAlso: AX=FF25h
--------E-31FF27-----------------------------
INT 31 P - CauseWay v1.3 - "GetMCBSize" - GET CURRENT MCB ALLOCATION BLOCK SIZE
AX = FF27h
Return: ECX = current threshold
Desc: determine the memory allocation size below which CauseWay will use
internal MCB chains rather than allocating full 4K pages via DPMI
SeeAlso: AX=FF00h,AX=FF28h
--------E-31FF28-----------------------------
INT 31 P - CauseWay v1.3 - "SetMCBSize" - SET MCB MEMORY ALLOCATION BLOCK SIZE
AX = FF28h
ECX = new threshold (0000000h to disable MCB memory allocation system)
Return: CF clear if successful
threshold unchanged (default 16K)
CF set on error (threshold > 64K)
Desc: specify the memory allocation size below which CauseWay will use
internal MCB chains rather than allocating full 4K pages via DPMI
Note: the specified threshold will be rounded up to the next higher multiple
of 4K
SeeAlso: AX=FF00h,AX=FF27h
--------E-31FF29-----------------------------
INT 31 P - CauseWay v1.3 - "GetSels" - ALLOCATE MULTIPLE SELECTORS
AX = FF29h
CX = number of selectors to allocate
Return: BX = base selector
Desc: allocate multiple contiguous selectors, initializing each to have a
base address and limit of zero
SeeAlso: AX=FF00h,AX=FF04h
--------E-31FF2A-----------------------------
INT 31 P - CauseWay v1.3 - "cwLoad" - LOAD ANOTHER CAUSEWAY PROGRAM AS OVERLAY
AX = FF2Ah
DS:EDX -> filename
Return: CF clear if successful
CX:EDX = CS:EIP of entry point
BX:EAX = initial SS:ESP for program
SI = PSP for overlay program
CF set on error
AX = error code (01h file error, 02h not a 3P file, 03h no memory)
Note: the returned PSP can be given to "RelMem" (AX=FF0Fh) to release the
overlay's memory and selectors; only selectors and memory allocated
during loading will be freed by RelMem unless one switches PSPs with
INT 21/AH=50h
SeeAlso: AX=FF00h,AX=FF24h
--------E-31FF2B-----------------------------
INT 31 P - CauseWay v1.3 - "cwcInfo" - VALIDATE AND GET SIZE OF CWC FILE
AX = FF2Bh
BX = file handle for CWC-compressed file
Return: CF clear if successful
ECX = expanded file size
CF set on error (not a CWC-compressed file)
SeeAlso: AX=FF00h,AX=FFFBh
--------E-31FF2C-----------------------------
INT 31 P - CauseWay v1.3 - "GetMemSO" - ALLOCATE MEMORY AND RETURN SEL:OFFSET
AX = FF2Ch
CX:DX = block size in bytes
Return: CF clear if successful
SI:DI = selector:offset of allocated memory
CF set on error
Note: unlike "GetMem" (AX=FF0Bh), this function will reuse selectors until a
segment is full, rather than allocating a new selector for each
memory block
SeeAlso: AX=FF00h,AX=FF2Dh,AX=FF2Eh
--------E-31FF2D-----------------------------
INT 31 P - CauseWay v1.3 - "ResMemSO" - RESIZE SELECTOR:OFFSET MEMORY BLOCK
AX = FF2Dh
SI:DI = selector:offset for memory block
CX:DX = new size of block
Return: CF clear if successful
SI:DI = new selector:offset for memory block
CF set on error
SeeAlso: AX=FF00h,AX=FF2Ch,AX=FF2Eh
--------E-31FF2E-----------------------------
INT 31 P - CauseWay v1.3 - "RelMemSO" - RELEASE SELECTOR:OFFSET MEMORY BLOCK
AX = FF2Eh
SI:DI = selector:offset for memory block
SeeAlso: AX=FF00h
--------E-31FFFB-----------------------------
INT 31 P - Causeway v1.3 - "cwcLoad" - LOAD/EXPAND CWC-COMPRESSED FILE
AX = FFFBh
BX = source file handle
ES:EDI -> memory buffer into which to expand file
Return: CF clear if successful
ECX = expanded data length
CF set on error
EAX = error code (01h file error, 02h bad data, 03h not CWC file)
Note: the provided file may consist of the concatenation of several CWC
files; the one beginning at the current file position will be
expanded
SeeAlso: AX=FF2Bh
--------v-32---------------------------------
INT 32 - VIRUS - reportedly used by "Tiny" Viruses
SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
--------v-32---------------------------------
INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
--------y-326E-------------------------------
INT 32 - NOISE.SYS 0.53 - API
AH = 6Eh (function ID)
AL = subfunction (see INT 32/AX=6E00h)
Return: CF set on error
AL = error code (see #2837)
CF clear if successful
Notes: INT 32 is only a proposed interface for NOISE.SYS. Use the IOCTL READ
from the RANDOM device to determine the interrupt and function ID
used by the driver, since future versions may use the Alternate
Multiplex Interrupt (AMIS) at INT 2Dh.
the beta v0.51 had a substantially different API on INT 32/AH=6Eh
(Table 2837)
Values for NOISE.SYS error codes:
00h subfunction not supported
FBh random pool is empty
FCh quality of sample is too low
FDh too many processes using the API or driver
FEh subfunction is disabled in the current build
FFh successful
--------y-326E00-----------------------------
INT 32 - NOISE.SYS v0.53+ - INSTALLATION CHECK
AX = 6E00h
Return: AL = installation status
00h not installed
FFh installed
CX = version (ie, 0123h = Version 1.2.3)
DX:DI -> signature string
--------y-326E01-----------------------------
INT 32 - NOISE.SYS v0.53+ - GET ENTRY POINT
AX = 6E01h
Return: AL = FFh
DX:DI -> far call hook
----------326E04-----------------------------
INT 32 - NOISE.SYS v0.55+ - GET INTERRUPT HOOK LIST
AX = 6E04h
Return: AL = status
00h = unimplemented
04h = DX:BX -> interrupt hook list
FEh = subfunction disabled
Note: the hook list array ends with API interrupt (usually 32h, although
it will differ if the API is installed at another interrupt)
----------326E06-----------------------------
INT 32 - NOISE.SYS v0.55+ - GET DEVICE DRIVER HEADER
AX = 6E06h
Return: AL = number of device drivers in NOISE.SYS chain
02h = default (for RANDOM and URANDOM devices)
AH = AMIS device driver flags (set to 00h for now)
DX:BX -> first device in chain (see #1332)
SeeAlso: INT 2D/AL=06h
--------y-326E10-----------------------------
INT 32 - NOISE.SYS v0.53+ - STATUS CHECK
AX = 6E10h
Return: CF set on error
AL = error code (FDh) (see #2837)
CF clear if successful
AL = status
FFh successful
BH = number of processes using the API
CX = number of random bytes waiting
DX = maximum possible bytes waiting
(if CX=DX, the pool is full)
Note: this subfunction is a convenient way to check the driver if any
fresh bytes are waiting in the output pool.
SeeAlso: INT 32/AH=6Eh,AX=6E00h,AX=6E11h
--------y-326E11-----------------------------
INT 32 - NOISE.SYS v0.53+ - GET ENTROPY ESTIMATE
AX = 6E11h
Return: CF set on error
AL = error code (00h,FDh,FEh) (see #2837)
CF clear if successful
EBX = estimated bit count (refer to note below)
CL = FRACBITS (number of fractional bits)
EDX = low 32-bits of total number of samples added
Note: the estimated number of fresh random bits is equal to
(EAX >> FRACBITS) + ((EAX & ((1 << FRACBITS)-1) / (1 << FRACBITS))
SeeAlso: AH=6Eh,AX=6E00h
--------y-326E12-----------------------------
INT 32 - NOISE.SYS v0.53+ - ADD SAMPLE FROM FAST TIMER
AX = 6E12h
Return: CF set on error
AL = error code (FCh,FDh,FEh) (see #2837)
CF clear if successful
CX = number of random bytes waiting
Note: subfunctions 12h and 13h are meant for applications or devices
which are able to gather entropy from other sources which are
not polled by NOISE.SYS (for example, a communications driver
could use this call to sample packet arrival times).
SeeAlso: AX=6E00h,AX=6E10h,AX=6E13h
--------y-326E13-----------------------------
INT 32 - NOISE.SYS v0.53+ - ADD 16-BIT SAMPLE TO RANDOM POOL
AX = 6E13h
DX = sample
Return: CF set on error
AL = error code (FCh,FEh) (see #2837)
CF clear if successful
CX = number of random bytes waiting
SeeAlso: AX=6E00h,AX=6E11h
--------y-326E14-----------------------------
INT 32 - NOISE.SYS v0.53+ - GET FLAGS
AX = 6E14h
Return: BX = flags (see #2838)
CX = mask of settable flags in BX
SeeAlso: AX=6E00h,AX=6E15h
Bitfields for NOISE.SYS flags:
Bit(s) Description (Table 2838)
0 MS Windows active
1-5 reserved
6 clock drift sampling
7 video retrace drift sampling
8 network access sampling (not implemented yet in 0.53)
9 CD-ROM access sampling (not implemented yet in 0.53)
10 DOS spinner
11 DOS process start/end and miscellaneous process activity sampling
12 mouse movement/button sampling
13 disk sampling (INT 13)
14 keystroke timings
15 reserved for hardware RNG
--------y-326E15-----------------------------
INT 32 - NOISE.SYS v0.53+ - SET FLAGS
AX = 6E15h
BX = flags (see #2838)
Return: BX = new flags
Note: flags which AX=6E14h indicates are not settable should be masked off
by ANDing with the CX returned by AX=6E14h
SeeAlso: AX=6E00h,AX=6E14h
--------y-326E16-----------------------------
INT 32 - NOISE.SYS v0.53+ - READ URANDOM BYTES
AX = 6E16h
CX = number of bytes
ES:DI -> buffer
Return: CF set on error
AL = error code (FDh,FEh) (see #2837)
CF clear if successful
CX = number of random bytes read
SeeAlso: AX=6E00h,AX=6E12h,AX=6E17h
--------y-326E17-----------------------------
INT 32 - NOISE.SYS v0.53+ - READ RANDOM BYTES
AX = 6E17h
CX = number of bytes
ES:DI -> buffer
Return: CF set on error
AL = error code (FBh,FDh,FEh) (see #2837)
CF clear if successful
CX = number of random bytes read
SeeAlso: AX=6E00h,AX=6E16h
----------326E18-----------------------------
INT 32 - NOISE.SYS v0.6+ - READ CONTROL RECORD
AX = 6E18h
CX = buffer size
ES:DI -> buffer
Return: AL = status
00h unimplemented (before v0.6)
FEh subfunction is disabled
FFh successful
CX = number of bytes read
Note: the control record corresponds to the IOCTL Read record for the RANDOM
device
----------326E-------------------------------
INT 32 - NOISE.SYS - RESERVED FOR FUTURE USE
AH = 6Eh
AL = 19h to 3Fh
Return: AL = 00h
Note: these functions are reserved for future use; user additions to the
the driver should use subfunctions 40h to FFh.
--------!---Section--------------------------
Interrupt List, part 13 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------M-330000-----------------------------
INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
AX = 0000h
Return: AX = status
0000h hardware/driver not installed
FFFFh hardware/driver installed
BX = number of buttons
0000h other than two
0002h two buttons (many drivers)
0003h Mouse Systems/Logitech three-button mouse
FFFFh two buttons
Notes: to use mouse on a Hercules-compatible monographics card in graphics
mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
and then call this function. Logitech drivers v5.01 and v6.00
reportedly do not correctly use Hercules graphics in dual-monitor
systems, while version 4.10 does.
the Logitech mouse driver contains the signature string "LOGITECH"
three bytes past the interrupt handler; many of the Logitech mouse
utilities check for this signature.
Logitech MouseWare v6.30 reportedly does not support CGA video modes
if no CGA is present when it is started and the video board is
later switched into CGA emulation
SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
--------M-330001-----------------------------
INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
AX = 0001h
SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh,INT 6F/AH=06h"F_TRACK_ON"
--------M-330002-----------------------------
INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
AX = 0002h
Note: multiple calls to hide the cursor will require multiple calls to
function 01h to unhide it.
SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
SeeAlso: INT 6F/AH=08h"F_TRACK_OFF"
--------M-330003-----------------------------
INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
AX = 0003h
Return: BX = button status (see #2839)
CX = column
DX = row
Note: in text modes, all coordinates are specified as multiples of the cell
size, typically 8x8 pixels
SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
Bitfields for mouse button status:
Bit(s) Description (Table 2839)
0 left button pressed if 1
1 right button pressed if 1
2 middle button pressed if 1 (Mouse Systems/Logitech/Genius)
--------M-330004-----------------------------
INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
AX = 0004h
CX = column
DX = row
Note: the row and column are truncated to the next lower multiple of the cell
size (typically 8x8 in text modes); however, some versions of the
Microsoft documentation incorrectly state that the coordinates are
rounded
SeeAlso: AX=0003h,INT 62/AX=0081h,INT 6F/AH=10h"F_PUT_SPRITE"
--------M-330005-----------------------------
INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
AX = 0005h
BX = button number (see #2840)
Return: AX = button states (see #2839)
BX = number of times specified button has been pressed since last call
CX = column at time specified button was last pressed
DX = row at time specified button was last pressed
Note: at least for the Genius mouse driver, the number of button presses
returned is limited to 7FFFh
SeeAlso: AX=0006h,INT 62/AX=007Ch
(Table 2840)
Values for mouse button number:
0000h left
0001h right
0002h middle (Mouse Systems/Logitech/Genius mouse)
--------M-330006-----------------------------
INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
AX = 0006h
BX = button number (see #2840)
Return: AX = button states (see #2839)
BX = number of times specified button has been released since last call
CX = column at time specified button was last released
DX = row at time specified button was last released
Note: at least for the Genius mouse driver, the number of button releases
returned is limited to 7FFFh
SeeAlso: AX=0005h,INT 62/AX=007Ch
--------M-330007-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
AX = 0007h
CX = minimum column
DX = maximum column
Note: in text modes, the minimum and maximum columns are truncated to the
next lower multiple of the cell size, typically 8x8 pixels
SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
SeeAlso: INT 6F/AH=0Ch"F_SET_LIMITS_X"
--------M-330008-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
AX = 0008h
CX = minimum row
DX = maximum row
Note: in text modes, the minimum and maximum rows are truncated to the
next lower multiple of the cell size, typically 8x8 pixels
SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
SeeAlso: INT 6F/AH=0Eh"F_SET_LIMITS_Y"
--------M-330009-----------------------------
INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
AX = 0009h
BX = column of cursor hot spot in bitmap (-16 to 16)
CX = row of cursor hot spot (-16 to 16)
ES:DX -> mask bitmap (see #2841)
Notes: in graphics modes, the screen contents around the current mouse cursor
position are ANDed with the screen mask and then XORed with the
cursor mask
the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
hot spot row/column should be limited to -128..127
Microsoft KnowledgeBase article Q19850 states that the high bit is
right-most, but that statement is contradicted by all other available
documentation
SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh,INT 6F/AH=0Ah"F_DEF_MASKS"
Format of mouse mask bitmap:
Offset Size Description (Table 2841)
00h 16 WORDs screen mask
10h 16 WORDs cursor mask
Note: each word defines the sixteen pixels of a row, low bit rightmost
--------M-33000A-----------------------------
INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
AX = 000Ah
BX = hardware/software text cursor
0000h software
CX = screen mask
DX = cursor mask
0001h hardware
CX = start scan line
DX = end scan line
Note: when the software cursor is selected, the character/attribute data at
the current screen position is ANDed with the screen mask and then
XORed with the cursor mask
SeeAlso: AX=0009h,INT 62/AX=007Eh
--------M-33000B-----------------------------
INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
AX = 000Bh
Return: CX = number of mickeys mouse moved horizontally since last call
DX = number of mickeys mouse moved vertically
Notes: a mickey is the smallest increment the mouse can sense
positive values indicate down/right
SeeAlso: AX=0003h,AX=001Bh,AX=0027h
--------M-33000C-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
AX = 000Ch
CX = call mask (see #2842)
ES:DX -> FAR routine (see #2843)
SeeAlso: AX=0018h
Bitfields for mouse call mask:
Bit(s) Description (Table 2842)
0 call if mouse moves
1 call if left button pressed
2 call if left button released
3 call if right button pressed
4 call if right button released
5 call if middle button pressed (Mouse Systems/Logitech/Genius mouse)
6 call if middle button released (Mouse Systems/Logitech/Genius mouse)
7-15 unused
Note: some versions of the Microsoft documentation incorrectly state that CX
bit 0 means call if mouse cursor moves
(Table 2843)
Values interrupt routine is called with:
AX = condition mask (same bit assignments as call mask)
BX = button state
CX = cursor column
DX = cursor row
SI = horizontal mickey count
DI = vertical mickey count
Notes: some versions of the Microsoft documentation erroneously swap the
meanings of SI and DI
in text modes, the row and column will be reported as a multiple of
the character cell size, typically 8x8 pixels
--------M-33000D-----------------------------
INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
AX = 000Dh
SeeAlso: AX=000Eh,INT 10/AH=04h
--------M-33000E-----------------------------
INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
AX = 000Eh
SeeAlso: AX=000Dh
--------M-33000F-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
AX = 000Fh
CX = number of mickeys per 8 pixels horizontally (default 8)
DX = number of mickeys per 8 pixels vertically (default 16)
SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
--------M-330010-----------------------------
INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
AX = 0010h
CX,DX = X,Y coordinates of upper left corner
SI,DI = X,Y coordinates of lower right corner
Note: mouse cursor is hidden in the specified region, and needs to be
explicitly turned on again
SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
--------M-330010-----------------------------
INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
AX = 0010h
ES:DX -> update region list (see #2844)
Notes: mouse cursor is hidden in the specified region, and needs to be
explicitly turned on again
this version of the call is described in an August 1988 version of the
Genius Mouse programmer's reference; it has been changed to conform
to the Microsoft version shown above by version 9.06 (and possibly
earlier versions)
SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
Format of Genius Mouse update region list:
Offset Size Description (Table 2844)
00h WORD left-most column
02h WORD top-most row
04h WORD right-most column
06h WORD bottom-most row
--------M-330011-----------------------------
INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
AX = 0011h
Return: AX = FFFFh
BX = number of buttons
SeeAlso: AX=0000h
--------M-330012-----------------------------
INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
AX = 0012h
BH = cursor width in words
CH = rows in cursor
BL = horizontal hot spot (-16 to 16)
CL = vertical hot spot (-16 to 16)
ES:DX -> bit map of screen and cursor maps
Return: AX = FFFFh if successful
SeeAlso: AX=0009h,AX=002Ah,AX=0035h
--------M-330013-----------------------------
INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
AX = 0013h
DX = threshold speed in mickeys/second, 0000h = default of 64/second
Note: if speed exceeds threshold, the cursor's on-screen motion is doubled
SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
--------M-330014-----------------------------
INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
AX = 0014h
CX = call mask (see #2842)
ES:DX -> FAR routine
Return: CX = call mask of previous interrupt routine
ES:DX = FAR address of previous interrupt routine
SeeAlso: AX=000Ch,AX=0018h
--------M-330015-----------------------------
INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
AX = 0015h
Return: BX = size of buffer needed to store driver state
SeeAlso: AX=0016h,AX=0017h,AX=0042h
--------M-330016-----------------------------
INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
AX = 0016h
BX = size of buffer (see AX=0015h)
ES:DX -> buffer for driver state
Note: although not documented (since the Microsoft driver does not use it),
many drivers appear to require BX on input
SeeAlso: AX=0015h,AX=0017h
--------M-330017-----------------------------
INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
AX = 0017h
BX = size of buffer (see AX=0015h)
ES:DX -> buffer containing saved state
Notes: although not documented (since the Microsoft driver does not use it),
many drivers appear to require BX on input
some mouse drivers range-check the values in the saved state based on
the current video mode; thus, the video mode should be restored
before the mouse driver's state is restored
SeeAlso: AX=0015h,AX=0016h
--------M-330018-----------------------------
INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
AX = 0018h
CX = call mask (see #2845)
ES:DX -> FAR routine to be invoked on mouse events (see #2846)
Return: AX = status
0018h if successful
FFFFh on error
Notes: up to three handlers can be defined by separate calls to this function,
each with a different combination of shift states in the call mask;
calling this function again with a call mask of 0000h undefines the
specified handler (official documentation); specifying the same
call mask and an address of 0000h:0000h undefines the handler (real
life)
some versions of the documentation erroneously reverse the order of
the bits in the call mask
SeeAlso: AX=000Ch,AX=0014h,AX=0019h
Bitfields for mouse call mask:
Bit(s) Description (Table 2845)
0 call if mouse moves
1 call if left button pressed
2 call if left button released
3 call if right button pressed
4 call if right button released
5 call if shift button pressed during event
6 call if ctrl key pressed during event
7 call if alt key pressed during event
Note: at least one of 5-7 must be set
(Table 2846)
Values user handler is called with:
AX = condition mask (same bit assignments as call mask)
BX = button state
CX = cursor column
DX = cursor row
SI = horizontal mickey count
DI = vertical mickey count
Return: registers preserved
Note: in text modes, the row and column will be reported as a multiple of
the cell size, typically 8x8 pixels
--------M-330019-----------------------------
INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
AX = 0019h
CX = call mask (see #2845)
Return: BX:DX = user interrupt vector
CX = call mask (0000h if not found)
Note: attempts to find a user event handler (defined by function 18h)
whose call mask matches CX
SeeAlso: AX=0018h
--------M-33001A-----------------------------
INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
AX = 001Ah
BX = horizontal speed \
CX = vertical speed / (see AX=000Fh)
DX = double speed threshold (see AX=0013h)
SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
--------M-33001B-----------------------------
INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
AX = 001Bh
Return: BX = horizontal speed
CX = vertical speed
DX = double speed threshold
SeeAlso: AX=000Bh,AX=001Ah
--------M-33001C-----------------------------
INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
AX = 001Ch
BX = rate (see #2847)
Notes: only available on InPort mouse
values greater than 4 may cause unpredictable driver behavior
(Table 2847)
Values for mouse interrupt rate:
00h no interrupts allowed
01h 30 per second
02h 50 per second
03h 100 per second
04h 200 per second
--------M-33001D-----------------------------
INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
AX = 001Dh
BX = display page number
Note: the cursor will be displayed on the specified page
SeeAlso: AX=001Eh
--------M-33001E-----------------------------
INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
AX = 001Eh
Return: BX = display page number
SeeAlso: AX=001Dh
--------M-33001F-----------------------------
INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
AX = 001Fh
Return: AX = status
001Fh successful
ES:BX = INT 33 vector before mouse driver was first installed
FFFFh unsuccessful
Notes: restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
if you restore INT 33 to ES:BX, driver will be completely disabled
many drivers return AX=001Fh even though the driver has been disabled
SeeAlso: AX=0020h
--------M-330020-----------------------------
INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
AX = 0020h
Return: AX = status
0020h successful
FFFFh unsuccessful
Notes: restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
which were removed by function 1Fh
Microsoft's documentation states that no value is returned
SeeAlso: AX=001Fh
--------M-330021-----------------------------
INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
AX = 0021h
Return: AX = status
FFFFh if mouse driver installed
BX = number of buttons (FFFFh = two buttons)
0021h if mouse driver not installed
Note: this call is identical to funtion 00h, but does not reset the mouse
SeeAlso: AX=0000h
--------M-330022-----------------------------
INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
AX = 0022h
BX = language (see #2848)
Note: only available on international versions of the driver; US versions
ignore this call
SeeAlso: AX=0023h
(Table 2848)
Values for mouse driver language:
00h English
01h French
02h Dutch
03h German
04h Swedish
05h Finnish
06h Spanish
07h Portugese
08h Italian
--------M-330023-----------------------------
INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
AX = 0023h
Return: BX = language (see #2848)
Note: the US version of the driver always returns zero
SeeAlso: AX=0022h
--------M-330024-----------------------------
INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
AX = 0024h
Return: AX = FFFFh on error
otherwise,
BH = major version
BL = minor version
CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7,...,0Fh=IRQ15)
SeeAlso: AX=004Dh,AX=006Dh
--------M-330025-----------------------------
INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
AX = 0025h
Return: AX = general information (see #2849)
BX = cursor lock flag for OS/2 to prevent reentrancy problems
CX = mouse code active flag (for OS/2)
DX = mouse driver busy flag (for OS/2)
Bitfields for general mouse driver information:
Bit(s) Description (Table 2849)
15 driver loaded as device driver rather than TSR
14 driver is newer integrated type
13,12 current cursor type
00 software text cursor
01 hardware text cursor (CRT Controller's cursor)
1X graphics cursor
11-8 interrupt rate (see #2847)
7-0 count of currently-active Mouse Display Drivers (MDD), the newer
integrated driver type
--------M-330026-----------------------------
INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
AX = 0026h
Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
CX = maximum virtual X (for current video mode)
DX = maximum virtual Y
Note: for driver versions before 7.05, this call returns the currently-set
maximum coordinates; v7.05+ returns the absolute maximum coordinates
SeeAlso: AX=0031h
--------M-330026-----------------------------
INT 33 - Genius Mouse 9.06 - ???
AX = 0026h
Return: CX = 0204h if CX was 0105h on entry, else unchanged
--------M-330027-----------------------------
INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
AX = 0027h
Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
CX = horizontal mickeys moved since last call
DX = vertical mickeys moved since last call
SeeAlso: AX=000Bh
--------M-330028-----------------------------
INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
AX = 0028h
CX = new video mode (call is NOP if 0000h)
DH = Y font size (00h = default)
DL = X font size (00h = default)
Return: CL = status (00h = successful)
Notes: DX is ignored unless the selected video mode supports font size control
when CX=0000h, an internal flag that had been set by a previous call
is cleared; this is required before a mouse reset
SeeAlso: AX=0029h,INT 10/AH=00h
--------M-330029-----------------------------
INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
AX = 0029h
CX = previous video mode
0000h get first supported video mode
other get next supported mode after mode CX
Return: CX = first/next video mode (0000h = no more video modes)
DS:DX -> description of video mode or 0000h:0000h if none
Notes: the enumerated video modes may be in any order and may repeat
the description string (if available) is terminated by '$' followed by
a NUL byte
SeeAlso: AX=0028h
--------M-33002A-----------------------------
INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
AX = 002Ah
Return: AX = internal counter controlling cursor visibility
BX = cursor hot spot column
CX = cursor hot spot row
DX = mouse type (see #2850)
Note: the hot spot location is relative to the upper left corner of the
cursor block and may range from -128 to +127 both horizontally and
vertically
SeeAlso: AX=0009h,AX=0012h,AX=0035h
(Table 2850)
Values for mouse type:
00h none
01h bus
02h serial
03h InPort
04h IBM
05h Hewlett-Packard
--------M-33002B-----------------------------
INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
AX = 002Bh
BX = active acceleration profile
0001h-0004h or FFFFh to restore default curves
ES:SI -> buffer containing acceleration profile data (see #2851)
Return: AX = success flag
SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
Format of acceleration profile data:
Offset Size Description (Table 2851)
00h BYTE length of acceleration profile 1
01h BYTE length of acceleration profile 2
02h BYTE length of acceleration profile 3
03h BYTE length of acceleration profile 4
04h 32 BYTEs threshold speeds for acceleration profile 1
24h 32 BYTEs threshold speeds for acceleration profile 2
44h 32 BYTEs threshold speeds for acceleration profile 3
64h 32 BYTEs threshold speeds for acceleration profile 4
84h 32 BYTEs speedup factor for acceleration profile 1
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
A4h 32 BYTEs speedup factor for acceleration profile 2
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
C4h 32 BYTEs speedup factor for acceleration profile 3
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
E4h 32 BYTEs speedup factor for acceleration profile 4
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
104h 16 BYTEs name of acceleration profile 1 (blank-padded)
114h 16 BYTEs name of acceleration profile 2 (blank-padded)
124h 16 BYTEs name of acceleration profile 3 (blank-padded)
134h 16 BYTEs name of acceleration profile 4 (blank-padded)
Note: unused bytes in the threshold speed fields are filled with 7Fh and
unused bytes in the speedup factor fields are filled with 10h
--------M-33002C-----------------------------
INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
AX = 002Ch
Return: AX = status (0000h success)
BX = currently-active acceleration profile
ES:SI -> acceleration profile data (see #2851)
SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
--------M-33002D-----------------------------
INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
AX = 002Dh
BX = acceleration level
0001h-0004h to set profile, or FFFFh to get current profile
Return: AX = status
0000h successful
ES:SI -> 16-byte blank-padded name of acceleration profile
FFFEh invalid acceleration curve number
ES:SI destroyed
BX = active acceleration curve number
SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
--------M-33002E-----------------------------
INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
AX = 002Eh
BL = flag (if nonzero, fill ES:SI buffer with default names on return)
ES:SI -> 64-byte buffer containing profile names (16 bytes per name)
Return: AX = status (0000h success)
FFFEh error for ATI Mouse driver
ES:SI buffer filled with default names if BL nonzero on entry
Notes: not supported by Logitech driver v6.10
supported by ATI Mouse driver v7.04
SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
--------M-33002F-----------------------------
INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
AX = 002Fh
Return: AX = status
Note: invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
SeeAlso: INT 2F/AH=53h
--------M-330030-----------------------------
INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
AX = 0030h
CX = command
0000h get status of BallPoint device
other set rotation angle and masks
BX = rotation angle (-32768 to 32767 degrees)
CH = primary button mask
CL = secondary button mask
Return: AX = button status (FFFFh if no BallPoint) (see #2852)
BX = rotation angle (0-360 degrees)
CH = primary button mask
CL = secondary button mask
Note: not supported by the ATI Mouse driver which calls itself v7.04
Bitfields for BallPoint mouse button status:
Bit(s) Description (Table 2852)
5 button 1
4 button 2
3 button 3
2 button 4
other zero
--------M-330031-----------------------------
INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
AX = 0031h
Return: AX = virtual X minimum
BX = virtual Y minimum
CX = virtual X maximum
DX = virtual Y maximum
Note: the minimum and maximum values are those set by AX=0007h and AX=0008h;
the default is minimum = 0 and maximum = absolute maximum
(see AX=0026h)
SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
--------M-330032-----------------------------
INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
AX = 0032h
Return: AX = active function flags (FFFFh for v8.10)
bit 15: function 0025h supported
bit 14: function 0026h supported
...
bit 0: function 0034h supported
BX = ??? (0000h) officially unused
CX = ??? (E000h) officially unused
DX = ??? (0000h) officially unused
Note: the Italian version of MS MOUSE v8.20 reportedly indicates that
functions 0033h and 0034h are not supported even though they are
--------M-330033-----------------------------
INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
AX = 0033h
CX = size of buffer
0000h get required buffer size
Return: AX = 0000h
CX = required size (0154h for Logitech v6.10, 0159h
for MS v8.10-8.20)
other
ES:DX -> buffer of CX bytes for mouse settings
Return: AX = 0000h
CX = number of bytes returned
ES:DX buffer filled (see #2853)
SeeAlso: AX=002Bh
Format of mouse settings data buffer:
Offset Size Description (Table 2853)
00h BYTE mouse type
01h BYTE current language
02h BYTE horizontal sensitivity (00h-64h)
03h BYTE vertical sensitivity (00h-64h)
04h BYTE double-speed threshold (00h-64h)
05h BYTE ballistic curve (01h-04h)
06h BYTE interrupt rate (01h-04h)
07h BYTE cursor override mask
08h BYTE laptop adjustment
09h BYTE memory type (00h-02h)
0Ah BYTE SuperVGA support (00h,01h)
0Bh BYTE rotation angle
0Ch BYTE ???
0Dh BYTE primary button (01h-04h)
0Eh BYTE secondary button (01h-04h)
0Fh BYTE click lock enabled (00h,01h)
10h 324 BYTEs acceleration profile data (see #2851)
154h 5 BYTEs ??? (Microsoft driver, but not Logitech)
--------M-330034-----------------------------
INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
AX = 0034h
Return: AX = status (0000h successful)
ES:DX -> ASCIZ initialization (.INI) file name
--------M-330035-----------------------------
INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
AX = 0035h
BX = function
FFFFh get current settings
Return: AX = 0000h
BH = style (see #2854)
BL = size (see #2855)
CH = threshold (00h-64h)
CL = active flag (00h disabled, 01h enabled)
DX = delay
other
BH = pointer style (see #2854)
BL = size (see #2855)
CH = threshold (00h-64h)
CL = active flag (00h disable size change, 01h enable)
DX = delay (0000h-0064h)
Return: AX = 0000h
Note: not supported by Logitech driver v6.10
SeeAlso: AX=0012h,AX=002Ah
(Table 2854)
Values for pointer style:
00h normal
01h reverse
02h transparent
SeeAlso: #2855
(Table 2855)
Values for pointer size:
00h small ("1")
01h medium ("1.5")
02h large ("2")
SeeAlso: #2854
--------M-330042-----------------------------
INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
AX = 0042h
Return: AX = status
0000h MSMOUSE not installed
0042h functions 42h, 50h, and 52h not supported
FFFFh successful
BX = buffer size in bytes for functions 50h and 52h
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0015h,AX=0050h,AX=0052h
--------M-330043-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
AX = 0043h
CX:BX -> configuration buffer (see #2856)
DL = ???
Return: ???
Notes: also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
this function is also supported by the Genius Mouse 9.06 driver
Format of Mouse Systems configuration buffer:
Offset Size Description (Table 2856)
00h WORD I/O port address
02h BYTE ???
03h BYTE interrupt number
04h BYTE interrupt mask for interrupt controller
05h 5 BYTEs ???
--------M-330044CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
AX = 0044h
CX = CDEFh
Return: AX = new state of "Ignore Application Acceleration Commands" flag
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0045h
--------M-330045CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
AX = 0045h
CX = CDEFh
Return: AX = new state of resolution doubling flag
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0044h
--------M-330047-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
AX = 0047h
ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
Return: ???
Note: also supported by Genius Mouse 9.06 driver
SeeAlso: AX=0067h
--------M-330048BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
AX = 0048h
BX = CDEFh
Return: CX = ???
BH = ???
BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
Note: also supported by Genius Mouse 9.06 driver
--------M-33004B-----------------------------
INT 33 - LCS/Telegraphics MOUSE DRIVERS - INSTALLATION CHECK / GET VERSION
AX = 004Bh
Return: ES:DI -> ASCIZ signature/description string if installed (see #2857)
(Table 2857)
Values for LCS/Telegraphics mouse driver OEM signature/description string:
"Primax Generic;Universal Mouse Driver;IMOUSE;v8.20i"
"Synaptics;TouchPad Driver;SYNTOUCH;v2.26"
"Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
Note: the string consists of OEM, driver description, driver name, and
version number
--------M-33004CBXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
AX = 004Ch
BX = CDEFh
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=006Ch
--------M-33004D-----------------------------
INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
AX = 004Dh
Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft" or
"Copyright 19XX...."
Notes: also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
mouse drivers
in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
follows the above copyright message (KYE Corp. manufactures the
driver)
SeeAlso: AX=0024h,AX=006Dh,AX=0666h
--------M-33004F-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
AX = 004Fh
Return: nothing
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0043h,AX=0053h
--------M-330050-----------------------------
INT 33 - PCMOUSE - SAVE MSMOUSE STATE
AX = 0050h
BX = buffer size (ignored by some driver versions)
ES:DX -> buffer
Return: AX = FFFFh if successful
Notes: the buffer must be large enough to hold the entire state, or following
data will be overwritten by state data in versions which ignore BX;
use INT 33/AX=0042h to get the required size
this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=0042h,AX=0052h
--------M-330052-----------------------------
INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
AX = 0052h
BX = buffer size (ignored by some driver versions)
ES:DX -> buffer
Return: AX = FFFFh if successful
Note: also supported by Genius Mouse 9.06 driver
SeeAlso: AX=0050h
--------M-330053-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
AX = 0053h
Return: nothing
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0043h,AX=004Fh
--------M-330054CXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
AX = 0054h
CX = CDEFh
BX = new acceleration level (0-9)
Return: ???
Note: this function is also supported by the Genius Mouse 9.06 driver
SeeAlso: AX=005Ah
--------M-330055-----------------------------
INT 33 - Kraft Mouse - GET ???
AX = 0055h
Return: CX = ???
DX = ???
ES = ???
--------M-330058-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
AX = 0058h
Return: AX = CS of driver
CX:BX = original INT 33 vector
DX = ???
Note: this function is also supported by the Genius Mouse 9.06 driver
--------M-33005A-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
AX = 005Ah
CX = number of WORDs to copy (max 0014h, but not range-checked)
DX:SI -> buffer containing thresholds??? (CX words)
DX:BX -> buffer containing acceleration values???
(9*14h words, only first CX of each 14h used)
???
Return: CF clear
???
Note: this function is also supported by Genius Mouse 9.06
SeeAlso: AX=0054h
--------M-330061BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
AX = 0061h
BX = CDEFh
Return: CX = ???
Note: also supported by Genius Mouse 9.06
--------M-330067-----------------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
AX = 0067h
Return: BL = number of buttons???
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0047h
--------M-33006A-----------------------------
INT 33 U - ATI Mouse - INSTALLATION CHECK
AX = 006Ah
Return: AL = AAh
AH = ???
BH = ???
BL = ???
CL = ???
CH = ???
Program: ATI's MOUSE.COM and MOUSE.SYS are drivers for the mouse port found on
some of ATI's video adapters
SeeAlso: AX=006Dh
--------M-33006C-----------------------------
INT 33 U - TRUEDOX Mouse driver v4.01 - GET/SET HARDWARE PARAMETERS
AX = 006Ch
BX = new IRQ (0003h or 0004h), or 0000h to get current values only
CL = new IRQmask (sent to 8259)
DX = new base I/O port
Return: BX = current IRQ
DX = light pen state???
Note: this is the mouse driver for the Dell Dimension series of computers, by
TRUEDOX Technology Corporation
SeeAlso: AX=00A1h,AX=0666h
--------M-33006CBXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
AX = 006Ch
BX = CDEFh
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=004Ch
--------M-33006D-----------------------------
INT 33 - MS MOUSE - GET VERSION STRING
AX = 006Dh
Return: ES:DI -> Microsoft version number of resident driver (see #2858)
Notes: also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
drivers
the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
Microsoft version as 7.00 even though they do not support any of the
functions from 0025h through 002Dh supported by the MS 7.00 driver
(the Genius Mouse driver supports function 0026h, but it differs
from the Microsoft function)
the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
but as 6.24 through AX=0024h
SeeAlso: AX=0024h,AX=004Dh,AX=006Ah,AX=266Ch
Format of Microsoft version number:
Offset Size Description (Table 2858)
00h BYTE major version
01h BYTE minor version (BCD)
--------M-330070BXABCD-----------------------
INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
AX = 0070h
BX = ABCDh
Return: AX = ABCDh if installed
BX:CX -> data structure (see #2859)
Notes: this function is also supported by the Genius Mouse 9.06 driver
the v7.01 POPUP.COM and menu drivers also check for the signature
CDh ABh BAh DCh at offset -2Ch from the interrupt handler
if POPUP is not loaded, the returned data structure contains the proper
signature at offset 00h, but not at offset 08h
Format of Mouse Systems POPUP.COM data structure:
Offset Size Description (Table 2859)
00h WORD signature ABCDh
02h DWORD pointer to info structure??? (see #2860)
06h 2 BYTEs ???
08h WORD signature ABCDh
Format of Mouse Systems POPUP.COM info structure:
Offset Size Description (Table 2860)
00h WORD driver version
02h 8 BYTEs ???
0Ah WORD segment of ???
???
--------M-330072BXABCD-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
AX = 0072h
BX = ABCDh
Return: ???
Note: this function is also supported by the Genius Mouse 9.06 driver
--------M-330073BXCDEF-----------------------
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
AX = 0073h
BX = CDEFh
ES:DX -> 3-byte buffer for button assignments
Return: CX = number of buttons???
ES:DX buffer filled (default is "LMR")
Note: also supported by Genius Mouse 9.06
SeeAlso: AX=0067h
--------M-3300A0-----------------------------
INT 33 U - TRUEDOX Mouse driver - SET HARDWARE PC MODE (3 button)
AX = 00A0h
Return: nothing
Note: this function is only available if the mouse mode is switchable
through the power pins
SeeAlso: AX=006Ch"TRUEDOX",AX=00A1h"TRUEDOX"
--------M-3300A1-----------------------------
INT 33 U - TRUEDOX Mouse driver - SET HARDWARE MS MODE (2 button)
AX = 00A1h
Return: nothing
Notes: this function is only available if the mouse mode is switchable
through the power pins
this is the mouse driver for the Dell Dimension series of computers, by
TRUEDOX Technology Corporation
SeeAlso: AX=006Ch"TRUEDOX",AX=00A0h"TRUEDOX",AX=00A6h,AX=0666h
--------M-3300A6-----------------------------
INT 33 U - TRUEDOX Mouse driver - SET RESOLUTION
AX = 00A6h
BX = new software resolution
0001h 50-200 dpi
0002h 200-400 dpi
0003h 400-800 dpi
Note: this is the mouse driver for the Dell Dimension series of computers, by
TRUEDOX Technology Corporation
SeeAlso: AX=00A0h,AX=00A1h,AX=0666h
--------M-3300B0-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00B0h
???
Return: ???
--------M-3300F0-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00F0h
???
Return: ???
--------M-3300F1-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00F1h
???
Return: ???
--------M-3300F2-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00F2h
???
Return: ???
--------M-3300F3-----------------------------
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
AX = 00F3h
???
Return: ???
--------M-330100CX4752-----------------------
INT 33 - GRTMOUSE v1.00+ - INSTALLATION CHECK
AX = 0100h
CX = 4752h ('GR')
DX = 544Dh ('TM')
Return: AX = 474Dh ('GM') if installed
CX = version number (CH = major, CL = minor)
Program: GRTMOUSE is a graphical-cursor driver for textmode by Tommer Leyvand
SeeAlso: AX=0101h,AX=0102h,AX=0103h,AX=0104h
--------M-330101-----------------------------
INT 33 - GRTMOUSE v1.00+ - SET MOUSE CURSOR SHAPE
AX = 0101h
DS:SI -> 16-byte cursor pattern
Return: CF clear if successful
SeeAlso: AX=0100h,AX=0102h
--------M-330102-----------------------------
INT 33 - GRTMOUSE v1.00+ - GET MOUSE CURSOR SHAPE
AX = 0102h
ES:DI -> 16-byte buffer for cursor pattern
SeeAlso: AX=0100h,AX=0101h
--------M-330103-----------------------------
INT 33 - GRTMOUSE v1.00+ - SET ACTIVE CHARACTERS
AX = 0103h
CH,CL,DH,DL = ASCII codes to be remapped to display mouse pointer
Note: the default active characters are D0h,D1h,D6h,D8h; the active
characters should be in the range C0h to DFh
SeeAlso: AX=0100h,AX=0104h
--------M-330104-----------------------------
INT 33 - GRTMOUSE v1.00+ - GET ACTIVE CHARACTERS
AX = 0104h
Return: CH,CL,DH,DL = ASCII codes for the active characters
SeeAlso: AX=0100h,AX=0103h
--------M-33012E-----------------------------
INT 33 - MS MOUSE v8.10+ - ???
AX = 012Eh
BL = ???
Return: AX = 0000h (MS)
AX = FFFFh (ATI Mouse v7.04)
Note: not supported by Logitech driver v6.10
SeeAlso: AX=002Eh,AX=022Eh
--------M-33022E-----------------------------
INT 33 - MS MOUSE v8.10+ - ???
AX = 022Eh
BL = ???
Return: AX = 0000h (MS)
AX = FFFFh (ATI Mouse v7.04)
Note: not supported by Logitech driver v6.10
SeeAlso: AX=002Eh,AX=012Eh
--------M-330666-----------------------------
INT 33 U - TRUEDOX Mouse driver v4.01 - GET COPYRIGHT STRING
AX = 0666h
Return: DX:AX -> ASCII "Copyright 1987-1992 TRUEDOX Technology Corporation"
Note: this is the mouse driver for the Dell Dimension series of computers,
by TRUEDOX Technology Corporation
SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
--------M-33136C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 136Ch
BX = ???
Return: AX = ???
BX = ???
--------M-33146C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
AX = 146Ch
BL = function
00h set ???
BH = new value (zero/nonzero to clear/set)
else get ???
Return: ???
--------M-33156C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
AX = 156Ch
Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
ES:SI -> version string, terminated with CRLF
--------M-33166C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 166Ch
BL = ???
00h ???
01h ???
other ???
BH = new value of ???
Return: AX = FFFFh
--------M-33176C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 176Ch
???
Return: ???
--------M-33186C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 186Ch
???
Return: ???
--------M-33196C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 196Ch
???
Return: ???
--------M-331A6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
AX = 1A6Ch
Return: AX = FFFFh
BX = ???
CX = ???
SeeAlso: AX=1B6Ch
--------M-331B6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - SET ???
AX = 1B6Ch
BX = new value for ??? (0000h-0003h)
Return: AX = FFFFh
SeeAlso: AX=1A6Ch
--------M-331C6C-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 1C6Ch
BX = ???
<42h ???
=42h ???
>42h ???
ES:DI -> ???
Return: AX = ???
--------M-331D6C-----------------------------
INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
AX = 1D6Ch
Return: BX = direction (0=north, 1=south, 2=east, 3=west)
SeeAlso: AX=1E6Ch
--------M-331E6C-----------------------------
INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
AX = 1E6Ch
BX = direction (0=north, 1=south, 2=east, 3=west)
SeeAlso: AX=1D6Ch
--------M-331F6C-----------------------------
INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
AX = 1F6Ch
Return: BX = 0=off, 1=on
CX = 1=low, 2=high
SeeAlso: AX=002Ch,AX=236Ch
--------M-33206C-----------------------------
INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
AX = 206Ch
BX = parameter (00h = right, FFh = left)
SeeAlso: AX=216Ch
--------M-33216C-----------------------------
INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
AX = 216Ch
Return: BX = parameter (00h = right, FFh = left)
SeeAlso: AX=206Ch
--------M-33226C-----------------------------
INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
AX = 226Ch
Note: this only frees memory; does not restore hooked interrupts
--------M-33236C-----------------------------
INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
AX = 236Ch
BX = 0=off, 1=on
CX = 1=low, 2=high
SeeAlso: AX=002Ch,AX=1F6Ch
--------M-33246C-----------------------------
INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
AX = 246Ch
ES:DX -> parameter table buffer (see #2861)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
Format of Logitech Mouse parameter table:
Offset Size Description (Table 2861)
00h WORD baud rate divided by 100 (serial mouse only)
02h WORD emulation (serial mouse only)
04h WORD report rate (serial mouse only)
06h WORD firmware revision (serial mouse only)
08h WORD 00h (serial mouse only)
0Ah WORD port (serial mouse only)
0Ch WORD physical buttons
0Eh WORD logical buttons
--------M-33256CBX0000-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
AX = 256Ch
BX = 0000h
CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
--------M-33256CBX0001-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
AX = 256Ch
BX = 0001h
CX = emulation type (see #2862)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
(Table 2862)
Values for Logitech mouse emulation type:
00h 5 byte packed binary
01h 3 byte packed binary
02h hexadecimal
03h relative bit pad
04h not supported
05h MM Series
06h not supported
07h Microsoft
--------M-33256CBX0002-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
AX = 256Ch
BX = 0002h
CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
--------M-33256CBX0003-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
AX = 256Ch
BX = 0003h
CX = port (1, 2)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
--------M-33256CBX0004-----------------------
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
AX = 256Ch
BX = 0004h
CX = buttons (2, 3)
Return: AX = FFFFh if driver installed for serial mouse
SeeAlso: AX=246Ch,AX=276Ch
--------M-33266C-----------------------------
INT 33 - LOGITECH MOUSE - GET VERSION???
AX = 266Ch
Return: BX = 'SS'
CH = '4' major version number
CL = '1' minor version number
SeeAlso: AX=006Dh
--------M-33276C-----------------------------
INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
AX = 276Ch
SeeAlso: AX=256Ch
--------M-333000-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
AX = 3000h
Return: AX = FFFFh if installed
BX = version number (BH = major, BL = minor)
Program: SMD is a programmer's library by Andy Hakim which provides a
graphics-style mouse cursor in text mode. PrecisePoint is an
SMD-based TSR which replaces the block mouse cursor in text
applications.
SeeAlso: AX=0000h,AX=3001h,AX=3003h
--------M-333001-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
AX = 3001h
Return: AX = status (0000h = disabled, 0001h = enabled)
Note: SMD remains disabled if running under Desqview or in graphics mode
SeeAlso: AX=0001h,AX=0002h,AX=3002h
--------M-333002-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
AX = 3002h
Return: AX = status (0000h = disabled, 0001h = enabled)
SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
--------M-333003-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
AX = 3003h
BL = data structure selector
00h Primary Bitmap (used for 25 line mode) (see #2863)
01h Secondary Bitmap (used for 43/50 line modes) (see #2863)
02h Sacrifice Character Map (see #2864)
03h Program Information (see #2865)
Return: ES:DX -> selected data structure
SeeAlso: AX=3000h
Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]:
Offset Size Description (Table 2863)
00h BYTE vertical size of bitmap (00h - 10h)
01h BYTE horizontal size of bitmap (00h - 10h)
02h BYTE vertical hotspot position (00h - 10h)
03h BYTE horizontal hotspot position (00h - 10h)
04h 16 WORDs cursor bitmap data
14h 16 WORDs screen bitmap data
Format of Sacrifice Character Map [SMD_SMAP_STRUCT]:
Offset Size Description (Table 2864)
00h BYTE bytes are character values (00h-FFh) used in place of the
01h BYTE actual character for the corresponding position on the screen
02h BYTE +--------------+ occupied by part or all of the mouse
03h BYTE | 0h | 1h | 2h | cursor
04h BYTE |----+----+----|
05h BYTE | 3h | 4h | 5h |
06h BYTE |----+----+----|
07h BYTE | 6h | 7h | 8h |
08h BYTE +--------------+
Format of Program Information [SMD_INFO_STRUCT]:
Offset Size Description (Table 2865)
00h WORD segment of old interrupt 33h handler
02h WORD offset of old interrupt 33h handler
04h WORD PSP of SMD
06h BYTE ENABLE/DISABLE manual setting status
07h BYTE ENABLE/DISABLE internal usage status
--------M-333004-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
AX = 3004h
SeeAlso: AX=3000h
--------M-333005-----------------------------
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
AX = 3005h
SeeAlso: AX=3000h
--------M-334F00-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
AX = 4F00h
Return: AX = 004Fh if supported
BX = ???
ES:DI -> ???
SeeAlso: AX=4F01h
--------M-334F01-----------------------------
INT 33 - LOGITECH MOUSE v6.10+ - ???
AX = 4F01h
ES = ???
Return: AX = 004Fh if supported
ES:DI -> ???
SeeAlso: AX=4F00h
--------M-336F00-----------------------------
INT 33 - Hewlett Packard - HP MOUSE DRIVER INSTALLATION CHECK
AX = 6F00h
BX <> 4850h
Return: BX = 4850h ('HP') if mouse driver written by Hewlett Packard
SeeAlso: INT 10/AX=6F00h,INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h
--------M-338800-----------------------------
INT 33 U - InfoTrack IMOUSE.COM - UNHOOK MOUSE IRQ
AX = 8800h
BX <> FFFFh
Note: the code is written to expect a subfunction number in AL, but only
function 00h has been implemented
SeeAlso: AX=8800h/BX=FFFFh
--------M-338800BXFFFF-----------------------
INT 33 U - InfoTrack IMOUSE.COM - GET ACTIVE IRQ
AX = 8800h
BX = FFFFh
Return: BL = number of IRQ being used by the mouse
SeeAlso: AX=8800h
--------T-33FFE6-----------------------------
INT 33 - Switch-It v3.23 - GET ??? PROGRAM
AX = FFE6h
CX = length of buffer
ES:DI -> buffer for program name
Return: ES:DI buffer filled
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------T-33FFE7-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFE7h
Return: AX = ???
--------T-33FFE8-----------------------------
INT 33 - Switch-It v3.23 - ???
AX = FFE8h
CX = length of name including terminating NUL
DS:SI -> ASCIZ program pathname
--------T-33FFE9-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFE9h
BX = ???
--------T-33FFEA-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFEAh
BL = ???
--------T-33FFEB-----------------------------
INT 33 - Switch-It v3.23 - SET ??? FLAG
AX = FFEBh
--------T-33FFEC-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFECh
BL = ???
--------T-33FFED-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFEDh
Return: AX = ??? (0001h)
BX = ???
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------T-33FFEE-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFEEh
Return: AX = ???
--------T-33FFEF-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFEFh
Return: BX:AX -> ???
--------T-33FFF0-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFF0h
BL = ???
--------T-33FFF1-----------------------------
INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
AX = FFF1h
Return: BX:AX -> ASCIZ pathname of configuration file
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------T-33FFF2-----------------------------
INT 33 - Switch-It v3.23 - SET ??? FLAG
AX = FFF2h
Return: AL = 01h
--------T-33FFF3-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFF3h
Return: AX = ???
--------T-33FFF4-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFF4h
BX = ???
CX = ???
--------T-33FFF5-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFF5h
Return: AX = ???
--------T-33FFF6-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFF6h
Return: AX = ???
--------T-33FFF7-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFF7h
BX = index of ???
Return: AX = ???
--------T-33FFF8-----------------------------
INT 33 - Switch-It v3.23 - ???
AX = FFF8h
BX = ???
CX = length of program name, including terminating NUL
DS:SI -> ASCIZ program pathname
Return: ???
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------T-33FFF9-----------------------------
INT 33 - Switch-It v3.23 - NOP
AX = FFF9h
--------T-33FFFA-----------------------------
INT 33 - Switch-It v3.23 - SET ???
AX = FFFAh
BX = index of program
SeeAlso: AX=FFFBh,AX=FFFCh
--------T-33FFFB-----------------------------
INT 33 - Switch-It v3.23 - GET ???
AX = FFFBh
BX = index of program
Return: AX = ??? (0000h or 0001h)
SeeAlso: AX=FFFAh,AX=FFFCh
--------T-33FFFC-----------------------------
INT 33 - Switch-It v3.23 - CLEAR ???
AX = FFFCh
BX = index of program
SeeAlso: AX=FFFAh,AX=FFFCh
--------T-33FFFD-----------------------------
INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
AX = FFFDh
Return: AX = first available segment???
BX = paragraph of top of conventional memory
DX = PSP segment of SI.EXE
--------T-33FFFE-----------------------------
INT 33 - Switch-It v3.23 - INSTALLATION CHECK
AX = FFFEh
Return: BX = ???
DX = 5349h ("SI")
--------T-33FFFF-----------------------------
INT 33 - Switch-It v3.23 - ???
AX = FFFFh
BX = ???
Program: Switch-It is a task switcher supporting up to 100 programs
simultaneously by Better Software Technology, Inc.
--------r-34---------------------------------
INT 34 - FLOATING POINT EMULATION - OPCODE D8h
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of D8h
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 35,INT 3E
--------r-35---------------------------------
INT 35 - FLOATING POINT EMULATION - OPCODE D9h
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of D9h
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 34,INT 36
--------r-36---------------------------------
INT 36 - FLOATING POINT EMULATION - OPCODE DAh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DAh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 35,INT 37
--------r-37---------------------------------
INT 37 - FLOATING POINT EMULATION - OPCODE DBh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DBh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 36,INT 38
--------r-38---------------------------------
INT 38 - FLOATING POINT EMULATION - OPCODE DCh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DCh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 37,INT 39
--------O-38---------------------------------
INT 38 - PC-MOS/386 v3.0 - API
Note: this API was been moved to INT D4h sometime between versions 3.0 and
5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
12h
SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
--------r-39---------------------------------
INT 39 - FLOATING POINT EMULATION - OPCODE DDh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DDh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 38,INT 3A
--------r-3A---------------------------------
INT 3A - FLOATING POINT EMULATION - OPCODE DEh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DEh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 39,INT 3B
--------r-3B---------------------------------
INT 3B - FLOATING POINT EMULATION - OPCODE DFh
Desc: this interrupt is used to emulate floating-point instructions with
an opcode of DFh
Note: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
SeeAlso: INT 3A,INT 3C
--------r-3C---------------------------------
INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
Notes: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
the generated code is CD 3C xy mm ....
where xy is a modified ESC instruction and mm is the modR/M byte.
The xy byte appears to be encoded as
s s 0 1 1 x x x or s s 0 0 0 x x x
where "ss" specifies the segment override:
00 -> DS:
01 -> SS:
10 -> CS:
11 -> ES:
SeeAlso: INT 3B,INT 3D
--------r-3D---------------------------------
INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
Notes: the floating-point emulators in Borland and Microsoft languages and
Lahey FORTRAN use this interrupt
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 3C,INT 3E
--------r-3E---------------------------------
INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
Notes: the two bytes following the INT 3E instruction are the subcode
(see #2866) and a NOP (90h), except for subcodes DCh and DEh, where
the second byte is a register count (01h-08h)
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 3D
(Table 2866)
Values for Borland floating-point shortcut subcode:
Subcode Function
DCh load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
top of the stack prior to the INT 3E with the 8087 register contents
DEh load 8087 registers from top of 8086 stack; ST0 is furthest from top
of 8086 stack
E0h round TOS and R1 to single precision, compare, pop twice
returns AX=8087 status word, FLAGS=8087 condition bits
E2h round TOS and R1 to double precision, compare, pop twice
returns AX=8087 status word, FLAGS=8087 condition bits
Note: buggy in TPas5.5, because it sets the 8087 precision control
field to the undocumented value 01h; this results in actually
rounding to single precision
E4h compare TOS/R1 with two POP's
returns FLAGS=8087 condition bits
E6h compare TOS/R1 with POP
returns FLAGS=8087 condition bits
E8h FTST (check TOS value)
returns FLAGS=8087 condition bits
EAh FXAM (check TOS value)
returns AX=8087 status word
ECh sine(ST0)
EEh cosine(ST0)
F0h tangent(ST0)
F2h arctangent(ST0)
F4h ST0 = ln(ST0)
F6h ST0 = log2(ST0)
F8h ST0 = log10(ST0)
FAh ST0 = e**ST0
FCh ST0 = 2**ST0
FEh ST0 = 10**ST0
--------r-3F---------------------------------
INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
Notes: INT 3F is the default, and may be overridden while linking
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 FE"OVERLAY"
--------r-3F---------------------------------
INT 3F - Microsoft Dynamic Link Library manager
SeeAlso: INT 21/AH=4Bh
--------B-40---------------------------------
INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
SeeAlso: INT 13/AH=00h,INT 13/AH=02h,INT 47"SuperBIOS",INT 63"Adaptec"
--------h-40---------------------------------
INT 40 - Z100 - Master 8259 - Parity error or S100 error
SeeAlso: INT 41"Z100",INT FF"Z100"
--------O-40---------------------------------
INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
AL = operation
00h close file
40h open file for reading
80h open file for writing
C0h open file for random access
DS:BX -> CR-terminated filename
Return: AL = file handle (00h if file closed or could not be opened)
Note: the Acorn BBC Master 512 is an 80186-based add-on board for the
6502-based Master 128 which uses the original CPU as an I/O processor
SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
--------h-40---------------------------------
INT 40 - TI Professional PC - IRQ0
Note: on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
that IBM connects to IRQ2
SeeAlso: INT 0A"IRQ2",INT 41"TI Professional"
--------B-41---------------------------------
INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE
Notes: the default parameter table array is located at F000h:E401h in 100%
compatible BIOSes; the pointer may be overridden by the hard disk
controller's BIOS to support drive formats unknown to the ROM BIOS
not used by some PS/2 models
BIOSes which support four hard drives may store the parameter tables
for drives 81h-83h immediately following the parameter table pointed
at by INT 41, with a separate copy of the drive 81h table for INT 46.
The check for such an arrangement is to test whether INT 46 points
somewhere other than exactly 16 bytes past INT 41, and the sixteen
bytes starting at offset 10h from INT 41 are identical to the sixteen
bytes pointed at by INT 46
SeeAlso: #2867,INT 13/AH=09h,INT 1E,INT 46"HARD DISK 1",INT 60"Adaptec"
SeeAlso: INT C0"AMI"
Format of fixed disk parameters:
Offset Size Description (Table 2867)
00h WORD number of cylinders
02h BYTE number of heads
03h WORD starting reduced write current cylinder (XT only, 0 for others)
05h WORD starting write precompensation cylinder number
07h BYTE maximum ECC burst length (XT only)
08h BYTE control byte (see #2868,#2869)
09h BYTE standard timeout (XT only, 0 for others)
0Ah BYTE formatting timeout (XT and WD1002 only, 0 for others)
0Bh BYTE timeout for checking drive (XT and WD1002 only, 0 for others)
0Ch WORD cylinder number of landing zone (AT and later only)
0Eh BYTE number of sectors per track (AT and later only)
0Fh BYTE reserved
SeeAlso: #0205,#0207
Bitfields for XT fixed disk control byte:
Bit(s) Description (Table 2868)
2-0 drive step speed
000 3ms
100 200ms
101 70ms (default)
110 3ms
111 3ms
5-3 unused
6 disable ECC retries
7 disable access retries
Bitfields for AT fixed disk control byte:
Bit(s) Description (Table 2869)
0 unused
1 reserved (0) (disable IRQ)
2 reserved (0) (no reset)
3 set if more than 8 heads
4 always 0
5 set if manufacturer's defect map on max cylinder+1 (AT and later only)
6 disable ECC retries
7 disable access retries
--------h-41---------------------------------
INT 41 - Z100 - Master 8259 - Processor Swap
SeeAlso: INT 40"Z100",INT 42"Z100"
--------h-41---------------------------------
INT 41 - TI Professional PC - IRQ1
Note: on the TI Pro, IRQ1 is connected to the same pin on the expansion bus
that IBM connects to IRQ3
SeeAlso: INT 0B"IRQ3",INT 40"TI Professional",INT 42"TI Professional"
--------O-41---------------------------------
INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
AL = function
01h put bytes sequentially
02h put bytes, ignoring sequential pointer
03h get bytes sequentially
04h get bytes, ignoring sequential pointer
05h get media title and boot option
06h get current device and directory
07h get current library and device
08h search directory
DS:BX -> control block (see #2870)
Return: CF clear if successful
CF set on error
AL = 00h if operation attempted
AL unchanged if unsupported function
SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
Format of BBC Master control block:
Offset Size Description (Table 2870)
00h BYTE file handle
01h DWORD pointer to data in either I/O processor or Tube processor
05h DWORD number of bytes to be transferred
09h DWORD transfer address
--------G-410000-----------------------------
INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
AX = 0000h
DS:DX -> character
Note: the kernel calls this function when it wants the user program to
output a character
SeeAlso: AX=0001h
--------G-410001-----------------------------
INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
AX = 0001h
Return: AL = character
Note: the kernel calls this function when it needs to input a character
SeeAlso: AX=0000h
--------G-41000D-----------------------------
INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
AX = 000Dh
SeeAlso: AX=000Eh
--------G-41000E-----------------------------
INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
AX = 000Eh
SeeAlso: AX=000Dh
--------G-410012-----------------------------
INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
AX = 0012h
DS:SI -> string (Windows 3.0)
ES:SI -> string (Windows 3.1)
Return: nothing???
Note: this function is called by the kernel when it wants to output a
string through the debugger
SeeAlso: AX=0050h,INT 68/AH=47h
--------G-41004F-----------------------------
INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
AX = 004Fh
Return: AX = F386h if debugger is present
SeeAlso: INT 68/AX=4400h
--------G-410050-----------------------------
INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
AX = 0050h
BX = segment number in executable (0-based)
CX = selector
DX = instance handle
SI = segment flags (0=code, 1=data)
ES:DI -> module name of owner
Return: ???
SeeAlso: AX=0012h,AX=004Fh
--------G-410051-----------------------------
INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
AX = 0051h
???
Return: ???
SeeAlso: AX=0050h,AX=0052h
--------G-410052-----------------------------
INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
AX = 0052h
BX = freed selector
SeeAlso: AX=0050h,AX=0051h,AX=005Ch
--------G-410059-----------------------------
INT 41 CPU - MS Windows debugging kernel - LOAD TASK
AX = 0059h
???:BX = CS:IP of new task's starting point
--------G-41005C-----------------------------
INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
AX = 005Ch
BX = freed selector
Note: called only when KERNEL starts, once for CS and once for the DS alias
to CS
SeeAlso: AX=0052h
--------G-410060-----------------------------
INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT LOAD
AX = 0060h
???
Return: ???
SeeAlso: AX=0061h
--------G-410061-----------------------------
INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
AX = 0061h
???
Return: ???
SeeAlso: AX=0060h
--------G-410062-----------------------------
INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
AX = 0062h
STACK: BYTE exit code
Return: ???
STACK unchanged???
SeeAlso: AX=0064h
--------G-410063-----------------------------
INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
AX = 0063h
--------G-410064-----------------------------
INT 41 CPU - MS Windows debugging kernel - DLL LOADED
AX = 0064h
CX:BX = DLL entry point CS:IP
SI = module handle
SeeAlso: AX=0062h,AX=0065h
--------G-410065-----------------------------
INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
AX = 0065h
ES = module handle
SeeAlso: AX=0064h
--------V-42---------------------------------
INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
Desc: contains the address of the original INT 10 handler which an EGA+
video adapter replaces with its own on-board BIOS code
SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh,INT 6D"VGA"
Note: not used by PS/2 built-in VGA or XGA
--------h-42---------------------------------
INT 42 - Z100 - Master 8259 - Timer
SeeAlso: INT 41"Z100",INT 43"Z100"
--------h-42---------------------------------
INT 42 - TI Professional PC - IRQ2
Note: on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
that IBM connects to IRQ4
SeeAlso: INT 0C"IRQ4",INT 41"TI Professional",INT 43"TI Professional"
--------b-42---------------------------------
INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
Note: if the second WD1002 controller in the system finds INT 40 already in
use, it uses this vector to cascade to the first controller's BIOS
SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
--------O-42---------------------------------
INT 42 - Acorn BBC Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
AL = byte to be written
BH = file handle
Return: flags destroyed
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
--------V-427500-----------------------------
INT 42 U - Toshiba laptops - ???
AX = 7500h
BL = ??? (00h or 01h)
Return: ???
Note: used by Toshiba utility VCHAD.EXE
SeeAlso: AX=7501h,AX=7503h
--------V-427501-----------------------------
INT 42 U - Toshiba laptop - GET ??? DATA
AX = 7501h
DS:DI -> data area to be filled ???
Return: area filled with data ???
Note: used by Toshiba utility VCHAD.EXE
SeeAlso: AX=7500h,AX=7502h,AX=7503h
--------V-427502-----------------------------
INT 42 U - Toshiba laptops - SET ??? DATA
AX = 7502h
DS:DI -> data area ???
Return: ???
Note: used by Toshiba utility VCHAD.EXE
SeeAlso: AX=7501h,AX=7503h
--------V-427503-----------------------------
INT 42 - Toshiba laptops - GET DISPLAY STATUS
AX = 7503h
Return: AX = 7575h if supported
CX = 0001h if supported
BH = display type (00h color, 03h monochrome)
BL = display state
01h internal LCD display is active
02h external VGA display is active
03h both displays active / DeskStation display mode enabled
(not possible on all machines)
Note: used by VCHAD.EXE and supported by all Toshiba VGA laptops until about
1994 (string "TOSHIBA " at F000:E010h should be checked before call)
no longer supported by T21xx series, use INT 10/AX=5F50h instead
INT 42 normally points to F000:F065h but may be redirected by QEMM386
SeeAlso: AX=7500h,AX=7504h,INT 10/AX=5F50h,INT 15/AH=C0h
--------V-427504-----------------------------
INT 42 U - Toshiba laptops - ???
AX = 7504h
BL = ???
Return: BH = ???
Note: used by Toshiba utility VCHAD.EXE
SeeAlso: AX=7500h,AX=7503h
--------V-43---------------------------------
INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
Desc: points at graphics data for characters 00h-7Fh of the current font
in 8x8 dot modes, graphics data for all characters in 8x14 and 8x16
modes
Note: this is not a callable vector!
SeeAlso: INT 06"no-name",INT 1F"SYSTEM DATA",INT 44"VIDEO"
--------h-43---------------------------------
INT 43 - Z100 - Master 8259 - Slave 8259 input
Note: slave runs in special fully nested mode
SeeAlso: INT 42"Z100",INT 44"Z100"
--------h-43---------------------------------
INT 43 - TI Professional PC - IRQ3 - TIMER1 25ms INTERVAL INTERRUPT
SeeAlso: INT 0B"IRQ3",INT 42"TI Professional",INT 44"TI Professional"
SeeAlso: INT 58"TI Professional"
--------O-43---------------------------------
INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
BH = file handle
Return: CF clear if successful
AL = byte read from file
CF set on error
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
--------V-44---------------------------------
INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
Desc: this vector points at graphics data for current character font
SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO"
--------N-44---------------------------------
INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
--------I-44---------------------------------
INT 44 - IBM 3270-PC High Level Language API
DS:SI -> parameter control block
--------h-44---------------------------------
INT 44 - Z100 - Master 8259 - Serial A
SeeAlso: INT 43"Z100",INT 45"Z100"
--------h-44---------------------------------
INT 44 - TI Professional PC - IRQ4
Note: on the TI Pro, IRQ4 is connected to the same pin on the expansion bus
that IBM connects to IRQ5
SeeAlso: INT 0D"IRQ5",INT 43"TI Professional",INT 45"TI Professional"
--------v-44---------------------------------
INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
--------O-4400-------------------------------
INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
AH = 00h
AL = function
00h get current filing system
Return: AL = filing system (see #2871)
01h get address of commandline tail
Return: BX buffer filled with address of command tail in I/O
processor address space (use INT 4A/AL=05h to
retrieve)
FFh flush all files onto secondary storage
BX -> 4-byte data buffer
Note: the commandline tail is terminated with a carriage return (0Dh)
SeeAlso: INT 40"Acorn",INT 45"Acorn"
(Table 2871)
Values for BBC Master filing system:
00h none
01h 1200 bps cassette
02h 300 bps cassette
03h ROM FS
04h DFS
05h ANFS/NFS
06h TFS
08h ADFS
--------O-44---------------------------------
INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
AH = nonzero file handle
AL = function
00h get sequential pointer for file
01h set sequential pointer for file
02h get length of file
BX -> 4-byte data buffer
Return: BX buffer updated if appropriate
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
--------h-45---------------------------------
INT 45 - Z100 - Master 8259 - Serial B
SeeAlso: INT 44"Z100",INT 46"Z100"
--------h-45---------------------------------
INT 45 - TI Professional PC - IRQ5
Note: on the TI Pro, IRQ5 is connected to the same pin on the expansion bus
that IBM connects to IRQ6
SeeAlso: INT 0E"IRQ6",INT 44"TI Professional",INT 46"TI Professional"
--------O-45---------------------------------
INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
AL = function
00h save block of memory as file
01h update directory entry for existing file
02h set load address for existing file
03h set execution address for existing file
04h set attributes for existing file
05h read directory
06h delete file
FFh load file
DS:BX -> control block (see #2872)
Return: FLAGS destroyed
AL = file type
00h not found
01h file found
02h directory found
FFh protected file
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
Format of BBC Master control block:
Offset Size Description (Table 2872)
00h WORD address of CR-terminated filename
02h DWORD load address of file
06h DWORD execution address of file
0Ah DWORD start address of data to save
0Eh DWORD end address of data to save, or file attributes
file attributes in low byte (see #2873)
other three bytes are filing-system specific file attributes
Bitfields for BBC Master file attributes:
Bit(s) Description (Table 2873)
0 no owner read access
1 no owner write access
2 not executable by owner
3 not deletable by owner
4 no public read access
5 no public write access
6 not executable with public access
7 not deletable with public access
--------B-46---------------------------------
INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE
Note: not used by some PS/2 models
SeeAlso: INT 13/AH=09h,INT 41"HARD DISK 0",INT 60"Adaptec",INT C0"AMI"
--------h-46---------------------------------
INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
SeeAlso: INT 45"Z100",INT 47"Z100"
--------h-46---------------------------------
INT 46 - TI Professional PC - IRQ6 - FLOPPY DISK CONTROLLER
Note: on the TI Pro, IRQ6 is connected to the same pin on the expansion bus
that IBM connects to IRQ7
SeeAlso: INT 0F"IRQ7",INT 45"TI Professional",INT 47"TI Professional"
--------O-46---------------------------------
INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
Return: CF clear if successful
AL = character read
CF set on error
AL = error code
SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
--------h-47---------------------------------
INT 47 - Z100 - Master 8259 - Printer
SeeAlso: INT 46"Z100",INT 48"Z100"
--------h-47---------------------------------
INT 47 - TI Professional PC - IRQ7 - KEYBOARD USART
SeeAlso: INT 09"IRQ1",INT 46"TI Professional"
--------O-47---------------------------------
INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
AL = character to be written
Return: FLAGS destroyed
SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
--------b-47---------------------------------
INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
Desc: used by the second WD1002-27X controller to cascade to the first
controller's INT 40
SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
----------478000-----------------------------
INT 47 - SQL Base - DATABASE ENGINE API
AX = 8000h
DS:BX -> parameter block, first word is function number (see #2874)
Program: SQL Base is a network-oriented database engine by Gupta Technologies
SeeAlso: AX=8001h
(Table 2874)
Values for SQL Base function number:
01h "SQLFINI" initalialize application's use of the database
02h "SQLFDON" application is done using the database
03h "SQLFCON" connect to a cursor/database
04h "SQLFDIS" disconnect from a cursor/database
05h "SQLFCOM" compile a SQL command
06h "SQLFEXE" execute a SQL command
07h "SQLFCEX" compile and execute a SQL command
08h "SQLFCMT" commit a transaction to the database
09h "SQLFDES" describe the items of a SELECT statement
0Ah "SQLFGFI" get fetch information
0Bh "SQLFFBK" fetch previous result row from SELECT statement
0Ch "SQLFFET" fetch next result row from SELECT statement
0Dh "SQLFEFB" enable fetch backwards
0Eh "SQLFPRS" position in result set
0Fh "SQLFURS" undo result set
10h "SQLFNBV" get number of bind variables
11h "SQLFBND" bind data variables
12h "SQLFBNN" bind numerics
13h "SQLFBLN" bind long number
14h "SQLFBLD" bind long data variables
15h "SQLFSRS" start restriction set processing
16h "SQLFRRS" restart restriction set processing
17h "SQLFCRS" close restriction set
18h "SQLFDRS" drop restriction set
19h "SQLFARF" apply Roll Forward journal
1Ah "SQLFERF" end Roll Forward journal
1Bh "SQLFSRF" start Roll Forward journal
1Ch "SQLFSTO" store a compiled SQL command
1Dh "SQLFRET" retrieve a compiled SQL command
1Eh "SQLFDST" drop a stored command
1Fh "SQLFCTY" get command type
20h "SQLFEPO" get error position
21h "SQLFGNR" get number of rows
22h "SQLFNSI" get number of select items
23h "SQLFRBF" get Roll Back flag
24h "SQLFRCD" get return code
25h "SQLFROW" get number of ROWs
26h "SQLFSCN" set cursor name
27h "SQLFSIL" set isolation level
28h "SQLFSLP" set log parameters
29h "SQLFSSB" set select buffer
2Ah "SQLFSSS" set sort space
2Bh "SQLFRLO" read long
2Ch "SQLFWLO" write long
2Dh "SQLFLSK" long seek
2Eh "SQLFGLS" get long size
2Fh "SQLFELO" end long operation
30h "SQLFRBK" roll back a transaction from the database
31h "SQLFERR" error message
32h "SQLFCPY" copy
33h "SQLFR01" reserved
34h "SQLFSYS" system
35h "SQLFSTA" statistics
36h "SQLFR02" reserved
37h "SQLFXAD" extra add
38h "SQLFXCN" extra character to number
39h "SQLFXDA" extra date add
3Ah "SQLFXDP" extra date picture
3Bh "SQLFXDV" extra divide
3Ch "SQLFXML" extra multiply
3Dh "SQLFXNP" extra number picture
3Eh "SQLFXPD" extra picture date
3Fh "SQLFXSB" extra subtract
40h "SQLFINS" install database
41h "SQLFDIN" deinstall database
42h "SQLFDIR" directory of databases
43h "SQLFTIO" timeout
44h "SQLFFQN" get fully qualified column name
45h "SQLFEXP" explain execution plan
46h "SQLFFER" get full error
47h "SQLFBKP" begin online backup
48h "SQLFRDC" read backup data chunk
49h "SQLFEBK" end backup
4Ah "SQLFRES" begin restore from backup
4Bh "SQLFWDC" write backup data chunk for restore
4Ch "SQLFRRD" recover restored database to consistent state
4Dh "SQLFERS" end restore
4Eh "SQLFNRR" return number of result set rows
4Fh "SQLFSTR" start restriction mode
50h "SQLFSPR" stop restriction mode
51h "SQLFCNC" connect 2
52h "SQLFCNR" connect with no recovery
53h "SQLFOMS" set output message size
54h "SQLFIMS" set input message size
55h "SQLFSCP" set cache pages
56h "SQLFDSC" describe items of a SELECT statement (external)
57h "SQLFLAB" get label info for items in SELECT statement
58h "SQLFCBV" clear bind variables
59h "SQLFGET" get database information
5Ah "SQLFSET" set database information
5Bh "SQLFTEC" translate error code
----------478001-----------------------------
INT 47 - SQL Base - GET VERSION NUMBER
AX = 8001h
Return: ???
Program: SQL Base is a network-oriented database engine by Gupta Technologies
SeeAlso: AX=8000h
--------B-48---------------------------------
INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
SeeAlso: INT 49"PCjr"
--------h-48---------------------------------
INT 48 - Z100 - Slave 8259 - S100 vectored line 0
SeeAlso: INT 47"Z100",INT 49"Z100"
--------N-48---------------------------------
INT 48 - Watstar PC Network data pointer 1
SeeAlso: INT 49"Watstar"
--------O-48---------------------------------
INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
Return: FLAGS destroyed
Note: writes a carriage return (0Dh) followed by a linefeed (0Ah)
SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
--------b-48---------------------------------
INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
Note: the second WD1002-27X controller in a system uses the low byte to
store the number of drives controlled by the second controller,
and the high word for temporary storage during track recalculation;
the first controller uses offsets 74h-77h in the BIOS data area
(refer to MEMORY.LST) to store data
SeeAlso: INT 47"SuperBIOS"
--------V-48---------------------------------
INT 48 U - Compaq UILIB.EXE - API
AX = function (see #2875)
BX = call type (0002h) (see #2878)
???
Return: ???
Note: returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
listed below
SeeAlso: AX=1A70h
(Table 2875)
Values for valid UILIB function number:
1000h 1160h 12D0h 1430h 1570h 1680h 17F0h 1920h 1A90h
1010h 1170h 12E0h 1440h 1578h 1690h 1800h 1930h 1AA0h
1020h 1180h 12F0h 1450h 1580h 16A0h 1810h 1940h
1030h 1190h 1300h 1460h 1590h 16B0h 1820h 1950h
1040h 11A0h 1310h 1470h 1594h 16C0h 1830h 1960h
1050h 11B0h 1320h 1480h 1598h 16D0h 1840h 1970h
1060h 11C0h 1330h 1490h 15A0h 16E0h 1848h 1980h
1070h 11D0h 1340h 14A0h 15B0h 16F0h 1850h 1990h
1080h 11E0h 1350h 14B0h 15C0h 1700h 1860h 19A0h
1090h 11F0h 1360h 14B8h 15D0h 1710h 1870h 19B0h
1095h 1200h 1370h 14BBh 15D4h 1720h 1878h 19C0h
1098h 1210h 1380h 14C0h 15D8h 1730h 1880h 19D0h
10A0h 1220h 1390h 14D0h 15E0h 1735h 1890h 19E0h
10C0h 1230h 13A0h 14E0h 15F0h 1740h 1898h 19F0h
10D0h 1240h 13B0h 14F0h 1600h 1750h 18A0h 1A00h
10E0h 1250h 13B8h 1500h 1610h 1770h 18B0h 1A10h
10F0h 1260h 13C0h 1508h 1620h 1780h 18C0h 1A20h
1100h 1270h 13D0h 1510h 1630h 1790h 18D0h 1A30h
1110h 1280h 13E0h 1520h 1640h 17A0h 18E0h 1A40h
1120h 1290h 13F0h 1530h 1650h 17B0h 18F0h 1A50h
1130h 12A0h 1400h 1540h 1660h 17C0h 1900h 1A60h
1140h 12B0h 1410h 1550h 1664h 17D0h 1909h 1A70h
1150h 12C0h 1420h 1560h 1670h 17E0h 1910h 1A80h
--------b-4800-------------------------------
INT 48 - TI Professional PC - SPEAKER DEVICE - SOUND SPEAKER
AH = 00h
AL = number of 25ms ticks sound should last
Return: nothing
Desc: sound the speaker at the current frequency setting (see AH=02h) for
the indicated duration
Notes: this function returns immediately; the sound is terminated by the
timer interrupt handler
if a new sound is requested while one is already in progress, the
previous sound is terminated immediately and the new sound takes
its place
SeeAlso: AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
SeeAlso: INT 40"TI Professional",INT 49/AH=01h"TI"
SeeAlso: INT 4A/AH=00h"TI",INT 4C"TI Professional",INT 4D/AH=00h
--------b-4801-------------------------------
INT 48 - TI Professional PC - SPEAKER DEVICE - CHECK SPEAKER STATUS
AH = 01h
Return: ZF clear if speaker is currently on
ZF set if speaker is currently off
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
--------b-4802-------------------------------
INT 48 - TI Professional PC - SPEAKER DEVICE - SET SPEAKER FREQUENCY
AH = 02h
CX = frequency divisor (freq = 1250000 / CX)
Return: nothing
SeeAlso: AH=00h,AH=01h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
--------b-4803-------------------------------
INT 48 - TI Professional PC - SPEAKER DEVICE - TURN ON SPEAKER
AH = 03h
Return: nothing
Desc: turn on the speaker at the current frequency, leaving it on until
explicitly turned off with AH=04h or the end of a subsequent
AH=00h
SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
--------b-4804-------------------------------
INT 48 - TI Professional PC - SPEAKER DEVICE - TURN OFF SPEAKER
AH = 04h
Return: nothing
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
--------b-4805-------------------------------
INT 48 - TI Professional PC - SPEAKER DEVICE - DELAY
AH = 05h
CX = desired delay in milliseconds
Return: after delay expires
Note: the delay is only approximate, and may be longer than requested
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
--------b-4806-------------------------------
INT 48 - TI Professional PC - CALCULATE CRC
AH = 06h
ES:BX -> memory block for which to calculate CRC
BP = size of block in bytes
Return: DX = CRC for block
ZF set if DX = 0000h
Note: if the CRC of a memory block is appended to the block, then the CRC
of the block plus CRC should equal 0000h
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
--------b-4807-------------------------------
INT 48 - TI Professional PC - PRINT ROM MESSAGE
AH = 07h
SI = offset of ASCIZ message string within segment F400h
Return: nothing
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
--------b-4808-------------------------------
INT 48 - TI Professional PC - DISPLAY SYSTEM ERROR MESSAGE
AH = 08h
BX = error number
Return: nothing
Desc: displays the error message " ** System Error ** - xxxx" where xxxx is
the hexadecimal value in BX
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
--------b-4809-------------------------------
INT 48 - TI Professional PC - GET SYSTEM CONFIGURATION DATA
AH = 09h
Return: ES:BX -> system configuration word (see #2898)
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
--------b-480A-------------------------------
INT 48 - TI Professional PC - GET EXTRA SYSTEM CONFIGURATION INFO ADDRESS
AH = 0Ah
Return: ES:BX -> configuration information (see #2876)
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Bh
Format of TI Professional PC extra system configuration information:
Offset Size Description (Table 2876)
-3 WORD memory size in paragraphs
00h BYTE drive type byte (see #2877)
01h WORD extra system configuration word 1
bit 0: 8087 is present
bits 15-1: reserved (0)
03h WORD extra system configuration word 2
bits 15-0: reserved (0)
Bitfields for TI Professional PC drive type byte:
Bit(s) Description (Table 2877)
0 drive A is double-sided
1 drive A has 80 tracks instead of 40
2 drive B is double-sided
3 drive B has 80 tracks instead of 40
4 drive C is double-sided
5 drive C has 80 tracks instead of 40
6 drive D is double-sided
7 drive D has 80 tracks instead of 40
Note: the type for drive A is determined by motherboard switches; the
remaining drives' types are set from a table in IO.SYS
SeeAlso: #2876
--------b-480B-------------------------------
INT 48 - TI Professional PC - GET EXTRA SYSTEM CONFIGURATION INFORMATION
AH = 0Bh
Return: AL = drive type byte (see #2877)
BX = extra system configuration word 1 (see #2876)
CX = extra system configuration word 2 (see #2876)
AH destroyed
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah
--------V-481A70-----------------------------
INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
AX = 1A70h
BX = call type (see #2878)
Return: CX = 5649h ('VI') if installed
DX = 4557h ('EW') if installed
AX = version??? (0106h)
(Table 2878)
Values for UILIB call type:
0000h near
0001h far
0002h INT (only valid call type when using INT 48)
0003h near
--------B-49---------------------------------
INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
SeeAlso: #2879,INT 48"PCjr"
Format of PCjr scan-code translation table:
Offset Size Description (Table 2879)
00h BYTE number of non-keyboard scancodes in the table
01h N WORDs high byte 00h (NUL) byte scancode with low order byte
representing the scancode mapped values relative to their
input values within the range of 56h through 7Eh
--------h-49---------------------------------
INT 49 - Z100 - Slave 8259 - S100 vectored line 1
SeeAlso: INT 48"Z100",INT 4A"Z100"
--------N-49---------------------------------
INT 49 - Watstar PC Network data pointer 2
SeeAlso: INT 48"Watstar"
--------O-49---------------------------------
INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
AL = character to be written
Return: FLAGS destroyed
Note: converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
--------b-49---------------------------------
INT 49 - Tandy 2000 - BOOTSTRAP LOADER
Note: this interrupt is identical to INT 19
SeeAlso: INT 19,INT 4A"Tandy 2000",INT 4C"Tandy 2000",INT 51"Tandy 2000"
--------a-490001-----------------------------
INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
AX = 0001h
Return: AX = status (see #2880)
BX,CX,DX destroyed
Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
Note: INT 49 is the default, but may be overridden on the commandline. The
actual interrupt in use may be found by searching for the signature
"MAGic" or "xMAGic" (for the deluxe version) immediately preceding
the interrupt handler (this is also the installation check). MAGic
uses CodeRunneR, which places the signature "RT" at offset 0000h in
the interrupt handler's segment, followed by MAGic's TSR ID of
"VMAG".
SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
Index: installation check;MAGic
(Table 2880)
Values for MAGic status:
0000h cannot magnify current video mode
0002h magnified (text mode)
0003h magnified (graphics mode)
FFFDh function works only in magnified mode
FFFFh MAGic busy, retry later
--------a-490002-----------------------------
INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
AX = 0002h
Return: AX = status (see #2880)
BX,CX,DX destroyed
SeeAlso: AX=0001h
--------a-490003-----------------------------
INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
AX = 0003h
BX = vertical position (character row [text] or pixel row [graphics])
DX = horizontal position (char column [text] or 8-pixel units [gr])
Return: AX = status
0000h successful
FFFFh MAGic busy, retry later
BX,CX,DX destroyed
Note: window is not moved if the position is inside the current window
SeeAlso: AX=0001h,AX=0004h,AX=0005h
--------a-490004-----------------------------
INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
AX = 0004h
BX = vertical position of upper left corner
DX = horizontal position
Return: AX = status (see AX=0003h)
BX,CX,DX destroyed
SeeAlso: AX=0001h,AX=0003h,AX=0005h
--------a-490005-----------------------------
INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
AX = 0005h
Return: AX = status
0000h successful
BX = vertical position (char row or pixel row)
DX = horizontal position (char column or 8-pixel units)
FFFFh MAGic busy, retry later
BX,DX destroyed
CX destroyed
SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
--------a-490006-----------------------------
INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
AX = 0006h
Return: AX = status
0000h successful
BX = vertical size (char rows or pixel rows)
DX = horizontal size (char cols or 8-pixel units)
FFFFh MAGic busy, retry later
BX,DX destroyed
CX destroyed
SeeAlso: AX=0001h,AX=0005h,AX=0007h
--------a-490007-----------------------------
INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
AX = 0007h
Return: AX = status
0000h successful
BX = vertical size (char rows or pixel rows)
DX = horizontal size (char cols or 8-pixel units)
FFFEh invalid function
FFFFh MAGic busy, retry later
BX,DX destroyed
CX destroyed
BUG: in v1.16 and v1.17, this function is not recognized as valid, but
AX=0000h is accepted and will branch into hyperspace
SeeAlso: AX=0001h,AX=0006h
--------a-490008-----------------------------
INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
AX = 0008h
BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
Return: AX = status
0000h successful
FFFBh scaling factor only available in MAGic Deluxe
FFFCh already in magnified state, can't set size
Notes: this call specifies the amount a subsequent call to AX=0001h should
magnify the display
scaling factors greater than 2 are only available in MAGic Deluxe
SeeAlso: AX=0001h
--------V-4901-------------------------------
INT 49 - TI Professional PC - CRT - SET CURSOR SIZE AND TYPE
AH = 01h
CH = cursor start line (bits 3-0) and status (bits 6-5)
status bits:
00 non-blinking cursor
01 no cursor
10 fast-blinking cursor
11 slow-blinking cursor
CL = cursor end line
Return: nothing
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=02h,AH=03h,INT 40"TI Professional",INT 48/AH=00h"TI Professional"
SeeAlso: INT 4A/AH=00h"TI",INT 4B"TI Professional",INT 4D/AH=00h
SeeAlso: INT 57"TI Professional"
--------V-4902-------------------------------
INT 49 - TI Professional PC - CRT - SET CURSOR POSITION
AH = 02h
DH = column
DL = row
Return: DX destroyed
Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
the TI swaps the row and column compared to the equivalent IBM call
SeeAlso: AH=01h,AH=03h
--------V-4903-------------------------------
INT 49 - TI Professional PC - CRT - GET CURSOR POSTION AND TYPE
AH = 03h
Return: CH = cursor start and status (see AH=01h)
CL = cursor end line
DH = cursor column
DL = cursor row
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=02h
--------V-4906-------------------------------
INT 49 - TI Professional PC - CRT - SCROLL UP/COPY WINDOW
AH = 06h
AL = source blanking
00h blank source region (move/scroll)
nonzero do not blank source region (copy)
DH,DL = source start column,row
BH,BL = destination start column,row
CH = width of region to move/copy
CL = height of region to move/copy
Return: nothing
Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
the specified region may be wider than the screen, but reliable
operation then requires that the height be exactly one row
SeeAlso: AH=01h,AH=02h,AH=07h,AH=13h,AH=14h
--------V-4907-------------------------------
INT 49 - TI Professional PC - CRT - SCROLL DOWN/COPY WINDOW
AH = 07h
AL = source blanking
00h blank source region (move/scroll)
nonzero do not blank source region (copy)
DH,DL = source start column,row
BH,BL = destination start column,row
CH = width of region to move/copy
CL = height of region to move/copy
Return: nothing
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=02h,AH=06h,AH=13h,AH=14h
--------V-4908-------------------------------
INT 49 - TI Professional PC - CRT - GET CHARACTER AND ATTRIBUTE AT POSITION
AH = 08h
Return: AL = character at current cursor position
AH = attribute
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=09h,AH=0Ah,AH=0Eh,INT 10/AH=08h
--------V-4909-------------------------------
INT 49 - TI Professional PC - CRT - WRITE CHARACTER(S) WITH ATTRIBUTE
AH = 09h
AL = character to write
BL = attribute to use (becomes new current attribute)
CX = number of times to write character
Return: nothing
Desc: write CX copies of the character in AL beginning at the current cursor
position
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=08h,AH=0Ah,AH=0Eh,INT 10/AH=09h
--------V-490A-------------------------------
INT 49 - TI Professional PC - CRT - WRITE CHARACTER(S) WITH CURRENT ATTRIBUTE
AH = 0Ah
AL = character to write
CX = number of times to write character
Return: nothing
Desc: write CX copies of the character in AL beginning at the current cursor
position
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=02h,AH=08h,AH=09h,AH=0Eh,INT 10/AH=0Ah
--------V-490E-------------------------------
INT 49 - TI Professional PC - CRT - TTY OUTPUT
AH = 0Eh
AL = character to write
Return: nothing
Desc: write the character in AL at the current cursor position, advancing
the cursor, and interpreting CR, LF, TAB, and BEL characters
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=02h,AH=08h,AH=09h,AH=0Ah,INT 10/AH=0Eh
--------V-4910-------------------------------
INT 49 - TI Professional PC - CRT - WRITE BLOCK OF CHARACTERS WITH ATTRIBUTE
AH = 10h
AL = attribute (becomes new current attribute)
DX:BX -> string of characters to write
CX = length of string
Return: nothing
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
BUG: CX must not be 0000h on entry, or the system will crash
SeeAlso: AH=01h,AH=02h,AH=09h,AH=0Eh,AH=11h
--------V-4911-------------------------------
INT 49 - TI Professional PC - CRT - WRITE BLOCK OF CHARACTERS WITH CURR ATTRIB
AH = 11h
DX:BX -> string of characters to write
CX = length of string
Return: nothing
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
BUG: CX must not be 0000h on entry, or the system will crash
SeeAlso: AH=01h,AH=02h,AH=09h,AH=0Eh,AH=10h
--------V-4912-------------------------------
INT 49 - TI Professional PC - CRT - FILL ENTIRE SCREEN WITH ATTRIBUTE
AH = 12h
AL = attribute (see #2881)
Return: nothing
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=02h
Bitfields for TI Professional PC screen attribute:
Bit(s) Description (Table 2881)
7 alternate character set (requires user-supplied ROM)
6 blink
5 underline
4 reverse video
3 character enable
2 green (color) or 58% intensity (gray-scale)
1 red (color) or 27.5% intensity
0 blue (color) or 14.5% intensity
--------V-4913-------------------------------
INT 49 - TI Professional PC - CRT - CLEAR ENTIRE TEXT SCREEN AND HOME CURSOR
AH = 13h
Return: nothing
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=02h,AH=06h,AH=14h
--------V-4914-------------------------------
INT 49 - TI Professional PC - CRT - CLEAR ENTIRE GRAPHICS SCREEN
AH = 14h
Return: nothing
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=02h,AH=06h,AH=13h
--------V-4915-------------------------------
INT 49 - TI Professional PC - CRT - SET PROTECTED STATUS AREA
AH = 15h
CL = row at which to start status area, or 00h to cancel
CH = 00h
Return: nothing
Desc: set a protected area of the screen which will not be affected by TTY
writes or the scrolls they may generate
Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
the current cursor position must be above the status area in order to
set the protected area
SeeAlso: AH=01h,AH=02h
--------V-4916-------------------------------
INT 49 - TI Professional PC - CRT - SET ATTRIBUTE LATCH
AH = 16h
BL = new attribute (see #2881)
Return: nothing
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=02h
--------V-4917-------------------------------
INT 49 - TI Professional PC - CRT - GET START-OF-DISPLAY POINTER
AH = 17h
Return: DX = current offset at which display starts
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
SeeAlso: AH=01h,AH=02h,INT 10/AH=FEh
--------V-4918-------------------------------
INT 49 - TI Professional PC - CRT - PRINT TTY STRING
AH = 18h
CS:BX -> counted string (count byte with length followed by string)
Return: nothing
Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
the string must be located in the caller's code segment; any TSRs
which want to hook INT 49 must check for this function and emulate
it, because the BIOS retrieves the caller's CS from the stack
SeeAlso: AH=01h,AH=02h,AH=0Eh
--------B-4A---------------------------------
INT 4A C - SYSTEM - USER ALARM HANDLER
Desc: This interrupt is invoked by the BIOS when a real-time clock alarm
occurs; an application may use it to perform an action at a
predetermined time.
Note: this interrupt is called from within a hardware interrupt handler,
so all usual precautions against reentering DOS must be taken
SeeAlso: INT 1A/AH=06h
--------h-4A---------------------------------
INT 4A - Z100 - Slave 8259 - S100 vectored line 2
SeeAlso: INT 49"Z100",INT 4B"Z100"
--------b-4A---------------------------------
INT 4A - Tandy 2000 - PRINT SCREEN
Note: this interrupt is identical to INT 05
SeeAlso: INT 05"PRINT SCREEN"
--------O-4A---------------------------------
INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
AL = function code
FAh transfer data between 80186 and 65C12 I/O processor
DS:BX -> control block (see #2882)
Return: FLAGS destroyed
control block updated
Note: there are more functions than are listed here, but details are not
available
SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
Format of BBC Master control block for function FAh:
Offset Size Description (Table 2882)
00h BYTE number of parameters sent to I/O processor (0Dh,0Eh)
01h BYTE number of parameters read from I/O processor (01h)
02h DWORD I/O processor address
06h DWORD 80186 segment:offset address
0Ah WORD number of bytes to transfer
0Ch BYTE operation type
00h write to 65C12 at 24 us/byte
01h read from 65C12 at 24 us/byte
02h write to 65C12 at 26 us/word
03h read from 65C12 at 26 us/word
04h write to 65C12 at 10 us/byte using 256-byte blocks
05h read from 65C12 at 10 us/byte using 256-byte blocks
0Dh BYTE 65C12 memory access control (only used if offset 00h = 0Eh)
(see #2883)
Bitfields for 65C12 memory access control:
Bit(s) Description (Table 2883)
7 unused
6 always use main screen memory if I/O addr 3000h-7FFFh (overrides bit 5)
5 use shadow screen memory if screen address specified
4 use current ROM rather than ROM selected by bits 3-0 (only if I/O
address between 8000h and BFFFh)
3-0 paged ROM number
--------b-4A00-------------------------------
INT 4A - TI Professional PC - KEYBOARD - GET KEYPRESS
AH = 00h
Return: AX = keystroke (AH=00h for ASCII keys -- no scan code)
SeeAlso: AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=00h
SeeAlso: INT 47"TI Professional",INT 48/AH=00h"TI Professional"
SeeAlso: INT 49/AH=01h"TI",INT 4C"TI Professional",INT 4D/AH=00h
SeeAlso: INT 5B"TI Professional"
--------b-4A01-------------------------------
INT 4A - TI Professional PC - KEYBOARD - GET KEYBOARD STATUS
AH = 01h
Return: ZF set if no keystroke available
ZF clear if keystrokes in buffer
AX = next keystroke (AH=00h for ASCII keys -- no scan code)
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=01h
--------b-4A02-------------------------------
INT 4A - TI Professional PC - KEYBOARD - GET KEYBOARD MODE
AH = 02h
Return: AL = shift states (see #2884)
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=02h
Bitfields for TI Professional PC keyboard shift states:
Bit(s) Description (Table 2884)
0 Ctrl key pressed
1 Alt key pressed
2 either Shift key pressed
3-6 0
7 CapsLock is ON
--------b-4A03-------------------------------
INT 4A - TI Professional PC - KEYBOARD - FLUSH KEYBOARD BUFFER
AH = 03h
Return: nothing
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h
--------b-4A04-------------------------------
INT 4A - TI Professional PC - KEYBOARD - SEND COMMAND TO KEYBOARD
AH = 04h
AL = command
00h reset to default states
01h enable auto-repeat (default)
02h disable auto-repeat
03h lock keyboard
04h unlock keyboard (default)
05h enable keyclick (requires hardware modification to work)
06h disable keyclick (default)
Return: nothing
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h
--------b-4A05-------------------------------
INT 4A - TI Professional PC - KEYBOARD - INSERT CHARACTER INTO KEYBOARD BUFFER
AH = 05h
BX = character code (BH=00h if ASCII character, BL=00h/BH nonzero for
extended codes) (see #2885)
Return: ZF set if keyboard buffer was already full
ZF clear if keystroke inserted into buffer
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 5B"TI"
(Table 2885)
Values for TI Professional PC scan/character codes:
Scan Key Normal Shift Ctrl Alt Notes
00h -- unused
01h F5 3F00h 5800h 6200h 6C00h
02h F6 4000h 5900h 6300h 6D00h
03h F7 4100h 5A00h 6400h 6E00h
04h F8 4200h 5B00h 6500h 6F00h
05h F9 4300h 5C00h 6600h 7000h
06h F10 4400h 5D00h 6700h 7100h
07h F11 4500h 0800h 0A00h 0C00h
08h F12 4600h 0900h 0B00h 0D00h
09h 1 ! 0031h 0021h ---- 7800h
0Ah 2 @ 0032h 0040h 0300h 7900h
0Bh 3 # 0033h 0023h ---- 7A00h
0Ch 4 $ 0034h 0024h ---- 7B00h
0Dh 5 % 0035h 0025h ---- 7C00h
0Eh 6 ^ 0036h 005Eh 001Eh 7D00h
0Fh 7 & 0037h 0026h ---- 7E00h
10h 8 * 0038h 002Ah ---- 7F00h
11h 9 ( 0039h 0028h ---- 8000h
12h 0 ) 0030h 0029h ---- 8100h
13h - _ 002Dh 005Fh 001Fh 8200h
14h = + 003Dh 002Bh ---- 8300h
15h BACK SPACE 0008h 0008h 007Fh ----
16h ` ~ 0060h 007Eh ---- ----
17h NUM = 003Dh 003Dh 003Dh 8C00h
18h NUM + 002Bh 002Bh 002Bh 8D00h
19h NUM SPAC 0020h 0020h 0020h 8E00h
1Ah NUM TAB 0009h 0F00h 0009h 8F00h
1Bh NUM 1 0031h 0031h 0031h (alt-###) [Note 5]
1Ch (unused)
1Dh NUM 0 0030h 0030h 0030h (alt-###) [Note 5]
1Eh NUM ENTER 000Dh 000Dh 000Dh ----
1Fh NUM 4 0034h 0034h 0034h (alt-###) [Note 5]
20h NUM 5 0035h 0035h 0035h (alt-###) [Note 5]
21h NUM 9 0039h 0039h 0039h (alt-###) [Note 5]
22h NUM - 002Dh 002Dh 002Dh ----
23h NUM 2 0032h 0032h 0032h (alt-###) [Note 5]
24h-26h -- unused
27h NUM 7 0037h 0037h 0037h (alt-###) [Note 5]
28h NUM 8 0038h 0038h 0038h (alt-###) [Note 5]
29h NUM 6 0036h 0036h 0036h (alt-###) [Note 5]
2Ah NUM , 002Ch 002Ch 002Ch ----
2Bh NUM 3 0033h 0033h 0033h (alt-###) [Note 5]
2Ch NUM . 002Eh 002Eh 002Eh ----
2Dh PRINT 7200h [Note2] ---- ---- [Notes 1,2]
2Eh RtArrow 4D00h 8A00h 7400h 4E00h
2Fh INS 5200h 2800h 2900h 2A00h [Note 1]
30h DEL 5300h 3800h 3900h 3A00h [Note 1]
31h TAB 0009h 0F00h 0009h ----
32h Q 0071h 0051h 0011h 1000h
33h W 0077h 0057h 0017h 1100h
34h E 0065h 0045h 0005h 1200h
35h R 0072h 0052h 0012h 1300h
36h T 0074h 0054h 0014h 1400h
37h Y 0079h 0059h 0019h 1500h
38h U 0075h 0055h 0015h 1600h
39h I 0069h 0049h 0009h 1700h
3Ah O 006Fh 004Fh 000Fh 1800h
3Bh P 0070h 0050h 0010h 1900h
3Ch [ { 005Bh 007Bh 001Bh ----
3Dh ] } 005Dh 007Dh 001Dh ----
3Eh LINE FEED 000Ah 000Ah 7500h 4F00h
3Fh BRK/PAUS [Note3] [Note4] ---- ---- [Notes 1,3,4]
40h UpArrow 4800h 8800h 8400h 4900h
41h ESC 001Bh 001Bh 001Bh ----
42h A 0061h 0041h 0001h 1E00h
43h S 0073h 0053h 0013h 1F00h
44h D 0064h 0044h 0004h 2000h
45h F 0066h 0046h 0006h 2100h
46h G 0067h 0047h 0007h 2200h
47h H 0068h 0048h 0008h 2300h
48h J 006Ah 004Ah 000Ah 2400h
49h K 006Bh 004Bh 000Bh 2500h
4Ah L 006Ch 004Ch 000Ch 2600h
4Bh ; : 003Bh 003Ah ---- ----
4Ch ' " 0027h 0022h ---- ----
4Dh RETURN 000Dh 000Dh 000Dh ----
4Eh \ | 005Ch 007Ch 001Ch ----
4Fh LeftArrow 4B00h 8B00h 7300h 4C00h
50h HOME 4700h 8600h 7700h 8500h
51h Space Bar 0020h 0020h 0020h 0020h
52h Z 007Ah 005Ah 001Ah 2C00h
53h X 0078h 0058h 0018h 2D00h
54h C 0063h 0043h 0003h 2E00h
55h V 0076h 0056h 0016h 2F00h
56h B 0062h 0042h 0002h 3000h
57h N 006Eh 004Eh 000Eh 3100h
58h M 006Dh 004Dh 000Dh 3200h
59h , < 002Ch 003Ch ---- ----
5Ah PRINT 7200h [Note2] ---- ---- [Notes 1,2]
5Bh . > 002Eh 003Eh ---- ----
5Ch / ? 002Fh 003Fh ---- ----
5Dh (unused)
5Eh DEL 5300h 3800h 3900h 3A00h [Note 1]
5Fh INS 5200h 2800h 2900h 2A00h [Note 1]
60h DownArrow 5000h 8900h 7600h 5100h
61h-63h -- unused
64h BRK/PAUS [Note3] [Note4] ---- ---- [Notes 1,3,4]
65h F1 3B00h 5400h 5E00h 6800h
66h F2 3C00h 5500h 5F00h 6900h
67h F3 3D00h 5600h 6000h 6A00h
68h F4 3E00h 5700h 6100h 6B00h
69h-6Fh -- unused
Notes: [1] four of the keys can have differing scan codes, depending on the
actual keyboard; the BIOS accepts either scan code ("normal": 2Fh,
30h, 5Ah, 64h; "alternate": 2Dh,3Fh,5Eh,5Fh) for any of these keys
[2] Shift-Print invokes INT 5E for a screen dump; the PRTSCRN.DEV
device driver also supports Alt-Print, Ctrl-Print, Shift-Alt-Print,
and Shift-Ctrl-Print for dumping graphics in various permutations
[3] BRK/PAUS invokes INT 5C for a pause, then stuffs 0100h into the
keyboard buffer
[4] Shift-BRK/PAUS invokes INT 5D for the Break, then stuffs 0000h
into the keyboard buffer; MS-DOS hooks INT 5D to keep the 0000h from
appearing in the keyboard buffer
[5] on the TI Pro, one enters an arbitrary character slightly
differently than on a standard PC: exactly three numberpad digits
must be pressed (using leading zeros for codes less than 100), and
the key for the requested code is inserted into the keyboard buffer
immediately on pressing the third key. The Alt key may be released
and re-pressed arbitrarily often between digits without affecting
the Alt-digit-digit-digit sequence.
scan codes with bit 7 set are not key releases, but rather
auto-repeated keystrokes, which the BIOS only places into the
keyboard buffer if the buffer is empty at the time (thus avoiding
typeahead of repeated keystrokes faster than they can be processed)
SeeAlso: #0005 at INT 09
--------h-4B---------------------------------
INT 4B - Z100 - Slave 8259 - S100 vectored line 3
SeeAlso: INT 4A"Z100",INT 4C"Z100"
--------d-4B---------------------------------
INT 4B - Common Access Method SCSI interface (draft revision 1.9)
ES:DI -> CAM Control Block (see #2900 at INT 4F/AX=8100h)
Notes: the CAM committee moved the interface to INT 4F after revision 1.9
to avoid conflicting with the IBM SCSI interface and the Virtual
DMA specification
the installation check for the driver is the string "SCSI_CAM" eight
bytes past the INT 4Bh handler
the only driver to date reported to use the CAM interface on INT 4B
instead of INT 4F is from Future Domain (which has drivers for CAM
on either interrupt)
SeeAlso: INT 4F/AX=8100h
Index: installation check;Common Access Method SCSI interface
--------b-4B---------------------------------
INT 4B - Tandy 2000 - EQUIPMENT DETERMINATION
Return: AX = BIOS equipment list word (see #2886)
Note: this interrupt is identical to INT 11 on the Tandy 2000
SeeAlso: INT 11"EQUIPMENT",INT 4A"Tandy 2000",INT 4C"Tandy 2000"
Bitfields for Tandy 2000 BIOS equipment list:
Bit(s) Description (Table 2886)
0 reserved
1 monochrome graphics installed
2 graphics with color option installed
3 floppy disk drive 1 installed
4 floppy disk drive 2 installed
5 hard disk drive 1 installed
6 hard disk drive 2 installed
7 unused
8 black and white monitor
9 color monitor
12-10 reserved
13 printer installed
14 reserved
15 unused
SeeAlso: #0158 at INT 11
--------O-4B---------------------------------
INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
AL = function code
BL = first parameter
BH = second parameter (if needed)
Return: BL = first return parameter
BH = second return parameter
CF depends on function
SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
--------b-4B00-------------------------------
INT 4B - TI Professional PC - PARALLEL PORT - OUTPUT CHARACTER
AH = 00h
DL = printer number (00h)
AL = character to print
Return: AH = printer status (see #2887)
Note: on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
TI hook INT 4B and handle requests for DL<>00h
SeeAlso: AH=01h,AH=02h,INT 17/AH=00h
SeeAlso: INT 40"TI Professional",INT 48/AH=00h"TI Professional"
SeeAlso: INT 49/AH=01h"TI",INT 4C"TI Professional",INT 4D/AH=00h
Bitfields for TI Professional PC printer status:
Bit(s) Description (Table 2887)
0 timeout (function 00h only)
3-1 unused
4 busy
5 paper out
6 on-line (selected)
7 fault
--------b-4B01-------------------------------
INT 4B - TI Professional PC - PARALLEL PORT - INITIALIZE PRINTER
AH = 01h
DL = printer number (00h)
Return: AH = printer status (see #2887)
Note: on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
TI hook INT 4B and handle requests for DL<>00h
SeeAlso: AH=00h,AH=02h,INT 17/AH=01h
--------b-4B02-------------------------------
INT 4B - TI Professional PC - PARALLEL PORT - GET PRINTER STATUS
AH = 02h
DL = printer number (00h)
Return: AH = printer status (see #2887)
Note: on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
TI hook INT 4B and handle requests for DL<>00h
SeeAlso: AH=00h,AH=01h,INT 17/AH=02h
--------d-4B80-------------------------------
INT 4B - IBM SCSI interface
AH = 80h
AL = 00h-10h (Corel PowerSCSI INT4BCAM.SYS)
further details not yet available
--------d-4B8102DX0000-----------------------
INT 4B - Virtual DMA Specification (VDS) - GET VERSION
AX = 8102h
DX = 0000h
Return: CF clear if successful
AH = major version number
AL = minor version number
BX = product number (see #2888)
CX = product revision number
always 0000h for QMAPS and HPMM.SYS
always 0001h for Microsoft's EMM386.EXE v4.20-4.41
DX = flags (see #2890)
SI:DI = maximum DMA buffer size
CF set on error
AL = error code (see #2889)
Note: bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
apparently not always the case
SeeAlso: INT 2C/AX=002Bh,INT 31/AX=0400h,MEM 0040h:007Bh"4Bh"
Index: installation check;Virtual DMA Specification
(Table 2888)
Values for VDS product number:
0000h for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
0001h for Microsoft's EMM386.EXE
0003h for Windows 3.x WIN386.EXE
0300h OS/2 (all versions to date)
0EDCh for DR DOS 6.0 EMM386.SYS
4560h ("E`") for Qualitas' 386MAX
4D43h ("MC") for V Communications' Memory Commander
5145h ("QE") for Quarterdeck's QEMM-386
524Dh ("RM") for Helix's Netroom RM386
(Table 2889)
Values for VDS error code:
01h region not in contiguous memory
02h region crossed a physical alignment boundary
03h unable to lock pages
04h no buffer available
05h region too large for buffer
06h buffer currently in use
07h invalid memory region
08h region was not locked
09h number of physical pages greater than table length
0Ah invalid buffer ID
0Bh copy out of buffer range
0Ch invalid DMA channel number
0Dh disable count overflow
0Eh disable count underflow
0Fh function not supported
10h reserved flag bits set in DX
Bitfields for VDS flags:
Bit(s) Description (Table 2890)
0 PC/XT bus (DMA in first megabyte only)
1 physical buffer/remap region in first megabyte
2 automatic remap enabled
3 all memory is physically contiguous
4-15 reserved (zero)
--------d-4B8103-----------------------------
INT 4B - Virtual DMA Specification - LOCK DMA REGION
AX = 8103h
DX = flags (see #2891)
ES:DI -> DMA descriptor structure (see #2892,#2893,#2894)
Return: CF clear if successful
DDS physical address field filled in
DDS buffer ID field filled (0000h if no buffer allocated)
CF set on error
AL = error code (see #2889)
DDS region size field filled wth maximum contiguous length in bytes
BUGS: Windows 3.0 does not correctly support automatic remapping or copying
in enhanced mode
Windows 3.0 in enhanced mode does not return a correct code on error
SeeAlso: AX=8104h,AX=8105h
Bitfields for VDS flags:
Bit(s) Description (Table 2891)
0 reserved (zero)
1 data should be copied into buffer (ignored if 2 set)
2 buffer should not be allocated if region noncontiguous or crosses
physical alignment boundary specified by 4-5
3 don't attempt automatic remap
4 region must not cross 64K physical alignment boundary
5 region must not cross 128K physical alignment boundary
6-15 reserved (zero)
Format of DMA descriptor structure (DDS):
Offset Size Description (Table 2892)
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD buffer ID
0Ch DWORD physical address
Format of Extended DMA descriptor structure (EDDS):
Offset Size Description (Table 2893)
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD reserved
0Ch WORD number available
0Eh WORD number used
10h DWORD region 0 physical address
14h DWORD region 0 size in bytes
18h DWORD region 1 physical address
1Ch DWORD region 1 size in bytes
...
Format of Extended DMA descriptor structure (EDDS) with page table entries:
Offset Size Description (Table 2894)
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD reserved
0Ch WORD number available
0Eh WORD number used
10h DWORD page table entry 0 (same as 80386 page table entry)
14h DWORD page table entry 1
...
Note: bits 1-11 of the page table entries should be zero; bit 0 set if page
is present and locked
--------d-4B8104-----------------------------
INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
AX = 8104h
DX = flags
bit 0: reserved (zero)
bit 1: data should be copied out of buffer
bits 2-15 reserved (zero)
ES:DI -> DMA descriptor structure (see #2892,#2893) with region size,
physical address, and buffer ID fields set
Return: CF clear if successful
DDS physical address field set
DDS buffer ID field set (0000h if no buffer allocated)
CF set on error
AL = error code (see #2889)
DDS region size field filled wth maximum contiguous length in bytes
Note: Windows 3.0 does not check whether the region extends beyond the end of
a segment
BUG: Windows 3.0 in enhanced mode does not return a correct code on error
SeeAlso: AX=8103h,AX=8106h
--------d-4B8105-----------------------------
INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
AX = 8105h
DX = flags (see #2895)
ES:DI -> Extended DMA descriptor structure (see #2893,#2894)
region size, linear segment, linear offset, and number avail
fields set
Return: CF clear if successful
EDDS number used field set
if DX bit 6 set, lower 12 bits of BX = offset in first page
CF set on error
AL = error code (see #2889)
EDDS region size field filled with max length in bytes that can be
locked and described in the EDDS table
BUG: Windows 3.0 in enhanced mode may return zero instead of the physical
page address for pages which were originally not present
SeeAlso: AX=8103h,AX=8106h
Bitfields for VDS flags:
Bit(s) Description (Table 2895)
0-5 reserved (zero)
6 EDDS should be returned with page table entries
7 only present pages should be locked (not-present pages receive entry
of 0000h)
8-15 reserved (zero)
--------d-4B8106-----------------------------
INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
AX = 8106h
DX = flags (see #2896)
ES:DI -> Extended DMA descriptor structure (see #2893,#2894) returned
by AX=8105h
Return: CF clear if successful
CF set on error
AL = error code (see #2889)
Note: according to the Microsoft version of the VDS specification, the
actual scatter/gather list is ignored, while according to the IBM
version of the specification, "the result of a LOCK operation"
must be provided to this function
SeeAlso: AX=8104h,AX=8105h
Bitfields for VDS flags:
Bit(s) Description (Table 2896)
0-5 reserved (zero)
6 EDDS contains page table entries
7 EDDS may contain not-present pages (entry = 0000h)
8-15 reserved (zero)
--------d-4B8107-----------------------------
INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
AX = 8107h
DX = flags
bit 0: reserved (zero)
bit 1: data should be copied into buffer
bits 2-15 reserved (zero)
ES:DI -> DMA descriptor structure (see #2892) with region size set
(also region offset and region segment if DX bit 1 set)
Return: CF clear if successful
DDS physical address and buffer ID set
DDS region size filled with length of buffer
CF set on error
AL = error code (see #2889)
SeeAlso: AX=8108h
--------d-4B8108-----------------------------
INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
AX = 8108h
DX = flags
bit 0: reserved (zero)
bit 1: data should be copied out of buffer
bits 2-15 reserved (zero)
ES:DI -> DMA descriptor structure (see #2892,#2893) with buffer ID set
(also region size/region offset/segment if DX bit 1 set)
Return: CF clear if successful
CF set on error
AL = error code (see #2889)
BUG: under Windows 3.0 Enhanced mode, you must specify that data be copied
for this function to work correctly
SeeAlso: AX=8107h
--------d-4B8109DX0000-----------------------
INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
AX = 8109h
DX = 0000h
ES:DI -> DMA descriptor structure (see #2892,#2893) with buffer ID,
region segment/offset, and region size fields set
BX:CX = starting offset into DMA buffer
Return: CF clear if successful
CF set on error
AL = error code (see #2889)
BUG: Windows 3.0 Enhanced mode does not correctly interpret the copy count
SeeAlso: AX=810Ah
--------d-4B810ADX0000-----------------------
INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
AX = 810Ah
DX = 0000h
ES:DI -> DMA descriptor structure (see #2892,#2894) with buffer ID,
region segment/offset, and region size fields set
BX:CX = starting offset into DMA buffer
Return: CF clear if successful
CF set on error
AL = error code (see #2889)
BUG: Windows 3.0 Enhanced mode does not correctly interpret the copy count
SeeAlso: AX=8109h
--------d-4B810B-----------------------------
INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
AX = 810Bh
BX = DMA channel number
DX = 0000h
Return: CF clear if successful
CF set on error
AL = error code (see #2889)
SeeAlso: AX=810Ch
--------d-4B810C-----------------------------
INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
AX = 810Ch
BX = DMA channel number
DX = 0000h
Return: CF clear if successful
ZF set if disable count decremented to zero
CF set on error
AL = error code (see #2889)
SeeAlso: AX=810Bh
--------Q-4B810D-----------------------------
INT 4B - QEMM-386 - BUG
AX = 810Dh
Note: the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
call
--------h-4C---------------------------------
INT 4C - Z100 - Slave 8259 - S100 vectored line 4
SeeAlso: INT 4B"Z100",INT 4D"Z100"
--------b-4C---------------------------------
INT 4C - TI Professional PC - CLOCK/ANALOG INTERFACE
no details available
SeeAlso: INT 40"TI Professional",INT 49/AH=01h"TI"
SeeAlso: INT 4A/AH=00h"TI",INT 4B"TI Professional",INT 4D/AH=00h
SeeAlso: INT 58"TI Professional"
--------b-4C---------------------------------
INT 4C - Tandy 2000 - GET MEMORY SIZE
Return: AX = kilobytes of contiguous memory starting at 0
Note: this interrupt is identical to INT 12 on the Tandy 2000
SeeAlso: INT 12"BIOS",INT 4A"Tandy 2000",INT 4B"Tandy 2000",INT 51"Tandy 2000"
--------O-4C---------------------------------
INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
DS:BX -> CR-terminated command string
Return: FLAGS destroyed
SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
--------h-4D---------------------------------
INT 4D - Z100 - Slave 8259 - S100 vectored line 5
SeeAlso: INT 4C"Z100",INT 4E"Z100"
--------s-4D---------------------------------
INT 4D - IBM - M-Audio Adapter SUPPORT
no details available; supposedly documented in IBM form G571-0203-01
--------B-4D00-------------------------------
INT 4D - TI Professional PC - DISK - RESET DISK SYSTEM
AH = 00h
DL = drive (if bit 7 is set both hard disks and floppy disks reset)
Return: AH = status (see #0166 at INT 13/AH=01h)
CF clear if successful (returned AH=00h)
CF set on error
Note: this function is the same as INT 13/AH=00h on a standard PC BIOS
SeeAlso: AH=01h,AH=02h,AH=08h,AH=0Bh,INT 13/AH=00h,INT 46"TI Professional"
SeeAlso: INT 48/AH=00h"TI Professional",INT 4A/AH=00h"TI"
--------B-4D01-------------------------------
INT 4D - TI Professional PC - DISK - GET STATUS OF LAST OPERATION
AH = 01h
DL = drive (bit 7 set for hard disk)
Return: CF clear if status unchanged
CF set if status changed since last call
AH = 00h
AL = status of previous operation (see #0166 at INT 13/AH=01h)
Notes: this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
the TI's BIOS tranparently performs a number of retries, and an error
status is only reported if all of the retries fail. To get the error
status if the operation succeeded on a retry, use AH=07h instead
SeeAlso: AH=00h,AH=07h,INT 13/AH=01h
--------B-4D02-------------------------------
INT 4D - TI Professional PC - DISK - READ SECTOR(S) INTO MEMORY
AH = 02h
AL = number of sectors to read (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number 1-63 (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
if AH = 11h (corrected ECC error), AL = burst length
CF clear if successful
AH = status (see #0166 at INT 13/AH=01h)
AL = number of sectors transferred
ES:BX -> buffer for last sector processed (including one with errors)
SeeAlso: AH=00h,AH=01h,AH=03h,AH=04h,INT 13/AH=02h
--------B-4D03-------------------------------
INT 4D - TI Professional PC - DISK - WRITE SECTOR(S) FROM MEMORY
AH = 03h
AL = number of sectors to write (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number 1-63 (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> buffer containing data
Return: CF set on error
if AH = 11h (corrected ECC error), AL = burst length
CF clear if successful
AH = status (see #0166 at INT 13/AH=01h)
AL = number of sectors transferred
ES:BX -> buffer for last sector processed (including one with errors)
SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=03h
--------B-4D04-------------------------------
INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR CRC(S)
AH = 04h
AL = number of sectors to verify (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number 1-63 (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
if AH = 11h (corrected ECC error), AL = burst length
CF clear if successful
AH = status (see #0166 at INT 13/AH=01h)
AL = number of sectors transferred
ES:BX -> buffer for last sector processed (including one with errors)
Note: even though no data is transferred, ES:BX must still be valid
SeeAlso: AH=00h,AH=01h,AH=02h,AH=06h,INT 13/AH=04h
--------B-4D05-------------------------------
INT 4D - TI Professional PC - DISK - NOP
AH = 05h
Note: on the TI Pro, FORMAT.COM contains direct port I/O commands to perform
disk formatting, rather than using the BIOS
--------B-4D06-------------------------------
INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR(S)
AH = 06h
AL = number of sectors to verify (must be nonzero)
CH = low eight bits of cylinder number
CL = sector number 1-63 (bits 0-5)
high two bits of cylinder (bits 6-7, hard disk only)
DH = head number
DL = drive number (bit 7 set for hard disk)
ES:BX -> data buffer
Return: CF set on error
if AH = 11h (corrected ECC error), AL = burst length
CF clear if successful
AH = status (see #0166 at INT 13/AH=01h)
AL = number of sectors transferred
ES:BX -> buffer for last sector processed (including one with errors)
Note: even though no data is transferred, ES:BX must still be valid because
an actual comparison with disk data is performed, not just the CRC
check of the standard PC BIOS or INT 4D/AH=04h
SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=04h
--------B-4D07-------------------------------
INT 4D - TI Professional PC - DISK - GET RETRY STATUS OF LAST OPERATION
AH = 07h
DL = drive (bit 7 set for hard disk)
Return: CF clear if status unchanged
CF set if status changed since last call
AH = 00h
AL = status of previous operation (see #0166 at INT 13/AH=01h)
Notes: this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
the TI's BIOS tranparently performs a number of retries; this function
returns the error status of a failed operation even if the operation
succeeded on a retry
SeeAlso: AH=00h,AH=01h,INT 13/AH=01h
--------B-4D08-------------------------------
INT 4D - TI Professional PC - DISK - SET STANDARD DEVICE INTERFACE TABLE
AH = 08h
DL = drive number (00h-03h)
AL = drive type
00h single-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
01h double-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
02h single-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
03h double-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
Return: nothing???
SeeAlso: AH=00h,AH=09h
--------B-4D09-------------------------------
INT 4D - TI Professional PC - DISK - SET DEVICE INTERFACE TABLE ADDRESS
AH = 09h
DL = drive number (00h-07h)
ES:BX -> Device Interface Table (see #2897)
Return: nothing???
SeeAlso: AH=00h,AH=08h,AH=0Ah,INT 1E
Format of TI Professional PC Device Interface Table:
Offset Size Description (Table 2897)
00h DWORD -> entry point for disk routine
04h WORD bytes per sector
06h BYTE sectors per track
07h BYTE number of heads
08h BYTE number of cylinders
09h BYTE retry count
0Ah BYTE precompensation start
SeeAlso: #0960 at INT 1E
--------B-4D0A-------------------------------
INT 4D - TI Professional PC - DISK - GET DEVICE INTERFACE TABLE ADDRESS
AH = 0Ah
DL = drive number (00h-07h)
Return: AH = status
ES:BX -> Device Interface Table (see #2897)
SeeAlso: AH=00h,AH=08h,AH=09h,INT 1E
--------B-4D0B-------------------------------
INT 4D - TI Professional PC - DISK - TURN OFF ALL DRIVES
AH = 0Bh
Return: AH = 00h
Note: used for diagnostics or to conserve power
SeeAlso: AH=00h
--------h-4E---------------------------------
INT 4E - Z100 - Slave 8259 - S100 vectored line 6
SeeAlso: INT 4D"Z100",INT 4F"Z100"
--------b-4E00-------------------------------
INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - SET BIOS DATE
AH = 00h
BX = number of days since January 1, 1980
Return: nothing
SeeAlso: AH=01h,AH=02h
SeeAlso: INT 40"TI Professional",INT 48/AH=00h"TI Professional"
SeeAlso: INT 4A/AH=00h"TI",INT 4F"TI Professional"
--------b-4E01-------------------------------
INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - SET BIOS TIME
AH = 01h
CH = hours
CL = minutes
DH = seconds
DL = hundredths
Return: nothing
Note: the BIOS does not validate the data passed to this function
SeeAlso: AH=00h,AH=02h
--------b-4E02-------------------------------
INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - GET BIOS DATA AND TIME
AH = 02h
Return: AX = number of days since January 1, 1980
CH = hours
CL = minutes
DH = seconds
DL = hundredths
SeeAlso: AH=00h,AH=01h
--------h-4F---------------------------------
INT 4F - Z100 - Slave 8259 - S100 vectored line 7
SeeAlso: INT 4E"Z100"
--------b-4F---------------------------------
INT 4F - TI Professional PC - SYSTEM CONFIGURATION CALL
Return: AX = system configuration word (see #2898)
BX = size of contiguous DOS memory in paragraphs
SeeAlso: INT 11"BIOS",INT 12"BIOS",INT 40"TI Professional",INT 48/AH=09h
SeeAlso: INT 49/AH=01h"TI",INT 4B"TI Professional",INT 4D/AH=00h
SeeAlso: INT 4E"TI Professional"
Bitfields for TI Professional PC system configuration:
Bit(s) Description (Table 2898)
0 floppy drive 0 (A:, internal) installed
1 floppy drive 1 (B:, internal) installed
2 floppy drive 2 (C:, external) installed
3 floppy drive 3 (D:, external) installed
4 drive A: is 96tpi (80 tracks)
5 drive A: is double-sided
6 60 Hz power instead of 50 Hz
7 hard disk (E: or E:/F:) installed
8 serial port 1 installed
9 serial port 2 installed
10 serial port 3 installed
11 serial port 4 installed
14-12 installed graphics RAM
000 none (text-only system)
001 bank A only (graphics limited to 2 of 8 colors)
111 banks A/B/C (graphics supports 8 of 8 colors)
15 clock/analog board installed
--------d-4F8100-----------------------------
INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
AX = 8100h
ES:BX -> CAM Control Block (CCB) (see #2900)
Return: AH = status
00h successful
01h invalid CCB address (0000h:0000h)
Note: the SCSI Interface Module (SIM) may complete the requested function
and invoke the completion callback function before this call returns
SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
(Table 2899)
Values for CAM function code:
00h NOP
01h execute SCSI I/O
02h get device type
03h path inquiry
04h release SIM queue
05h set async callback
06h set device type
07h-0Fh reserved
10h abort SCSI command
11h reset SCSI bus
12h reset SCSI device
13h terminate I/O process
14h-1Fh reserved
20h engine inquiry
21h execute engine request
22h-2Fh reserved
30h enable logical unit number
31h execute target I/O
32h-7Fh reserved
80h-FFh vendor-specific functions
Format of CAM Control Block:
Offset Size Description (Table 2900)
00h DWORD physical address of this CCB
04h WORD CAM control block length
06h BYTE function code (see #2899)
07h BYTE CAM status (see #2903)
08h BYTE SCSI status
09h BYTE path ID (FFh = XPT)
0Ah BYTE target ID
0Bh BYTE logical unit number
0Ch WORD CAM flags (see #2901)
0Eh BYTE CAM address flags (see #2902)
0Fh BYTE target-mode flags (see #2904)
---function 02h---
10h DWORD pointer to 36-byte buffer for inquiry data or 0000h:0000h
14h BYTE peripheral device type of target logical unit number
---function 03h---
10h BYTE version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
09h-FFh = rev no, i.e. 23h = rev 2.3)
11h BYTE SCSI capabilities (see #2905)
12h BYTE target mode support
bit 7: processor mode
bit 6: phase-cognizant mode
bit 5-0: reserved
13h BYTE miscellaneous flags
bit 7: scanned high to low instead of low to high
bit 6: removables not included in scan
bit 5: inquiry data not kept by XPT
bits 4-0: reserved
14h WORD engine count
16h 14 BYTEs vendor-specific data
24h DWORD size of private data area
28h DWORD asynchronous event capabilities (see #2906)
2Ch BYTE highest path ID assigned
2Dh BYTE SCSI device ID of initiator
2Eh 2 BYTEs reserved
30h 16 BYTEs SIM vendor ID
40h 16 BYTEs HBA (host bus adaptor) vendor ID
50h 4 BYTEs operating-system dependant usage
---functions 00h,04h,11h,12h---
no additional fields
---function 05h---
10h DWORD asynchronous event enables (refer to function 03h above)
14h DWORD pointer to asynchronous callback routine (see #2912)
18h DWORD pointer to peripheral driver buffer
1Ch BYTE size of peripheral buffer
---function 06h---
10h BYTE peripheral device type of target
---functions 10h,13h---
10h DWORD pointer to CCB to be aborted
---function 20h---
10h WORD engine number
12h BYTE engine type
00h buffer memory
01h lossless compression
02h lossy compression
03h encryption
13h BYTE engine algorithm ID
00h vendor-unique
01h LZ1 variation 1 (STAC)
02h LZ2 variation 1 (HP DCZL)
03h LZ2 variation 2 (Infochip)
14h DWORD engine memory size
---function 21h---
10h DWORD pointer to peripheral driver
14h 4 BYTEs reserved
18h DWORD OS-dependent request-mapping info
1Ch DWORD address of completion callback routine
20h DWORD pointer to scatter/gather list or data buffer
24h DWORD length of data transfer
28h DWORD pointer to engine buffer data
2Ch 2 BYTEs reserved
2Eh WORD number of scatter/gather entries
30h DWORD maximum destination data length
34h DWORD length of destination data
38h DWORD source residual length
3Ch 12 BYTEs reserved
48h DWORD OS-dependent timeout value
4Ch 4 BYTEs reserved
50h WORD engine number
52h WORD vendor-unique flags
54h 4 BYTEs reserved
58h N BYTEs private data area for SIM
---function 30h---
10h WORD group 6 vendor-unique CDB length
12h WORD group 7 vendor-unique CDB length
14h DWORD pointer to target CCB list
18h WORD number of target CCBs
---other functions---
10h DWORD pointer to peripheral driver
14h DWORD pointer to next CCB
18h DWORD OS-dependent request mapping information
1Ch DWORD address of completion callback routine (see #2911)
20h DWORD pointer to scatter/gather list or data buffer
24h DWORD length of data transfer
28h DWORD pointer to sense info buffer
2Ch BYTE length of sense info buffer
2Dh BYTE CDB length
2Eh WORD number of scatter/gather entries
scatter/gather list is array of 2N DWORDs, each pair specifying
the address and length of a data block
30h 4 BYTEs vendor-specific data
34h BYTE (ret) SCSI status
35h BYTE (ret) auto-sense residual length
36h 2 BYTEs reserved
38h DWORD (ret) residual length
40h 12 BYTEs Command Descriptor Block (CDB) (see #2907,#2908,#2909)
44h DWORD OS-dependent timeout value
48h DWORD pointer to message buffer
4Ch WORD length of message buffer
4Eh WORD vendor-unique flags
50h BYTE tag queue action
51h 3 BYTEs reserved
54h N BYTEs private data area for SIM
Bitfields for CAM flags:
Bit(s) Description (Table 2901)
0 CDB is a pointer
1 tagged queue action enable
2 linked CDB
3 disable callback on completion
4 scatter/gather
5 disable autosense
7-6 direction (00 reserved, 01 in, 10 out, 11 no data transfer)
9-8 reserved
10 engine synchronize
11 SIM queue freeze
12 SIM queue priority
1 head insertion
0 tail insertion (normal)
13 disable synchronous transfers \ mutually
14 initiate synchronous transfers / exclusive
15 disable disconnect
Bitfields for CAM address flags:
Bit(s) Description (Table 2902)
7 SG list/data (0 = host, 1 = engine)
6 CDB pointer (6-1: 0=virtual addr, 1=phys addr)
5 SG list/data
4 sense buffer
3 message buffer
2 next CCB
1 callback on completion
0 reserved
(Table 2903)
Values for CAM status:
00h request in progress
01h request successful
02h host aborted request
03h unable to abort request
04h request completed with error
05h CAM is busy
06h invalid request
07h invalid path ID
08h no such SCSI device
09h unable to terminate I/O process
0Ah timeout on target selection
0Bh timeout on command
0Dh receive message rejection
0Eh sent/received SCSI bus reset
0Fh detected uncorrectable parity error
10h Autosense request failed
11h no HBA detected
12h data over/underrun
13h bus freed unexpectedly
14h target bus phase sequence failure
15h CCB too small
16h requested capability not available
17h sent bus device reset
18h terminate I/O process
38h invalid LUN
39h invalid target ID
3Ah unimplemented function
3Bh nexus not established
3Ch invalid initiator ID
3Dh received SCSI Command Descriptor Block
3Eh LUN already enabled
3Fh SCSI bus busy
Note: bit 6 set to indicate frozen SIM queue
bit 7 set to indicate valid autosense
Bitfields for CAM target-mode flags:
Bit(s) Description (Table 2904)
7 data buffer valid
6 status valid
5 message buffer valid
4 reserved
3 phase-cognizant mode
2 target CCB available
1 disable autodisconnect
0 disable autosave/restore
Bitfields for SCSI capabilities:
Bit(s) Description (Table 2905)
7 modify data pointers
6 wide bus (32 bits)
5 wide bus (16 bits)
4 synchronous transfers
3 linked commands
2 reserved
1 tagged queueing
0 soft reset
Bitfields for CAM asynchronous event capabilities:
Bit(s) Description (Table 2906)
31-24 vendor-specific
23-8 reserved
7 new devices found during rescan
6 SIM module deregistered
5 SIM module registered
4 sent bus device reset to target
3 SCSI AEN
2 reserved
1 unsolicited reselection
0 unsolicited SCSI bus reset
Format of Six-Byte SCSI Command Descriptor Block (CDB):
Offset Size Description (Table 2907)
00h BYTE operation code (see #2910)
01h BYTE logical unit number (bits 7-5), SCSI-1/SCSI-2
MSB of logical block address (bits 4-0)
02h WORD logical block address (low word)
04h BYTE transfer length
05h BYTE control byte
SeeAlso: #2908,#2909
Format of Ten-Byte SCSI Command Descriptor Block (CDB):
Offset Size Description (Table 2908)
00h BYTE operation code (see #2910)
01h BYTE logical unit number (bits 7-5), SCSI-1/SCSI-2
reserved in SCSI-3
02h DWORD logical block address (low word)
06h BYTE reserved
07h WORD transfer length
09h BYTE control byte
SeeAlso: #2907,#2909
Format of Twelve-Byte SCSI Command Descriptor Block (CDB):
Offset Size Description (Table 2909)
00h BYTE operation code (see #2910)
01h BYTE logical unit number (bits 7-5), SCSI-1/SCSI-2
reserved in SCSI-3
02h DWORD logical block address (low word)
06h DWORD transfer length
0Ah BYTE reserved
0Bh BYTE control byte
SeeAlso: #2907,#2908
(Table 2910)
Values for SCSI CDB operation code for direct-access devices:
00h Test Unit Ready
01h Rezero Unit
03h Request Sense
04h Format Unit
07h Reassign Blocks
08h Read (6-byte CDB)
0Ah Write (6-byte CDB)
0Bh Seek (6-byte CDB)
12h Inquiry
15h Mode Select (6-byte CDB)
16h Reserve
17h Release
18h Copy
1Ah Mode Sense (6-byte CDB)
1Bh Start/Stop Unit
1Ch Receive Diagnostic Results
1Dh Send Diagnostic
1Eh Prevent/Allow Medium Removal
25h Read Capacity
28h Read (10-byte CDB)
2Ah Write (10-byte CDB)
2Bh Seek (10-byte CDB)
2Eh Write and Verify
2Fh Verify
30h Search Data High
31h Search Data Equal
32h Search Data Low
33h Set Limits
34h Prefetch
35h Synchronize Cache
36h Lock/Unlock Cache
37h Read Defect Data
39h Compare
3Ah Copy and Verify
3Bh Write Buffer
3Ch Read Buffer
3Eh Read Long
3Fh Write Long
40h Change Definition
41h Write Same
4Ch Log Select
4Dh Log Sense
55h Mode Select (10-byte CDB)
5Ah Mode Sense (10-byte CDB)
SeeAlso: #2907,#2908,#2909
(Table 2911)
Values completion callback function is called with:
interrupts disabled
ES:BX -> completed CCB
(Table 2912)
Values asynchronous callback function is called with:
AH = opcode
AL = path ID generating callback
DH = target ID causing event
DL = LUN causing event
CX = data byte count (if applicable)
ES:BX -> data buffer (if applicable)
Return: all registers preserved
--------d-4F8200CX8765-----------------------
INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
AX = 8200h
CX = 8765h
DX = CBA9h
Return: AH = 00h if installed
CX = 9ABCh
DX = 5678h
ES:DI -> "SCSI_CAM"
SeeAlso: AX=8100h,INT 4B"Common Access Method"
--------N-50---------------------------------
INT 50 - TIL Xpert AIM (X.25)
AH = function
--------H-50---------------------------------
INT 50 - IRQ0 relocated by DESQview
Range: INT 50 to INT F8, selected automatically
Notes: this is the default location for older versions; DESQview v2.26+
searches for unused ranges of interrupts and uses the lowest
available range in its list for relocating these IRQs and the next
lowest for relocating IRQ8-IRQ15
a range of eight interrupts starting at a multiple of 8 is considered
available if all vectors are identical and it has not been excluded
with an /XB:nn commandline switch
the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
are available, F8h and then 50h are used anyway)
the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
are available, F8h and then F0h are used anyway)
SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
SeeAlso: INT D8"Screen Thief"
--------H-50---------------------------------
INT 50 - IRQ0 relocated by IBM 3278 emulation control program
SeeAlso: INT 51"IBM 3278"
--------H-50---------------------------------
INT 50 - IRQ0 relocated by OS/2 v1.x
SeeAlso: INT 51"OS/2"
----------50---------------------------------
INT 50 - TI Professional PC - FATAL SOFTWARE ERROR TRAP
Desc: the default handler generates a System Error message and halts the
computer such that only Ctrl-Alt-Del can restart operation
Note: documented as "for system use only"; intended for multi-tasking
software
SeeAlso: INT 40"TI Professional",INT 4F"TI Professional"
SeeAlso: INT 51"TI Professional",INT 53"TI Professional"
--------V-500000-----------------------------
INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
AX = 0000h
ES:BX -> name string or ES:0000h if none
CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
Return: AX = window handle or
0000h if not installed
FFFFh on error
SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
--------V-500001-----------------------------
INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
AX = 0001h
DI = window handle
SeeAlso: AX=0000h
--------V-500002-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
AX = 0002h
BL = character
BH = attribute
DL = column
DH = row
DI = window handle
Return: AX = status
0000h if successful
FFFFh if outside window
SeeAlso: AX=0000h
--------l-500002-----------------------------
INT 50 - PC Thuis Organizer Shell - PLOT TEXT
AX = 0002h
ES:BX -> text string
DH,DL = row,column of upper left corner
DI = window handle
Return: AX = status
0000h successful (text fits in window)
FFFFh error
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
--------V-500003-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
AX = 0003h
ES:BX -> text string
CX = string length (0000h if ASCIZ string)
DL = position (FFh centered, else flush left)
DH = starting row
DI = window handle
Return: AX = status
0000h successful
FFFFh did not fit in window
--------l-500003-----------------------------
INT 50 - PC Thuis Organizer Shell - WRITE FILE
AX = 0003h
ES:BX -> data to be written
CX = number of bytes to write
DS:SI -> filename
Return: AX = status
0000h successful
FFFFh error
SeeAlso: AX=0004h"Shell"
--------V-500004-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - GET KEY
AX = 0004h
CH = type
00h any key
01h 'J' or 'N' (Dutch for yes/no)
Return: AX = key
SeeAlso: INT 16/AH=00h
--------l-500004-----------------------------
INT 50 - PC Thuis Organizer Shell - READ FILE
AX = 0004h
ES:BX -> buffer for data
CX = number of bytes to read or 0000h for entire file
DL = file type
01h setting shell
02h setting sterm
03h INT21 file
DS:SI -> filename
Return: AX = status
0000h successful
FFFFh error
Note: file type numbers are maintained by John Vanderaart; if a new file type
is needed, a type number should be requested from him through the
magazine:
PC Thuis BV
Spaarne 55
2011 CE HAARLEM
The Netherlands
SeeAlso: AX=0003h"Shell"
--------V-500005-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
AX = 0005h
BL = new attribute
CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
DI = window handle
--------l-500005-----------------------------
INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
AX = 0005h
ES:BX -> prompt string (ES:0000h if no prompt)
Return: AX = key pressed
0000h "J" (Dutch "Ja" = "Yes")
FFFFh "N" (Dutch "Nee" = "No")
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
SeeAlso: AX=0008h"PC Thuis"
--------V-500006-----------------------------
INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
AX = 0006h
ES:BX -> text string
CH = type of input (see #2913)
DH,DL = row,column of upper left corner
DI = window handle
Return: AX = key which terminated entry
0000h Enter
0001h Esc
0002h Down arrow
0003h Up arrow
0004h F10
(Table 2913)
Values for type of input to Vanderaart Text Windows:
00h everything
01h uppercase only
02h positive numbers
03h Dutch postal code ("9999 AA")
04h 'J' or 'N' (Dutch yes/no)
05h telephone or FAX number
06h positive or negative number
07h date (dd/mm/yy)
08h money
09h '1' through '8'
0Ah '1' through '4'
0Bh uppercase filenames
--------l-500006-----------------------------
INT 50 - PC Thuis Organizer Shell - ALERT USER
AX = 0006h
ES:BX -> string
--------l-500007-----------------------------
INT 50 - PC Thuis Organizer Shell - DO LINE
AX = 0007h
ES:BX -> text string
CX = string length in bytes (0000h if NUL-terminated)
DL = FFh to center string, else flush left
DH = upper left row
DI = window handle
Return: AX = status
0000h successful
FFFFh error
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
SeeAlso: AX=0008h
--------l-500008-----------------------------
INT 50 - PC Thuis Organizer Shell - DO MENU
AX = 0008h
ES:BX -> menu structure
Return: AL = index 1 or FFh if not selected
AH = index 2 or FFh if not selected
BL = index 3 or FFh if not selected
BH = index 4 or FFh if not selected
SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
--------l-500009-----------------------------
INT 50 - PC Thuis Organizer Shell - MESSAGE ON
AX = 0009h
ES:BX -> message string
SeeAlso: AX=000Ah
--------l-50000A-----------------------------
INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
AX = 000Ah
SeeAlso: AX=0009h
--------l-50000B-----------------------------
INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
AX = 000Bh
BL = new attribute
CH,CL = row,column of upper left corner
DH,DL = row,column of lower right corner
DI = window handle
--------l-50000C-----------------------------
INT 50 - PC Thuis Organizer Shell - DO REQUEST
AX = 000Ch
ES:BX -> request structure
Return: AX = status
0000h confirmed
FFFFh denied
SeeAlso: AX=0008h
--------l-50000D-----------------------------
INT 50 - PC Thuis Organizer Shell - EDIT LINE
AX = 000Dh
ES:BX -> text string
CL = length
CH = input type (see #2914)
DH,DL = row,column of upper left corner
DI = window handle
Return: AX = result code
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
Bitfields for input type:
Bit(s) Description (Table 2914)
0 force uppercase
1 integer
2 no spaces allowed
3 no cursor keys
--------l-50000E-----------------------------
INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
AX = 000Eh
BL = character
BH = attribute
DH,DL = row,column at which to plot
DI = window handle
Return: AX = status
0000h successful
FFFFh errror
--------l-50000F-----------------------------
INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
AX = 000Fh
BL = character
BH = attribute
DI = window handle
--------l-500010-----------------------------
INT 50 - PC Thuis Organizer Shell - TRACE MENU
AX = 0010h
ES:BX -> first menu structure
CL = hotkey to look up
Return: AL = index 1 or FFh if not selected
AH = index 2 or FFh if not selected
BL = index 3 or FFh if not selected
BH = index 4 or FFh if not selected
Index: hotkeys;PC Thuis Organizer Shell
--------l-500011-----------------------------
INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
AX = 0011h
DS:SI -> source
ES:DI -> destination
CX = number of bytes to move (0000h = until NUL string terminator???)
SeeAlso: AX=0012h
--------l-500012-----------------------------
INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
AX = 0012h
DS:SI -> source
ES:DI -> destination
CX = number of bytes to compare (0000h=until NUL string terminator???)
Return: AX = status
0000h same
FFFFh different
SeeAlso: AX=0011h
--------l-500013-----------------------------
INT 50 - PC Thuis Organizer Shell - GET KEY
AX = 0013h
CH = type flags
bit 0: force uppercase
bit 1: integer
bit 2: no spaces
Return: AX = keystroke
--------l-500014-----------------------------
INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
AX = 0014h
BL = direction
06h up
07h down
BH = attribute
DI = window handle
SeeAlso: INT 10/AH=06h,INT 10/AH=07h
--------l-500015-----------------------------
INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
AX = 0015h
BL = handle size
00h 65536 bytes (64K)
01h 65535 bytes (64K-1)
02h 32768 bytes (32K)
03h 32767 bytes (32K-1)
Return: AX = segment
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
published in the June/July 1990 issue of PC Thuis Power magazine
SeeAlso: INT 21/AH=48h
--------H-51---------------------------------
INT 51 - IRQ1 relocated by DESQview
Range: INT 51 to INT F9, selected automatically
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
--------H-51---------------------------------
INT 51 - IRQ1 relocated by IBM 3278 emulation control program
SeeAlso: INT 50"IBM 3278",INT 54"IBM 3278"
--------H-51---------------------------------
INT 51 - IRQ1 relocated by OS/2 v1.x
SeeAlso: INT 50"OS/2",INT 54"OS/2"
----------51---------------------------------
INT 51 - TI Professional PC - RESTART TIMING EVENT
AX = timer count in 25ms intervals
DS:DI -> timing-event table (see #2915)
Note: documented as "for system use only"; intended for multi-tasking
software
SeeAlso: INT 50"TI Professional",INT 52"TI Professional"
Format of TI Professional PC timing event table:
Offset Size Description (Table 2915)
00h WORD offset of next event table entry
02h BYTE normally unused (FFh)
03h BYTE flags:
bit 7 set if timing event active
bits 6-0 not used by BIOS (0), but could be used by option ROMs
04h WORD timeout count (decremented every 25ms when active)
06h WORD offset of event handler (in segment F400h) to call on event
timeout; the F400h segment allows addressing both system ROMs
and the first 16K of memory (due to the 1M memory wraparound)
--------b-51---------------------------------
INT 51 - Tandy 2000 - KEYBOARD SERVICES
Note: this interrupt is identical to INT 16 on Tandy 2000
SeeAlso: INT 16/AH=00h,INT 16/AH=01h,INT 16/AH=02h,INT 16/AH=04h"Tandy"
SeeAlso: INT 16/AH=04h,INT 4A"Tandy 2000",INT 4C"Tandy 2000",INT 52"Tandy 2000"
--------H-52---------------------------------
INT 52 - IRQ2 relocated by DESQview
Range: INT 52 to INT FA, selected automatically
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
--------H-52---------------------------------
INT 52 - IRQ2 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
----------52---------------------------------
INT 52 - TI Professional PC - CANCEL TIMING EVENT
DS:DI -> timing-event table (see #2915)
Note: documented as "for system use only"; intended for multi-tasking
software
SeeAlso: INT 51"TI Professional",INT 53"TI Professional"
--------b-52---------------------------------
INT 52 - Tandy 2000 - VIDEO SERVICES
Note: this interrupt is identical to INT 10
SeeAlso: INT 10/AH=00h,INT 10/AH=01h,INT 10/AH=08h,INT 10/AH=0Eh
SeeAlso: INT 4A"Tandy 2000",INT 51"Tandy 2000",INT 53"Tandy 2000"
--------H-53---------------------------------
INT 53 - IRQ3 relocated by DESQview
Range: INT 53 to INT FB, selected automatically
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 54"DESQview",INT 58"DESQview"
--------H-53---------------------------------
INT 53 - IRQ3 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 50"IBM 3278",INT 51"OS/2"
----------53---------------------------------
INT 53 - TI Professional PC - SVC INTERFACE
Notes: documented as "for system use only"; intended for multi-tasking
software
this interrupt is not used by the BIOS; the default handler generates
a system error trap (see INT 51"TI Professional")
SeeAlso: INT 50"TI Professional",INT 54"TI Professional"
--------b-53---------------------------------
INT 53 - Tandy 2000 - SERIAL COMMUNICATIONS
Note: this interrupt is identical to INT 14 on Tandy 2000
SeeAlso: INT 14/AH=00h"SERIAL",INT 14/AH=01h,INT 14/AH=02h,INT 14/AH=03h
SeeAlso: INT 14/AH=04h"Tandy 2000",INT 52"Tandy 2000",INT 54"Tandy 2000"
--------N-53---------------------------------
INT 53 - WEB??? - API
BX = function
0000h ???
AX = ???
Return: AX = ???
0004h ???
0009h ???
0015h
AX = ???
DX = ???
0017h
Return: ???
Notes: the installation check consists of looking for the signature "WEBCO"
immediately prior to the interrupt handler
the above calls are made by Show Partner F/X v3.6 (see INT 10/AH=53h)
Index: installation check;unknown|installation check;WEBCO
--------H-54---------------------------------
INT 54 - IRQ4 relocated by DESQview
Range: INT 54 to INT FC, selected automatically
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 58"DESQview"
--------H-54---------------------------------
INT 54 - IRQ4 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
----------54---------------------------------
INT 54 - TI Professional PC - ACTIVATE TASK SUBROUTINE
Notes: documented as "for system use only"; intended for multi-tasking
software
this interrupt is not used by the BIOS; the default handler generates
a system error trap (see INT 51"TI Professional")
SeeAlso: INT 50"TI Professional",INT 53"TI Professional"
--------b-54---------------------------------
INT 54 - Tandy 2000 - LINE PRINTER
Note: this interrupt is identical to INT 17 on Tandy 2000
SeeAlso: INT 17/AH=00h,INT 17/AH=01h,INT 17/AH=02h,INT 4A"Tandy 2000"
SeeAlso: INT 53"Tandy 2000",INT 55"Tandy 2000"
--------X-545400-----------------------------
INT 54 U - Toshiba PCMCIA2 - INSTALLATION CHECK
AX = 5400h
Return: AX = 0054h if installed
CX:DX -> INT function handler
--------H-55---------------------------------
INT 55 - IRQ5 relocated by DESQview
Range: INT 55 to INT FD, selected automatically
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 58"DESQview"
--------H-55---------------------------------
INT 55 - IRQ5 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
--------b-55---------------------------------
INT 55 - TI Professional PC - RESERVED FOR FUTURE USE
Notes: documented as "for system use only"; intended for multi-tasking
software
this interrupt is not used by the BIOS; the default handler generates
a system error trap (see INT 51"TI Professional")
SeeAlso: INT 50"TI Professional",INT 56"TI Professional"
--------b-55---------------------------------
INT 55 - Tandy 2000 - SYSTEM CLOCK
Note: this interrupt is identical to INT 1A on Tandy 2000
SeeAlso: INT 1A/AH=00h,INT 1A/AH=01h,INT 1A/AH=02h"Tandy 2000"
SeeAlso: INT 1A/AH=03h"Tandy 2000",INT 54"Tandy 2000",INT 56"Tandy 2000"
--------H-56---------------------------------
INT 56 - IRQ6 relocated by DESQview
Range: INT 56 to INT FE, selected automatically
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 58"DESQview"
--------H-56---------------------------------
INT 56 - IRQ6 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
--------b-56---------------------------------
INT 56 - TI Professional PC - RESERVED FOR FUTURE USE
Notes: documented as "for system use only"; intended for multi-tasking
software
this interrupt is not used by the BIOS; the default handler generates
a system error trap (see INT 51"TI Professional")
SeeAlso: INT 50"TI Professional",INT 55"TI Professional"
--------b-56---------------------------------
INT 56 - Tandy 2000 - FLOPPY DISK SERVICES
Note: this interrupt is identical to INT 13 on Tandy 2000
SeeAlso: INT 13/AH=00h,INT 13/AH=01h,INT 13/AH=02h,INT 13/AH=03h
SeeAlso: INT 4A"Tandy 2000",INT 51"Tandy 2000",INT 55"Tandy 2000"
--------H-57---------------------------------
INT 57 - IRQ7 relocated by DESQview
Range: INT 57 to INT FF, selected automatically
Note: this is the default location for older versions; see INT 50"DESQview"
for details of interrupt relocation
SeeAlso: INT 50"DESQview",INT 58"DESQview"
--------H-57---------------------------------
INT 57 - IRQ7 relocated by IBM 3278 emulation control program, OS/2 v1.x
SeeAlso: INT 51"IBM 3278",INT 51"OS/2"
--------b-57---------------------------------
INT 57 C - TI Professional PC - CRT MAPPING HOOK
AX/BX/CX/DX/BP/SI/DI same as on entry to CRT subroutine (e.g. INT 49)
DS = BIOS system segment
ES = DE00h
Return: DF/IF flags must be preserved
ES,DS,BP preserved
AX,BX,CX,DX,SI,DI may be changed as necessary to modify the original
call
Desc: hooking this vector permits programs to intercept or modify all
screen output, including both application calls to INT 49 and
calls generated internally by the BIOS which bypass INT 49
Note: by default, this vector points at an IRET instruction
SeeAlso: INT 49/AH=01h"TI",INT 50"TI Professional"
--------H-58---------------------------------
INT 58 - IRQ8 relocated by DESQview 2.26+
Range: INT 58 to INT F8, selected automatically
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 70
--------H-58---------------------------------
INT 58 - IRQ0 relocated by DoubleDOS
SeeAlso: INT 08
--------b-58---------------------------------
INT 58 C - TI Professional PC - SYSTEM TIMER 25ms HOOK
Desc: called from the hardware timer tick interrupt, after executing the
first four BIOS timing events, updating the system clock, invoking
INT 5A if required, saving registers, and switching to a temporary
stack (the one reserved for IRQ3)
Notes: the handler for this interrupt may destroy AX,BX,DI,ES but must
preserve all other registers; 8 WORDs of stack space are available,
of which at most 4 may be used if the handler enables interrupts
if the handler switches stacks (because more than 4/8 WORDs are
required), the original stack must be restored before chaining to
the previous handler
SeeAlso: INT 43"TI Professional",INT 4C"TI Professional"
SeeAlso: INT 5A"TI Professional"
--------H-59---------------------------------
INT 59 - IRQ9 relocated by DESQview 2.26+
Range: INT 59 to INT F9, selected automatically
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 58"DESQview",INT 5A"DESQview",INT 71
--------H-59---------------------------------
INT 59 - IRQ1 relocated by DoubleDOS
SeeAlso: INT 09
--------b-59---------------------------------
INT 59 - TI Professional PC - COMMON ROM HARDWARE INTERRUPT EXIT VECTOR
Desc: all hardware interrupts on the TI Pro jump indirectly to the handler
pointed at by this interrupt vector to finish their handling of
the hardware interrupt
Notes: the default handler decrements the interrupt count, restores registers
(including the stack pointer), sends an EOI to the interrupt
controller, and finally does an IRET
can be used by multitaskers which need to get control after every
hardware interrupt
SeeAlso: INT 40"TI Professional",INT 47"TI Professional"
SeeAlso: INT 53"TI Professional"
--------V-59---------------------------------
INT 59 - GSS Computer Graphics Interface (GSS*CGI)
DS:DX -> block of 5 array pointers
Return: CF set on error
AX = error code
CF clear if successful
AX = return code
Note: INT 59 is the means by which GSS*CGI language bindings communicate with
GSS*CGI device drivers and the GSS*CGI device driver controller.
also used by the IBM Graphic Development Toolkit
--------H-5A---------------------------------
INT 5A - IRQ10 relocated by DESQview 2.26+
Range: INT 5A to INT FA, selected automatically
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 59"DESQview",INT 5B"DESQview",INT 72
--------H-5A---------------------------------
INT 5A - IRQ2 relocated by DoubleDOS
SeeAlso: INT 0A"IRQ2"
--------N-5A---------------------------------
INT 5A - PC Cluster adapter BIOS entry address
???
Return: ???
SeeAlso: INT 5B"PC Cluster"
--------b-5A---------------------------------
INT 5A - TI Professional PC - SYSTEM TIMER 100ms HOOK
Desc: called from the hardware timer tick interrupt, after executing the
first four BIOS timing events, updating the system clock, saving
registers, and switching to a temporary stack (the one reserved
for IRQ3), but before calling INT 58
no details available
Notes: this interrupt is invoked on every fourth timer interrupt
the handler for this interrupt may destroy AX,BX,DI,ES but must
preserve all other registers; 8 WORDs of stack space are available,
of which at most 4 may be used if the handler enables interrupts
if the handler switches stacks (because more than 4/8 WORDs are
required), the original stack must be restored before chaining to
the previous handler
SeeAlso: INT 43"TI Professional",INT 4C"TI Professional"
SeeAlso: INT 58"TI Professional"
--------H-5B---------------------------------
INT 5B - IRQ11 relocated by DESQview 2.26+
Range: INT 5B to INT FB, selected automatically
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 5A"DESQview",INT 5C"DESQview",INT 73
--------H-5B---------------------------------
INT 5B - IRQ3 relocated by DoubleDOS
SeeAlso: INT 0B
--------N-5B---------------------------------
INT 5B - PC cluster adapter - RELOCATED INT 19
SeeAlso: INT 19,INT 5A"PC Cluster"
--------N-5B---------------------------------
INT 5B - AT&T Starlan Extended NetBIOS (variable length names)
ES:BX -> Network Control Block (see #2916)
Return: AL = status (see #2919)
SeeAlso: INT 5C"NetBIOS"
Format of Starlan Network Control Block:
Offset Size Description (Table 2916)
00h BYTE ncb_command (see also #2921)
70h send net Break
01h BYTE ncb_retcode
02h BYTE ncb_lsn
03h BYTE ncb_num
04h DWORD -> ncb_buffer
08h WORD ncb_length
0Ah 16 BYTEs ncb_callname
1Ah 16 BYTEs ncb_name
2Ah BYTE ncb_rto
2Bh BYTE ncb_sto
2Ch DWORD -> ncb_post /* int (far *ncb_post)(); */
30h BYTE ncb_lana_num
31h BYTE ncb_cmd_cplt
32h DWORD -> ncb_vname
36h BYTE ncb_vnamelen
37h 9 BYTEs ncb_reserve
Note: fields 00h-31h are the same as for a standard NetBIOS NCB (see #2920)
--------N-5B---------------------------------
INT 5B - Microsoft Network Transport Layer Interface
Note: used by MS-NET for executing network commands
SeeAlso: INT 5C"NetBIOS"
--------N-5B---------------------------------
INT 5B - used by Alloy NTNX
--------N-5B---------------------------------
INT 5B - ISOLAN Multi Protocol Software
ES:BX -> Transfer Control Block (see #2917)
Return: AL = status
Note: this software interface allows multiple protocols/software packages
to access a BICC 411x network card
Format of ISOLAN Transfer Control Block:
Offset Type Description (Table 2917)
00h BYTE command code
B3h Status
F2h Activate
F3h Deactivate
F4h Send Data
01h BYTE command identity
02h BYTE virtual circuit ID
03h WORD buffer length
05h DWORD buffer pointer
09h BYTE expedited data flag
0Ah BYTE cancelable flag
0Bh 16 BYTEs local network address
1Bh 16 BYTEs remote network address
2Bh DWORD asynchronous notification routine
30h DWORD local network number
34h DWORD remote network number
38h BYTE call timeout
39h BYTE not used
3Ah 8 BYTEs reserved
42h BYTE command code extension
43h WORD Blue Book MAC type
--------b-5B---------------------------------
INT 5B C - TI Professional PC - KEYBOARD MAPPING HOOK
CF set
AH = shift state (see #2918)
AL = scan code (see #2885)
Return: BX, CX, DI, ES may be destroyed
various return methods are supported:
IRET, AX unchanged: process keystroke normally
IRET, AL = FFh: discard keystroke
IRET, AX changed: process modified keystroke
chain to old INT 5B: allow other handlers to look at (possibly
modified) keystroke in AX
RETF 2, CF clear: place returned AX into keyboard buffer without
any further processing
Notes: invoked by the keyboard ISR, and used to remap the keyboard
if CF is clear on entry, some other handler has processed the
keystroke and the current handler should not modify it, instead
performing a RETF 2 or IRET (after clearing CF on the stack)
when requesting that a value be placed directly into the keyboard
buffer, AL and AH may not *both* be nonzero (the TI does not
return scan codes as part of the key code for non-extended keys)
SeeAlso: INT 15/AH=4Fh,INT 4A/AH=00h"TI",INT 59"TI Professional"
SeeAlso: INT 5C"TI Professional",INT 5D"TI Professional"
SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
Bitfields for TI Professional PC keyboard mapping hook shift states:
Bit(s) Description (Table 2918)
7 CAPS LOCK is on
6-4 reserved (0)
3 repeated key
2 Shift is pressed
1 Alt is pressed
0 Ctrl is pressed
--------U-5B5254DL04-------------------------
INT 5B U - SitBack v3.02R - GET ???
AX = 5254h
DL = 04h
Return: ES:BX -> ??? in resident portion
Program: SitBack is a background file backup utility by SitBack Technologies,
Inc. which initiates backups whenever the system is idle
SeeAlso: AX=8485h/DL=71h,AX=8485h/DL=72h
--------U-5B8485DL70-------------------------
INT 5B U - SitBack v3.02R - INSTALLATION CHECK
AX = 8485h
DL = 70h
Return: CX = 8485h if installed
DX:AX -> ??? (configuration data?)
Program: SitBack is a background file backup utility by SitBack Technologies,
Inc. which initiates backups whenever the system is idle
SeeAlso: AX=5254h/DL=04h,AX=8485h/DL=78h
--------U-5B8485DL71-------------------------
INT 5B U - SitBack v3.02R - SET ??? FLAG AND GET ??? ADDRESS
AX = 8485h
DL = 71h
Return: ES:BX -> FAR entry point to ???
Note: the flag which is modified is located at the address returned by
AX=5254h/DL=04h
SeeAlso: AX=8485h/DL=72h
--------U-5B8485DL72-------------------------
INT 5B U - SitBack v3.02R - CLEAR ??? FLAG
AX = 8485h
DL = 72h
Note: the flag which is modified is located at the address returned by
AX=5254h/DL=04h
SeeAlso: AX=8485h/DL=71h
--------U-5B8485DL73-------------------------
INT 5B U - SitBack v3.02R - ???
AX = 8485h
DL = 73h
???
Return: ???
--------U-5B8485DL74-------------------------
INT 5B U - SitBack v3.02R - ???
AX = 8485h
DL = 74h
???
Return: ???
--------U-5B8485DL75-------------------------
INT 5B U - SitBack v3.02R - ???
AX = 8485h
DL = 75h
CX = ???
Return: ???
SeeAlso: AX=8485h/DL=76h
--------U-5B8485DL76-------------------------
INT 5B U - SitBack v3.02R - ???
AX = 8485h
DL = 76h
CX = ???
Return: ???
Note: conditionally calls the code for AX=8485h/DL=75h
SeeAlso: AX=8485h/DL=75h
--------U-5B8485DL77-------------------------
INT 5B U - SitBack v3.02R - SET ??? FLAG
AX = 8485h
DL = 77h
--------U-5B8485DL78-------------------------
INT 5B U - SitBack v3.02R - GET RESIDENT DATA SEGMENT
AX = 8485h
DL = 78h
Return: CX = 5342h if supported
ES = AX = segment of TSR data
SeeAlso: AX=8485h/DL=70h,AX=8485h/DL=79h
--------U-5B8485DL79-------------------------
INT 5B U - SitBack v3.02R - GET DTA
AX = 8485h
DL = 79h
Return: CX = 5342h if supported
ES:BX -> DTA set by last INT 21/AH=1Ah
Note: this function is provided by SBOS.EXE rather than SB.EXE
SeeAlso: INT 21/AH=1Ah
--------U-5B8485DL7A-------------------------
INT 5B U - SitBack v3.02R - TOGGLE ???
AX = 8485h
DL = 7Ah
Return: CX = 5342h if supported
AL = new value of ??? (00h or 01h)
--------N-5C---------------------------------
INT 5C - NetBIOS INTERFACE
ES:BX -> network control block (NCB) (see #2920)
Return: AL = status (see #2919)
Program: NetBIOS was developed by Sytek, Inc. in 1984 as a high-level
programming interface to the IBM PC Network; the first implementation
was a ROM BIOS extension on Sytek's PCnet LAN adapter card, but many
current networks support NetBIOS as the session layer.
Note: The Sytek PCnet card uses DMA 3.
SeeAlso: INT 2A/AH=01h,INT 2A/AH=04h,INT 5B"Extended NetBIOS"
(Table 2919)
Values for NetBIOS status:
00h successful
01h bad buffer size
03h invalid NETBIOS command
05h timeout
06h receive buffer too small
07h No-ACK command failed
08h bad session number
09h LAN card out of memory
0Ah session closed
0Bh command has been cancelled
0Dh name already exists
0Eh local name table full
0Fh name still in use, can't delete
11h local session table full
12h remote PC not listening
13h bad NCB_NUM field
14h no answer to CALL or no such remote
15h name not in local name table
16h duplicate name
17h bad delete
18h abnormal end
19h name error, multiple identical names in use
1Ah bad packet
21h network card busy
22h too many commands queued
23h bad LAN card number
24h command finished while cancelling
26h command can't be cancelled
30h name defined by another process (OS/2)
34h NetBIOS environment not defined, must issue reset (OS/2)
35h required operating system resources exhausted (OS/2)
36h maximum applications exceeded (OS/2)
37h no SAPs available for NetBIOS (OS/2)
38h requested resources not available (OS/2)
40h Lana System Error
41h Lana Remote Hot Carrier
42h Lana Local Hot Carrier
43h Lana No Carrier Detected
44h unusual network condition
45h-4Dh hardware error
4Eh token ring is broken
4Fh token ring error
50h adapter malfunction
F7h error in explicit INITIALIZE
F8h error in implicit OPEN
F9h TOKREUI internal error
FAh hardware adapter testing
FBh NetBIOS emulator not found
FCh OPEN or OPEN_SAP failure
FDh unexpected adapter closure
FFh NetBIOS busy (command pending)
Format of NetBIOS Network Control Block:
Offset Size Description (Table 2920)
00h BYTE command code (see #2921)
01h BYTE return code (see #2919)
02h BYTE local session number (LSN)
03h BYTE "ncb_num" datagram table entry from ADD NAME
04h DWORD -> I/O buffer
08h WORD length of data in buffer
0Ah 16 BYTEs remote system to call
1Ah 16 BYTEs network name of local machine
2Ah BYTE receive timeout in 1/2 seconds
2Bh BYTE send timeout in 1/2 seconds
2Ch DWORD -> FAR post handler /* int (far *ncb_post)(); */
30h BYTE network adapter number on which to execute command
00h-03h IBM NetBIOS specs
F0h-FFh Eicon NABios interface (see also INT 7B"Eicon")
31h BYTE command completion code (see #2919)
32h 14 BYTEs reserved for network card
(Table 2921)
Values for NetBIOS command code field in NCB:
10h start session with NCB_NAME name (call)
11h listen for call
12h end session with NCB_NAME name (hangup)
14h send data via NCB_LSN
15h receive data from a session
16h receive data from any session
17h send multiple data buffers
20h send unACKed message (datagram)
21h receive datagram
22h send broadcast datagram
23h receive broadcast datagram
30h add name to name table
31h delete name from name table
32h reset adapter card and tables
33h get adapter status (see #2922)
34h status of all sessions for name (see #2924)
35h cancel
36h add group name to name table
48h send data and receive data (LAN Manager NETBEUI.DOS)
70h unlink from IBM remote program (no F0h function)
71h send data without ACK
72h send multiple buffers without ACK
72h UngermannBass Register (conflicts with above function)
73h UngermannBass SendNmc
74h UngermannBass Callniu
75h UngermannBass Calladdr
76h UngermannBass Listenaddr
77h UngermannBass SendPkt
78h find name
78h UngermannBass RcvPkt (conflicts with above function)
79h token-ring protocol trace
79h UngermannBass SendAttn (conflicts with above function)
7Ah UngermannBass RcvAttn
7Bh UngermannBass Listenniu
7Ch UngermannBass RcvRaw
7Dh UngermannBass SendNmc2
7Fh Beame&Whiteside BWNB installation check (returns with return code and
completion code both set to 03h, while invalid functions return only
return code field set to 03h)
Note: OR any of the above except 70h with 80h for non-waiting call
Format of NetBIOS structure "astatus":
Offset Size Description (Table 2922)
00h 6 BYTEs as_id
06h BYTE as_jumpers
07h BYTE as_post
08h BYTE as_major
09h BYTE as_minor
0Ah WORD as_interval
0Ch WORD as_crcerr
0Eh WORD as_algerr
10h WORD as_colerr
12h WORD as_abterr
14h DWORD as_tcount
18h DWORD as_rcount
1Ch WORD as_retran
1Eh WORD as_xresrc
20h 8 BYTEs as_res0
28h WORD as_ncbfree
2Ah WORD as_ncbmax
2Ch WORD as_ncbx
2Eh 4 BYTEs as_res1
32h WORD as_sespend
34h WORD as_msp
36h WORD as_sesmax
38h WORD as_bufsize
3Ah WORD as_names
3Ch 16 name structures as_name (see #2923)
Format of NetBIOS structure "name":
Offset Size Description (Table 2923)
00h 16 BYTEs "nm_name" symbolic name
10h BYTE "nm_num" number associated with name
11h BYTE nm_status
Format of NetBIOS structure "sstatus":
Offset Size Description (Table 2924)
00h BYTE number of sessions being reported
01h BYTE number of sessions with this name
02h BYTE number of outstanding receive datagrams
03h BYTE number of outstanding ReceiveAnys
04h var session structures (see #2925)
Format of NetBIOS structure "session":
Offset Size Description (Table 2925)
00h BYTE local session number
01h BYTE state
01h listen pending
02h call pending
03h session established
04h hangup pending
05h hangup done
06h session aborted
02h 16 BYTEs local name
12h 16 BYTEs remote name
22h BYTE number of outstanding receives
23h BYTE number of outstanding sends/chainsends
--------H-5C---------------------------------
INT 5C - IRQ12 relocated by DESQview 2.26+
Range: INT 5C to INT FC, selected automatically
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 5B"DESQview",INT 5D"DESQview",INT 74
--------H-5C---------------------------------
INT 5C - IRQ4 relocated by DoubleDOS
SeeAlso: INT 0C
--------N-5C---------------------------------
INT 5C - TOPS INTERFACE
ES:BX -> Network Control Block
Note: TOPS card uses DMA 1, 3 or none.
--------N-5C---------------------------------
INT 5C - ATALK.SYS - AppleTalk INTERFACE
DX:BX -> control block (see #2927)
Return: none
Range: INT 5Ch to INT 70h
Notes: the signature 'AppleTalk' appears 16 bytes prior to the interrupt
handler; this serves as the installation check
Index: installation check;ATALK.SYS|installation check;AppleTalk interface
(Table 2926)
Values for ATALK.SYS command code:
01h "AT_INIT" initialize the driver
02h "AT_KILL"
03h "AT_GETNETINFO" get current network info incl init status
04h "AT_GETCLOCKTICKS"
05h "AT_STARTTIMER"
06h "AT_RESETTIMER"
07h "AT_CANCELTIMER"
10h "LAP_INSTALL"
11h "LAP_REMOVE"
12h "LAP_WRITE"
13h "LAP_READ"
14h "LAP_CANCEL"
20h "DDP_OPENSOCKET"
21h "DDP_CLOSESOCKET"
22h "DDP_WRITE"
23h "DDP_READ"
24h "DDP_CANCEL"
30h "NBP_REGISTER"
31h "NBP_REMOVE"
32h "NBP_LOOKUP"
33h "NBP_CONFIRM"
34h "NBP_CANCEL"
35h "ZIP_GETZONELIST"
36h "ZIP_GETMYZONE"
37h "ZIP_TAKEDOWN"
38h "ZIP_BRINGUP"
40h "ATP_OPENSOCKET"
41h "ATP_CLOSESOCKET"
42h "ATP_SENDREQUEST"
43h "ATP_GETREQUEST"
44h "ATP_SENDRESPONSE"
45h "ATP_ADDRESPONSE"
46h "ATP_CANCELTRANS"
47h "ATP_CANCELRESPONSE"
48h "ATP_CANCELREQUEST"
50h "ASP_GETPARMS"
51h "ASP_CLOSESESSION"
52h "ASP_CANCEL"
53h "ASP_INIT"
54h "ASP_KILL"
55h "ASP_GETSESSION"
56h "ASP_GETREQUEST"
57h "ASP_CMDREPLY"
58h "ASP_WRTCONTINUE"
59h "ASP_WRTREPLY"
5Ah "ASP_CLOSEREPLY"
5Bh "ASP_NEWSTATUS"
5Ch "ASP_ATTENTION"
5Dh "ASP_GETSTATUS"
5Eh "ASP_OPENSESSION"
5Fh "ASP_COMMAND"
60h "ASP_WRITE"
61h "ASP_GETATTENTION"
70h "PAP_OPEN"
71h "PAP_CLOSE"
72h "PAP_READ"
73h "PAP_WRITE"
74h "PAP_STATUS"
75h "PAP_REGNAME"
76h "PAP_REMNAME"
77h "PAP_INIT"
78h "PAP_NEWSTATUS"
79h "PAP_GETNEXTJOB"
7Ah "PAP_KILL"
7Bh "PAP_CANCEL"
Format of AppleTalk control block:
Offset Size Description (Table 2927)
00h WORD command code (see #2926)
OR with the following flags
8000h start command then return
4000h wait for interrupt service to complete
02h WORD returned status
0000h success (already initialized if func 01h)
04h DWORD pointer to completion function
08h WORD network number
0Ah BYTE node ID
---if general func (01h,03h), control block continues:
0Bh BYTE "inf_abridge"
0Ch WORD "inf_config"
0Eh DWORD pointer to buffer
12h WORD buffer size
---if DDP function (20h-24h), control block continues:
0Bh BYTE "ddp_addr_socket"
0Ch BYTE "ddp_socket"
0Dh BYTE "ddp_type"
0Eh DWORD pointer to buffer
12h WORD buffer size
14h BYTE "ddp_chksum"
---if Name Binding Protocol (30h-34h), control block continues:
0Bh BYTE "nbp_addr_socket"
0Ch WORD "nbp_toget"
0Eh DWORD pointer to buffer (see #2928)
12h WORD buffer size
14h BYTE "nbp_interval"
15h BYTE "nbp_retry"
16h DWORD "nbp_entptr"
---if AppleTalk Transaction Protocol (42h), control block continues:
0Bh BYTE "atp_addr_socket"
0Ch WORD "atp_socket"
0Eh DWORD pointer to buffer
12h WORD buffer size
14h BYTE "atp_interval"
15h BYTE "atp_retry"
16h BYTE ATP flags
bit 5: exactly one transaction
17h BYTE "atp_seqbit"
18h BYTE transaction ID
19h 4 BYTEs ATP user bytes
1Dh BYTE number of BDS buffers
1Eh BYTE number of BDS responses
1Fh DWORD pointer to BDS buffers (see #2929)
Format of Name Binding Protocol Name-to-Address binding entries for NBP_LOOKUP:
Offset Size Description (Table 2928)
00h WORD "tup_address_network"
02h BYTE "tup_address_notid"
03h BYTE "tup_address_socket"
04h BYTE "tup_enum"
05h 99 BYTEs name
Format of BDS entries:
Offset Size Description (Table 2929)
00h DWORD pointer to buffer
04h WORD size of buffer
06h WORD BDS data size
08h 4 BYTEs "bds_userbytes"
--------N-5C---------------------------------
INT 5C - IBM 802.2 INTERFACE (LLC)
ES:BX -> CCB (see #2930)
Return: none
Format of IBM 802.2 CCB:
Offset Size Description (Table 2930)
00h BYTE adapter
01h BYTE command code
02h BYTE return code
03h BYTE work
04h DWORD pointer to ???
08h DWORD pointer to completion function???
0Ch DWORD pointer to parameters???
--------N-5C---------------------------------
INT 5C - $25 LAN - INSTALLATION CHECK
Notes: current versions only check whether the vector is 0000h:0000h or not
future versions are supposed to have the signature "NET" in the three
bytes preceding the INT 5C handler
--------b-5C0100-----------------------------
INT 5C C - TI Professional PC - KEYBOARD PAUSE KEY VECTOR
AX = 0100h
CF clear
Return: CF clear
AX = keystroke to be placed into keyboard buffer
CF set
AX ignored
Desc: toggle a pause flag which is checked by the CRT Device Service Routine
(see INT 49/AH=01h"TI") and causes it to temporarily halt the
machine on the next video-related function (until a key is pressed)
SeeAlso: INT 09"IRQ1",INT 4A/AH=00h"TI",INT 59"TI Professional"
SeeAlso: INT 5B"TI Professional",INT 5D"TI Professional"
SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
--------N-5C04-------------------------------
INT 5C - $25 LAN - CHECK IF CONNECTION ALIVE
AH = 04h
AL = COM port (0 = default)
CX = wait count in character times (should be at least 100)
Return: ZF set if link alive
--------H-5D---------------------------------
INT 5D - IRQ13 relocated by DESQview 2.26+
Range: INT 5D to INT FD, selected automatically
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 5C"DESQview",INT 5E"DESQview",INT 75
--------H-5D---------------------------------
INT 5D - IRQ5 relocated by DoubleDOS
SeeAlso: INT 0D"IRQ5",INT 5C"DoubleDOS"
--------b-5D---------------------------------
INT 5D C - TI Professional PC - KEYBOARD BREAK KEY VECTOR
CF clear
AX = 0000h
Return: CF clear
AX = keystroke to place into keyboard buffer
CF set
AX ignored
Desc: invoked by the keyboard ISR when Shift-BrkPause is pressed
Note: the default handler is a simple IRET instruction
SeeAlso: INT 09"IRQ1",INT 4A/AH=00h"TI",INT 59"TI Professional"
SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
SeeAlso: INT 5E"TI Professional",INT 5F"TI Professional"
--------H-5E---------------------------------
INT 5E - IRQ14 relocated by DESQview 2.26+
Range: INT 5E to INT FE, selected automatically
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 5D"DESQview",INT 5F"DESQview",INT 76
--------H-5E---------------------------------
INT 5E - IRQ6 relocated by DoubleDOS
SeeAlso: INT 0E,INT 5D"DoubleDOS"
--------b-5E---------------------------------
INT 5E C - TI Professional PC - KEYBOARD PRINT-SCREEN VECTOR
CF set
Return: CF clear
AX = keystroke to be placed into keyboard buffer
CF set
AX ignored
Desc: hook to dump the screen to the printer
Notes: hooked by TI MS-DOS, which provides a PRTSCRN character device which
can invoke screen prints when a decimal digit (indicating the type
of screen dump) is written to it
the TI MS-DOS print-screen routine allows selective dumps of text
only, graphics only, or text and graphics superimposed, in either
normal or reverse, by pressing the appropriate keystroke combination:
Shift-Print, Ctrl-Print, Alt-Print, Shift-Alt-Print, Ctrl-Alt-Print,
or Shift-Ctrl-Print.
the BIOS default routine for this vector is an IRET
SeeAlso: INT 05"PRINT SCREEN",INT 4A/AH=00h"TI",INT 59"TI Professional"
SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
SeeAlso: INT 5D"TI Professional",INT 5F"TI Professional"
--------H-5F---------------------------------
INT 5F - IRQ15 relocated by DESQview 2.26+
Range: INT 5F to INT FF, selected automatically
Note: this is the default, but other INTs may be used (see INT 50"DESQview")
SeeAlso: INT 50"DESQview",INT 5E"DESQview",INT 77
--------H-5F---------------------------------
INT 5F - IRQ7 relocated by DoubleDOS
SeeAlso: INT 0F,INT 5E"DoubleDOS"
--------b-5F---------------------------------
INT 5F C - TI Professional PC - KEYBOARD QUEUEING VECTOR
Return: all registers preserved
Desc: hook for multitaskers to be informed when a keypress is placed in the
keyboard buffer
Note: the default handler is a simple IRET instruction
SeeAlso: INT 09,INT 4A/AH=00h"TI",INT 59"TI Professional"
SeeAlso: INT 5B"TI Professional",INT 5C"TI Professional"
SeeAlso: INT 5D"TI Professional",INT 5E"TI Professional"
--------b-5F00-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET VIDEO MODE
AH = 00h
AL = video mode
03h text,CGA color (100LX/200LX)
06h 640x200 CGA graphics (100LX/200LX)
07h text, system manager compliant
20h 240x128 mono graphics, system manager compliant
87h text, not system manager compliant
A0h 240x128 mono graphics, not system manager compliant
Notes: the defaults after setting the mode to graphics are (0,0) logical
origin, full-screen clip region, (0,0) pen location, pen color 1,
pixel replacement FORCE, line type and fill mask all bits set
modes 03h and 06h can also be set with the standard INT 10/AH=00h
SeeAlso: INT 0F"HP 95LX",INT 10/AH=00h,INT 15/AX=4DD4h
--------b-5F01-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET FILL MASK
AH = 01h
ES:DI -> 8-byte fill mask
Note: the fill mask represents an 8x8 pixel box and is repeated as necessary
when drawing filled rectangles; it is always aligned with the byte
boundaries of video memory, regardless of the actual boundaries of
the rectangle
SeeAlso: AH=02h
--------b-5F02-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET CURRENT GRAPHICS INFO
AH = 02h
ES:DI -> graphics info record (see #2931)
Return: DX:AX -> filled graphics info record (for return to high-level langs)
Format of HP 95LX graphics info record:
Offset Size Description (Table 2931)
00h BYTE current video mode
01h BYTE default video mode
02h WORD display width in pixels
04h WORD display height in pixels
06h WORD current pen column
08h WORD current pen row
0Ah WORD current line type
0Ch WORD current replacement rule
0Eh WORD current pen color
10h WORD current leftmost column of clip region
12h WORD current rightmost column of clip region
14h WORD current topmost row of clip region
16h WORD current bottommost row of clip region
18h WORD current column of logical origin
1Ah WORD current row of logical origin
1Ch 8 BYTEs current fill mask
--------b-5F03-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET LOGICAL ORIGIN
AH = 03h
CX = column
DX = row
SeeAlso: AH=04h
--------b-5F04-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET CLIP REGION
AH = 04h
CX = left-most column
DX = top-most row
SI = right-most column
DI = bottom-most row
SeeAlso: AH=03h
--------b-5F05-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - DRAW RECTANGLE
AH = 05h
AL = fill type
00h outline, using current line type and color
01h solid, using current color
02h pattern, using current fill mask and color
DX,CX = row,column of other corner of rectangle
Note: the rectangle is drawn starting at the current pen position
SeeAlso: AH=01h,AH=06h,AH=07h
--------b-5F06-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - DRAW LINE
AH = 06h
DX,CX = row,column of end point
Note: the line is drawn starting at the current pen position
SeeAlso: AH=05h,AH=07h
--------b-5F07-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - PLOT POINT
AH = 07h
DX,CX = row,column of point
Note: also sets pen position to the specified point
SeeAlso: AH=06h,AH=08h,AH=0Ch
--------b-5F08-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - MOVE PEN
AH = 08h
DX,CX = row,column of new pen position
SeeAlso: AH=07h,AH=09h
--------b-5F09-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET PEN COLOR
AH = 09h
AL = new color (00h = white, 01h = black)
SeeAlso: AH=08h,AH=0Ah,AH=0Bh
--------b-5F0A-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET REPLACEMENT RULE
AH = 0Ah
AL = new replacement rule
00h force
01h AND
02h OR
03h XOR
---100LX/200LX---
04h InvForce
05h InvAND
06h InvOR
07h InvXOR
08h Txt
SeeAlso: AH=01h,AH=09h,AH=0Bh
--------b-5F0B-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - SET LINE TYPE
AH = 0Bh
CX = new line type
Note: the line type specifies 16 bits which are repeated over and over while
drawing the pixels of a line
SeeAlso: AH=09h,AH=0Ah
--------b-5F0C-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET PIXEL
AH = 0Ch
DX,CX = row,column of pixel to read
Return: AX = pixel color
SeeAlso: AH=07h
--------b-5F0D-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - GET IMAGE
AH = 0Dh
DX,CX = row,column of first corner
BP,SI = row,column of second corner
ES:DI -> image buffer (see #2932)
Note: the specified corners are included in the saved image
SeeAlso: AH=0Eh
Format of HP 95LX image buffer:
Offset Size Description (Table 2932)
00h WORD number of planes (always 01h on HP 95LX)
02h WORD number of bits/pixel (always 01h on HP 95LX)
04h WORD image width in pixels
06h WORD image height in pixels
08h N BYTEs image data
requires (WIDTH+7)/8 * HEIGHT bytes
--------b-5F0E-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - PUT IMAGE
AH = 0Eh
AL = replacement rule (see #2933)
DX,CX = row,column of top left corner
ES:DI -> image buffer (see #2932)
Note: if the specified image does not fit completely on the screen, this call
does nothing
SeeAlso: AH=0Dh
Bitfields for replacement rule:
Bit(s) Description (Table 2933)
2 invert image before applying rule
1-0 function (00 force, 01 AND, 10 OR, 11 XOR)
--------b-5F0F-------------------------------
INT 5F - HP 95LX/100LX/200LX GRAPHICS PRIMITIVES - WRITE TEXT
AH = 0Fh
AL = rotate flag (if nonzero, rotate 90 degrees counter-clockwise)
DX,CX = row,column of first character's top left corner
ES:DI -> ASCIZ text
--------b-5F10-------------------------------
INT 5F - HP 100LX/200LX GRAPHICS PRIMITIVES - GET FONT POINTER
AH = 10h
CX = font size of desired font
0808h 8x8 small (80x25 text)
0A0Bh 11x10 medium (64x18 text)
100Ch 12x16 large (40x16 text)
Return: DX:AX -> ptr to font or 0000h:fontID# if built-in font
SeeAlso: AH=11h
--------b-5F11-------------------------------
INT 5F - HP 100LX/200LX GRAPHICS PRIMITIVES - SET CURRENT FONT
AH = 11h
ES:DI -> ptr to font or 0000h:fontID# for built-in font
Note: this function should be called immediately after AH=10h with the
pointer supplied by that call
SeeAlso: AH=10h
--------*-60---------------------------------
INT 60 - reserved for user interrupt
--------v-60---------------------------------
INT 60 - VIRUS - "Zero Bug" - INSTALLATION CHECK
Desc: The "Zero Bug" virus hooks this vector. It considers itself installed
if offset 103h of the handler's segment contains the bytes "ZE"
SeeAlso: INT 32"VIRUS",INT 44"VIRUS",INT 61"SEMTEX"
--------d-60---------------------------------
INT 60 - Adaptec and OMTI controllers - DRIVE 0 DATA
SeeAlso: INT 41"HARD DISK 0",INT 61"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
SeeAlso: INT 64"Adaptec",INT C0"AMI",#0656 at INT 1A/AX=B102h
Notes: this vector stores the first four bytes of the parameter table for
hard disk 0
these vectors are used by the following Adaptec controllers:
ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
these vectors are NOT used by the following Adaptec controllers:
ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
--------b-60---------------------------------
INT 60 - TI Professional PC - SYSTEM ROM DATA AREA POINTER (NOT A VECTOR!)
Desc: the low word of this vector contains the segment of the RAM data area
to be used by the system ROM at F400h:A000h, and the high word
contains the length of the data area (see #2934)
SeeAlso: INT 61"TI Professional PC",INT 66"TI Professional PC"
Format of TI Professional System ROM data area:
Offset Size Description (Table 2934)
00h BYTE port 00h shadow
01h BYTE port 03h shadow
02h BYTE port 04h shadow
03h WORD system configuration word (see #2937)
05h BYTE 25ms count
06h WORD offset of timing event 1 (0008h)
08h WORD (event 1) offset of timing event 2 (0010h)
0Ah BYTE (event 1) unused (FFh)
0Bh BYTE (event 1) active flag (bit 7 set if on)
0Ch WORD (event 1) count-down until end of event
0Eh WORD (event 1) event routine (in segment F400h) to call at timeout
10h WORD (event 2) offset of timing event 3 (0018h)
12h BYTE (event 2) unused (FFh)
13h BYTE (event 2) active flag (bit 7 set if on)
14h WORD (event 2) count-down until end of event
16h WORD (event 2) event routine (in segment F400h) to call at timeout
18h WORD (event 3) offset of timing event 3 (0020h)
1Ah BYTE (event 3) unused (FFh)
1Bh BYTE (event 3) active flag (bit 7 set if on)
1Ch WORD (event 3) count-down until end of event
1Eh WORD (event 3) event routine (in segment F400h) to call at timeout
20h WORD (event 4) 0000h - last event
22h BYTE (event 4) unused (FFh)
23h BYTE (event 4) active flag (bit 7 set if on)
24h WORD (event 4) count-down until end of event
26h WORD (event 4) event routine (in segment F400h) to call at timeout
28h WORD offset of start of text display within segment DE00h
2Ah WORD end of display
2Ch WORD current absolute cursor position
2Eh WORD start of current character row
30h WORD current cursor column
32h WORD cursor type and size (see #2935)
34h WORD start of protected status region on screen (0000h = none)
36h BYTE pop flag used by some ROM routines
00h pop registers before return
nonzero: do not pop
37h BYTE unused (FFh)
38h BYTE PAUSE flag
00h off
FFh on
39h BYTE temp: current attribute while moving characters on screen
3Ah WORD start of keyboard queue (next key at start+2 or 0042h if 0060h)
3Ch WORD end of keyboard queue (next key inserted at end+2 or 0042h)
3Eh BYTE number of characters in buffer
3Fh BYTE keyboard mode flags (see #2936)
40h BYTE Alt-digit-digit-digit accumulator
41h BYTE Alt-digit-digit-digit count of digits (mod 3)
42h 16 WORDs keyboard buffer (circular queue)
62h 8 DWORDs Drive Interface Table pointers for floppies A:-D: + four others
(0000h:0000h if pointer not in use)
82h BYTE disk-error retry count (incremented on each disk error)
83h 2 BYTEs BIOS scratch space
85h 8 BYTEs current cylinder number for drives 0-7
FFh = unknown
8Dh BYTE BIOS scratch space
8Eh BYTE hard error code for last disk access
00h operation successful
8Fh 8 BYTEs save area for disk DSR parameters
97h 6 BYTEs current drive status
9Dh BYTE retry error status
9Eh BYTE BIOS scratch space
9Fh 7 BYTEs ???
A6h 2 WORDs INT 47 save area for SS,SP
AAh 2 WORDs INT 46 save area for SS,SP
AEh 2 WORDs INT 43 save area for SS,SP
B2h 2 WORDs save area for SS,SP to be restored by common intr. exit routine
B6h 24 WORDs stack for INT 47
E6h 24 WORDs stack for INT 46
116h 17 WORDs stack for INT 43
13Ah 6 BYTEs system date and time (hundredths, seconds, minutes, hours, and
WORD days since 1/1/1980)
Note: timing event 1 is the disk I/O timeout, event 2 is the floppy disk
motor timeout, event 3 is the floppy disk motor spin-up time, and
event 4 is used to turn off the speaker after a delay
Bitfields for TI Professional PC cursor size and type:
Bit(s) Description (Table 2935)
15 reserved (0)
14-13 cursor type
00 nonblinking
01 off
10 slow blink
11 fast blink
12-8 starting scan line (0-11)
7-5 reserved (0)
4-0 ending scan line (0-11)
SeeAlso: #2934
Bitfields for TI Professional PC keyboard mode flags:
Bit(s) Description (Table 2936)
7 CapsLock was ON at last keypress
6-4 reserved (0)
3 repeat key
2 Shift was down at last keypress
1 Alt was down at last keypress
0 Ctrl was down at last keypress
SeeAlso: #2934
Bitfields for TI Professional System Configuration Word:
Bit(s) Description (Table 2937)
0 drive A: installed
1 drive B: installed
2 drive C: installed
3 drive D: installed
4 drive A: is 80-track
5 drive A: is double-sided
6 60-Hz (USA,etc.) system instead of 50-Hz (Europe)
7 hard disk installed
8 serial port 1 installed
9 serial port 2 installed
10 serial port 3 installed
11 serial port 4 installed
14-12 installed graphics planes
000 none
001 plane A
111 planes A, B, and C
15 clock installed
SeeAlso: #2934
--------b-60---------------------------------
INT 60 - Atari Portfolio - USER INTERFACE FUNCTIONS
Desc: supplies a number of subfunctions which perform such functions as
drawing boxes and menus, and provide input line editing
SeeAlso: INT 61/AH=00h"Atari",INT 61"EXTENDED BIOS"
--------V-60---------------------------------
INT 60 - Nabbit v2.0 - (NOT A VECTOR!) - INSTALLATION CHECK
Program: Nabbit is a shareware resident screen data grabber by RSE Inc.
Range: INT 60 to INT 66, selected by searching for first free vector
Note: the Nabbit installation check consists of testing whether the
interrupt vector points at the ASCIZ signature string "iG"
(69h 47h 00h)
--------V-60---------------------------------
INT 60 - ATI M64VBE.COM - INSTALLATION SIGNATURE
Program: M64VBE is a VESA VBE 2.0 driver TSR for ATI's Mach64 video chip
Range: INT 60 to INT 66, selected by searching for first free vector
Note: the installation check is to scan for an interrupt with the ASCIZ
signature "M64VBE" three bytes past the interrupt handler
SeeAlso: INT 10/AX=4FDDh"M64VBE",INT 10/AX=4FFFh/BX=364Dh"M64VBE"
--------V-60---------------------------------
INT 60 U - Buffit v3.0 - (NOT A VECTOR!) - INSTALLATION CHECK
Program: Buffit is a shareware scrollback utility by D.T. Hamilton
Range: INT 60 to INT 6F, selected by searching for first free vector
Notes: the Buffit installation check consists of testing whether the
interrupt vector points at the ASCII signature "Buffit "
there is a private entry point (see #2938) immediately following the
signature string, i.e. eight bytes beyond the address pointed at
by the interrupt vector
(Table 2938)
Call Buffit private entry point with:
AH = function
00h get information and hotkey state
01h get information and toggle hotkey state
Return: AH = new hotkey state (00h enabled, 01h disabled)
AL = hotkey scan code (see #0005)
BH = hotkey shift states
BL = ??? (01h)
CX = segment of resident code
DH = interrupt number used for signature pointer
DL = ??? (00h)
SI = INT 09 handler offset
DI = INT 21 handler offset
Index: hotkeys;Buffit
--------r-60---------------------------------
INT 60 - PC-IPC API
STACK: DWORD pointer to parameter block (see #2939)
Return: STACK: unchanged
Program: PC-IPC is a shareware TSR by Donnelly Software Engineering which
allows communication between independent programs
Range: INT 00 to INT FF, selected by commandline switch
Format of PC-IPC parameter block:
Offset Size Description (Table 2939)
00h WORD caller's ID
02h WORD to ID
04h WORD command code (see #2940)
06h WORD returned status (see #2941)
08h WORD returned error code (see #2942)
0Ah WORD size of data
0Ch DWORD pointer to data buffer
(Table 2940)
Values for PC-IPC command code:
01h "IPC_CMND_INQUIRE" inquire current status
set status field, writes WORD to data buffer containing free
message space in bytes, and sets the "size" field to the
number of messages waiting
02h "IPC_CMND_ENABLE" reenable PC-IPC
ignored unless called with the same ID that disabled PC-IPC
03h "IPC_CMND_DISABLE" disable PC-IPC
04h "IPC_CMND_INSTALL" reset PC-IPC
06h "IPC_CMND_RDATA" read data
returns first message in data buffer, sets "size" to message length
and "to ID" field to sender's ID
if no messages available, bit 4 of status is cleared and "size" is
set to zero
07h "IPC_CMND_SDATA" send data
08h "IPC_CMND_REQID" require user ID
create a new recognized ID and return in "caller's ID" field
09h "IPC_CMND_DELID" cancel user ID
delete caller's ID from pool of recognized IDs
0Ah "IPC_CMND_RDATAW" read data, wait if no messages available
0Bh "IPC_CMND_VERS" get PC-IPC version
string representing version returned in data buffer, "size" field
set to length of string
Bitfields for returned status:
Bit(s) Description (Table 2941)
0 unused
1 IPC enabled
2 IPC installed
3 error
4 message(s) available
(Table 2942)
Values for PC-IPC error code:
00h no error
01h invalid command or parameter
02h only process 0 can install/reset IPC
03h process can not install/reset IPC
04h IPC is not enabled
05h process can not disable IPC
06h invalid destination process ID
07h invalid sending process ID
08h invalid data destination
09h no more process IDs available
0Ah can not relinquish that process ID
0Bh message space is full
0Ch IPC is not installed
--------R-60---------------------------------
INT 60 - Tangram Arbiter - API
Desc: Arbiter makes a PC disk look like a slow disk over an SNA link to an
IBM mainframe
Range: INT 60h to INT 66h, selected by configuration parameter
Notes: identified by string "@ARB_API" immediately following a short jump at
the interrupt handler address
--------N-60---------------------------------
INT 60 - Excelan LAN Workplace for DOS 3.5 - API
ES:BX -> request packet (see #2943)
Return: request packet updated
Notes: this interrupt is also supported by Beame&Whiteside's BWLWP35 shim,
which was used in creating this description
the installation check consists of testing for the WORD 4142h ('AB')
immediately preceding the interrupt handler
BUG: because BWLWP35 range-checks only the low byte of the function number,
and has a fencepost error even in that test, functions 000Bh and
XX01h-XX0Bh (XX nonzero) branch to random locations
SeeAlso: INT 2F/AX=7A40h
Format of Excelan request packet:
Offset Size Description (Table 2943)
00h 12 BYTEs ???
0Ch WORD (ret) error code (see #2944)
0Eh DWORD -> FAR function for ???
12h WORD function number
0001h ???
0002h NOP
0003h NOP
0004h NOP
0005h ???
0006h get ??? record
0007h NOP
0008h reset ???
0009h NOP
000Ah set ???
???
---function 01h---
20h BYTE (call) subfunction (32h-3Bh)
3Bh non-blocking I/O request (will be tested every clock tick)
21h BYTE (ret) error code
00h successful
09h invalid connection number
2Ah bad connection type
45h ???
---function 01h, subfunction 32h---
3Ah WORD (call) connection type (01h stream, 02h datagram)
---function 01h, subfunction 34h---
26h WORD (call) ???
28h WORD (call) ???
2Ah WORD (call) ???
---function 01h, subfunction 35h---
1Ah WORD (call) connection number???
26h WORD (ret) ???
---function 01h, subfunction 36h---
1Ah WORD (call) connection number???
38h WORD ???
---function 01h, subfunction 37h---
24h WORD (ret) ???
26h WORD (ret) ???
---function 01h, subfunction 38h---
1Ah WORD (call) connection number???
---function 01h, subfunction 3Ah---
22h WORD (call) ???
667Eh ???
667Fh ???
24h BYTE (call 667Eh) ???
24h WORD (return 667Fh) ???
---function 01h, subfunction 3Bh---
0Eh DWORD (call) -> function to invoke for I/O or 0000h:0000h
function called with AX = 0000h
STACK: DWORD -> request packet
WORD 0000h
should return STACK unchanged
1Ah WORD (call) connection number???
21h BYTE (ret) set to 01h when I/O becomes possible
22h BYTE (call) direction (00h write, 01h read)
34h DWORD (ret) -> next pending request packet
---function 05h---
1Eh WORD (call) ???
20h WORD (call) ???
34h DWORD (call) -> ???
---function 06h---
16h DWORD (call) -> buffer for ??? record (see #2945)
1Ah WORD (call) number of bytes to copy
22h WORD (ret) number of bytes transferred
---function 08h---
14h WORD (ret) ??? (0001h)
---function 0Ah---
16h DWORD (call) -> WORD ???
1Ch WORD (call) must be 000Ah for BWLWP35
(Table 2944)
Values for Excelan error code:
0000h successful
002Dh invalid function
0050h ???
Format of ??? record:
Offset Size Description (Table 2945)
00h WORD offset of ???
02h 4 BYTEs ???
06h DWORD IP address (big-endian)
0Ah 6 BYTEs physical address (big-endian)
???
--------N-60---------------------------------
INT 60 - TCPDRV 2.01 - TCP/IP Application Binary Interface (ABI)
Note: The handler for the interrupt will start with a 2-byte NEAR jump
instruction, followed by the ASCIZ signature string "TCP DRVR".
To find the interrupt being used by the driver, an application
should scan through interrupt vectors 60h to 7Fh until it finds
one with the "TCP DRVR" string.
This specification is being proposed by Peter R. Tattam from the
University of Tasmania.
Index: installation check;TCPDRV
--------G-60---------------------------------
INT 60 U - INTRSPY/CMDSPY v1.0 only - API
Program: INTRSPY is a script-driven debugger included with the book
_Undocumented_DOS_.
Notes: INTRSPY will hook the first available interrupt in the range 60h-67h.
The installation check is to
a) determine that the handler is an IRET instruction
b) the signature 0Dh "INTRSPY vN.NN" immediately precedes the handler
If INTRSPY is installed, the DWORD immediately after the IRET stores
its entry point (see #2946)
INTRSPY v2.0 (included with the second edition of the book) no longer
supports this API
Index: installation check;INTRSPY
(Table 2946)
Call INTRSPY v1.0 entry point with:
AH = function
00h ???
01h set current directory (for use in reporting)
ES:DI -> counted string containing directory name (max 79 char)
02h set name of script file
ES:DI -> counted string containing file name (max 79 chars)
03h set script arguments
ES:DI -> counted string containing arguments (max 79 chars)
04h get directory set with function 01h
ES:DI -> 80-byte buffer for directory name
05h get name of script file
ES:DI -> 80-byte buffer for script filename
06h get script arguments
ES:DI -> 80-byte buffer for script arguments
07h get ???
CL = 00h-15h specifies what to get
ES:DI -> WORD to be set with desired value on return
08h get ???
ES:DI -> WORD to be set with returned value
09h get ???
ES:DI -> WORD to be set with returned value
0Bh store code for interrupt handler???
ES:DI -> data
CX = number of bytes
0Ch ???
ES:DI -> ???
0Dh get ???
ES:DI -> BYTE to be set with returned value
0Eh set ??? flag
0Fh clear ??? flag
10h ???
Return: AL = 04h or 05h if failed
11h ???
Return: AL = 05h if failed
12h get ???
ES:DI -> buffer
Return: CX = number of bytes returned in buffer
13h ???
Return: AH = 00h
AL = status
00h successful
01h invalid function
02h ???
03h ???
04h ???
05h ???
--------u-60---------------------------------
INT 60 U - PC/370 v4.2 - ???
???
Return: ???
Program: PC/370 is an IBM 370 emulator by Donald S. Higgins
Range: INT 00 to INT FF, selected by patching the executable
Note: the documentation includes instructions for patching the system for
another interrupt
SeeAlso: INT 2F/AX=7F24h,INT DC"PC/370"
--------r-60---------------------------------
INT 60 - JPI TopSPEED Modula-2 v1 - PROCEDURE ENTRY TRAP
SeeAlso: INT 61"JPI"
--------N-60---------------------------------
INT 60 - FTP Packet Driver - PC/TCP Packet Driver Specification
Range: INT 20 to INT FF
Notes: The handler for the interrupt will start with a 3-byte jump
instruction, followed by the ASCIZ string "PKT DRVR" (the
terminating NUL is significant).
To find the interrupt being used by the driver, an application should
scan through interrupt vectors 20h to FFh (60h through 80h for
v1.09- of the specification) until it finds one with the "PKT DRVR"
string.
AH values of 80h to FFh have been reserved for user-defined additions.
--------I-60---------------------------------
INT 60 u - 3270-PC CONTROL PROGRAM - ???
--------b-60----DI0100-----------------------
INT 60 u - HP 95LX System Manager - WAIT FOR EVENT
DI = 0100h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to event record (see #2948)
Return: event record filled
STACK unchanged
Note: this call will timeout after about 500ms
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0101h,INT 61"HP 95LX",INT 62"HP 95LX"
(Table 2947)
Values for HP 95LX event type:
00h no events
01h keystroke available
02h Ctrl-Break
03h reactivation (always follows deactivation event)
04h about to deactivate (sleep)
next get-event call will not return until reactivated
05h forced application termination
06h 1-2-3 bridge service request (only given to 1-2-3)
07h request to grow
08h request to shrink
09h application's alarm expired
0Ah daily chance to set an alarm
0Bh system date or time has been changed
Format of HP 95LX event record:
Offset Size Description (Table 2948)
00h WORD event type (see #2947)
02h WORD ASCII code page 850 translation of keystroke
or grow/shrink amount in paragraphs or 0000h if error
or alarm expiration data
04h BYTE scan code from BIOS
05h BYTE shift key states at time keystroke is retrieved
06h WORD LICS translation of keystroke
08h BYTE function key number (1-2-3 only)
09h DWORD pointer to 1-2-3 bridge record (see #2950)
or pointer to time change structure (see #2949)
Note: if the System Manager is awaiting the conclusion of a bridge service
or grow/shrink call and the event type field is set to FFFFh on
entry, the SysMgr will resume
Format of HP 95LX time change structure:
Offset Size Description (Table 2949)
00h WORD old year
02h BYTE old month
03h BYTE old date
04h BYTE old day
05h BYTE old hour
06h BYTE old minute
07h BYTE old second
08h BYTE old hundredth of a second
09h 9 BYTEs new time in same format as old time
--------b-60----DI0101-----------------------
INT 60 u - HP 95LX System Manager - CHECK FOR EVENT
DI = 0101h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to event record (INT 60/DI=0100h)
Return: event record filled
STACK unchanged
Note: this call returns immediately if no event is available
SeeAlso: INT 60/DI=0100h
--------b-60----DI0102-----------------------
INT 60 u - HP 95LX System Manager - "SH_STATUS"
DI = 0102h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
--------b-60----DI0104-----------------------
INT 60 u - HP 95LX System Manager - LOTUS 1-2-3 BRIDGE SERVICES
DI = 0104h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to bridge record (see #2950)
Return: ???
STACK unchanged
Format of HP 95LX bridge record:
Offset Size Description (Table 2950)
00h WORD function code (see #2951)
02h WORD return code from 1-2-3
04h 16 BYTEs ASCII range name
14h WORD start column of range
16h WORD start row of range
18h WORD end column of range
1Ah WORD end row of range
1Ch WORD order in which data is placed in buffer
1Eh WORD buffer size
20h WORD offset within bridge record's segment of buffer for cell data
(Table 2951)
Values for HP 95LX function code:
00h test
01h get range
02h "GETRANGE_ADDR"
03h "SETRANGE_ADDR"
04h "GETRANGE_DATA"
05h "SETRANGE_DATA"
06h recalculate
07h get cursor
08h set cursor
09h redisplay
0Ah cell type
0Bh "CALCTYPE"
--------b-60----DI0105-----------------------
INT 60 u - HP 95LX System Manager - FLUSH KEYBOARD BUFFER
DI = 0105h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
--------b-60----DI0106-----------------------
INT 60 u - HP 95LX System Manager - YIELD CPU
DI = 0106h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=1000h,INT 2F/AX=1680h
--------b-60----DI0107-----------------------
INT 60 u - HP 95LX System Manager - "NO_FINI" - REFUSE TERMINATION REQUEST
DI = 0107h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI0200-----------------------
INT 60 u - HP 95LX System Manager - SETUP MENU
DI = 0200h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see #2952)
DWORD pointer to ???
WORD number of items on menu???
WORD ???
DWORD pointer to ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0201h,INT 60/DI=0203h,INT 60/DI=0205h
Format of HP 95LX menu data:
Offset Size Description (Table 2952)
00h 80 BYTEs first line of menu text
50h 80 BYTEs second line of menu text
A0h 80 BYTEs third line of menu text
F0h WORD number of keywords
F2h WORD index of currently highlighted keyword or FFFFh
F4h WORD single prompt on top line if nonzero
F6h 20 BYTEs which line each of 20 keywords is located on
10Ah 20 BYTEs offset of each of 20 keywords within its line
11Eh 20 BYTEs length of each of 20 keywords
132h 20 BYTEs first letter of each of 20 keywords
146h 20 WORDs offsets of long prompts for each of 20 keywords
--------b-60----DI0201-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY MENU
DI = 0201h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see #2952)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0206h
--------b-60----DI0202-----------------------
INT 60 u - HP 95LX System Manager - "MENU_ON" - ENABLE PROCESSING OF MENU
DI = 0202h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see #2952)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0200h,INT 60/DI=0201h,INT 60/DI=0203h
--------b-60----DI0203-----------------------
INT 60 u - HP 95LX System Manager - REMOVE MENU
DI = 0203h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see #2952)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0201h,INT 60/DI=0202h,INT 60/DI=0204h,INT 60/DI=0208h
--------b-60----DI0204-----------------------
INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER HANDLE MENU KEYSTROKE
DI = 0204h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to menu data (see #2952)
WORD keystroke
DWORD pointer to WORD to receive selection number
Return: buffer for selection number filled with index of selected menu item or
FFFFh if no final selection yet
STACK unchanged
SeeAlso: INT 60/DI=0200h,INT 60/DI=0202h,INT 60/DI=0207h
--------b-60----DI0205-----------------------
INT 60 u - HP 95LX System Manager - INITIALIZE FILE SELECTION MENU
DI = 0205h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file menu structure (see #2953)
DWORD pointer to edit record (see #2956 at INT 60/DI=0400h)
DWORD pointer to wildcard filespec for initial file list
WORD row???
WORD column???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0200h,INT 60/DI=0206h,INT 60/DI=0208h
Format of HP 95LX file menu structure:
Offset Size Description (Table 2953)
00h DWORD pointer to ASCIZ base directory name
04h DWORD pointer to ASCIZ file pattern (wildcard filespec)
08h DWORD pointer to file list workspace, at least 1024 bytes (see #2954)
0Ch WORD size of file list workspace in bytes
0Eh WORD starting row (-3 is topmost, 0 is first non-"reserved" line)
10h WORD starting column
12h WORD number of lines
14h WORD number of columns
16h WORD number of files displayed on each line
---the remaining fields are initialized by the System Manager---
18h WORD 0000h if first edit character, else multiline
1Ah WORD number of files in file list
1Ch WORD max files workspace has room for
1Eh WORD file at top of list
20h WORD index of file to highlight
22h WORD index of file to unhighlight
24h WORD current focus (01h FMENU, 02h EDIT)
Format of HP 95LX file list workspace entry:
Offset Size Description (Table 2954)
00h BYTE file attributes
01h WORD file time (see #1351 at INT 21/AX=5700h)
03h WORD file date (see #1352 at INT 21/AX=5700h)
05h DWORD file size
09h 13 BYTEs ASCIZ filename
--------b-60----DI0206-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY/REDISPLAY FILE SELECTION MENU
DI = 0206h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file menu structure (see #2953)
DWORD pointer to edit record (see #2956 at INT 60/DI=0400h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0205h
--------b-60----DI0207-----------------------
INT 60 u - HP 95LX System Manager - LET SYSMGR PROCESS FILE SEL MENU KEYSTROKE
DI = 0207h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file menu structure (see #2953)
DWORD pointer to edit record (see #2956 at INT 60/DI=0400h)
WORD keystroke
Return: AX = status (see #2955)
STACK unchanged
SeeAlso: INT 60/DI=0205h,INT 60/DI=0208h
(Table 2955)
Values for HP 95LX System Manager status:
0000h keystroke processed, call INT 60/DI=0206h to refresh menu
0001h redisplay application area before refreshing menu
0002h user confirmed selection, filename is in edit record's buffer
0003h user aborted menu
FFFBh bad filename
FFFCh bad directory
FFFDh bad drive
FFFEh unknown keystroke
FFFFh keystroke known but invalid in current context
--------b-60----DI0208-----------------------
INT 60 u - HP 95LX System Manager - REMOVE FILE SELECTION MENU
DI = 0208h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file menu structure (see #2953)
DWORD pointer to edit record (see #2956 at INT 60/DI=0400h)
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0205h,INT 60/DI=0206h
--------b-60----DI0300-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY STRING
DI = 0300h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD starting row (-3 is topmost, 0 is first user line)
WORD starting column
DWORD pointer to string
WORD length of string
WORD display style: 0000h normal, 0001h reverse video
WORD "OSTYLE"
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F03h,INT 60/DI=1005h
--------b-60----DI0301-----------------------
INT 60 u - HP 95LX System Manager - CLEAR PORTION OF SCREEN
DI = 0301h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD starting row (-3 is topmost, 0 is first user line)
WORD starting column
WORD number of rows
WORD number of columns
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0302h,INT 60/DI=1005h
--------b-60----DI0302-----------------------
INT 60 u - HP 95LX System Manager - SCROLL PORTION OF SCREEN
DI = 0302h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD starting row???
WORD starting column???
WORD height of scroll region???
WORD width of scroll region???
WORD number of lines to scroll region???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0301h
--------b-60----DI0303-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_XCHG"
DI = 0303h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
WORD ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0304-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRATTR"
DI = 0304h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0305-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRRVRT"
DI = 0305h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0307-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_CHRINV"
DI = 0307h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0308-----------------------
INT 60 u - HP 95LX System Manager - SCREEN SERVICE "M_ROWS_COLS"
DI = 0308h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
--------b-60----DI0309-----------------------
INT 60 u - HP 95LX System Manager - SET SCREEN (VIDEO???) MODE
DI = 0309h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD new mode
Return: ???
STACK unchanged
--------b-60----DI030A-----------------------
INT 60 u - HP 95LX System Manager - GET SCREEN (VIDEO???) MODE
DI = 030Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
--------b-60----DI030B-----------------------
INT 60 u - HP 95LX System Manager - SET CURSOR POSITION
DI = 030Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD row (-3 is topmost, 0 is first non-reserved line)
WORD column
Return: ???
STACK unchanged
Note: cursor is hidden if the specified position is not on the physical
display
SeeAlso: INT 10/AH=02h,INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI0400-----------------------
INT 60 u - HP 95LX System Manager - "EDIT_INIT"
DI = 0400h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to edit record (see #2956)
DWORD pointer to string to be edited
WORD initial length of string being edited
WORD maximum length of edited string
WORD row of edit field
WORD leftmost column of edit field
Return: ???
STACK unchanged
Format of HP 95LX edit record:
Offset Size Description (Table 2956)
00h WORD current length of edit buffer
02h BYTE flag for special processing on first character
03h BYTE flags
bit 0: tab handling
04h WORD editing in prompt window?
06h DWORD pointer to top line of prompt window message
0Ah WORD length of top line of prompt
0Ch DWORD pointer to second line of prompt window message
10h WORD length of second line of prompt
12h 80 BYTEs workspace for editing
62h 2 WORDs line array needed for multi-line editing
66h 36 BYTEs multi-line edit record (see #2957)
8Ah WORD displayable columns
Format of HP 95LX multi-line edit record:
Offset Size Description (Table 2957)
00h DWORD pointer to user-supplied edit buffer
04h WORD length of edit buffer
06h WORD current cursor position
08h WORD starting row of edit area (-3 is topmost, 0 is first user line)
0Ah WORD starting column of edit area
0Ch WORD height of edit area
0Eh WORD width of edit area
10h WORD current top row (-3 is topmost, 0 is first user line)
12h WORD number of rows displayable
14h BYTE cursor column
15h BYTE 01h if buffer has been modified
16h BYTE first displayable column (ticker fields only)
17h BYTE 01h if wordwrap enabled, FFh if ticker field
18h DWORD pointer to array of line starts (at least one bigger than edit
area is high)
1Ch BYTE currently marking?
1Dh BYTE flag
1Eh WORD offset of mark start
20h WORD offset of mark end (inclusive)
22h WORD displayable columns
--------b-60----DI0401-----------------------
INT 60 u - HP 95LX System Manager - EDIT ON TOP LINE
DI = 0401h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to edit record (see #2956)
DWORD pointer to string to edit
WORD initial length of string being edited
WORD maximum length of edited string
DWORD pointer to first line of prompt
WORD length of first line
DWORD pointer to second line of prompt
WORD length of second line
Return: ???
STACK unchanged
--------b-60----DI0402-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY OR REDISPLAY EDIT FIELD
DI = 0402h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to edit record (see #2956)
Return: ???
STACK unchanged
--------b-60----DI0403-----------------------
INT 60 u - HP 95LX System Manager - LET SYSTEM MANAGER PROCESS EDITING KEYSTROK
DI = 0403h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to edit record (see #2956)
WORD keystroke
DWORD pointer to WORD buffer for result code
Return: result code buffer filled with 0001h if editing complete
STACK unchanged
--------b-60----DI0404-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_INI"
DI = 0404h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
WORD ???
WORD ???
DWORD pointer to ???
WORD ???
WORD ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0405-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_DIS"
DI = 0405h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0406-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_KEY"
DI = 0406h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0407-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_FIL"
DI = 0407h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0408-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_MARK"
DI = 0408h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0409-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_UNMARK"
DI = 0409h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI040A-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_CUTMARK"
DI = 040Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI040B-----------------------
INT 60 u - HP 95LX System Manager - "MDIT_INS_STR"
DI = 040Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI0500-----------------------
INT 60 u - HP 95LX System Manager - OPEN FILE
DI = 0500h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see #2958)
DWORD pointer to filename
WORD length of filename
WORD ???
WORD suppress buffering if nonzero
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0501h,INT 60/DI=0502h,INT 60/DI=0508h
Format of HP 95LX file state record:
Offset Size Description (Table 2958)
00h WORD DOS file handle
02h WORD state flags (see #2959)
04h DWORD current DOS physical file offset (FFFFFFFFh if unknown)
08h DWORD DOS file offset of start of buffer
0Ch DWORD effective file offset as seen by caller
10h WORD number of bytes in file buffer
---buffered I/O only---
12h 512 BYTEs file buffer
Bitfields for HP 95LX file state flags:
Bit(s) Description (Table 2959)
0 buffer contents valid
1 buffer is dirty and must be written
2 unbuffered I/O
3 file is a character device
SeeAlso: #2958
--------b-60----DI0501-----------------------
INT 60 u - HP 95LX System Manager - OPEN FILE IN READ-ONLY MODE
DI = 0501h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see #2958)
DWORD pointer to filename
WORD length of filename
WORD ???
WORD suppress buffering if nonzero
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0500h
--------b-60----DI0502-----------------------
INT 60 u - HP 95LX System Manager - CREATE NEW FILE
DI = 0502h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see #2958)
DWORD pointer to filename
WORD length of filename
WORD ???
WORD suppress buffering if nonzero
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0500h,INT 60/DI=0503h
--------b-60----DI0503-----------------------
INT 60 u - HP 95LX System Manager - CREATE OR TRUNCATE FILE
DI = 0503h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see #2958)
DWORD pointer to filename
WORD length of filename
WORD ???
WORD suppress buffering if nonzero
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0502h
--------b-60----DI0504-----------------------
INT 60 u - HP 95LX System Manager - READ FROM FILE
DI = 0504h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see #2958)
DWORD pointer to data buffer
WORD number of bytes to read
DWORD pointer to WORD in which to return actual bytes read
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0505h
--------b-60----DI0505-----------------------
INT 60 - HP 95LX System Manager - WRITE TO FILE
DI = 0505h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see #2958)
DWORD pointer to data
WORD length of data
Return: AX = status
STACK unchanged
SeeAlso: INT 60/DI=0504h
--------b-60----DI0506-----------------------
INT 60 u - HP 95LX System Manager - SET FILE POSITION
DI = 0506h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see #2958)
2 WORDs ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0507h
--------b-60----DI0507-----------------------
INT 60 u - HP 95LX System Manager - GET FILE POSITION
DI = 0507h "M_TELL"
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see #2958)
DWORD pointer to DWORD buffer for file position???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0506h
--------b-60----DI0508-----------------------
INT 60 u - HP 95LX System Manager - CLOSE FILE
DI = 0508h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to file state record (see #2958)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0500h
--------b-60----DI0509-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETPAT"
DI = 0509h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI050A-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_MATCH"
DI = 050Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ??? (see #2960)
DWORD pointer to ???
Return: ???
STACK unchanged
Format of HP 95LX pattern match control block:
Offset Size Description (Table 2960)
00h 43 BYTEs FindFirst data block (see #1312 at INT 21/AH=4Eh)
2Bh 80 BYTEs full path name
7Bh BYTE offset of last component of filename
7Ch BYTE DOS function number (4Eh or 4Fh)
--------b-60----DI050B-----------------------
INT 60 u - HP 95LX System Manager - IDENTIFY FILENAME REFERENT
DI = 050Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
DWORD pointer to ???
Return: ??? = result (see #2961)
???
STACK unchanged
(Table 2961)
Values returned by HP 95LX System Manager:
0000h nonexistent
0001h file
0002h directory
0003h character device
--------b-60----DI050C-----------------------
INT 60 u - HP 95LX System Manager - DELETE FILE
DI = 050Ch "M_DELETE"
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI050D-----------------------
INT 60 u - HP 95LX System Manager - RENAME FILE
DI = 050Dh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI050E-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETDIR"
DI = 050Eh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI050F-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_SETDIR"
DI = 050Fh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0510-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_VOLUME"
DI = 0510h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0511-----------------------
INT 60 u - HP 95LX System Manager - MAKE A SUBDIRECTORY
DI = 0511h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 21/AH=39h,INT 60/DI=0512h
--------b-60----DI0512-----------------------
INT 60 u - HP 95LX System Manager - REMOVE A SUBDIRECTORY
DI = 0512h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 21/AH=3Ah,INT 60/DI=0511h
--------b-60----DI0513-----------------------
INT 60 u - HP 95LX System Manager - GET DEFAULT DRIVE
DI = 0513h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ??? buffer for current drive
Return: ???
STACK unchanged
SeeAlso: INT 21/AH=19h,INT 60/DI=0514h
--------b-60----DI0514-----------------------
INT 60 u - HP 95LX System Manager - SET DEFAULT DRIVE
DI = 0514h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD new drive
Return: ???
STACK unchanged
SeeAlso: INT 21/AH=0Eh"DOS 1+",INT 60/DI=0513h
--------b-60----DI0515-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_FDATE"
DI = 0515h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0516-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GET_SYSDIR"
DI = 0516h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0517-----------------------
INT 60 u - HP 95LX System Manager - GET FILE ATTRIBUTES
DI = 0517h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
DWORD pointer to ??? buffer for file's attributes???
Return: ???
STACK unchanged
SeeAlso: INT 21/AX=4300h,INT 60/DI=0518h
--------b-60----DI0518-----------------------
INT 60 u - HP 95LX System Manager - SET FILE ATTRIBUTES
DI = 0518h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
WORD new attributes???
Return: ???
STACK unchanged
SeeAlso: INT 21/AX=4301h,INT 60/DI=0517h
--------b-60----DI0519-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COMMON_OPEN"
DI = 0519h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
WORD ???
WORD ???
WORD ???
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI051A-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_COPYDT"
DI = 051Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI051B-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_GETFDT"
DI = 051Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI051C-----------------------
INT 60 u - HP 95LX System Manager - FILE SERVICE "M_PUTFDT"
DI = 051Ch
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0600-----------------------
INT 60 u - HP 95LX System Manager - PROCESS INITIALIZING
DI = 0600h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0601h,INT 61"HP 95LX"
--------b-60----DI0601-----------------------
INT 60 u - HP 95LX System Manager - PROCESS TERMINATION
DI = 0601h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: never
STACK unchanged
SeeAlso: INT 21/AH=4Ch,INT 2F/AX=1122h,INT 60/DI=0600h
--------b-60----DI0602-----------------------
INT 60 u - HP 95LX System Manager - "M_LOCK" - PREVENT TASK SWITCHES
DI = 0602h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=101Bh,INT 2F/AX=1681h,INT 60/DI=0603h
--------b-60----DI0603-----------------------
INT 60 u - HP 95LX System Manager - "M_UNLOCK" - ALLOW TASK SWITCHES
DI = 0603h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=101Ch,INT 2F/AX=1682h,INT 60/DI=0602h
--------b-60----DI0604-----------------------
INT 60 u - HP 95LX System Manager - "M_SPAWN"
DI = 0604h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 21/AH=4Bh
--------b-60----DI0605-----------------------
INT 60 u - HP 95LX System Manager - "M_APPCOUNT"
DI = 0605h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
--------b-60----DI0606-----------------------
INT 60 u - HP 95LX System Manager - "M_REBOOT"
DI = 0606h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 14/AH=17h"FOSSIL",INT 19
--------b-60----DI0607-----------------------
INT 60 u - HP 95LX System Manager - "M_SPAWNARG"
DI = 0607h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0608-----------------------
INT 60 u - HP 95LX System Manager - "M_REG_APP_NAME"
DI = 0608h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0609-----------------------
INT 60 u - HP 95LX System Manager - "M_APP_NAME"
DI = 0609h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: DX:AX -> ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI0700-----------------------
INT 60 u - HP 95LX System Manager - OPEN CLIPBOARD
DI = 0700h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ??? = error code (see #2962)
???
STACK unchanged
SeeAlso: INT 60/DI=0701h,INT 60/DI=0702h
(Table 2962)
Values for HP 95LX error code:
0000h successful
FFF8h transfer request out of bounds
FFF9h no such representation
FFFAh no representation open
FFFBh a representation is already open
FFFCh representation already exists
FFFDh heap allocation failure
FFFEh clipboard not open
FFFFh clipboard access denied
--------b-60----DI0701-----------------------
INT 60 u - HP 95LX System Manager - CLOSE CLIPBOARD
DI = 0701h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0700h,INT 60/DI=0702h
--------b-60----DI0702-----------------------
INT 60 u - HP 95LX System Manager - RESET CLIPBOARD
DI = 0702h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0700h
--------b-60----DI0704-----------------------
INT 60 u - HP 95LX System Manager - "M_NEW_REP" - START A NEW REPRESENTATION???
DI = 0704h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0705h,INT 60/DI=0706h,INT 60/DI=0707h
--------b-60----DI0705-----------------------
INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_FINI_REP"
DI = 0705h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0704h
--------b-60----DI0706-----------------------
INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_NAME"
DI = 0706h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0704h,INT 60/DI=0707h
--------b-60----DI0707-----------------------
INT 60 u - HP 95LX System Manager - CLIPBOARD SERVICE "M_REP_INDEX"
DI = 0707h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0704h,INT 60/DI=0706h
--------b-60----DI0708-----------------------
INT 60 u - HP 95LX System Manager - WRITE TO CLIPBOARD
DI = 0708h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to data to be written???
WORD length of data???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0709h
--------b-60----DI0709-----------------------
INT 60 u - HP 95LX System Manager - READ FROM CLIPBOARD
DI = 0709h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
DWORD pointer to buffer for data???
WORD length of buffer???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0708h
--------b-60----DI0800-----------------------
INT 60 u - HP 95LX System Manager - BEEP
DI = 0800h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0801h,INT 60/DI=0802h,INT 60/DI=0803h
--------b-60----DI0801-----------------------
INT 60 u - HP 95LX System Manager - SOUND SERVICE "M_THUD"
DI = 0801h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0800h,INT 60/DI=0802h,INT 60/DI=0803h
--------b-60----DI0802-----------------------
INT 60 u - HP 95LX System Manager - MAKE A SOUND PATTERN
DI = 0802h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD pattern number (00h-06h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0803h
--------b-60----DI0803-----------------------
INT 60 u - HP 95LX System Manager - TURN OFF SOUND
DI = 0803h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0800h,INT 60/DI=0801h,INT 60/DI=0802h
--------b-60----DI0900-----------------------
INT 60 - HP 95LX System Manager - ALLOCATE REGULAR MEMORY BLOCK
DI = 0900h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD size of block in bytes
Return: AX -> memory block
STACK unchanged
Note: System Manager-compliant applications are always small-model (64K code,
64K data)
SeeAlso: INT 15/AX=4DD4h,INT 60/DI=0902h,INT 60/DI=0903h
--------b-60----DI0902-----------------------
INT 60 u - HP 95LX System Manager - FREE REGULAR MEMORY BLOCK
DI = 0902h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD offset of memory block???
Return: ???
STACK unchanged
Note: System Manager-compliant applications are always small-model (64K code,
64K data)
SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
--------b-60----DI0903-----------------------
INT 60 u - HP 95LX System Manager - ALLOCATE LARGE MEMORY BLOCK
DI = 0903h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD size of block in bytes???
Return: AX -> memory block???
STACK unchanged
SeeAlso: INT 60/DI=0900h,INT 60/DI=0904h
--------b-60----DI0904-----------------------
INT 60 u - HP 95LX System Manager - FREE LARGE MEMORY BLOCK
DI = 0904h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD segment of memory block???
Return: AX -> ???
STACK unchanged
SeeAlso: INT 60/DI=0902h,INT 60/DI=0903h
--------b-60----DI0B00-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DTINFO"
DI = 0B00h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0B01-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GETDTM"
DI = 0B01h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0B02-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SETDTM"
DI = 0B02h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0B03-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_XALARM"
DI = 0B03h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0B04-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_ALARM"
DI = 0B04h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to alarm record??? (see #2963)
WORD ???
Return: ???
STACK unchanged
Format of HP 95LX alarm record:
Offset Size Description (Table 2963)
00h BYTE hour
01h BYTE minute
02h BYTE second
03h BYTE unused padding
04h WORD rescheduling interval, in seconds
06h BYTE are seconds significant?
07h BYTE alarm sound
08h 40 BYTEs message displayed when alarm activates
30h BYTE task ID of owner
31h BYTE application's own use for sub-class
32h 4 BYTEs application's own use for private data
--------b-60----DI0B05-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_SW"
DI = 0B05h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0B06-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SW"
DI = 0B06h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0B07-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_SW"
DI = 0B07h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0B08-----------------------
INT 60 u - HP 95LX System Manager - "M_TELLTIME" - DISPLAY TIMESTAMP
DI = 0B08h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD timestamp format (see #2964)
WORD row (-3 is topmost, 0 is first non-reserved line)
WORD column
Return: ???
STACK unchanged
Bitfields for HP 95LX timestamp format:
Bit(s) Description (Table 2964)
1-0 timestamp components
00 date only
01 time only
10 date and time
11 day and date
4 supply am/pm
5 supply seconds
6 show year
7 four-digit year
--------b-60----DI0B09-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_SETTINGS"
DI = 0B09h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ??? (see #2965)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B0Ah,INT 60/DI=0B0Fh
Format of HP 95LX system settings:
Offset Size Description (Table 2965)
00h WORD country code
02h WORD speaker volume (00h-03h or FFh for off)
04h WORD contrast level (00h-0Fh)
06h WORD week start (00h Sunday, 01h Monday)
08h WORD punctuation format (see #2966)
0Ah WORD two-character language code (only 5355h = "US" byte-swapped)
0Ch WORD current date format (see #2967)
0Eh WORD current time format (see #2968)
10h WORD collating sequence
00h numbers first, 01h letters first, 02h ASCII
12h 80 BYTEs name of picture file
62h 30 BYTEs name
80h 30 BYTEs title
9Eh 28 BYTEs company name
BAh WORD number of languages
BCh 6 BYTEs available languages
C2h 66 BYTEs language menu
104h 2 BYTEs ASCIZ date separator
106h 2 BYTEs ASCIZ time separator
108h BYTE date order
109h BYTE use 24 hour time?
10Ah 16 BYTEs currency string
11Ah WORD currency string position (00h prefix, 01h suffix)
11Ch WORD keyboard (see #2969)
11Eh WORD printer baud rate
00h 300, 01h 1200, 02h 2400, 03h 4800, 04h 9600, 05h 19200
120h WORD printer driver code
00h Epson FX80, 01h HP Laserjet, 02h IBM ProPrinter
122h WORD printer interface (00h COM1, 01h COM2, 02h IR, 03h LPT1)
124h WORD system manager interrupt (60h by default)
126h WORD code page (01h CP850, 02h CP437)
128h WORD active exit key
12Ah WORD active menu key
12Ch WORD active CHAR key toggle
12Eh 6 BYTEs alarm
(Table 2966)
Values for HP 95LX punctuation format:
code decimal arg thousands
00h . , ,
01h , . .
02h . ; ;
03h , ; .
04h . , " "
05h , . " "
06h . ; " "
07h , ; " "
(Table 2967)
Values for HP 95LX current date format:
00h dd-mmm-yy
01h dd-mmm
02h mmm-yy
03h mm/dd/yy
04h dd/mm/yy
05h dd.mm.yy
06h yy-mm-dd
07h mm/dd
08h dd/mm
09h dd.mm
0Ah mm-dd
(Table 2968)
Values for HP 95LX current time format:
00h HH:MM:SS am/pm
01h HH:MM am/pm
02h HH:MM:SS
03h HH.MM.SS
04h HH,MM,SS
05h HHhMMmSSs
06h HH:MM
07h HH.MM
08h HH,MM
09h HHhMMm
(Table 2969)
Values for HP 95LX keyboard layout:
0001h Belgium
0002h French Canadian
0004h Denmark
0008h Finland
0010h French
0020h Finland
0040h Italy
0080h Netherlands
0100h Norway
0200h Portugal
0400h Spain
0800h Sweden
1000h Swiss French
2000h Swiss German
4000h United Kingdom
8000h USA
--------b-60----DI0B0A-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_SET_SETTINGS"
DI = 0B0Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B09h
--------b-60----DI0B0B-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_START_TIMER"
DI = 0B0Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B0Ch,INT 60/DI=0B0Dh
--------b-60----DI0B0C-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_STOP_TIMER"
DI = 0B0Ch
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Dh
--------b-60----DI0B0D-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_GET_TIMER"
DI = 0B0Dh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B0Bh,INT 60/DI=0B0Ch
--------b-60----DI0B0E-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_TELL_ANYTIME"
DI = 0B0Eh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: DX:AX -> ???
STACK unchanged
--------b-60----DI0B0F-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVCE "M_GET_SETTINGS_ADDR"
DI = 0B0Fh
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> system settings record (see #2965)
STACK unchanged
SeeAlso: INT 60/DI=0B09h
--------b-60----DI0B10-----------------------
INT 60 u - HP 95LX System Manager - PARSE DATE SPECIFICATION
DI = 0B10h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0B11-----------------------
INT 60 u - HP 95LX System Manager - PARSE TIME SPECIFICATION
DI = 0B11h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0B12-----------------------
INT 60 u - HP 95LX System Manager - SET DATE PARSING RULE
DI = 0B12h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD new parsing rule (see #2970)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B13h
(Table 2970)
Values for HP 95LX date parsing rule:
01h day-month-year
02h month-day-year
03h year-month-day
04h "DMYO"
05h "MDYO"
OR with 08h to get any year
--------b-60----DI0B13-----------------------
INT 60 u - HP 95LX System Manager - SET TIME PARSING RULE
DI = 0B13h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD new parsing rule (see #2971)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0B12h
(Table 2971)
Values for HP 95LX time parsing rule:
01h HH:MM:SS (am/pm)
02h HH:MM:SS (24hr)
03h HHMM:SS (24hr)
04h HH:MM:SS.hh (24hr)
05h HH:MM (am/pm)
06h HH:MM (24hr)
07h HHMM (24hr)
--------b-60----DI0B14-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_POST_TIME"
DI = 0B14h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
--------b-60----DI0B15-----------------------
INT 60 u - HP 95LX System Manager - CLOCK/CALENDAR SERVICE "M_DAY_TRIGGER"
DI = 0B15h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI0C00-----------------------
INT 60 u - HP 95LX System Manager - OPEN PRINTER
DI = 0C00h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0C01h,INT 60/DI=0C02h,INT 60/DI=0C03h
--------b-60----DI0C01-----------------------
INT 60 u - HP 95LX System Manager - CLOSE PRINTER
DI = 0C01h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
Note: relinquishes control of printer
SeeAlso: INT 60/DI=0C00h
--------b-60----DI0C02-----------------------
INT 60 u - HP 95LX System Manager - WRITE TO PRINTER
DI = 0C02h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to data to be written
WORD length of data
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0C00h
--------b-60----DI0C03-----------------------
INT 60 u - HP 95LX System Manager - INITIALIZE PRINTER
DI = 0C03h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0C00h
--------b-60----DI0C04-----------------------
INT 60 u - HP 95LX System Manager - "M_TRANS_PRINTER"
DI = 0C04h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0C05-----------------------
INT 60 u - HP 95LX System Manager - "M_FALL_PRINTER"
DI = 0C05h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI0E00-----------------------
INT 60 u - HP 95LX System Manager - COMMUNICATIONS SERVICE "M_COMM_INIT"
DI = 0E00h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: #2972,INT 60/DI=0E01h,INT 60/DI=0E02h
(Table 2972)
Values for HP 95LX error code:
0000h successful
FFF1h "E_BUSY"
FFF2h timeout
FFF3h framing error
FFF4h parity error
FFF5h overrun error
FFF6h "E_EMPTY"
FFF7h "E_CONECT"
FFF8h not open
FFF9h out of memory
FFFAh buffer overflow
FFFBh "E_NOFIT"
FFFCh unsupported
FFFDh "E_IVOPR"
FFFEh "E_IVCHN"
FFFFh "E_REOPEN"
--------b-60----DI0E01-----------------------
INT 60 u - HP 95LX System Manager - OPEN COMMUNICATIONS CHANNEL
DI = 0E01h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to WORD buffer for comm channel handle
WORD communications line number (01h-04h)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E02h
--------b-60----DI0E02-----------------------
INT 60 u - HP 95LX System Manager - CLOSE COMMUNICATIONS CHANNEL
DI = 0E02h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E00h,INT 60/DI=0E01h
--------b-60----DI0E03-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_GETMDM"
DI = 0E03h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E04-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_ANSWER"
DI = 0E04h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E05-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_DIAL"
DI = 0E05h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0E06-----------------------
INT 60 u - HP 95LX System Manager - RESET COMMUNICATIONS CHANNEL
DI = 0E06h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
WORD reset options (see #2973)
Return: ???
STACK unchanged
Bitfields for HP 95LX reset options:
Bit(s) Description (Table 2973)
0 reset line
1 flush transmit buffer
2 flush receive buffer
3 reset modem
4 reset receiver's ^S state
5 reset transmitter's ^S state
--------b-60----DI0E07-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_HANGUP"
DI = 0E07h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E08-----------------------
INT 60 u - HP 95LX System Manager - SEND DATA OVER COMM CHANNEL
DI = 0E08h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
DWORD pointer to data to be sent
WORD option flags
bit 0: send partial buffer
bit 1: turn on receiver after sending
DWORD pointer to WORD containing length of data to be sent
Return: length WORD updated to contain number of bytes actually sent???
STACK unchanged
SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
--------b-60----DI0E09-----------------------
INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL TRANSMIT QUEUE
DI = 0E09h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ??? WORD
DWORD pointer to ??? WORD
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E0Ah
--------b-60----DI0E0A-----------------------
INT 60 u - HP 95LX System Manager - QUERY COMM CHANNEL RECEIVE QUEUE
DI = 0E0Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
DWORD pointer to WORD to get receive buffer size
DWORD pointer to WORD to get free bytes in receive buffer
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E09h,INT 60/DI=0E0Bh
--------b-60----DI0E0B-----------------------
INT 60 u - HP 95LX System Manager - RECEIVE DATA FROM COMM CHANNEL
DI = 0E0Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
DWORD pointer to data buffer
DWORD pointer to WORD (call) length of data buffer
(ret) number of bytes received
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E08h,INT 60/DI=0E0Ah
--------b-60----DI0E0C-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_HAZCMD"
DI = 0E0Ch
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E0D-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_COMAND"
DI = 0E0Dh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E0E-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_BREAK"
DI = 0E0Eh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E0F-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_FRCXON"
DI = 0E0Fh
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E10-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_FRCXOF"
DI = 0E10h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E11-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_SETDTR"
DI = 0E11h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E12-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_XMITNG"
DI = 0E12h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E13-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_STATUS"
DI = 0E13h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E14-----------------------
INT 60 u - HP 95LX System Manager - SET COMMUNICATIONS SETTINGS
DI = 0E14h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD comm channel handle
DWORD pointer to communications settings (see #2974)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E15h
Format of HP 95LX communications settings:
Offset Size Description (Table 2974)
00h BYTE dial type ('T' tone, 'P' pulse)
01h WORD baud rate divisor (115200/baud_rate)
03h BYTE parity (00h none, 08h odd, 18h even, 28h mark, 38h space)
04h BYTE stop bits (00h one, 04h two)
05h BYTE data bits - 5
06h BYTE software handshake
01h none, 02h XOFF/XON, 04h XOFF/any, 08h ENQ/ACK
07h BYTE infrared (01h off, 02h on)
08h BYTE duplex (01h half, 02h full)
09h BYTE echo (01h echo, 02h no echo)
--------b-60----DI0E15-----------------------
INT 60 u - HP 95LX System Manager - GET COMMUNICATIONS SETTINGS
DI = 0E15h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to buffer for settings (see #2974)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0E14h
--------b-60----DI0E16-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_CNFGUR"
DI = 0E16h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
WORD ???
WORD ???
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI0E17-----------------------
INT 60 u - HP 95LX System Manager - "M_COMM_QRYERR"
DI = 0E17h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI0F00-----------------------
INT 60 u - HP 95LX System Manager - "M_ERRMSG"
DI = 0F00h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
DWORD pointer to ???
WORD ???
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0F01-----------------------
INT 60 u - HP 95LX System Manager - DRAW STANDARD TITLE BOX
DI = 0F01h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ASCIZ title string
Return: ???
STACK unchanged
--------b-60----DI0F02-----------------------
INT 60 u - HP 95LX System Manager - "SHOWNAME"
DI = 0F02h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI0F03-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY TWO-LINE MESSAGE BOX
DI = 0F03h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to first line of message
WORD length of first line
DWORD pointer to second line of message
WORD length of second line
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0300h,INT 60/DI=0F04h,INT 60/DI=0F09h
--------b-60----DI0F04-----------------------
INT 60 u - HP 95LX System Manager - REMOVE MESSAGE BOX
DI = 0F04h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F09h
--------b-60----DI0F05-----------------------
INT 60 u - HP 95LX System Manager - "M_COM_TIMER_ADDR"
DI = 0F05h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> ???
STACK unchanged
--------b-60----DI0F06-----------------------
INT 60 u - HP 95LX System Manager - "M_COM_TIMER_COUNT_ADDR"
DI = 0F06h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> ???
STACK unchanged
--------b-60----DI0F07-----------------------
INT 60 u - HP 95LX System Manager - "M_SYS_RSRC_ADDR"
DI = 0F07h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> ???
STACK unchanged
--------b-60----DI0F08-----------------------
INT 60 u - HP 95LX System Manager - "M_BIOS_OUTSTR"
DI = 0F08h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI0F09-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY THREE-LINE MESSAGE BOX
DI = 0F09h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to first line of message
WORD length of first line
DWORD pointer to second line of message
WORD length of second line
DWORD pointer to third line of message
WORD length of third line
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F03h,INT 60/DI=0F04h
--------b-60----DI0F0A-----------------------
INT 60 u - HP 95LX System Manager - DISABLE MACROS
DI = 0F0Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F0Bh
--------b-60----DI0F0B-----------------------
INT 60 u - HP 95LX System Manager - ENABLE MACROS
DI = 0F0Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 60/DI=0F0Ah
--------b-60----DI0F0C-----------------------
INT 60 u - HP 95LX System Manager - "M_DATE_TIME_SEPS"
DI = 0F0Ch
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI0F0D-----------------------
INT 60 u - HP 95LX System Manager - "M_FORM_FT"
DI = 0F0Dh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: DX:AX -> ???
STACK unchanged
--------b-60----DI0F0E-----------------------
INT 60 u - HP 95LX System Manager - "M_RAM_IV_INFO"
DI = 0F0Eh
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: DX:AX -> ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI1005-----------------------
INT 60 u - HP 95LX System Manager - "M_DIRTY_SYNC" - FORCE SCREEN UPDATE
DI = 1005h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
SeeAlso: INT 10/AH=FFh,INT 60/DI=0300h,INT 60/DI=0301h
--------b-60----DI1200-----------------------
INT 60 u - HP 95LX System Manager - RESOURCE SERVICE "MAP_RESOURCE_FILE"
DI = 1200h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI1201-----------------------
INT 60 u - HP 95LX System Manager - "GET_RESOURCE_PTR"
DI = 1201h
STACK: 2 WORDs unused dummies (for calls from high level languages)
WORD ???
Return: DX:AX -> ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI1202-----------------------
INT 60 u - HP 95LX System Manager - "GET_RSRC_TAB_PTR"
DI = 1202h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: DX:AX -> ???
STACK unchanged
--------b-60----DI1203-----------------------
INT 60 u - HP 95LX System Manager - "INIT_SYSMGR_RSRCS"
DI = 1203h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: ???
STACK unchanged
--------b-60----DI1300-----------------------
INT 60 u - HP 95LX System Manager - INITIALIZE HELP SYSTEM
DI = 1300h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI1301-----------------------
INT 60 u - HP 95LX System Manager - DISPLAY HELP
DI = 1301h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
--------b-60----DI1302-----------------------
INT 60 u - HP 95LX System Manager - "M_HELP_KEY"
DI = 1302h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI1303-----------------------
INT 60 u - HP 95LX System Manager - "M_HELP_TERM"
DI = 1303h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI1400-----------------------
INT 60 u - HP 95LX System Manager - "M_ColInit"
DI = 1400h
STACK: 2 WORDs unused dummies (for calls from high level languages)
Return: AX = ???
STACK unchanged
--------b-60----DI1401-----------------------
INT 60 u - HP 95LX System Manager - "M_ColCpStr"
DI = 1401h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI1402-----------------------
INT 60 u - HP 95LX System Manager - "M_ColLicsStr"
DI = 1402h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1403-----------------------
INT 60 u - HP 95LX System Manager - "M_ColLicsChar"
DI = 1403h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1404-----------------------
INT 60 u - HP 95LX System Manager - "M_ColToLower"
DI = 1404h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI1405-----------------------
INT 60 u - HP 95LX System Manager - "M_ColCpSearch"
DI = 1405h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
DWORD pointer to ???
WORD ???
WORD ???
Return: ???
STACK unchanged
--------b-60----DI1406-----------------------
INT 60 u - HP 95LX System Manager - "M_ColToUpper"
DI = 1406h
STACK: 2 WORDs unused dummies (for calls from high level languages)
DWORD pointer to ???
WORD ???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI1500-----------------------
INT 60 u - HP 95LX System Manager - "GrDispInit"
DI = 1500h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1501-----------------------
INT 60 u - HP 95LX System Manager - "GrDispClear"
DI = 1501h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1502-----------------------
INT 60 u - HP 95LX System Manager - "GrDispDot"
DI = 1502h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1503-----------------------
INT 60 u - HP 95LX System Manager - "GrDispDraw"
DI = 1503h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1504-----------------------
INT 60 u - HP 95LX System Manager - "GrDispFill"
DI = 1504h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1505-----------------------
INT 60 u - HP 95LX System Manager - "GrDispRead"
DI = 1505h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1506-----------------------
INT 60 u - HP 95LX System Manager - "GrDispString"
DI = 1506h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1507-----------------------
INT 60 u - HP 95LX System Manager - "GrDispPan"
DI = 1507h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1508-----------------------
INT 60 u - HP 95LX System Manager - "GrDispZoom"
DI = 1508h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI1509-----------------------
INT 60 u - HP 95LX System Manager - "GrDispSave"
DI = 1509h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI150A-----------------------
INT 60 u - HP 95LX System Manager - "GrDispRestore"
DI = 150Ah
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
--------b-60----DI150B-----------------------
INT 60 u - HP 95LX System Manager - "GrDispCorner"
DI = 150Bh
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------b-60----DI1604-----------------------
INT 60 u - HP 95LX System Manager - "CP_TO_LICS"
DI = 1604h
STACK: 2 WORDs unused dummies (for calls from high level languages)
???
Return: ???
STACK unchanged
SeeAlso: INT 15/AX=4DD4h,INT 61"HP 95LX",INT 62"HP 95LX"
--------G-6000-------------------------------
INT 60 - SYS_PROF.EXE - PROFILER STATUS
AH = 00h
Return: AX = 0000h profiling is off
otherwise profiling is on
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
Issue 47
SeeAlso: AH=01h"SYS_PROF",AH=02h"SYS_PROF"
--------G-6000-------------------------------
INT 60 - MDEBUG - GET STATUS
AH = 00h
DS:SI -> password or a null byte
Return: AX = return code
FFFEh password is invalid
FFFDh display mode is invalid
else successful
ES = value of the monitor register SE
DI = value of the monitor register OF
CH = monitor color
CL = interpreter color
BH = monitor start line
BL = interpreter start line
AH = makecode of the hotkey
AL = ASCII code of the hotkey
DL = status of special keys (only SHIFT, ALT, CTRL) for the
hotkey (coded as for the keyboard flag at 0040h:0017h)
DH = basic process number for the communication with drivers
process number for the display driver, DH+1 = process
number for the command driver(s)
DS:SI -> MDEBUG identification table (see #2975)
Program: MDEBUG is a shareware memory-resident debugging tool by Bernd
Schemmer, including a memory monitor, an interpreter, and a
disassembler
Notes: MDEBUG uses INT 60 by default, but may be directed to any of INT 60
through INT 67; the interrupt handler is preceded by the signature
"USERINT" and is not chained
if DS:SI points at a null byte, MDEBUG will prompt for a password if
passwords are active; enough stack space must be provided for an
INT 10h call (which MDEBUG uses while prompting for the password)
SeeAlso: AH=02h"MDEBUG"
Index: hotkeys;MDEBUG
Format of MDEBUG identification table:
Offset Size Description (Table 2975)
-2 WORD entry offset
00h WORD CS of MDEBUG
02h DWORD old INT 08h vector
06h DWORD old INT 09h vector
0Ah DWORD address INT 16h routine used by MDEBUG
0Eh BYTE length of version string
0Fh N BYTEs version string
--------N-600000-----------------------------
INT 60 - RIFS - CLIENT - INSTALLATION CHECK
AX = 0000h
Return: AX = 1234h if installed
CF clear
Program: RIFS is the Remote Installable File System by "kyle"
Range: INT 60 to INT 66 and INT 18,selected by scanning for 0000h:0000h vector
Note: the installation check consists of testing for the signature "RIFS"
immediately preceding the interrupt handler
SeeAlso: AX=0001h,AX=0005h,AX=0007h,AX=0008h,INT 2F/AX=5600h
--------N-600001-----------------------------
INT 60 - RIFS - CLIENT - UNINSTALL
AX = 0001h
Return: CF clear if successful
SeeAlso: AX=0000h,AX=0009h
--------N-600002-----------------------------
INT 60 - RIFS - CLIENT - REMAP DRIVE
AX = 0002h
BH = local drive number
BL = remote drive number
Return: CF clear if successful
CF set on error
SeeAlso: AX=0000h,AX=0003h,AX=0004h,INT 21/AX=5F03h,INT 21/AX=5F05h"STARLITE"
--------N-600003-----------------------------
INT 60 - RIFS - CLIENT - UNMAP DRIVE
AX = 0003h
BL = drive to unmap
Return: CF clear if successful
CF set on error
SeeAlso: AX=0000h,AX=0002h,AX=0004h,INT 21/AX=5F04h,INT 21/AX=5F06h"STARLITE"
--------N-600004-----------------------------
INT 60 - RIFS - CLIENT - UNMAP ALL DRIVES
AX = 0004h
Return: CF clear if successful
CF set on error
SeeAlso: AX=0000h,AX=0002h,AX=0003h
--------N-600005-----------------------------
INT 60 - RIFS - CLIENT - GET TRANSLATION TABLE
AX = 0005h
Return: CF clear if successful
ES:BX -> translation table
CF set on error
SeeAlso: AX=0000h,AX=0006h,AX=0007h
--------N-600006-----------------------------
INT 60 - RIFS - CLIENT - GET STATISTICS TABLE
AX = 0006h
Return: CF clear if successful
ES:BX -> statistics table
CF set on error
SeeAlso: AX=0000h,AX=0005h,AX=0007h,AX=000Ah
--------N-600007-----------------------------
INT 60 - RIFS - CLIENT - GET PORT TRANSLATION TABLE
AX = 0007h
Return: CF clear if successful
CX = number of entries
ES:BX -> port mapping table
CF set on error
SeeAlso: AX=0000h,AX=0005h
--------N-600008-----------------------------
INT 60 - RIFS - SERVER - INSTALLATION CHECK
AX = 0008h
Return: CF clear if successful
CF set on error
Range: INT 60 to INT 66 and INT 18,selected by scanning for 0000h:0000h vector
Note: the installation check consists of testing for the signature "RIFS"
immediately preceding the interrupt handler
SeeAlso: AX=0000h,AX=0009h,AX=000Ah,AX=000Bh
--------N-600009-----------------------------
INT 60 - RIFS - SERVER - UNINSTALL
AX = 0009h
Return: CF clear if successful
CF set on error
SeeAlso: AX=0001h,AX=0008h
--------N-60000A-----------------------------
INT 60 - RIFS - SERVER - GET STATISTICS TABLE
AX = 000Ah
Return: CF clear if successful
ES:BX -> statistics table
CF set on error
SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Bh
--------N-60000B-----------------------------
INT 60 - RIFS - SERVER - RESET
AX = 000Bh
Return: CF clear if successful
CF set on error
Note: closes all open files
SeeAlso: AX=0008h,AX=0009h
--------G-6001-------------------------------
INT 60 - MDEBUG - GET ADDRESS OF THE HELP REGISTERS
AH = 01h
DS:SI -> password or a null byte
Return: AX = return code
FFFEh password is invalid
FFFDh display mode is invalid
else successful
ES:DI point to the help registers of MDEBUG
ES:DI-02h -> R0 (WORD)
ES:DI -> R1 (WORD)
ES:DI+02h -> R2 (WORD)
ES:DI+04h -> R3 (WORD)
...
ES:DI+0Eh -> R8 (WORD)
--------G-6001-------------------------------
INT 60 - SYS_PROF.EXE - TURN PROFILING OFF
AH = 01h
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
Issue 47
SeeAlso: AH=00h"SYS_PROF",AH=02h"SYS_PROF"
--------N-6001FF-----------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - GET DRIVER INFO
AX = 01FFh
BX = handle returned by function 02h
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
BX = version
CH = network interface class (see #2977)
DX = interface type (see #2977)
CL = number
DS:SI -> name
AL = driver functions supported
01h basic
02h basic and extended
05h basic and high-performance
06h basic, high-performance, and extended
FFh not installed
Note: the handle in BX is optional for drivers written to v1.07 or later of
the packet driver specification
(Table 2976)
Values for Packet Driver error code:
01h "BAD_HANDLE" invalid handle number
02h "NO_CLASS" no interfaces of the specified class found
03h "NO_TYPE" no interfaces of the specified type found
04h "NO_NUMBER" no interfaces of the specified number found
05h "BAD_TYPE" bad packet type
06h "NO_MULTICAST" interface does not support multicast messages
07h "CANT_TERMINATE" this packet driver cannot terminate
08h "BAD_MODE" invalid receiver mode
09h "NO_SPACE" insufficient space
0Ah "TYPE_INUSE" type accessed but never released
0Bh "BAD_COMMAND" bad command
0Ch "CANT_SEND" packet could not be sent
0Dh "CANT_SET" hardware address could not be changed
0Eh "BAD_ADDRESS" hardware address has a bad length or format
0Fh "CANT_RESET" could not reset interface
(Table 2977)
Values for Packet Driver network interface classes/types:
Class 01h Ethernet/IEEE 802.3
01h 3COM 3C500/3C501
02h 3COM 3C505
03h MICOM-Interlan NI5010
04h BICC Data Networks 4110
05h BICC Data Networks 4117
06h MICOM-Interlan NP600
08h Ungermann-Bass PC-NIC
09h Univation NC-516
0Ah TRW PC-2000
0Bh MICOM-Interlan NI5210
0Ch 3COM 3C503
0Dh 3COM 3C523
0Eh Western Digital WD8003
0Fh Spider Systems S4
10h Torus Frame Level
11h 10Net Communications
12h Gateway PC-bus
13h Gateway AT-bus
14h Gateway MCA-bus
15h IMC PCnic
16h IMC PCnic II
17h IMC PCnic 8-bit
18h Tigan Communications
19h Micromatic Research
1Ah Clarkson "Multiplexor"
1Bh D-Link 8-bit
1Ch D-Link 16-bit
1Dh D-Link PS/2
1Eh Research Machines 8
1Fh Research Machines 16
20h Research Machines MCA
21h Radix Microsystems EXM1 16-bit
22h Interlan Ni9210
23h Interlan Ni6510
24h Vestra LANMASTER 16-bit
25h Vestra LANMASTER 8-bit
26h Allied Telesis PC/XT/AT
27h Allied Telesis NEC PC-98
28h Allied Telesis Fujitsu FMR
29h Ungermann-Bass NIC/PS2
2Ah Tiara LANCard/E AT
2Bh Tiara LANCard/E MC
2Ch Tiara LANCard/E TP
2Dh Spider Communications SpiderComm 8
2Eh Spider Communications SpiderComm 16
2Fh AT&T Starlan NAU
30h AT&T Starlan-10 NAU
31h AT&T Ethernet NAU
32h Intel smart card
33h Xircom Packet Adapter
34h Aquila Ethernet
35h Novell NE1000
36h Novell NE2000
37h SMC PC-510
38h AT&T Fiber NAU
39h NDIS to Packet Driver adapter
3Ah Racal-InterLan ES3210
3Bh General Systems ISDN simulated Ethernet
3Ch Hewlett-Packard
3Dh IMC EtherNic-8
3Eh IMC EtherNic-16
3Fh IMC EtherNic-MCA
40h NetWorth EtherNext
41h Dataco Scanet
42h DEC DEPCA
43h C-Net
44h Gandalf LANLine
45h Apricot built-in
46h David Systems Ether-T
47h ODI to Packet Driver adapter (see also INT 2F/AX=5100h)
48h AMD Am21110-16
49h Intel ICD Network controller family
4Ah Intel ICD PCL2
4Bh Intel ICD PCL2A
4Ch AT&T LANPacer
4Dh AT&T LANPacer+
4Eh AT&T EVB
4Fh AT&T StarStation
50h SLIP simulated ethernet
51h Racal-Interlan NIA310
52h Racal-Interlan NISE
53h Racal-Interlan NISE30
54h Racal-Interlan NI6610
55h Ethernet over IP/UDP
56h ICL EtherTeam 16
57h David Systems
58h NCR WaveLAN
59h Thomas Contrad TC5045
5Ah Russ Nelson's Parallel Port driver
5Bh Intell EtherExpress 16
5Ch IBMTOKEN
5Dh Zenith Z-Note
5Eh 3Com 3C509
5Fh Mylex LNE390
60h Madge Smart Ringnode
61h Novell NE2100
62h Allied Telesis 1500
63h Allied Telesis 1700
64h Fujitsu EtherCoupler
Class 02h ProNET-10
01h Proteon p1300
02h Proteon p1800
Class 03h IEEE 802.5/ProNet-4 (without expanded RIFs)
01h IBM Token-Ring Adapter
02h Proteon p1340
03h Proteon p1344
04h Gateway PC-bus
05h Gateway AT-bus
06h Gateway MCA-bus
07h Madge board
39h NDIS to Packet Driver adapter
47h ODI to Packet Driver adapter
Class 04h Omninet
Class 05h Appletalk
01h ATALK.SYS adapter
Class 06h Serial Line
01h Clarkson 8250-SLIP
02h Clarkson "Multiplexor"
03h Eicon Technologies
Class 07h StarLAN (subsumed by Ethernet class)
Class 08h ARCnet
01h Datapoint RIM
Class 09h AX.25
01h Ottawa PI card
02h Eicon Technologies
Class 0Ah KISS
Class 0Bh IEEE 802.3 with 802.2 headers
types same as for class 01h
Class 0Ch FDDI with 802.2 headers
01h Western Digital
02h Frontier Technology
Class 0Dh Internet X.25
01h Western Digital
02h Frontier Technology
03h Emerging Technologies
04h The Software Forge
05h Link Data Intelligent X.25
06h Eicon Technologies
Class 0Eh N.T. LANSTAR (encapsulating DIX Ethernet)
01h NT LANSTAR/8
02h NT LANSTAR/MC
Class 0Fh SLFP (MIT serial specification)
01h MERIT
Class 10h PPP (Point-to-Point Protocol)
01h 8250/16550 UART
02h Niwot Networks synch
03h Eicon Technologies
Class 11h 802.5 with expanded RIFs
types same as for class 3
Class 12h reserved for LCP/NCPs
Note: class and type numbers are cleared through FTP Software
--------G-6002-------------------------------
INT 60 - MDEBUG - SET STATUS
AH = 02h
DS:SI -> password or a null byte
ES = new value for the register SE
DI = new value for the register OF
CH = new monitor color if nonzero
CL = new interpreter color if nonzero
BH = new monitor start line if nonzero
BL = new interpreter start line if nonzero
AL = new ASCII code for the hotkey ('A'..'Z', 'a'..'z') if nonzero
DL = new status of the special keys (SHIFT, ALT, CTRL) for the hotkey
if nonzero
DH = if nonzero, new basic process number for communication with the
drivers (DH = multiplex number for the display driver,
DH+1 = multiplex number for the command driver or drivers)
Return: AX = return code
FFFFh call not allowed
FFFEh password is invalid
FFFDh display mode is invalid
0000h successful, status changed
else AL = error reasons (see #2978)
Note: the values of the registers SE and OF are always changed, the other
values are only changed if they are valid
SeeAlso: AH=00h"MDEBUG"
Index: hotkeys;MDEBUG
Bitfields for MDEBUG error reasons:
Bit(s) Description (Table 2978)
0 invalid monitor start line
1 invalid interpreter start line
2 invalid hotkey
3 invalid process number
4-7 reserved
--------N-6002-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - ACCESS TYPE
AH = 02h
AL = interface class
BX = interface type
DL = interface number
DS:SI -> type
CX = length of type (0000h for all packets)
ES:DI -> receiver function (see #2979)
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
AX = handle
SeeAlso: AH=03h"FTP"
(Table 2979)
Values packet driver receiver is called with when a packet is received:
AX = subfunction
00h get packet buffer
CX = buffer length
DX = lookahead length (v1.10+)
DS:SI -> lookahead buffer if DX nonzero (v1.10+)
DI = error flags (class dependent) (v1.10+)
Return: ES:DI -> packet buffer
0000h:0000h means throw away packet
CX = size of buffer (v1.10+), may be smaller than
incoming data
01h copy completed
DS:SI -> buffer
CX = bytes actually copied (v1.10+)
BX = handle
--------G-6002-------------------------------
INT 60 - SYS_PROF.EXE - TURN PROFILING ON
AH = 02h
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
Issue 47
SeeAlso: AH=00h"SYS_PROF",AH=01h"SYS_PROF"
--------G-6003-------------------------------
INT 60 - MDEBUG - POP UP
AH = 03h
DS:SI -> password or a null byte
ES -> new value for the register SE
DI -> new value for the register OF
Return: AX = return code (see #2980)
SeeAlso: AH=04h"MDEBUG"
(Table 2980)
Values for MDEBUG return code:
FFFFh call not allowed
FFFEh password is invalid
FFFDh display mode is invalid
else successful
--------N-6003-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - RELEASE TYPE
AH = 03h
BX = handle
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
SeeAlso: AH=02h"FTP"
--------G-6003-------------------------------
INT 60 - SYS_PROF.EXE - GET ADDRESS OF PROFILING TABLE
AH = 03h
Return: ES:BX -> profiling table
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
Issue 47
SeeAlso: AH=04h"SYS_PROF"
--------N-6004-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - SEND PACKET
AH = 04h
DS:SI -> buffer
CX = length
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
Note: the buffer may be modified immediately upon return from this call
SeeAlso: AH=0Bh
--------G-6004-------------------------------
INT 60 - MDEBUG - POP UP
AH = 04h
DS:SI -> password or a null byte
Return: AX = return code (see #2980)
SeeAlso: AH=03h"MDEBUG",AH=07h"MDEBUG"
--------G-6004-------------------------------
INT 60 - SYS_PROF.EXE - CLEAR PROFILING TABLE
AH = 04h
Note: SYS_PROF.EXE is the TSR portion of a profiler from Micro Cornucopia
Issue 47
SeeAlso: AH=03h"SYS_PROF"
--------N-6005-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - TERMINATE DRIVER FOR HANDLE
AH = 05h
BX = handle (optional for v1.10+)
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
--------G-6005-------------------------------
INT 60 - MDEBUG - GET AND SET MDEBUG FLAGS
AH = 05h
DS:SI -> password or a null byte
BL = new value for the semaphor of MDEBUG
00h enable popup of MDEBUG
else disable popup of MDEBUG
Return: AX = return code
FFFEh password is invalid
FFFDh display mode is invalid
else successful
BL = old value of the semaphor of MDEBUG
BH = old value of the INT 08h semaphor
(this semaphor is always reset after this function)
--------N-6006-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - GET ADDRESS
AH = 06h
BX = handle (optional for v1.10+)
ES:DI -> buffer
CX = length
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
CX = length
Note: copies the local net address associated with the handle into the buffer
--------G-6006-------------------------------
INT 60 - MDEBUG - GET PASSWORD STATUS
AH = 06h
Return: AL = status
00h password inactive
01h password active
--------N-6007-------------------------------
INT 60 - FTP Packet Driver - BASIC FUNC - RESET INTERFACE
AH = 07h
BX = handle (optional for v1.10+)
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
--------G-6007-------------------------------
INT 60 - MDEBUG v1.70+ - GET ACTIVE PART OF MDEBUG
AH = 07h
Return: AL = active part for the next popup session of MDEBUG:
bit 0: the next popup session will start in the interpreter rather
than in the monitor
bit 1: the next popup session will sart in the online-help
SeeAlso: AH=03h"MDEBUG",AH=04h"MDEBUG"
--------G-6008-------------------------------
INT 60 - MDEBUG - UNUSED
AH = 08h-FFh
Return: AX = FFFCh
--------N-600A-------------------------------
INT 60 - FTP Packet Driver 1.09+ - HIGH-PERF FUNC - GET PARAMETERS
AH = 0Ah
Return: CF set on error
DH = error code (0Bh) (see #2976)
CF clear if successful
ES:DI -> parameter table (see #2981)
Format of packet driver parameter table:
Offset Size Description (Table 2981)
00h BYTE major revision of packet driver spec driver conforms to
01h BYTE minor revision of packet driver spec
02h BYTE length of this structure in bytes
03h BYTE length of a MAC-layer address
04h WORD maximum transfer unit, including MAC headers
06h WORD buffer size for multicast addr
08h WORD number of receive buffers (one less than back-to-back MTU rcvs)
0Ah WORD number of transmit buffers
0Ch WORD interrupt number to hook for post-EOI processing, 00h=none
--------N-600B-------------------------------
INT 60 - FTP Packet Driver 1.09 - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
AH = 0Bh
DS:SI -> buffer
CX = length of buffer
ES:DI -> FAR function to call when buffer becomes available (see #2982)
Return: CF set on error
DH = error code (0Bh,0Ch) (see #2976)
CF clear if successful
Notes: unlike function 04h, the buffer is not available for modification as
soon as the call returns; the buffer may be queued by the driver and
not processed until later
this function has been dropped from v1.10+ of the specification and
replaced by function 0Ch
SeeAlso: AH=04h"Packet Driver",AH=0Ch"Packet Driver"
(Table 2982)
Values packet driver completion function is called with:
AX = result
00h copy OK
nonzero error
ES:DI -> buffer passed to INT 60/AH=0Bh call
--------N-600C-------------------------------
INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - ASYNCHRONOUS SEND PACKET
AH = 0Ch
ES:DI -> pointer to IOCB (see #2983)
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
SeeAlso: AH=04h"Packet Driver",AH=0Bh"Packet Driver"
Format of packet driver IOCB:
Offset Size Description (Table 2983)
00h DWORD pointer to buffer
04h WORD length of buffer
06h BYTE flags
bit 0: packet driver is finished with IOCB
bit 1: application requests upcall when driver completes
07h DWORD function address for upcall (see #2984)
0Bh 4 BYTEs future gather write
0Fh BYTE ???
10h 8 BYTEs private driver workspace
(Table 2984)
Values completion function is called with:
ES:DI -> IOCB passed to INT 60/AH=0Ch
--------N-600C-------------------------------
INT 60 - Banyan VINES, 3com - GET STATION ADDRESS
AH = 0Ch
Return: AL = status
00h successful
ES:SI -> 6-byte station address
02h semaphore service is unavailable
--------N-600D-------------------------------
INT 60 - FTP Packet Driver 1.10+ - HIGH-PERF FUNC - DROP PACKET FROM QUEUE
AH = 0Dh
ES:DI -> IOCB
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
SeeAlso: AH=0Ch"Packet Driver"
--------N-6011-------------------------------
INT 60 - 3com, 10NET, Banyan VINES - LOCK AND WAIT
AH = 11h
AL = drive number or 0
DX = number of seconds to wait
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see #2985)
SeeAlso: AH=12h,AH=13h
(Table 2985)
Values for 3com semaphore status:
00h successful
01h timeout
02h server not responding
03h invalid semaphore name
04h semaphore list is full
05h invalid drive ID
06h invalid Ethernet address
07h not logged in
08h write to network failed
09h semaphore already logged for this CPU
--------N-6012-------------------------------
INT 60 - 3com, 10NET, Banyan VINES - LOCK
AH = 12h
AL = drive number or 00h
ES:SI = Ethernet address or 0000h:0000h
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see also #2985)
01h semaphore currently locked by another PC
Note: unlike function 11h, this function returns immediately
SeeAlso: AH=11h,AH=13h
--------N-6013-------------------------------
INT 60 - 3com, 10NET, Banyan VINES - UNLOCK
AH = 13h
AL = drive number or 00h
ES:SI = Ethernet address or 0000h:0000h
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see also #2985)
01h semaphore not locked
SeeAlso: AH=11h,AH=12h
--------N-6014-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - SET RECEIVE MODE
AH = 14h
BX = handle (optional for v1.10+)
CX = mode (see #2986)
Return: CF set on error
DH = error code (01h,08h) (see #2976)
CF clear if successful
SeeAlso: AH=15h
(Table 2986)
Values for packet driver receive mode:
01h turn off receiver
02h receive only packets sent to this interface
03h mode 2 plus broadcast packets
04h mode 3 plus limited multicast packets
05h mode 3 plus all multicast packets
06h all packets
07h raw mode for serial line only (v1.10+)
--------N-6015-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - GET RECEIVE MODE
AH = 15h
BX = handle (optional for v1.10+)
Return: CF set on error
DH = error code (01h) (see #2976)
CF clear if successful
AX = receive mode (see #2986)
SeeAlso: AH=14h
--------N-6016-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - SET MULTICAST LIST
AH = 16h
ES:DI -> multicast list
CX = length of list in bytes
Return: CF set on error
DH = error code (06h,09h,0Eh) (see #2976)
CF clear if successful
SeeAlso: AH=17h
--------N-6017-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - GET MULTICAST LIST
AH = 17h
Return: CF set on error
DH = error code (06h,09h) (see #2976 at AX=01FFh)
CF clear if successful
ES:DI -> multicast addresses (do not modify)
CX = bytes of multicast addresses currently in use
SeeAlso: AH=16h
--------N-6018-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - GET STATISTICS
AH = 18h
BX = handle (optional for v1.10+)
Return: CF set on error
DH = error code (01h) (see #2976)
CF clear if successful
DS:SI -> statistics (see #2987)
Format of packet driver statistics:
Offset Size Description (Table 2987)
00h DWORD packets in
04h DWORD packets out
08h DWORD bytes in
0Ch DWORD bytes out
10h DWORD errors in
14h DWORD errors out
18h DWORD packets dropped
--------N-6019-------------------------------
INT 60 - FTP Packet Driver - EXTENDED FUNC - SET NETWORK ADDRESS
AH = 19h
ES:DI -> address
CX = length of address
Return: CF set on error
DH = error code (0Dh,0Eh) (see #2976)
CF clear if successful
CX = length
--------N-601A-------------------------------
INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - SEND RAW BYTES
AH = 1Ah
DS:SI -> buffer
CX = length of buffer
Return: CF set on error
DH = error code (see #2976 at AX=01FFh)
CF clear if successful
SeeAlso: AH=1Ch
--------N-601B-------------------------------
INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FLUSH RAW BYTES RECEIVED
AH = 1Bh
Return: CF set on error
DH = error code (see #2976)
CF clear if successful
SeeAlso: AH=1Ch
--------N-601C-------------------------------
INT 60 - FTP Packet Driver v1.10+ - EXTENDED FUNC - FETCH RAW BYTES RECEIVED
AH = 1Ch
DS:SI -> buffer
CX = length of buffer
DX = timeout in clock ticks
Return: CF set on error
DH = error code (see #2976 at AX=01FFh)
CF clear if successful
CX = number of bytes transferred to buffer
SeeAlso: AH=1Ah,AH=1Bh
--------a-60AD-------------------------------
INT 60 - AccessDOS - API
AH = ADh
AL = function
E1h ???
Return: AX = ???
E2h get configuration
Return: BX:AX -> configuration data
Program: AccessDOS is a public domain TSR developed at The Trace Research and
Development Center which provides extensions for keyboard, mouse,
and sound access by the visually, hearing, or motor-control
impaired.
Range: INT 60 to INT 66, selected by scanning for 0000h:0000h vector
Note: the installation check is to test for the signature "ACCESSv1.00"
beginning three bytes past the start of the interrupt handler
--------N-60E9-------------------------------
INT 60 - FTP Packet Driver - Crynwr Software - AUTOSELECT TRANSCEIVER
AH = E9h
???
Return: ???
--------!---Section--------------------------
Interrupt List, part 14 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------*-61---------------------------------
INT 61 - reserved for user interrupt
--------b-61---------------------------------
INT 61 - Atari Portfolio - EXTENDED BIOS
Desc: provides subfunctions such as turning off the machine, accessing
internal variables, and mapping memory cards
SeeAlso: INT 60"Atari",AH=00h"Portfolio",AH=08h"Portfolio",AH=0Dh"Portfolio"
SeeAlso: AH=11h"Portfolio",AH=15h"Portfolio",AH=19h"Portfolio"
SeeAlso: AH=1Bh"Portfolio",AH=24h"Portfolio",AH=2Ch"Portfolio"
SeeAlso: AH=30h"Portfolio"
--------b-61---------------------------------
INT 61 - TI Professional PC - FACTORY ROM DATA AREA POINTER (NOT A VECTOR!)
Desc: the low word of this vector contains the segment of the RAM data area
to be used by the expansion ROM at F400h:0000h, and the high word
contains the length of the data area; this segment and size are
both set to 0000h if no ROM is installed at F400h:0000h
SeeAlso: INT 60"TI Professional PC",INT 62"TI Professional"
SeeAlso: INT 66"TI Professional PC"
--------b-61---------------------------------
INT 61 - HP 95LX System Manager - LOAD DS
SeeAlso: INT 0F"HP 95LX",INT 60/DI=0102h"HP 95LX"
--------r-61---------------------------------
INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
SeeAlso: INT 60"JPI"
--------d-61---------------------------------
INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
Desc: this vector stores the second four bytes of the parameter table for
hard disk 0
SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
--------I-61---------------------------------
INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
BX:DX -> control block
SeeAlso: INT 67"Sangoma"
--------v-61---------------------------------
INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
Note: the virus copies the original INT 21h vector into INT 61h
SeeAlso: INT 21/AH=00h,INT 21/AH=25h,INT 60"VIRUS",INT 6B"VIRUS"
--------U-61---------------------------------
INT 61 - PC-Magazin - PAGE, SWAPx
details not yet available
Program: PAGE and SWAPx are utilities from PC-Magazin, the German edition of
PC Magazine, issue 47/85, page 31
SeeAlso: INT 66"INCA"
--------N-61---------------------------------
INT 61 - TCPOpen kernel - API
ES:BX -> request packet (see #2988)
Program: TCPOpen is a TCP/IP protocol stack by Lanera
Range: INT 60 to INT 7F, selected by configuration file
Note: there does not appear to be an installation check, though function
FFFFh can be used to verify that the software is indeed functioning
Format of TCPOpen request packet:
Offset Size Description (Table 2988)
00h 8 BYTEs ???
08h WORD function number (0000h-001Ah or FFF9h-FFFFh)
0Ah WORD ???
0Ch 2 BYTEs ???
0Eh WORD (ret) return code
10h 2 BYTEs ???
12h WORD ???
14h WORD (ret) 0001h if requested function complete
16h WORD (ret) ???
18h 6 BYTEs ???
1Eh DWORD -> ???
22h WORD ??? or 0000h
24h WORD (ret) ???
SeeAlso: #2989
(Table 2989)
Call TCPOpen Function FFFFh: installation verification
Return: offset 10h = BEEFh
offset 14h = 0001h
offset 24h = ???
Index: installation check;TCPOpen kernel
--------N-61---------------------------------
INT 61 - XFS v1.76 - XFSKRNL.EXE - API
AX = function
8000h installation check???
Return: AX = 0000h
8001h ???
ES:DI -> DWORD ???
Return: AX = status???
8002h ???
BX = ???
CX = ???
ES:DI -> ???
Return: AX = status???
8003h ???
BX = ???
CX = ???
ES:DI -> ???
Return: AX = status???
8004h ???
BX = ???
Return: AX = status???
8005h wait until ???
Return: DX:AX = ???
8006h get ???
Return: DX:AX -> ??? record
8007h set IP address??? (or htonl/ntohl)
DX:BX = IP address???
Return: DX:AX = byte-swapped IP address
8008h set IP address??? (or htonl/ntohl)
DX:AX = IP address???
Return: DX:AX = byte-swapped IP address
8009h ???
ES:DI -> ???
Return: DX:AX = ???
800Ah ???
800Bh ???
Return: DX:AX = ???
800Ch ???
800Dh ???
800Eh ???
800Fh ???
8010h get ??? record
Return: DX:AX -> ??? record
8011h ???
8012h ???
BX = ???
Return: DX:AX = ???
8013h get ??? record
Return: DX:AX -> ??? record
8014h ???
ES:DI -> ???
Return: nothing
8015h get ??? record
Return: DX:AX -> 8-byte ??? record
8016h get ??? record
Return: DX:AX -> 6-byte ??? record
8017h ???
ES:DI -> ???
Return: DX:AX = ???
8018h get ??? record
Return: DX:AX -> ??? record
8019h get ??? record
Return: DX:AX -> 14-byte ??? record
801Ah get ??? record
Return: DX:AX -> ??? record (max 98 bytes)
801Bh get ??? record
Return: DX:AX -> ??? record
801Ch ???
Return: nothing
801Dh get ???
Return: AL = ???
801Eh ???
Return: AX = ???
801Fh uninstall
Return: AX = status
0000h successful
other interrupt which could not be released
AX = other
Return: AX:BX = ??? (0000h:0000h by default)
Program: XFS is a shareware Network File System client by Robert Juhasz
Range: INT 60 to INT 65, selected by scanning for two consecutive free
vectors and hooking the first
SeeAlso: INT 62"XFS"
--------N-61---------------------------------
INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
AH = system call number (also see entries below)
01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
Return: CF clear if successful
CF set on error
AL = basic error (see #2990)
AH = suberror number (see #2991,#2992)
Range: INT 20h to INT E0h, selected by configuration
Notes: the installation check consists of testing for the signature "TCPTSR"
three bytes beyond the start of the interrupt handler
BUG: the SLIP kernel for v2.05 bounds-checks the wrong register, so values
greater than 54h in AH may crash the system. Other kernels may have
this bug as well.
SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
Index: installation check;PC/TCP
(Table 2990)
Values for PC/TCP error code:
00h "NET_NOERR" successful
01h "NET_ERR_INUSE" protocol or socket already in use
02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
03h "NET_ERR_NOMEM" out of memory
04h "NET_ERR_NOTNETCONN" not a network descriptor
05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
06h "NET_ERR_BADPKT" illegal or corrupted packet
07h "NET_ERR_NOHOST" no host bound to specified connection
08h "NET_ERR_CANTOPEN" unable to open file
09h "NET_ERR_NET_UNREACHABLE" network is unreachable
0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see #2991)
0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
0Dh "NET_ERR_TIMEOUT" operation timed out
0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
0Fh "NET_ERR_NOSERVERS" no name servers configured
10h "NET_ERR_SERVER_ERR" bad reply from name server
Subcodes: 0= no error, 1 = Host unreachable
11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address
structure is zero
12h "NET_ERR_BADARG" invalid argument
13h "NET_ERR_EOF" foreign host closed its end of connection
14h "NET_ERR_RESET" connection has been reset
15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
with no data available
16h "NET_ERR_UNBOUND" insufficient resources to do operation
17h "NET_ERR_NODESC" could not allocate network descriptor
18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
19h "NET_ERR_CANTBROADCAST" unable to broadcast
1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
1Bh kernel busy, try again later
1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
(see #2992)
---v2.1+---
1Dh "NET_ERR_TERMINATING" internal kernel fatal error
1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
21h "NET_ERR_EMM" expanded memory error
22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
24h "NET_ERR_NOQIOS" ran out of resources; try again later
25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
(Table 2991)
Values for subcodes of PC/TCP error 0Ah "NET_ERR_HOST_UNREACHABLE":
00h no error
01h host unreachable
02h ARP failed
03h hardware failure
04h link failure
05h no route
06h gateway down
SeeAlso: #2990,#2992
(Table 2992)
Values for subcodes of PC/TCP error 1Ch "NET_ERR_ICMPMESG":
07h unrecognised
08h can't fragment
09h srcr_fail
0Ah source quench
0Bh time exceeded
0Ch parameter problem
0Dh admin_prohib. see also code 0Ah
SeeAlso: #2990,#2991
--------N-6100-------------------------------
INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
AH = 00h
DS:SI -> 216-byte buffer for network debugging information (see #2993)
Return: CF clear
AX = 0000h
buffer filled
Notes: this call is not documented by FTP, Inc. for any version
most of the information returned by this call is available via the
documented get_kernel_info or net_info commands.
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=2Ah"PC/TCP"
Format of network debugging information:
Offset Size Description (Table 2993)
00h DWORD number of interrupts
04h DWORD receive buffer low-water mark
08h DWORD transmit buffer low-water mark
0Ch DWORD number of packets received
10h DWORD number of packets transmitted
14h DWORD total receive errors
18h DWORD total transmit errors
1Ch 4 BYTEs ???
20h DWORD receive resets
24h DWORD transmit resets
28h DWORD number of "runts" received
2Ch DWORD number of alignment errors on received packets
30h DWORD number of CRC errors on received packets
34h DWORD number of parity errors on received packets
38h DWORD number of receive overflow errors
3Ch DWORD number of oversized packets received
40h DWORD number of packets lost due to lack of buffers
44h DWORD receive timeouts
48h 32 BYTEs ???
68h DWORD number of transmit collisions
6Ch DWORD number of transmit timeouts
70h DWORD number of transmit underflows
74h DWORD number of lost "crs" on transmit
78h DWORD number of times heartbeat failed on transmit
7Ch 24 BYTEs ???
94h WORD free packet buffers
96h WORD total packet buffers
98h WORD minimum number of packet buffers free since kernel started
9Ah 24 BYTEs ???
B2h DWORD pointer to TCP connection list???
B6h DWORD pointer to IP routing table???
BAh 30 BYTEs ???
--------N-6100-------------------------------
INT 61 - Banyan VINES - CALL A SERVICE
AH = 00h
AL = service ID (1..16)
other registers vary by service
Return: AX = status (see #2996)
Desc: Calls an adapter driver or redirector service. The service handler
pointers are stored at offset 0010h in the code segment of the
BANV interrupt handler (see #2994).
Note: Banyan can use any interrupt from 60h through 66h. The Banyan
interrupt handler is identified by the string "BANV" in the four
bytes immediately preceding the interrupt handler
SeeAlso: AH=01h,AH=03h
Format of the BANV code segment (revision 5.53):
Offset Size Description (Table 2994)
00h 16 BYTEs reserved
10h 16 DWORDs far pointers to the service handlers (0 = not installed)
50h DWORD far pointer to last called service
54h WORD VINES revision
56h DWORD VINES revision long
5Ah WORD VINES revision (lower bound)
5Ch DWORD VINES revision (lower bound) long
60h WORD VINES revision (upper bound)
62h DWORD VINES revision (upper bound) long
66h WORD end of PCCONFIG area
68h WORD start of PCCONFIG area
6Ah 4 BYTEs BANV interrupt identifier ("BANV")
6Eh N BYTEs BANV interrupt service
SeeAlso: #2995
--------b-6100-------------------------------
INT 61 - Atari Portfolio - SERVICE INITIALIZATION
AH = 00h
Return: nothing
Note: applications using any Portfolio INT 61 calls should call this function
exactly once at startup
SeeAlso: AH=07h"Portfolio",AH=09h"Portfolio",AH=0Dh"Portfolio"
SeeAlso: AH=11h"Portfolio",AH=15h"Portfolio",AH=19h"Portfolio"
SeeAlso: AH=1Bh"Portfolio",AH=24h"Portfolio",AH=2Ch"Portfolio"
SeeAlso: AH=30h"Portfolio"
--------V-610000-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ZOOM DISPLAY
AX = 0000h
BX = zoom factor (0-7)
Desc: zooms the display based on the given zoom factor
Notes: INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
not all vendors include the Tseng TSR which supports these functions
SeeAlso: AX=0001h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
SeeAlso: INT 16/AH=FFh"OPTIMA"
--------N-610001DS0001-----------------------
INT 61 - Banyan VINES - INTERNAL VINES SOCKET API (NEAR DATA)
AX = 0001h
DS = 0001h (to distinguish from alternate AX=0001h socket interface)
CX:BX -> internal communications control block (see #2995)
DX = caller's data segment
Return: AX = status
0000h successful
0099h invalid operation
00A5h resource not available
Desc: StreetTalk access with session handles
Range: INT 60 to INT 66
Notes: This service is handled by the adapter driver
The request dispatch table contains dummy entries for subfunctions
06h, 0Dh, 0Eh, 0Fh, 10h, and 11h, which always return error 0099h
(invalid operation) in the request block's result buffer
in recent VINES releases, this interface is superseded by the AX=000Fh
interface, which allows FAR parameter block pointers (refer to that
function's entries for more details on individual subfunctions)
some adapter drivers (e.g. the NDIS2 token ring driver NDTOKBAN for
VINES 5.53) ignore the value in CX and use the value from DX instead
SeeAlso: AX=000Fh
Format of internal communications control block:
Offset Size Description (Table 2995)
00h WORD subfunction number
02h WORD magic number (FEFEh)
04h WORD (ret) result, should be set to 0 before calling
06h WORD reserved (will be set to client DS)
08h WORD caller's code segment if function 000Bh, 0 else
0Ah WORD pointer to parameter block
0Ch WORD reserved (segment of parameter block; will be set to client DS)
0Eh WORD StreetTalk handle
SeeAlso: #2994,#3115 at INT 61/AX=000Fh
--------N-610001SF0001-----------------------
INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
AX = 0001h subfn 0001h
DS:DX -> communications control block (function 0001h) (see #2997)
Return: AX = status (0000h-0002h,0098h,009Eh-00A2h) (see #2996)
Range: INT 60h to INT 66h
Note: The Banyan interrupt handler is identified by the string "BANV" in
the four bytes immediately preceding the interrupt handler
SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
(Table 2996)
Values for VINES status:
0000h successful
0001h service not installed
0002h invalid service ID
0003h invalid function
0004h-000Ah reserved for BANV interface errors
0097h invalid socket identifier
0098h resource already in use
009Bh destination node unreachable
009Ch message overflow
009Dh destination socket nonexistent
009Eh address family does not exist
009Fh socket type does not exist
00A0h protocol does not exist
00A1h no more sockets available
00A2h no more buffer space available
00A3h timeout
00A5h resource not available
00A6h internal communication failure
00B1h resource disconnect
Format of VINES control block to open socket:
Offset Size Description (Table 2997)
00h WORD 0001h
02h WORD pointer to argument block
04h WORD error return code
06h 4 BYTEs reserved
SeeAlso: #2998
Format of VINES argument block for opening socket:
Offset Size Description (Table 2998)
00h WORD pointer to 2-byte buffer for socket identifier
02h WORD address family
0003h Banyan
04h WORD socket type
in address family 0003h
0001h IPC socket
0002h SPP socket
06h WORD protocol number
FFFFh default
08h WORD pointer to 16-byte buffer for socket address (see #2999)
0Ah WORD local port number
0000h if service should assign transient port number
0001h to 01FFh well-known port number (assigned by Banyan)
SeeAlso: #2997
Format of Banyan VINES IPC port:
Offset Size Description (Table 2999)
00h WORD address family (always 0003h for Banyan ports)
04h 4 BYTEs network number (server's serial number)
06h WORD subnet number (0001h = server, 8000h-FFFEh = PC)
08h WORD port ID (0001h-01FFh for "well-known" ports)
0Ah BYTE hop count
0Bh 5 BYTEs filler
SeeAlso: #3004
--------N-610001SF0002-----------------------
INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
AX = 0001h subfn 0002h
DS:DX -> communications control block (function 0002h) (see #3000)
Return: AX = status (0000h-0002h,0097h,009Bh-009Dh,00A2h,00A3h,00B1h)
(see #2996)
Range: INT 60h to INT 66h
Note: The Banyan interrupt handler is identified by the string "BANV" in
the four bytes immediately preceding the interrupt handler
SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
Format of VINES control block for subfunction 0002h:
Offset Size Description (Table 3000)
00h WORD 0002h
02h WORD pointer to argument block (see #3001)
04h WORD error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
(see #2996)
06h 4 BYTEs reserved
SeeAlso: #3005
Format of VINES argument block for subfunction 0002h:
Offset Size Description (Table 3001)
00h WORD routine metric
02h WORD error return code
04h WORD socket identifier
06h WORD pointer to send buffer (see #3003)
08h WORD length of send buffer
0Ah WORD message request flags (see #3002)
0Ch 16 BYTEs socket address (see #3004)
1Ch WORD timeout value in multiples of 200ms
1Eh WORD connection identifier
20h WORD type of request
0001h send message
0002h establish a virtual connection
0003h terminate a virtual connection
SeeAlso: #3000,#3006
Bitfields for message request flags:
Bit(s) Description (Table 3002)
0 async request
1 reliable message
2 flush receive buffer on overflow
3 end of user message received
4 vectored request (if set, send buffer contains buffer descriptors)
5 connection-specific receive
6 change to connection-specific receive mode
SeeAlso: #3001,#3006
Format of buffer descriptor:
Offset Size Description (Table 3003)
00h WORD data segment
02h WORD buffer pointer
04h WORD buffer length
06h WORD character count
SeeAlso: #3001
Format of VINES socket address for unreliable datagrams:
Offset Size Description (Table 3004)
00h WORD 0003h address family
02h DWORD FFFFFFFFh network number
06h WORD FFFFh subnet number
08h WORD local port number
0Ah BYTE 00h-0Fh hop count
0Bh 5 BYTEs 0000h filler
SeeAlso: #2999
--------N-610001SF0003-----------------------
INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
AX = 0001h subfn 0003h
DS:DX -> communications control block (function 0003h) (see #3005)
Return: AX = status (00-0Ah,97h,A2h,A3h) (see #2996)
Range: INT 60h to INT 66h
Note: The Banyan interrupt handler is identified by the string "BANV" in
the four bytes immediately preceding the interrupt handler
SeeAlso: AX=0001h/SF=0002h
Format of VINES control block for subfunction 0003h:
Offset Size Description (Table 3005)
00h WORD 0003h
02h WORD pointer to argument block (see #3006)
04h WORD error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
(see #2996)
06h 4 BYTEs reserved
SeeAlso: #3000,#3006,#3008
Format of VINES argument block for subfunction 0003h:
Offset Size Description (Table 3006)
00h WORD character count
02h WORD error return code
04h WORD socket identifier
06h WORD pointer to receive buffer (see #3007)
08h WORD length of receive buffer
0Ah WORD message request flags (see #3002)
0Ch 16 BYTEs socket address (see #2999)
1Ch WORD timeout value in multiples of 200ms
1Eh WORD connection identifier
20h WORD type of response
0001h message received
0002h virtual connection established
0003h virtual connection terminated
SeeAlso: #3005,#3009
Format of buffer descriptor:
Offset Size Description (Table 3007)
00h WORD data segment
02h WORD buffer pointer
04h WORD buffer length
06h WORD character count
SeeAlso: #3006
--------N-610001SF0004-----------------------
INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
AX = 0001h subfn 0004h
DS:DX -> communications control block (function 0004h) (see #3008)
Return: AX = status (0000h-000Ah,0097h) (see #2996)
Range: INT 60h to INT 66h
Note: The Banyan interrupt handler is identified by the string "BANV" in
the four bytes immediately preceding the interrupt handler
SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
Format of VINES control block to close socket:
Offset Size Description (Table 3008)
00h WORD 0004h
02h WORD pointer to argument block (see #3009)
04h WORD error return code (see #2996)
06h 4 BYTEs reserved
SeeAlso: #3005,#3011
Format of VINES argument block for closing socket:
Offset Size Description (Table 3009)
00h WORD socket identifier
SeeAlso: #3006,#3008,#3012
--------N-610001SF0005-----------------------
INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
AX = 0001h subfn 0005h
DS:DX -> communications control block (see #3011)
Return: AX = status (0000h-000Ah,00A2h,00A3h) (see #3010)
Desc: returns results for all asynchronous operations invoked from the
data segment used for this call
Range: INT 60h to INT 66h
Notes: The Banyan interrupt handler is identified by the string "BANV" in
the four bytes immediately preceding the interrupt handler
SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
(Table 3010)
Values for VINES function status:
0000h successful
0001h service not installed
0002h invalid service ID
0003h-000Ah reserved for BANV interface errors
00A2h no more buffer space available
00A3h timeout event
Format of VINES control block for subfunction 0005h:
Offset Size Description (Table 3011)
00h WORD 0005h
02h WORD pointer to argument block (see #3012)
04h WORD error return code
06h 4 BYTEs reserved
SeeAlso: #3008,#3013
Format of VINES argument block for subfunction 0005h:
Offset Size Description (Table 3012)
00h WORD pointer to WORD event pointer
02h WORD timeout in multiples of 200ms, FFFFh = infinite
SeeAlso: #3009,#3011
--------N-610001SF0008-----------------------
INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
AX = 0001h subfn 0008h
DS:DX -> communications control block (function 0008h) (see #3013)
Return: AX = status
0000h successful
00A2h no more buffer space available
Range: INT 60h to INT 66h
Note: The Banyan interrupt handler is identified by the string "BANV" in
the four bytes immediately preceding the interrupt handler
SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
Format of VINES control block for subfunction 0006h:
Offset Size Description (Table 3013)
00h WORD 0008h
02h WORD process type
0001h transient process
0002h resident process
04h WORD error return code
06h 4 BYTEs reserved
SeeAlso: #3011,#3014
--------N-610001SF000B-----------------------
INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
AX = 0001h subfn 000Bh
DS:DX -> communications control block (function 000Bh) (see #3014)
Return: AX = status (00h-0Ah,A2h) (see #3010)
Range: INT 60h to INT 66h
Note: The Banyan interrupt handler is identified by the string "BANV" in
the four bytes immediately preceding the interrupt handler
SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
Format of VINES control block for subfunction 000Bh:
Offset Size Description (Table 3014)
00h WORD 000Bh
02h WORD pointer to argument block (see #3015)
04h WORD error return code (see #2996)
06h 2 BYTEs reserved
08h WORD user CS register
SeeAlso: #3013
Format of VINES argument block for subfunction 000Bh:
Offset Size Description (Table 3015)
00h WORD pointer to user interrupt function (see #3016)
02h WORD pointer to user stack
04h WORD initial timeout value in multiples of 200ms, FFFFh = infinite
SeeAlso: #3015
(Table 3016)
Values FAR user function is invoked with:
SS = DS = ES = segment of control block
STACK: DWORD return address
WORD argument pointer (sosend or sorec argument block)
WORD error return code
0000h argument pointer is valid
00A3h timeout
--------V-610001-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - CENTER ZOOM WINDOW
AX = 0001h
BX = X coordinate to center
CX = Y coordinate to center
Desc: Positions the zoom window such that the specified window-relative
coordinates appear as close as possible to the center of the
display. Useful for scrolling and panning.
Range: unknown
Notes: INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
not all vendors include the Tseng TSR which supports these functions
SeeAlso: AX=0000h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
SeeAlso: INT 16/AH=FFh"OPTIMA"
--------I-610002-----------------------------
INT 61 - Banyan VINES - 3270 INTERFACE
AX = 0002h
BH = function number (see #3017)
DS:CX -> argument block (except BH=00h,1Ah) (see #3019)
Return: AX = status (see #3018)
Notes: Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
which is loaded first. The other interface will use AX=000Ah
Status codes greater than 63h indicate an inconsistency in the 3270/SNA
or 3270/BSC resident driver, which must be reloaded by the user
(Table 3017)
Values for VINES 3270 interface function number:
00h "pi2reset" reset 3270/SNA or 3270/BSC driver
02h "pi2bsc" (3270/BSC only)
03h "pi2get" get information stored in 3270 resident driver
04h "pi2put" store information in 3270 resident driver
05h "pi2gcur" get current screen position
07h "pi2sdat" send data keystroke
08h "pi2scom" send command keystroke
0Ah "pi2field" get field info for arbitrary screen positions
0Fh "pi2stat" get logical unit/device status
12h "pi2nlus" determine logical unit/device assignment
13h "pi2gate" specifies comm port address to gateway service
14h "pi2attach" attach a logical unit/device
15h "pi2sdev" save logical unit/device info in resident driver
(not supported in >3.0)
16h "pi2gdev" get device information (not supported in >3.0)
17h "pi2luinfo" get info about specific logical unit/device
18h "pi2gerr" get finer error detail
19h "pi2dhold" (3270/SNA only) holds a 3270 device
1Ah "pi2shut" release memory-resident module
1Ch "pi2sprof" save profile info in res driver (not supp in >3.0)
1Dh "pi2gprof" get prevsly stored profile info (not supp in >3.0)
(Table 3018)
Values for VINES 3270 status:
0000h successful
000Bh invalid parameter or data does not fit data area
000Ch another code path currently active in resident driver
000Dh operation currently not allowed
0032h encountered connection disconnect error
0033h encountered "sosend" completion error
0034h encountered "sosend" communication error
0035h attach request refused. extended error info via "pi2gerr":
01h resource unavailable
02h invalid type
03h version mismatch
04h invalid logical unit number
05h error during ARL processing
06h no access for user
0071h encountered "sosock" error
0072h encountered unrecognizable error
0073h encountered "sowait" error (extended info via "pi2gerr")
0074h encountered invalid type-of-request on "sowait"
0075h encountered "sorec" error (extended info via "pi2gerr")
0076h encountered "sorec" completion error (ext info via "pi2gerr")
0077h encountered connection request
0078h encountered unrecognizable data
0079h encountered unknown connection ID (ext info via "pi2gerr")
SeeAlso: #2996
Format of argument block for BH=03h,04h:
Offset Size Description (Table 3019)
00h WORD size of data area (max 256)
02h N BYTEs data area
SeeAlso: #3020,#3021,#3022
Format of argument block for BH=05h:
Offset Size Description (Table 3020)
00h WORD logical unit/device number
02h WORD pointer to WORD buffer for cursor index
04h WORD pointer to BYTE buffer for current field attribute
SeeAlso: #3019,#3021,#3022
Format of argument block for BH=07h:
Offset Size Description (Table 3021)
00h WORD logical unit/device number
02h WORD ASCII data byte
04h WORD pointer to WORD count of characters which will need updating
SeeAlso: #3019,#3020,#3022
Format of argument block for BH=08h:
Offset Size Description (Table 3022)
00h WORD logical unit/device number
02h WORD 3270 keystroke (see #3023)
SeeAlso: #3019,#3020,#3021,#3024
(Table 3023)
Values for 3270 keystroke:
0000h Enter
0001h Clear
0002h PA1
0003h PA2
0004h PA3
0005h PF1
...
001Ch PF24
001Dh CSELECT (cursor select)
001Eh Insert
001Fh Delete
0020h EOField
0021h EINPUT (erase input)
0022h Reset
0023h Attention
0024h SysReq
0025h Duplicate
0026h Fieldmark
0027h Home
0028h NextLine
0029h Tab
002Ah BackTab
002Bh cursor up
002Ch cursor down
002Dh cursor right
002Eh cursor left
002Fh double cursor right
0030h double cursor left
0031h PRINT
0032h CANCEL
0033h Backspace
Format of argument block for BH=0Ah:
Offset Size Description (Table 3024)
00h WORD logical unit/device number
02h WORD screen index
04h WORD pointer to WORD buffer for field length
06h WORD pointer to WORD buffer for offset in screen of field start
SeeAlso: #3022,#3025
Format of argument block for BH=0Fh:
Offset Size Description (Table 3025)
00h WORD logical unit/device number
02h WORD clear mask (clear these bits of status after returning status)
04h WORD pointer to WORD buffer for device status (see #3026)
SeeAlso: #3024,#3027
Bitfields for Banyan 3270 device status:
Bit(s) Description (Table 3026)
10 status modified
9 buffer modified
8 set cursor
5 sound alarm
1-0 size of print line for printer logical units
00 unformatted line
01 40-character line
10 64-character line
11 80-character line
Format of argument block for BH=12h:
Offset Size Description (Table 3027)
00h WORD pointer to WORD buffer for number of logical units or devices
02h WORD pointer to WORD buffer for version number
04h WORD pointer to 64-byte buffer for logical unit/device list
SeeAlso: #3025,#3028
Format of argument block for BH=13h:
Offset Size Description (Table 3028)
00h 16 BYTEs communications port address (see #2999)
SeeAlso: #3027,#3029
Format of argument block for BH=14h:
Offset Size Description (Table 3029)
00h WORD logical unit/device number
0000h attach any free device of the specified type
02h WORD logical unit/device type
(3270/SNA) 01h, 02h, or 03h
(3270/BSC) 02h display
(3270/BSC) 03h printer
04h WORD pointer to WORD buffer for attached logical unit/device number
SeeAlso: #3028,#3030
Format of argument block for BH=16h:
Offset Size Description (Table 3030)
00h WORD pointer to 18-byte buffer for device block (see #3035)
first WORD must be set to desired logical unit/device number
SeeAlso: #3029,#3031
Format of argument block for BH=17h:
Offset Size Description (Table 3031)
00h WORD logical unit/device number
02h WORD pointer to information block in caller's DS (see #3036)
SeeAlso: #3030,#3032
Format of argument block for BH=18h:
Offset Size Description (Table 3032)
00h WORD pointer to WORD buffer for major error code
02h WORD pointer to WORD buffer for minor error code
SeeAlso: #3031,#3033
Format of argument block for BH=19h:
Offset Size Description (Table 3033)
00h WORD logical unit/device number
SeeAlso: #3032,#3034
Format of argument block for BH=1Ch,1Dh:
Offset Size Description (Table 3034)
00h WORD pointer to profile block in caller's DS (see #3039)
SeeAlso: #3019,#3033
Format of device block, argument block for BH=15h:
Offset Size Description (Table 3035)
00h WORD logical unit/device number
02h WORD logical unit/device type
04h WORD display model number
06h WORD numeric checking
08h WORD status line
0Ah BYTE unprotected normal field attribute
0Bh BYTE unprotected intensified field attribute
0Ch BYTE protected normal field attribute
0Dh BYTE protected intensified field attribute
0Eh WORD reserved
10h WORD printer port number
Format of information block:
Offset Size Description (Table 3036)
00h WORD device model number
02h DWORD screen buffer pointer
06h DWORD status line pointer (see #3037)
0Ah DWORD reserved
Format of Banyan VINES 3270 status line:
Offset Size Description (Table 3037)
00h BYTE comm line status
00h inactive
01h active
01h BYTE activation level
01h physical unit activated
02h logical unit also activated
03h session is bound
02h BYTE data traffic state
00h inactive
01h active
03h BYTE screen ownership
00h SLU->PLU session owns screen
01h SLU->SSCP session owns screen
04h BYTE keyboard status (see #3038)
05h BYTE insert mode
01h if in insert mode
06h BYTE numeric
01h if current screen buffer is numeric only
07h BYTE printer status
00h printer not assigned
01h printer is inactive
02h printer error
03h currently printing
04h printer is busy
05h printer is very busy
08h BYTE printer assignment
09h BYTE maximum size of network name
0Ah N BYTEs ASCIZ network name
BYTE maximum size of message window
M BYTEs null-terminated message window
BYTE code set
00h EBCDIC
01h ASCII
M BYTEs extended attributes
01h extended attributes are in effect (stored at screen+1920)
each extended attribute specifies
bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
bits 2-4: 000=default,001=blue,010=red,011=pink,
100=green,101=turquoise,110=yellow,111=white
BYTE extended color
01h other than base color is in effect
(Table 3038)
Values for Banyan VINES 3270 keyboard status:
00h UNLOCK - ready to accept data
01h TIME - aid was struck
02h SYSTEM - received response no restore
03h FUNCTION - unavailable keyboard function
04h INPUT - not currently used
05h ENDFIELD - field filled in insert mode
06h PROTECTED - attempt to enter in protected field
07h NUMERIC - attempt to enter in numeric field
08h PROGRAM - error in outbound data stream
Format of Banyan VINES 3270 profile block:
Offset Size Description (Table 3039)
00h 64 BYTEs gateway service name
40h 16 BYTEs gateway comm port address
50h WORD primary logical unit number
52h WORD secondary logical unit type
54h WORD secondary logical unit number
56h WORD printer assignment
58h 50 BYTEs keyboard definitions filename
--------V-610002-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - END ZOOM
AX = 0002h
Desc: switches off zoom and returns window to its original state
Range: unknown
Notes: INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
not all vendors include the Tseng TSR which supports these functions
SeeAlso: AX=0000h"OPTIMA",INT 16/AH=FFh"OPTIMA"
--------N-610003SF00-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
AX = 0003h subfn 00h
DS:BX -> argument block (see #3041)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
(Table 3040)
Values for VINES function status:
0000h successful
000Bh invalid session ID
000Ch session not active
000Dh invalid request type
000Eh invalid parameters
000Fh out of heap space
0010h timeout on send
0011h Banyan communications error
0012h session not waiting for host
0013h session is active
0014h duplicate suspend session request
0015h no session suspended
0016h ring data buffer full
0017h printer error encountered
0018h Banyan communications error
0019h unable to make connection
001Ah no ring buffer specified at startup
001Bh service is down
001Ch invalid service name
001Dh service is closed
001Eh invalid connection name
001Fh max session limit reached for service
0020h access rights list for connection/dialout does not include this user
0021h service not responding
0022h missing telephone number
SeeAlso: #2996,#3044
Format of VINES argument block:
Offset Size Description (Table 3041)
00h BYTE session ID (00h)
01h BYTE 00h (func "initialize user buffer pointer information area")
02h WORD -> user buffer ptr info area in caller's current DS (see #3042)
Format of user buffer ptr info area:
Offset Size Description (Table 3042)
00h WORD flags
0000h don't read interface's data buffer
0001h read data buffer
02h DWORD pointer to ring buffer
06h WORD length of ring buffer
08h WORD ring buffer offset to last byte read by caller
0Ah DWORD pointer to WORD containing offset of last byte
in ring buffer filled
0Eh DWORD pointer to screen buffer
12h DWORD pointer to field containing cursor position
16h DWORD pointer to terminal status area (see #3043)
Format of VINES terminal status area:
Offset Size Description (Table 3043)
00h BYTE status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
01h BYTE terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
02h BYTE current keypad mode (VT100,VT52 only)
4Eh ("N") numeric mode
41h ("A") application mode
03h 4 BYTEs current state of LEDs (VT100 only)
00h off
01h on
07h WORD line error count
09h WORD primary error code (see #3044)
0Bh WORD secondary error code
(Table 3044)
Values for VINES primary error code:
0000h no error
0001h unable to make connection
0002h communications error, restart session
0003h async terminal emulation service unavailable
0004h lost carrier
0005h all matching lines busy
0006h no lines defined for connection name
0007h no dial lines available on server
0008h no matching dial lines available
0009h out of heap space
000Ah service error encountered
000Bh timed out waiting to connect
000Ch communications error
000Dh communications error
000Eh host wants file transferred to/from PC
000Fh host software changed session parameter
0010h host software changed tap settings
0011h host software changed LED indicator
0012h host software changed display background (secondary error code 00h for
white on black, 01h for black on white)
0013h host software changed display option (secondary error code 00h for off,
01h for on)
0014h communications error
0015h communications error
0016h unable to make connection
0017h unable to make connection
SeeAlso: #3040
--------N-610003SF01-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
AX = 0003h subfn 01h
DS:BX -> argument block (see #3045)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
Format of VINES argument block for Function 0003h subfunction 01h:
Offset Size Description (Table 3045)
00h BYTE session ID (00h)
01h BYTE 01h (function "send to host")
02h BYTE type
00h ASCII byte
01h ASCII string
02h terminal function code
03h up arrow
04h down arrow
05h left arrow
06h right arrow
07h break
03h N BYTEs type-specific info (see #3046)
Format of type-specific info:
Offset Size Description (Table 3046)
---ASCII byte---
03h BYTE byte to send to host
---ASCII string---
03h WORD length of string
05h WORD pointer to string
---terminal function code (VT52/VT100)---
03h BYTE function code
00h keypad 0
01h keypad 1
...
09h keypad 9
0Ah keypad -
0Bh keypad ,
0Ch keypad .
0Dh keypad ENTER
0Eh PF1
0Fh PF2
10h PF3
11h PF4
---terminal function code (IBM3101)---
03h BYTE function code
00h PF1
...
07h PF8
08h Home
SeeAlso: #3045
--------N-610003SF02-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
AX = 0003h subfn 02h
DS:BX -> argument block (see #3047)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
Format of VINES argument block for Function 0003h subfunction 02h:
Offset Size Description (Table 3047)
00h BYTE session ID (00h)
01h BYTE 02h (function "control monitor")
02h BYTE display flag
00h don't display data received from host
01h display data
--------N-610003SF03-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
AX = 0003h subfn 03h
DS:BX -> argument block (see #3048)
Return: AX = status (see #3040)
Desc: this function permits the caller to freeze/unfreeze the display and
the ring buffer
SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
Format of VINES argument block for Function 0003h subfunction 03h:
Offset Size Description (Table 3048)
00h BYTE session ID (00h)
01h BYTE 03h (function "flow control data")
02h BYTE flow control flag
00h allow characters to be put into display or ring buffer
01h don't place any more characters into display or ring buffer
--------N-610003SF04-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
AX = 0003h subfn 04h
DS:BX -> argument block (see #3049)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
Format of VINES argument block for ending active session:
Offset Size Description (Table 3049)
00h BYTE session ID (00h)
01h BYTE 04h (function "end active session")
--------N-610003SF05-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
AX = 0003h subfn 05h
DS:BX -> argument block (see #3050)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
Format of VINES argument block for setting session parameters:
Offset Size Description (Table 3050)
00h BYTE session ID (00h)
01h BYTE 05h (function "set session parameter")
02h BYTE parameter number (see #3051)
03h BYTE new parameter value
(Table 3051)
Values for parameter number:
00h line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
05h=300, 06h=600, 07h=1200, 08h=2400, 09h=4800, 0Ah=9600)
01h parity (00h=none, 01h=odd, 02h=even)
02h duplex (00h=full, 01h=half)
03h character size (00h=7 bits, 01h=8 bits)
04h stop bits (00h=1, 01h=2)
05h XON/XOFF flow control (00h=no, 01h=yes)
07h intercharacter delay in tenths of a second
08h interline delay in tenths of a second
09h auto linefeed (00h=no, 01h=yes)
0Ah filter control characters (00h=no, 01h=yes)
0Bh terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
0Ch auto wrap (00h=no, 01h=yes)
0Dh cursor shape (00h=underscore, 01h=block)
0Eh character set (00h=UK, 01h=US ASCII)
0Fh printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
SeeAlso: #3050
--------N-610003SF06-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
AX = 0003h subfn 06h
DS:BX -> argument block (see #3052)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
Format of VINES argument block for getting session parameters:
Offset Size Description (Table 3052)
00h BYTE session ID (00h)
01h BYTE 06h (function "get session parameter")
02h BYTE parameter number (see #3051)
03h BYTE (ret) current parameter value
--------N-610003SF07-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
AX = 0003h subfn 07h
DS:BX -> argument block (see #3053)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
Format of VINES argument block for setting tab settings:
Offset Size Description (Table 3053)
00h BYTE session ID (00h)
01h BYTE 07h (function "set tab settings")
02h WORD pointer to 80-byte buffer in caller's current DS
each byte = 00h if no tab, 01h if tab at that position
--------N-610003SF08-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
AX = 0003h subfn 08h
DS:BX -> argument block (see #3054)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
Format of VINES argument block for getting tab settings:
Offset Size Description (Table 3054)
00h BYTE session ID (00h)
01h BYTE 08h (function "get tab settings")
02h WORD pointer to 80-byte buffer in caller's current DS
each byte set to 00h if no tab, 01h if tab at that position
--------N-610003SF09-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
AX = 0003h subfn 09h
DS:BX -> argument block (see #3055)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
Format of VINES argument block for Function 0003h subfunction 09h:
Offset Size Description (Table 3055)
00h BYTE session ID (00h)
01h BYTE 09h (function "refresh emulation screen")
--------N-610003SF0A-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
AX = 0003h subfn 0Ah
DS:BX -> argument block (see #3056)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
Format of VINES argument block:
Offset Size Description (Table 3056)
00h BYTE session ID (00h)
01h BYTE 0Ah (function "suspend session temporarily")
02h WORD size of session information to be saved
04h WORD pointer to buffer in caller's DS
--------N-610003SF0B-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
AX = 0003h subfn 0Bh
DS:BX -> argument block (see #3057)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
Format of VINES argument block:
Offset Size Description (Table 3057)
00h BYTE session ID (00h)
01h BYTE 0Bh (function "restore previously suspended session")
02h WORD size of buffer into which session info is restored
04h WORD pointer to buffer in caller's DS
--------N-610003SF0C-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
AX = 0003h subfn 0Ch
DS:BX -> argument block (see #3058)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=00h
Format of VINES argument block:
Offset Size Description (Table 3058)
00h BYTE session ID (00h)
01h BYTE 0Ch (function "set state of scroll lock checking")
02h BYTE check_scroll_lock flag
00h off
01h on (display of host data stopped while ScrollLock on)
--------N-610003SF0D-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
AX = 0003h subfn 0Dh
DS:BX -> argument block (see #3059)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
Format of VINES argument block:
Offset Size Description (Table 3059)
00h BYTE session ID (00h)
01h BYTE 0Dh (function "exit emulation")
--------N-610003SF0E-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
AX = 0003h subfn 0Eh
DS:BX -> argument block (see #3060)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
Format of VINES argument block:
Offset Size Description (Table 3060)
00h BYTE session ID (00h)
01h BYTE 0Eh (function "interrupt on character from host")
02h DWORD pointer to routine to be called (0000h:0000h = don't call)
06h DWORD stack pointer to use when call is made
--------N-610003SF0F-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
AX = 0003h subfn 0Fh
DS:BX -> argument block (see #3061)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
Format of VINES argument block:
Offset Size Description (Table 3061)
00h BYTE session ID (00h)
01h BYTE 0Fh (function "start a session")
02h WORD pointer to information area in caller's current DS (see #3062)
Format of VINES information area:
Offset Size Description (Table 3062)
00h WORD length of service name
02h WORD pointer to service name in caller's DS
04h BYTE type of connection (00h=connection name, 01h=dialout)
05h WORD length of connection name/telephone number
07h WORD pointer to connection name/telephone number
--------N-610003SF10-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
AX = 0003h subfn 10h
DS:BX -> argument block (see #3063)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
Format of VINES argument block:
Offset Size Description (Table 3063)
00h BYTE session ID (00h)
01h BYTE 10h (function "start/stop printing of data received from host")
02h WORD print capture flag (00h=off, 01h=on)
--------N-610003SF11-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
AX = 0003h subfn 11h
DS:BX -> argument block (see #3064)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
Format of VINES argument block:
Offset Size Description (Table 3064)
00h BYTE session ID (00h)
01h BYTE 11h (function "get file transfer parameters")
02h WORD pointer to info area in caller's current DS (see #3065)
Format of VINES info area:
Offset Size Description (Table 3065)
00h BYTE protocol flag (00h none, 01h Kermit)
01h BYTE direction flag (00h send, 01h receive)
02h BYTE length of null-terminated PC filename
03h DWORD pointer to null-terminated PC filename
07h BYTE length of null-terminated host filename
08h DWORD pointer to null-terminated host filename
--------N-610003SF12-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
AX = 0003h subfn 12h
DS:BX -> argument block (see #3066)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
Format of VINES argument block:
Offset Size Description (Table 3066)
00h BYTE session ID (00h)
01h BYTE 12h (function "get connection information")
02h WORD offset of buffer for connection information (see #3067)
Format of VINES connection information:
Offset Size Description (Table 3067)
00h WORD length of service name (returned)
02h WORD pointer to 64-byte buffer for service name
04h BYTE type of connection
00h connection name
01h dialout
05h WORD length of connection name/telephone number
07h WORD pointer to 64-byte buffer for name/telno
09h BYTE server line number being used (returned)
--------N-610003SF13-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
AX = 0003h subfn 13h
DS:BX -> argument block (see #3068)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
Format of VINES argument block:
Offset Size Description (Table 3068)
00h BYTE session ID (00h)
01h BYTE 13h (function "start/stop tracing data traffic in session")
02h BYTE trace flag (00h=off, 01h=on)
--------N-610003SF14-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
AX = 0003h subfn 14h
DS:BX -> argument block (see #3069)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=0Eh
Format of VINES argument block:
Offset Size Description (Table 3069)
00h BYTE session ID (00h)
01h BYTE 14h (function "interrupt on message from host")
02h DWORD pointer to routine to be called (0000h:0000h = don't call)
06h DWORD stack pointer to use when call is made
--------N-610003SF15-------------------------
INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
AX = 0003h subfn 15h
DS:BX -> argument block (see #3070)
Return: AX = status (see #3040)
SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
Format of VINES argument block:
Offset Size Description (Table 3070)
00h BYTE session ID (00h)
01h BYTE 15h (function "reset error")
--------V-610003-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - REPORT ZOOM FACTOR
AX = 0003h
Return: AX = zoom factor
Desc: returns the current zoom factor
Range: unknown
Notes: INT 61h is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
not all vendors include the Tseng TSR which supports these functions
SeeAlso: AX=0000h"OPTIMA",AX=0005h"OPTIMA",INT 16/AH=FFh"OPTIMA"
--------N-610004-----------------------------
INT 61 - Banyan VINES - FILE SERVICE CONTROL
AX = 0004h
DS:DX -> request block (see #3072)
Return: AX = status (see #3071)
Notes: This service is handled by the redirector
The request dispatch table contains dummy entries for requests 0Ah,
0Dh, 15h, 19h, and 1Ah, which always return error 0033h (invalid
request ID)
(Table 3071)
Values for Banyan VINES file service control status code:
0000h successful
0002h file not found
0003h path not found
000Fh invalid drive
0015h drive not ready
0033h invalid request ID
0034h drive not connected
0037h drive number out of range
0038h drive number not available
003Ah invalid operation
0055h drive already connected
0057h invalid number of entries
Format of Banyan VINES file service request block:
Offset Size Description (Table 3072)
00h WORD request ID (1..28)
02h n BYTES additional parameters and result buffer
--------N-610004SF0001-----------------------
INT 61 - Banyan VINES - SET DRIVE CONNECTION
AX = 0004h subfn 0001h
DS:DX -> request block (see #3073)
Return: AX = status (0000h,0037h,0038h,0055h) (see #3071)
Desc: Maps the specified file service to a DOS drive letter
Note: If an empty service name is specified, an existing connection will
be removed
SeeAlso: AX=0004h/SF=0002h
Format of VINES Function 0004h/Subfunction 0001h request block:
Offset Size Description (Table 3073)
00h WORD 0001h
02h BYTE drive number (0=default, 1=A, ...)
03h 16 BYTEs reserved
13h 64 BYTEs null-terminated file service name
53h 5 BYTEs reserved
--------N-610004SF0002-----------------------
INT 61 - Banyan VINES - GET DRIVE CONNECTION
AX = 0004h subfn 0002h
DS:DX -> request block (see #3074)
Return: AX = status (0000h,0034h,0037h) (see #3071)
Desc: Returns the StreetTalk name of the associated file service
SeeAlso: AX=0004h/SF=0001h,AX=0004h/SF=0003h
Format of VINES Function 0004h/Subfunction 0002h request block:
Offset Size Description (Table 3074)
00h WORD 0002h
02h BYTE drive number (0=default, 1=A, ...)
03h 16 BYTEs reserved
13h 64 BYTEs buffer for null-terminated file service name
53h 5 BYTEs reserved
--------N-610004SF0003-----------------------
INT 61 - Banyan VINES - GET NETWORK DRIVE MAP
AX = 0004h subfn 0003h
DS:DX -> request block (see #3075)
Return: AX = status
0000h drive map returned in request block
Desc: Returns a bit map indicating which drive numbers are connected to a
file service
Note: Only bits 0-25 are significant
SeeAlso: AX=0004h/SF=0002h
Format of VINES Function 0004h/Subfunction 0003h request block:
Offset Size Description (Table 3075)
00h WORD 0003h
02h DWORD buffer for drive map (bit0=A, bit1=B, ...)
--------N-610004SF0004-----------------------
INT 61 - Banyan VINES - SET USER NAME
AX = 0004h subfn 0004h
DS:DX -> request block (see #3076)
Return: AX = status (0000h) (see #3071)
Notes: Other side effects, if any, not known
SeeAlso: AX=0004h/SF=0005h,#3102 [ID 0004h],AX=0007h/BX=0005h
Format of VINES Function 0004h/Subfunction 0004h request block:
Offset Size Description (Table 3076)
00h WORD 0004h
02h 64 BYTE null-terminated user name
--------N-610004SF0005-----------------------
INT 61 - Banyan VINES - GET USER NAME
AX = 0004h subfn 0005h
DS:DX -> request block (see #3077)
Return: AX = status (see also #3071)
0000h user name returned in request block
Desc: Returns the StreetTalk name of the currently logged in user
SeeAlso: AX=0004h/SF=0004h,#3102 [ID 0004h],AX=0007h/BX=0005h
SeeAlso: AX=0004h/SF=0004h
Format of VINES Function 0004h/Subfunction 0005h request block:
Offset Size Description (Table 3077)
00h WORD 0005h (subfunction "Get User Name")
02h 64 BYTE buffer for null-terminated user name
--------N-610004SF0006-----------------------
INT 61 - Banyan VINES - TEST DRIVE CONNECTION
AX = 0004h subfn 0006h
DS:DX -> request block (see #3078)
Return: AX = status (see also #3071)
0000h connection flag returned in request block
Desc: Returns a flag indicating if the drive is connected to a file service
SeeAlso: AX=0004h/SF=0007h
Format of VINES Function 0004h/Subfunction 0006h request block:
Offset Size Description (Table 3078)
00h WORD 0006h (subfunction "Test Drive Connection")
02h BYTE buffer for connection flag (1 = not connected, 2 = connected)
--------N-610004SF0007-----------------------
INT 61 - Banyan VINES - GET CONNECTION DATA STRUCTURES
AX = 0004h subfn 0007h
DS:DX -> request block (see #3079)
Return: AX = status (see also #3071)
0000h pointer returned in request block
0033h invalid request ID
Desc: Returns pointers to various internal data structures
Format of VINES Function 0004h/Subfunction 0007h request block:
Offset Size Description (Table 3079)
00h WORD 0007h
02h BYTE request ID (0..7) (see #3080)
03h WORD buffer for pointer segment
05h WORD buffer for pointer offset
SeeAlso: #3081,#3082
(Table 3080)
Values for VINES pointer ID:
00h job file table ???
01h drive handle table
02h drive connection table
03h IPC port of drive Z:
04h end of drive connection table
05h ???
06h ???
07h redirector data segment (offset=0)
SeeAlso: #3079
Format of VINES drive handle table:
Offset Size Description (Table 3081)
00h BYTE handle to default drive (0 = not connected)
01h BYTE handle to drive A: (0 = not connected)
...
1Ah BYTE handle to drive Z: (0 = not connected)
SeeAlso: #3082
Format of VINES drive connection table:
Offset Size Description (Table 3082)
00h WORD file service type (?) (0001h if drive Z:, 0000h else)
02h 16 BYTEs IPC port (contains the server serial number)
12h 46 BYTEs ???
40h 64 BYTEs null-terminated StreetTalk name of associated file service
80h 64 BYTEs null-terminated root directory (/ROOT: parameter of SETDRIVE)
SeeAlso: #3081
--------N-610004SF0008-----------------------
INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
AX = 0004h subfn 0008h
DS:DX -> request block (see #3083)
Return: AX = status (0000h,000Fh,0015h) (see #3071)
Notes: The server ID is extracted from the IPC port address of the associated
file service stored in the drive connection table
The server serial number and the server subnet number are returned in
big-endian (Motorola) format (i.e. MSB first)
SeeAlso: AX=0004h/SF=0005h
Format of VINES request block for getting server serial number:
Offset Size Description (Table 3083)
00h WORD 0008h
02h WORD drive number (0=default, 1=A, ...)
04h DWORD buffer for server serial number
08h WORD buffer for server subnet number (always 0001h)
--------N-610004SF0009-----------------------
INT 61 - Banyan VINES - SET ??? PARAMETER
AX = 0004h subfn 0009h
DS:DX -> request block (see #3084)
Return: AX = status (0000h) (see #3071)
Notes: The specified WORD parameter is copied to offset 1702h of the
redirector code segment (revision 5.53)
SeeAlso: AX=0004h/SF=000Bh
Format of VINES Function 0004h/Subfunction 0009h request block:
Offset Size Description (Table 3084)
00h WORD 0009h
02h WORD parameter
--------N-610004SF000B-----------------------
INT 61 - Banyan VINES - GET ??? DRIVE PARAMETER
AX = 0004h subfn 000Bh
DS:DX -> request block (see #3085)
Return: AX = status (0000h,0034h,0037h) (see #3071)
Notes: This request returns a WORD value from the drive connection table
read from offset 0012h of the specified drive's entry (usually 0037h)
SeeAlso: AX=0004h/SF=0009h
Format of VINES Function 0004h/Subfunction 000Bh request block:
Offset Size Description (Table 3085)
00h WORD 000Bh
02h BYTE drive number (0=default, 1=A, ...)
03h WORD buffer for parameter
--------N-610004SF000C-----------------------
INT 61 - Banyan VINES - LOGOUT FROM VINES
AX = 0004h subfn 000Ch
DS:DX -> request block (see #3086)
Return: AX = status 0000h (see #3071)
Desc: Terminates a running VINES session and clears all session specific
buffers
SeeAlso: AX=0004h/SF=0008h
Format of VINES Function 0004h/Subfunction 000Ch request block:
Offset Size Description (Table 3086)
00h WORD 000Ch
--------N-610004SF000E-----------------------
INT 61 - Banyan VINES - GET ACCESS RIGHTS LIST (ARL)
AX = 0004h subfn 000Eh
DS:DX -> request block (see #3087)
Return: AX = status (see also #3071)
0000h request has been processed
Desc: Returns the owner, group, and extended access rights for the specified
file or directory
Note: A status of 0000h does not necessarily indicate a successful request;
check the status word at offset 000Eh of the request block too
SeeAlso: AX=0004h/SF=000Fh
Format of VINES Function 0004h/Subfunction 000Eh request block:
Offset Size Description (Table 3087)
00h WORD 000Eh (subfunction "Get Access Rights List")
02h BYTE drive number (0=default, 1=A, ...)
03h BYTE reserved
04h DWORD pointer to path specification (drive letter ignored)
08h DWORD pointer to ARL control block (see #3088)
0Ch WORD buffer for number of ARL entries (1..5)
0Eh WORD buffer for status (see #3089)
Format of ARL control block:
Offset Size Description (Table 3088)
00h 64 BYTEs 1st StreetTalk name (user, list, or service)
40h WORD 1st ARL
42h 64 BYTEs 2nd StreetTalk name (user, list, or service)
82h WORD 2nd ARL
84h 64 BYTEs 3rd StreetTalk name (user, list, or service)
C4h WORD 3rd ARL
C6h 64 BYTEs 4th StreetTalk name (user, list, or service)
106h WORD 4th ARL
108h 64 BYTEs 5th StreetTalk name (user, list, or service)
148h WORD 5th ARL
(Table 3089)
Values for VINES Get/Set Access Rights List status:
0000h successful
0002h file not found
0003h path not found
003Ah invalid operation
0057h invalid number of entries
--------N-610004SF000F-----------------------
INT 61 - Banyan VINES - SET ACCESS RIGHTS LIST (ARL)
AX = 0004h subfn 000Fh
DS:DX -> request block (see #3090)
Return: AX = status (see also #3071)
0000h request has been processed
Desc: Sets the owner, group, and extended access rights for the specified
file or directory
Note: A status of 0000h does not necessarily indicate a successful request;
check the status word at offset 000Eh of the request block too
If the number of ARL entries is less than 1 or greater than 5, error
0057h (invalid number of entries) is returned
SeeAlso: AX=0004h/SF=000Eh
Format of VINES Function 0004h/Subfunction 000Fh request block:
Offset Size Description (Table 3090)
00h WORD 000Fh
02h BYTE drive number (0=default, 1=A, ...)
03h BYTE reserved
04h DWORD pointer to path specification (drive letter ignored)
08h DWORD pointer to ARL control block (see #3088)
0Ch WORD number of ARL entries (1..5)
0Eh WORD buffer for status (see #3089)
--------N-610004SF0010-----------------------
INT 61 - Banyan VINES - FILE SERVICE CONTROL - ???
AX = 0004h subfn 0010h
DS:DX -> request block (see #3091)
Return: AX = status (see also #3071)
0000h request has been processed
SeeAlso: AX=0004h/SF=000Fh
Format of VINES Function 0004h/Subfunction 0010h request block:
Offset Size Description (Table 3091)
00h WORD 0010h
02h BYTE drive number (0=default, 1=A, ...)
03h BYTE reserved
04h 64 BYTEs ???
44h 16 BYTEs IPC port (see #2999 at AX=0001h"Sosock")
--------N-610004SF0013-----------------------
INT 61 - Banyan VINES - GET VALUE OF GLOBAL VARIABLE
AX = 0004h subfn 0013h
DS:DX -> request block (see #3092)
Return: AX = status (see also #3071)
0000h successful
0033h invalid request ID (returned if variable index out of range)
Desc: Returns the value of the specified global variable
Note: The data will be truncated if the specified buffer is not large enough.
Check the length word in the request block to find out how many
bytes should have been copied.
SeeAlso: AX=0004h/SF=0014h,AX=0006h
Format of request block:
Offset Size Description (Table 3092)
00h WORD 0013h
02h WORD variable index (0000h-001Fh) (see #3093)
04h WORD buffer length (on exit set to # of bytes actually needed)
06h DWORD far pointer to result buffer
SeeAlso: #3094
(Table 3093)
Values for variable indices:
Index Length Description
0000h 1 ???
0001h 16 StreetTalk port
0002h 4 StreetTalk session handle
0003h 6 colors
0004h 64 StreetTalk name of currently logged in user
0005h 0 old clear text password (not applicable)
0006h 0 default group (not applicable)
0007h 1 number of messages in message queue
0008h 1 message flag
0009h 16 TalkPort
000Ah 2 TalkPort socket
000Bh 64 StreetTalk name of mail service
000Ch 2 message timeout
000Dh 2 next message place
000Eh 246 message queue (3 times 80 characters + 2 flag bytes)
000Fh 14 system nonce
0010h 2 failed login count
0011h 1 new mail message received
0012h 8 mail service capabilities
0013h 3 printer port diverted
0014h 32 international location
0015h 16 IPC port of drive Z:
0016h 1024 pointer to current directory table
0017h 2 maximum number of file volume mappings
0018h 24 routine to call back for messages (6 far pointers)
0019h 4 current virtual machine
001Ah 20 DOS redirector message bell tones
001Bh 2 various flags used for internal communication
001Ch 0 OS/2 client configuration (not applicable)
001Dh 8 redirector/IFS file version
001Eh 0 reserved (not applicable)
001Fh 4 address of VVINESD.386 dispatch
--------N-610004SF0014-----------------------
INT 61 - Banyan VINES - SET VALUE OF GLOBAL VARIABLE
AX = 0004h subfn 0014h
DS:DX -> request block (see #3094)
Return: AX = status
0000h successful
0033h invalid request ID (returned if variable index out of range)
Desc: Assigns a new value to the specified global variable
Note: If the specified number of bytes to copy exceeds the size of the
destination variable, nothing will be copied.
SeeAlso: AX=0004h/SF=0013h,AX=0006h
Format of request block:
Offset Size Description (Table 3094)
00h WORD 0014h
02h WORD variable index (0000h-001Fh) (see #3093)
04h WORD number of bytes to copy
06h DWORD far pointer to new value
SeeAlso: #3092
--------N-610004SF0016-----------------------
INT 61 - Banyan VINES - GET NUMBER OF OPEN FILES ON REMOTE DRIVE
AX = 0004h subfn 0016h
DS:DX -> request block (see #3095)
Return: AX = status
0000h open file count returned in request block
Desc: Counts the number of open files on the specified remote drive.
Note: No error is returned if the specified drive number is invalid or points
to a local drive. Use AX=0004h/SF=0006h to test if a given drive
number is assigned to a remote drive.
SeeAlso: AX=0004h/SF=0006h
Format of request block:
Offset Size Description (Table 3095)
00h WORD 0016h
02h BYTE drive number (0=default, 1=A:, ...)
03h BYTE reserved
04h WORD buffer for open file count
SeeAlso: #3097
--------N-610004SF0018-----------------------
INT 61 - Banyan VINES - SET UNIDENTIFIED INTERNAL FLAG
AX = 0004h subfn 0018h
DS:DX -> request block (see #3096)
Return: AX = status
0000h success
Desc: Sets an unidentified BYTE variable in the redirector data segment to 1.
Note: In the VINES 5.53 "REDIR4" redirector, this variable is located at
DS:0B53.
Format of request block:
Offset Size Description (Table 3096)
00h WORD 0018h
SeeAlso: #3097
--------N-610004SF001B-----------------------
INT 61 - Banyan VINES - UNIDENTIFIED DRIVE SPECIFIC FUNCTION
AX = 0004h subfn 001Bh
DS:DX -> request block (see #3097)
Return: AX = status
0000h success
0034h drive not connected
0037h drive number out of range
Desc: The purpose of this function is not known.
Format of request block:
Offset Size Description (Table 3097)
00h WORD 001Bh
02h BYTE drive number (0=default, 1=A:, ...)
03h BYTE ???
04h WORD ???
06h DWORD far pointer to data area
0Ah WORD ???
0Ch DWORD far pointer to data area
10h WORD buffer for result
SeeAlso: #3095,#3097
--------N-610004SF001C-----------------------
INT 61 - Banyan VINES - UNIDENTIFIED FUNCTION
AX = 0004h subfn 001Ch
DS:DX -> request block (see #3098)
Return: AX = status
0000h success
0057h invalid number of entries
Desc: The purpose of this function is not known.
Format of request block:
Offset Size Description (Table 3098)
00h WORD 001Ch
02h WORD ???
04h WORD ???
06h WORD ???
08h WORD ???
0Ah DWORD far pointer to data area (14 bytes)
--------V-610004-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ENTER SPECIFY MODE
AX = 0004h
Range: unknown
Notes: Specify Mode is enabled by hot key (seeAlso below), and allows
panning and zooming via the numeric keypad.
INT 61 is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
not all vendors include the Tseng TSR which supports these functions
SeeAlso: AX=0000h"OPTIMA",AX=0007h"OPTIMA",INT 16/AH=FFh"OPTIMA"
--------N-610005-----------------------------
INT 61 - Banyan VINES - PRINT SERVICE CONTROL
AX = 0005h
DS:DX -> request block (see #3099)
Return: AX = status
0000h successful
0001h network software not installed or incompatible
Notes: This service is handled by the redirector
The size of the request/result block depends on the selected function
and the value at offset 04h.
SeeAlso: INT 2F/AX=D702h
Format of VINES request/result block for printer control:
Offset Size Description (Table 3099)
00h WORD function
0201h "endspool" all data for a print job has been sent
(no bytes returned)
0202h "deassign" the virtual printer port
Before the printer port is deassigned all data sent
to it is endspooled.
(no bytes returned)
0205h "get_active" get currently active printer port
(1 byte required for result)
Returns: - the currently active printer port (1-3) (0 if
there is none)
0207h ??? purpose unknown; called periodically every second
020Ch "get_bannertitle" gets the title which is printed on the
banner page of a print job sent to the virtual port
(16 bytes required for result)
Returns: - the null-terminated banner title
020Eh "get_servicename" gets the name of the print service
assigned to the virtual port
(64 bytes required for result)
Returns: - the null-terminated print service name assigned
to the virtual port
0210h "set_bannertitle" sets the title which is printed on the
banner page of a print job sent to the virtual port
(16 bytes required for input)
Input: - the null-terminated banner title (max 16 chars)
0212h "set_servicename" sets the name of the print service
assigned to the virtual port
(64 bytes required for input)
Input: - the null-terminated print service name
(max 64 chars)
0216h "get_job_paper_format" gets the paper format for
subsequent print jobs
(16 bytes required for result)
Returns: - the null-terminated paper format
0217h "set_job_paper_format" sets the paper format for
subsequent print jobs
(16 bytes required for input)
Input: - the null-terminated paper format (max 16 chars)
02h WORD number of active virtual port (1-3) (0 for function 0205h)
04h WORD Offset into the request block from which additional input
is to be read and/or at which the result is to be copied
(if there is any). Therefore the smallest block size for a
function which returns a result is
this offset + the maximum number of returned bytes - 1
06h WORD 0000h
--------V-610005-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
AX = 0005h
BX:CX -> buffer for window parameters (see #3100)
Range: unknown
Notes: INT 61 is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
not all vendors include the Tseng TSR which supports these functions
SeeAlso: AX=0000h"OPTIMA",AX=0003h"OPTIMA",AX=0006h"OPTIMA"
SeeAlso: INT 16/AH=FFh"OPTIMA"
Format of Optima 1024 window parameters:
Offset Size Description (Table 3100)
00h WORD X start of zoom window
02h WORD Y start of zoom window
04h WORD X end of zoom window
06h WORD Y end of zoom window
08h WORD current zoom factor
0Ah WORD zoom offset start X
0Ch WORD zoom offset start Y
--------V-610006-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM WINDOW
AX = 0006h
BX:CX -> zoom window description (see #3101)
Range: unknown
Notes: width of zoom window must be a multiple of the pixel replication (zoom)
factor
INT 61 is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
not all vendors include the Tseng TSR which supports these functions
SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0005h"OPTIMA",AX=0008h"OPTIMA"
SeeAlso: INT 16/AH=FFh"OPTIMA"
Format of Optima 1024 zoom window description:
Offset Size Description (Table 3101)
00h WORD X start of zoom window
02h WORD Y start of zoom window
04h WORD X end of zoom window
06h WORD Y end of zoom window
--------N-610006-----------------------------
INT 61 - Banyan VINES - GET ADDRESS OF GLOBAL VARIABLE
AX = 0006h
BX = bits 14..0: request ID (see #3102)
bit 15: result destination flag (0 for ES:BX, 1 for AX:BX)
Return: AX = status
0000h successful
000Bh invalid request
ES:BX -> internal variable (bit 15 of BX was not set)
AX:BX -> internal variable (bit 15 of BX was set)
Note: This service is handled by the redirector
SeeAlso: AX=0004h/SF=0013h,AX=0004h/SF=0014h
(Table 3102)
Values for request IDs:
Request Length Description
0000h 1 ???
0001h 16 StreetTalk port
0002h 4 StreetTalk session handle
0003h 6 colors
0004h 64 StreetTalk name of currently logged in user
0005h 0 old clear text password (always returns error code 000Bh)
0006h 0 default group (not applicable)
0007h 1 message queue count
0008h 1 message flag
0009h 16 TalkPort
000Ah 2 TalkPort socket
000Bh 64 StreetTalk name of mail service
000Ch 2 message timeout
000Dh 2 next message place
000Eh 246 message queue
000Fh 14 system nonce
0010h 2 failed login count
0011h 1 new mail message received
0012h 8 mail capabilities
0013h 3 printer port diverted
0014h 32 international location
0015h 16 IPC port of drive Z:
0016h 1024 pointer to current directory table
0017h 2 maximum number of file volume mappings
0018h 24 routine to call back for messages
0019h 4 current virtual machine
001Ah 20 DOS redirector message bell tones
001Bh 2 various flags used for internal communication
001Ch 0 OS/2 client configuration (always returns error code 000Bh)
001Dh 8 redirector/IFS file version
001Eh 0 reserved (always returns error code 000Bh)
001Fh 4 address of VVINESD.386 dispatch
--------V-610007-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY APPLICATION KEY
AX = 0007h
Return: AX = current state (0000h/0001h)
Desc: returns the current toggle state of the application (END) key in
specify mode. E.g. in the OPTIMA AutoCAD driver, 0 means AutoCAD
calls INT 61/AX=0001h every time the crosshair cursor moves.
Notes: In specify mode, the END key has been reserved for applications.
INT 61 is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
not all vendors include the Tseng TSR which supports these functions
SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0004h"OPTIMA"
SeeAlso: INT 16/AH=FFh"OPTIMA",INT 7A/AX=0001h"AutoCAD"
--------N-610007BX0000-----------------------
INT 61 - Banyan VINES - RECONNECT TO STREETTALK
AX = 0007h
BX = 0000h
Return: AX = status (see #3103)
SeeAlso: AX=0007h/BX=0002h
(Table 3103)
Values for VINES function status:
0000h successful
0001h requested handler not installed or incompatible
000Bh service busy
000Ch invalid request ID
03E9h incorrect name syntax
03EAh organization name too long
03EBh group name too long
03ECh item name too long
03EDh StreetTalk name too long
03F3h organization not found
03F4h group not found
03F5h StreetTalk name not found
03F8h not a StreetTalk name
0409h modify access denied
040Dh appropriate StreetTalk name unavailable
0411h all matching names have been returned
0412h some groups unavailable, all available matches returned
--------N-610007BX0001-----------------------
INT 61 - Banyan VINES - GET MM PORT FOR A SERVICE
AX = 0007h
BX = 0001h
DS:DX -> StreetTalk service name (64 bytes)
DS:DI -> 16-byte buffer for IPC port (see #2999 at AX=0001h"Sosock")
Return: AX = status (see #3103)
Notes: This function calls AX=0007/BX=0002h with the port count set to 1 and
the port type set to 00h
SeeAlso: AX=0007h/BX=0002h,AX=0007h/BX=0004h,AX=0007h/BX=000Ah
--------N-610007BX0002-----------------------
INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
AX = 0007h
BX = 0002h
DS:DX -> StreetTalk service name
DS:DI -> port record block (see #3104)
Return: AX = status (see #3103)
Note: if the requested number of ports is greater than five, it will be reset
to five
SeeAlso: AX=0007h/BX=0001h,AX=0007h/BX=0003h,AX=0007h/BX=0004h
SeeAlso: AX=0007h/BX=000Ah
Format of VINES port record block:
Offset Size Description (Table 3104)
00h WORD (call) number of 17-byte elements (01h-05h) to be filled
02h BYTE (call) port type for first port
03h 16 BYTEs (ret) port (see #2999)
13h BYTE (call) port type for second port
14h 16 BYTEs (ret) port (see #2999)
24h BYTE (call) port type for third port
25h 16 BYTEs (ret) port (see #2999)
35h BYTE (call) port type for fourth port
36h 16 BYTEs (ret) port (see #2999)
46h BYTE (call) port type for fifth port
47h 16 BYTEs (ret) port (see #2999)
57h BYTE reserved
SeeAlso: #3106
--------N-610007BX0003-----------------------
INT 61 - Banyan VINES - FIND A SERVICE
AX = 0007h
BX = 0003h
DS:DX -> port control block (see #3105)
Return: AX = status (see AX=0007h/BX=0000h)
SeeAlso: AX=0007h/BX=0002h,AX=0007h/BX=0004h,AX=0007h/BX=0005h
Format of port control block:
Offset Size Description (Table 3105)
00h WORD ???
02h WORD ???
04h 16 BYTEs IPC port (see #2999 at AX=0001h"Sosock")
14h 5 WORDs ???
SeeAlso: #3111
--------N-610007BX0004-----------------------
INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
AX = 0007h
BX = 0004h
DS:DX -> StreetTalk name of service (max 64 bytes)
DS:DI -> port record block (see #3106)
Return: AX = status (see #3103)
SeeAlso: AX=0007h/BX=0002h,AX=0007h/BX=0003h,AX=0007h/BX=000Ah
Format of VINES port record block:
Offset Size Description (Table 3106)
00h WORD number of 17-byte elements
02h BYTE port type for first port
03h 16 BYTEs first IPC port (see #2999)
13h BYTE port type for second port
14h 16 BYTEs second IPC port (see #2999)
24h BYTE port type for third port
25h 16 BYTEs third IPC port (see #2999)
35h BYTE port type for fourth port
36h 16 BYTEs fourth IPC port (see #2999)
46h BYTE port type for fifth port
47h 16 BYTEs fifth IPC port (see #2999)
57h BYTE reserved
SeeAlso: #3104
--------N-610007BX0005-----------------------
INT 61 - Banyan VINES - GET USER NAME
AX = 0007h
BX = 0005h
DS:DX -> 64-byte buffer for user's StreetTalk name
Return: AX = status (see also #3103)
0000h successful
0001h network software not installed or incompatible
Note: if no user logged in, first byte of returned name will be 00h
SeeAlso: AX=0007h/BX=0007h
--------N-610007BX0006-----------------------
INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
AX = 0007h
BX = 0006h
SI = error code (>100)
DS:DX -> 80-byte buffer for error text
Return: AX = status (see also #3103)
0000h successful
0001h network software not installed or incompatible
--------N-610007BX0007-----------------------
INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
AX = 0007h
BX = 0007h
DS:DX -> NiceName block (see #3107)
Return: AX = status (see #3103)
SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
Format of VINES NiceName block:
Offset Size Description (Table 3107)
00h WORD type of name
0064h (100) organization
00C8h (200) group
012Ch (300) item
02h WORD pointer to ASCIZ input name
04h WORD pointer to 64-byte buffer for output name
SeeAlso: #3108
--------N-610007BX0008-----------------------
INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
AX = 0007h
BX = 0008h
DS:DX -> enumerate block (see #3108)
Return: AX = status (see also #3103)
0000h successful
0411h all matching names have been returned
0412h some groups unavailable, all available matches returned
Note: each program using this call should continue until a nonzero status
is returned; otherwise, some resources will not be freed for several
hours
SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0007h,AX=0007h/BX=0009h
Format of VINES enumerate block:
Offset Size Description (Table 3108)
00h WORD return code
02h WORD pointer to pattern string
04h WORD enumerate type
0064h (100) organization
00C8h (200) group
012Ch (300) item
06h WORD enumerate class
0000h unspecified (return all matching items)
0001h user names
0002h service names
0003h list names
0004h nicknames
08h WORD pointer to category criteria block (see #3109) or 0
0Ah WORD pointer to array of 64-byte returned names
0Ch WORD number of names returned
0Eh 6 BYTEs reserved for subsequent enumerated calls (set to zeros on first
call)
SeeAlso: #3107
Format of category criteria block:
Offset Size Description (Table 3109)
00h WORD exclude flag
0000h return only items with the specified categories
0001h return all items except those with the given categories
02h WORD number of categories (max 5, 0000h = match all categories)
04h WORD category 1 value (see #3110)
06h WORD category 2 value
08h WORD category 3 value
0Ah WORD category 4 value
0Ch WORD category 5 value
SeeAlso: #3108
(Table 3110)
Values for common VINES service categories:
0001h server service
0002h file service
0003h print service
0004h mail service
0005h StreetTalk
0006h time service
0007h FTP service
0008h semaphore service
0009h 3270/SNA service
000Ah terminal emulation service
000Bh asynchronous terminal service
000Ch NETBIOS service
000Dh PC-based service
000Eh BSC service
000Fh APPC service
0010h NM service
0011h VS service
0012h POP service
0013h AFP service
0014h VCS service
0015h EMS service
0016h LN service
0017h BS service
0023h RIPL service
0064h ADM service
SeeAlso: #3109
--------N-610007BX0009-----------------------
INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING (SELECTED PORT)
AX = 0007h
BX = 0009h
SI = error code
DS:DX -> 80-byte buffer for error text
DS:DI -> IPC port (16 bytes; see AX=0001h#"Sosock" for port format)
Return: AX = status (see AX=0007h/BX=0000h)
Note: Same as AX=0007h/BX=0006h, except IPC port is specified explicitly
SeeAlso: AX=0007h/BX=0006h
--------N-610007BX000A-----------------------
INT 61 - Banyan VINES - internal, OS/2 only - GET MANY PORTS FOR SERVICE
AX = 0007h
BX = 000Ah
DS:DX -> port control block (see #3111)
Return: AX = status (see AX=0007h/BX=0000h)
Note: This function cannot be called from applications, as the DS register
is checked against the redirector data segment address (status code
0001h will be returned if DS doesn't match)
SeeAlso: AX=0007h/BX=0001h,AX=0007h/BX=0002h,AX=0007h/BX=0004h
Format of port control block:
Offset Size Description (Table 3111)
00h WORD ???
02h WORD ???
04h 16 BYTEs IPC port (see #2999 at AX=0001h"Sosock")
14h 14 WORDs ???
SeeAlso: #3105
--------V-610008-----------------------------
INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM OFFSET
AX = 0008h
BX = X start of zoom offset
CX = Y start of zoom offset
Desc: specifies the first byte of video memory to appear in the zoom window
Range: unknown
Notes: INT 61 is the default interrupt; the actual interrupt number can be
obtained by calling INT 16/AH=FFh
not all vendors include the Tseng TSR which supports these functions
SeeAlso: AX=0000h"OPTIMA",AX=0006h"OPTIMA",INT 16/AH=FFh"OPTIMA"
--------N-610008BX0000-----------------------
INT 61 - Banyan VINES - TALKPORT SERVICE - GET HANDLER ADDRESS
AX = 0008h
BX = 0000h
Return: AX = status
0000h successful
ES:DX = far pointer to handler
Desc: The TalkPort is a facility to display event messages (e.g. mail
received, printing on a local printer, ...) on the screen
Note: This service is handled by the redirector
SeeAlso: AX=0008h/BX=0001h,AX=0008h/BX=0002h
--------N-610008BX0001-----------------------
INT 61 - Banyan VINES - TALKPORT SERVICE - SET HANDLER ADDRESS
AX = 0008h
BX = 0001h
ES:DX -> new handler
Return: AX = status
0000h successful
SeeAlso: AX=0008h/BX=0000h
--------N-610008BX0002-----------------------
INT 61 - Banyan VINES - TALKPORT SERVICE - POST MESSAGE ON LOCAL DISPLAY
AX = 0008h
BX = 0002h
CX = message display flags (see #3112)
DS:DX -> ASCIZ string to display (only first 80 chars used)
Return: AX = status
0000h successful
000Bh message display function currently busy
000Ch message queue full
Notes: queues up to three messages to be displayed on the bottom line
This service is handled by the redirector
In a DOS session, TalkPort messages are displayed on display line 25;
in a Windows session, TalkPort messages are displayed in dialog boxes
SeeAlso: AX=0008h/BX=0000h,AX=0008h/BX=0003h
Bitfields for VINES message display flags:
Bit(s) Description (Table 3112)
0 message will remain on screen until user presses ^X
1 ring bell after displaying message
2 blink
--------N-610008BX0003-----------------------
INT 61 - Banyan VINES - TALKPORT SERVICE - INTERCEPT VINES 25th-LINE MESSAGES
AX = 0008h
BX = 0003h
DS:DX -> request block (see #3113)
Return: AX = status
0000h successful
0001h network software not installed or incompatible
Notes: message handler should not call BIOS or DOS functions, and should
either call next handler or simply return
to stop intercepting messages, set prev and next request blocks to
point at each other
SeeAlso: AX=0008h/BX=0002h
Format of VINES request block for 25-th line messages:
Offset Size Description (Table 3113)
00h DWORD pointer to user-written message handler
04h DWORD pointer to next request block (filled in by VINES)
08h DWORD pointer to previous request block (filled in by VINES)
0Ch DWORD pointer to message storage area (filled by VINES) (see #3114)
Format of message storage area:
Offset Size Description (Table 3114)
00h 16 BYTEs IPC port of message sender (see #2999)
10h BYTE message flags
11h WORD reserved
13h BYTE length of message
14h 80 BYTEs message text
SeeAlso: #3113
--------N-610009-----------------------------
INT 61 - Banyan VINES - NETBIOS CLIENT SERVICE
AX = 0009h
other parameters, if any, unknown
--------N-61000A-----------------------------
INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
AX = 000Ah
Note: either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
which is loaded second. The first interface loaded will use AX=0002h
SeeAlso: INT 61/AX=0002h
--------N-61000B-----------------------------
INT 61 - Banyan VINES - SEMAPHORE SERVICE
AX = 000Bh
other parameters, if any, unknown
--------N-61000C-----------------------------
INT 61 - Banyan VINES - 3270 KEYBOARD HANDLER
AX = 000Ch
other parameters, if any, unknown
--------N-61000D-----------------------------
INT 61 - Banyan VINES - T3270 SERVICE FUNCTION
AX = 000Dh
other parameters, if any, unknown
--------N-61000E-----------------------------
INT 61 - Banyan VINES - ENHANCED 3270 SERVICE
AX = 000Eh
other parameters, if any, unknown
--------N-61000F-----------------------------
INT 61 - Banyan VINES - VINES SOCKET API (FAR DATA)
AX = 000Fh
CX:BX -> request block (see #3115)
DX = application's data segment (should be = CX)
ES = DS
Return: AX = status
0000h successful
0099h invalid operation
00A5h resource not available
Desc: StreetTalk access with session handles
Notes: This service is handled by the adapter driver
The request dispatch table contains dummy entries for subfunctions
06h, 0Dh, 0Eh, 0Fh, 10h, and 11h, which always return error 0099h
(invalid operation) in the request block's result buffer
This interface does the same as the corresponding AX=0001h interface,
but with a slightly modified request block structure (i.e it allows
FAR parameter block pointers) and without expecting DS=0001h
Some adapter drivers (e.g. the NDIS2 token ring driver NDTOKBAN for
VINES 5.53) ignore the value in CX and use the value from DX instead
SeeAlso: AX=0001h/SF=0001h,AX=000Fh/SF=0001h
Format of VINES Socket request block:
Offset Size Description (Table 3115)
00h WORD subfunction number (01h-16h)
02h WORD magic number (FEFEh)
04h WORD buffer for return code (set to 0 before calling)
06h WORD reserved (will be set to client DS)
08h WORD reserved (obviously not used; set to 0 before calling)
0Ah DWORD far pointer to parameter block
0Eh WORD StreetTalk handle
SeeAlso: #2995 at INT 61/AX=0001h
--------N-61000FSF0001-----------------------
INT 61 - Banyan VINES - OPEN SOCKET
AX = 000Fh subfn 0001h
CX:BX -> request block (see #3116)
DX = application's data segment (should be = CX)
ES = DS
Return: AX = status
0000h successful
00A5h resource not available
Desc: Opens a socket and returns a socket handle
Format of request block:
Offset Size Description (Table 3116)
00h WORD 0001h
02h WORD magic number (FEFEh)
04h WORD buffer for return code (set to 0 before calling)
06h WORD reserved (will be set to client DS)
08h WORD reserved (obviously not used; set to 0 before calling)
0Ah DWORD far pointer to parameter block (see #3117)
0Eh WORD process handle (see AX=000Fh/SF=0008h)
Format of parameter block:
Offset Size Description (Table 3117)
00h WORD reserved
02h WORD address family (0003h = VINES)
04h WORD socket type (0001h = IPC, 0002h = SPP)
06h WORD protocol number (FFFFh = default protocol)
08h WORD reserved
0Ah WORD local port number (0 = transient, 1..1FFh = well-known port)
0Ch DWORD far pointer to socket handle buffer (2 bytes)
10h DWORD far pointer to IPC port buffer (16 bytes)
SeeAlso: #3116
--------N-61000FSF0002-----------------------
INT 61 - Banyan VINES - SEND MESSAGE ON A SOCKET
AX = 000Fh subfn 0002h
CX:BX -> request block (see #3118)
DX = application's data segment (should be = CX)
ES = DS
Return: AX = status
0000h successful
00A5h resource not available
Desc: send data to a socket identified by its socket handle
Format of request block:
Offset Size Description (Table 3118)
00h WORD 0002h
02h WORD magic number (FEFEh)
04h WORD buffer for return code (set to 0 before calling)
06h WORD reserved (will be set to client DS)
08h WORD reserved (obviously not used; set to 0 before calling)
0Ah DWORD far pointer to parameter block (see #3119)
0Eh WORD process handle (see AX=000Fh/SF=0008h)
Format of parameter block:
Offset Size Description (Table 3119)
00h WORD buffer for estimated communication cost in 220 msec ticks
02h WORD buffer for return code (set to 0 before calling)
04h WORD socket handle
06h DWORD far pointer to IPC/SPP message buffer
0Ah WORD length of IPC/SPP message buffer
0Ch WORD option flags
bit 0: asynchronous communication
bit 1: reliable message
bit 3: end of message
bit 4: vectored I/O
0Eh 16 BYTEs socket address (IPC port of source)
1Eh WORD not used (set to 0 before calling)
20h WORD SPP connection id (0 for IPC messages)
22h WORD request type (1 = data, 2 = connect SPP, 3 = disconnect SPP)
SeeAlso: #3118
--------N-61000FSF0004-----------------------
INT 61 - Banyan VINES - CLOSE SOCKET
AX = 000Fh subfn 0004h
CX:BX -> request block (see #3120)
DX = application's data segment (should be = CX)
ES = DS
Return: AX = status
0000h successful
00A5h resource not available
Desc: Closes a socket identified by its socket handle
Format of request block:
Offset Size Description (Table 3120)
00h WORD 0004h
02h WORD magic number (FEFEh)
04h WORD buffer for return code (set to 0 before calling)
06h WORD reserved (will be set to client DS)
08h WORD reserved (obviously not used; set to 0 before calling)
0Ah DWORD far pointer to socket handle (2 bytes)
0Eh WORD process handle (see AX=000Fh/SF=0008h)
--------N-61000FSF0008-----------------------
INT 61 - Banyan VINES - GET PROCESS HANDLE
AX = 000Fh subfn 0008h
CX:BX -> request block (see #3121)
DX = application's data segment (should be = CX)
ES = DS
Return: AX = status
0000h successful
00A5h resource not available
Desc: Returns a process handle to be used in other request blocks
Notes: This function is a prerequisite to all AX=000Fh subfunctions which
expect a process handle in the request block
Although subsequent calls from the same application return different
process handles, there seem to be no restrictions on how many times
an application may call this function (in fact, the code in the VINES
toolkit library always calls it before issueing other AX=000Fh calls)
Format of request block:
Offset Size Description (Table 3121)
00h WORD 0008h
02h WORD magic number (FEFEh)
04h WORD buffer for return code (set to 0 before calling)
06h WORD reserved
08h WORD reserved (obviously not used; set to 0 before calling)
0Ah DWORD process type (1 = transient, 2 = resident; destroyed on exit)
0Eh WORD buffer for process handle
--------N-610010-----------------------------
INT 61 - Banyan VINES - INTERFACE TO NBNS
AX = 0010h
other parameters, if any, unknown
--------N-6101-------------------------------
INT 61 - Banyan VINES - CHECK SERVICE
AH = 01h
AL = service ID (see #3122)
Return: AX = status
0000h installed
0001h not installed
0002h invalid ID
0003h invalid function
Note: Only the offset part of the service pointer is checked for a nonzero
value
SeeAlso: AH=00h,AH=02h"VINES",AH=03h"VINES"
(Table 3122)
Values for VINES service ID:
01h communications
02h primary 3270 emulation
03h async terminal emulation
04h file deflection
05h print service control
06h get address of something
07h StreetTalk access service
08h environment
09h NETBIOS client service
0Ah secondary 3270 emulation
0Bh semaphore service
0Ch 3270 emulation active status
0Dh T3270 keyboard interrupt simulator
0Eh enhanced 3270 service
0Fh comm Windows entry point
10h interface to NBNS
--------N-6101--BX0000-----------------------
INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
AH = 01h
BX = 0000h
DH = tag number
DL = device number
DS:SI -> buffer to send to kernel
ES:DI -> integer containing size of buffer
Return: CF clear if successful
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Range: INT 20 to INT E0, selected by configuration
Notes: there are a large number of tags available; the items returned
all refer to local kernel configuration, and are not needed in
normal use.
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=02h"PC/TCP"
--------N-6102-------------------------------
INT 61 - Banyan VINES - GET REVISION NUMBER
AH = 02h
DS:DX -> 2-byte buffer for result
Return: AX = 0000h installed
DS:DX buffer contains revision number as
10000d * major_ver + 100d * minor_ver + patch_revision
SeeAlso: AH=01h"VINES",AH=04h"VINES",AH=07h"VINES"
--------N-6102--BX0000-----------------------
INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
AH = 02h
BX = 0000h
DH = tag number
DL = device number
DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
ES:DI -> integer containing size of buffer
Return: CF clear if successful
Data loaded into specified buffer, and size value altered
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Range: INT 20 to INT E0, selected by configuration
Notes: there are a large number of tags available; the items returned
all refer to local kernel configuration, and are not needed in
normal use.
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
--------N-6103-------------------------------
INT 61 - Banyan VINES - INSTALL SERVICE HANDLER
AH = 03h
AL = service ID (see #3122)
DS:DX -> new service handler
Return: AX = 0000h successful
SeeAlso: AH=00h,AH=01h"VINES",AH=02h"VINES",AH=05h"VINES"
--------N-6104-------------------------------
INT 61 - Banyan VINES - CHECK VINES REVISION NUMBER IN RANGE
AH = 04h
DS:DX -> 2-byte buffer containing the VINES revision number
DS:DX buffer contains revision number as
10000d * major_ver + 100d * minor_ver + patch_revision
Return: AX = status
0000h valid version
0004h out of range
Note: For Revision 5.53, the valid range is 4.10(0) to 6.19(99)
SeeAlso: AH=02h"VINES",AH=07h"VINES",AH=08h"VINES"
--------N-6105-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
AH = 05h
BX = network descriptor
Return: CF clear if successful
DX:AX = Internet address of ND
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Range: INT 20 to INT E0, selected by configuration
Notes: the installation check consists of testing for the signature "TCPTSR"
three bytes beyond the start of the interrupt handler
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
SeeAlso: INT 63/AH=25h"BW-TCP"
--------N-6105-------------------------------
INT 61 - Banyan VINES - READ PCCONFIG BYTES
AH = 05h
CX = number of bytes to copy
(max. 0175h for VINES 4.00, max. 017Fh for VINES 4.10+)
SI = offset of area to be copied (see #3123,#3124)
Return: AX = status
0000h successful
0004h out of range
Notes: The PCCONFIG area is located in the code segment of the BANV handler
To find out which PCCONFIG structure applies, call this function first
with CX=0006h to get the VINES revision number
SeeAlso: AH=02h"VINES",AH=04h"VINES",AH=06h"VINES",AH=0Bh"VINES"
Format of PCCONFIG area (VINES 4.00):
Offset Size Description (Table 3123)
00h 6 BYTEs VINES revision (ASCII, zero-padded)
06h 2 BYTEs NEWREV-number (ASCII, two digits)
08h WORD hardware interrupt level
0Ah WORD DMA channel
0Ch WORD I/O address
0Eh DWORD adapter ROM address (linear)
12h DWORD adapter RAM address (linear)
16h WORD BANV interrupt
18h 32 BYTEs default login group #1
38h 32 BYTEs default login group #2
58h 32 BYTEs default login group #3
78h WORD semaphore locking support flag
7Ah WORD extended StreetTalk flag
7Ch WORD maximum number of file volumes
7Eh WORD NetBIOS flag
80h 60 BYTEs default network adapter
BCh 60 BYTEs default communications driver
F8h WORD maximum number of SPP connections
FAh WORD maximum number of open sockets
FCh WORD communications buffer size (10..60 KB)
FEh 20 BYTEs location directory on drive Z:
112h 33 BYTEs auxiliary configuration area #1 (see #3125)
133h 33 BYTEs auxiliary configuration area #2
154h 33 BYTEs auxiliary configuration area #3
SeeAlso: #3124
Format of PCCONFIG area (VINES 4.10+):
Offset Size Description (Table 3124)
00h 6 BYTEs VINES revision (ASCII, zero-padded)
06h 2 BYTEs NEWREV-number (ASCII, two digits)
08h WORD hardware interrupt level
0Ah WORD DMA channel
0Ch WORD I/O address
0Eh DWORD adapter ROM address (linear)
12h DWORD adapter RAM address (linear)
16h WORD BANV interrupt
18h 32 BYTEs default login group #1
38h 32 BYTEs default login group #2
58h 32 BYTEs default login group #3
78h WORD semaphore locking support flag
7Ah WORD extended StreetTalk flag
7Ch WORD named pipes support flag
7Eh WORD maximum number of file volumes
80h WORD NetBIOS flag
82h 60 BYTEs default network adapter
BEh 60 BYTEs default communications driver
FAh WORD maximum number of SPP connections
FCh WORD maximum number of open sockets
FEh WORD communications buffer size (10..60 KB)
100h WORD number of mailslots
102h WORD maximum number of open files
104h WORD maximum number of NetBIOS sessions
106h WORD maximum number of NetBIOS commands
108h 20 BYTEs location directory on drive Z:
11Ch 33 BYTEs auxiliary configuration area #1 (see #3125)
13Dh 33 BYTEs auxiliary configuration area #2
15Eh 33 BYTEs auxiliary configuration area #3
Format of auxiliary configuration area:
Offset Size Description (Table 3125)
00h 16 BYTEs item name (no zero terminator if length = 16)
10h BYTE item value type (1=text, else numeric)
11h 16 BYTEs item value (string if type 1, else DWORD)
SeeAlso: #3123,#3124
--------N-6106-------------------------------
INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
AH = 06h
BX = network descriptor (must be allocated and open)
DS:SI -> 38-byte buffer for interface statistics (see #3126)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (see #2990)
Desc: returns the statistics relevant to the particular network interface
used by the specified network descriptor
Range: INT 20 to INT E0, selected by configuration
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
Format of PC/TCP interface statistics:
Offset Size Description (Table 3126)
00h WORD interface class (e.g. 802.3)
02h WORD type (manufacturer) of interface
04h WORD interface number
06h DWORD (big-endian) IP address of interface
0Ah DWORD subnet mask
0Eh WORD 0001h if interface is up
10h DWORD total packets received
14h DWORD total packets sent
18h DWORD receive errors
1Ch DWORD send errors
20h WORD length of local net address (e.g. 0006h for Ethernet)
22h DWORD pointer to local net address
--------N-6106-------------------------------
INT 61 - Banyan VINES - GET PCCONFIG BASE ADDRESS
AH = 06h
DS:DX -> 4-byte buffer for far pointer to PCCONFIG area
Return: AX = 0000h successful
Note: The PCCONFIG area is located in the code segment of the BANV handler
SeeAlso: AH=05h"VINES",AH=0Bh"VINES"
--------N-6107-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
AH = 07h
BX = local network descriptor
Return: CF clear if successful
AX = global network descriptor
CF set on error
AX = error code (see #2990)
Notes: the new network descriptor can be accessed from all processes and is
independent of DOS
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
SeeAlso: INT 61/AH=29h
--------N-6107-------------------------------
INT 61 - Banyan VINES - GET VINES REVISION NUMBER (LONG)
AH = 07h
DS:DX -> 4-byte buffer for result
Return: AX = 0000h successful
DS:DX buffer contains revision number as
10000d * major_ver + 100d * minor_ver + patch_revision
SeeAlso: AH=02h"VINES",AH=04h"VINES",AH=08h"VINES"
--------b-6107-------------------------------
INT 61 - Atari Portfolio - FORMAT CREDIT CARD MEMORY
AH = 07h
AL = drive number (00h = A:,01h = B:)
Return: CF clear if successful
CF set on error
AH = error code (see #0166 at INT 13/AH=01h)
Note: do not use this function to format the internal disk (drive number 02h)
SeeAlso: AH=00h"Portfolio",AH=08h"Portfolio",AH=09h"Portfolio"
--------N-6108-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
AH = 08h
BX = network descriptor
Return: CF clear if successful
AX = 0000h (BWPCTCP shim)
CF set on error
AX = error code (see #2990)
Range: INT 20 to INT E0, selected by configuration
Note: the descriptor will be closed and resources released. If a stream
descriptor, the protocol (FIN etc) is completed unless the
non-blocking option has been set.
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
SeeAlso: INT 63/AH=0Eh"BW-TCP"
--------N-6108-------------------------------
INT 61 - Banyan VINES - CHECK VINES REVISION NUMBER IN RANGE (LONG)
AH = 08h
DS:DX -> 4-byte buffer containing the VINES revision number
DS:DX buffer contains revision number as
10000d * major_ver + 100d * minor_ver + patch_revision
Return: AX = status
0000h valid version
0004h out of range
Note: For Revision 5.53, the valid range is 4.10(0) to 6.19(99)
SeeAlso: AH=04h"VINES",AH=07h"VINES"
--------b-6108-------------------------------
INT 61 - Atari Portfolio - GET SIZE OF INTERNAL DISK
AH = 08h
Return: AX = segment address of RAMdisk
BX = size in KB
SeeAlso: AH=00h"Portfolio",AH=07h"Portfolio",AH=09h"Portfolio"
--------N-6109-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
AH = 09h
Return: CF clear
Range: INT 20 to INT E0, selected by configuration
Notes: this call performs function 08h on every non-global network descriptor.
Global descriptors must be released individually.
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
SeeAlso: INT 63/AH=0Eh"BW-TCP"
--------N-6109-------------------------------
INT 61 - Banyan VINES - GET VALUE OF AN OS/2 BACKEND VARIABLE
AH = 09h
other parameters, if any, unknown
SeeAlso: AH=0Ah"VINES"
--------b-6109-------------------------------
INT 61 - Atari Portfolio - FORMAT INTERNAL DISK
AH = 09h
BX = desired size of disk in KB
Return: CF clear if successful
CF set on error
BX = maximum possible size in KB
Desc: resize and erase the internal RAMdisk, then reboot the system
SeeAlso: AH=00h"Portfolio",AH=07h"Portfolio",AH=08h"Portfolio"
SeeAlso: AH=0Bh"Portfolio"
--------N-610A-------------------------------
INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
AH = 0Ah
???
Return: ???
Notes: this function is described as "unused" in the v2.05 and v2.2
documentation
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: AH=0Bh
--------N-610A-------------------------------
INT 61 - Banyan VINES - SET VALUE OF AN OS/2 BACKEND VARIABLE
AH = 0Ah
other parameters, if any, unknown
SeeAlso: AH=09h"VINES"
--------N-610B-------------------------------
INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
AH = 0Bh
???
Return: ???
Range: INT 20 to INT E0, selected by configuration
Notes: this function is described as "unused" in the v2.05 and v2.2
documentation
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: AH=0Ah
--------N-610B-------------------------------
INT 61 - Banyan VINES - SET PCCONFIG IN BACKEND
AH = 0Bh
other parameters, if any, unknown
SeeAlso: AH=05h"VINES",AH=06h"VINES"
--------b-610B-------------------------------
INT 61 - Atari Portfolio - DETERMINE CCM VALIDITY
AH = 0Bh
AL = drive number (00h = A:,01h = B:)
Return: CF clear if successful (card present and correct)
CF set on error
AH = error code (see #0166 at INT 13/AH=01h)
SeeAlso: AH=00h"Portfolio",AH=07h"Portfolio",AH=0Dh"Portfolio"
--------N-610C-------------------------------
INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
AH = 0Ch
BX = network descriptor or one of the following:
FFFCh for kernel ICMP statistics (see #3130)
FFFDh for kernel UDP statistics (see #3129)
FFFEh for kernel IP statistics (see #3128)
FFFFh for kernel TCP statistics (see #3127)
DS:DX -> 64-byte buffer
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (see #2990)
Notes: the fields filled in for a network descriptor depend on the protocol
family used by that descriptor's connection
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
Format of PC/TCP kernel TCP statistics:
Offset Size Description (Table 3127)
00h 16 BYTEs unused
10h DWORD bytes sent
14h DWORD bytes received
18h 8 BYTEs unused
20h DWORD packets sent
24h DWORD packets received
28h DWORD bad checksums
2Ch DWORD count of window ignored by remote
30h DWORD timeouts
34h DWORD resets
38h DWORD duplicate packets
3Ch DWORD retransmits
SeeAlso: #3128,#3129,#3130
Format of PC/TCP kernel IP statistics:
Offset Size Description (Table 3128)
00h 8 BYTEs unused
08h DWORD invalid IP header length errors
0Ch DWORD protocol errors (unwanted packets)
10h DWORD duplicate fragments received
14h DWORD bad fragments received
18h DWORD security errors
1Ch DWORD count of bad IP addresses received
20h DWORD packets sent
24h DWORD packets received
28h DWORD bad checksums received
2Ch DWORD total IP protocol errors
30h DWORD fragmentation errors
34h DWORD IP packets discarded + bad security + bad fragments
38h DWORD fragments received
3Ch 4 BYTEs unused
SeeAlso: #3127,#3129,#3130
Format of PC/TCP kernel UDP statistics:
Offset Size Description (Table 3129)
00h 28 BYTEs unused
1Ch DWORD packets dropped for lack of buffers
20h DWORD packets sent
24h DWORD packets received
28h DWORD bad checksums
2Ch DWORD port not listening errors
30h 4 BYTEs unused
34h DWORD truncated receives
38h 8 BYTEs unused
SeeAlso: #3127,#3128,#3130
Format of PC/TCP kernel ICMP statistics:
Offset Size Description (Table 3130)
00h DWORD "TimeEx" sent
04h DWORD "TimeEx" received
08h DWORD "ParamProb" sent
0Ch DWORD "ParamProb" received
10h DWORD redirects received
14h DWORD source quenches received
18h DWORD ICMP Echo Requests ("ping") sent
1Ch DWORD ICMP Echo Requests received
20h DWORD packets sent
24h DWORD packets received
28h DWORD bad packets received
2Ch DWORD "DestUn" received
30h DWORD packet send errors
34h DWORD "DestUn" sent
38h DWORD ICMP Echo replies received
3Ch DWORD ICMP Echo replies sent
SeeAlso: #3127,#3128,#3129
--------N-610D-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
AH = 0Dh
BX = possible network descriptor
Return: CF clear if valid
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
SeeAlso: INT 61/AH=22h
--------b-610D-------------------------------
INT 61 - Atari Portfolio - GET SCREEN SIZE
AH = 0Dh
Return: AX = physical screen size (AH=rows, AL=columns)
DX = logical screen size (DH=rows, DL=columns)
SeeAlso: AH=00h"Portfolio",AH=0Bh"Portfolio",AH=0Eh"Portfolio"
--------N-610E-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
AH = 0Eh
BX = maximum value of network descriptor for which to return info
DS:DX -> 32-bit (max) array of bit flags for read readiness
ES:DI -> 32-bit (max) array of bit flags for write readiness
Return: CF clear
Range: INT 20 to INT E0, selected by configuration
Notes: bits in the DS:DX buffer are set if the corresponding network
descriptor may be read without blocking; bits in the ES:DI buffer
are set if the corresponding network descriptor may be written
without blocking. This implies that the network descriptor has
opened correctly and the protocol initialized.
the installation check consists of testing for the signature "TCPTSR"
three bytes beyond the start of the interrupt handler
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
--------b-610E-------------------------------
INT 61 - Atari Portfolio - GET/SET SCREEN MODE
AH = 0Eh
AL = function
00h get mode
01h set mode
DL = new mode (see #3131)
Return: DL = current/old mode
Note: if changing the mode places the cursor position or virtual screen
origin outside the displayed area, the screen origin will be reset
to (0,0), the screen cleared, and the cursor position set to (0,0)
SeeAlso: AH=00h"Portfolio",AH=0Dh"Portfolio",AH=0Fh"Portfolio",INT 10/AH=00h
Bitfields for Atari Portfolio screen mode:
Bit(s) Description (Table 3131)
0 40x8 mode instead of 80x25
1 tracked mode
7 graphics
Note: the above bits are mutually exclusive
--------N-610F-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
AH = 0Fh
Return: CF clear
AX = version (AH = major, AL = minor)
BX = patch level
Notes: patch levels are no longer used starting with version 2.10; instead,
the minor version level is incremented.
Beame&Whiteside's BWPCTCP v3.0a shim reports version 2.05, but does not
set BX
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
--------b-610F-------------------------------
INT 61 - Atari Portfolio - GET/SET CURSOR MODE
AH = 0Fh
AL = function
00h get mode
01h set mode
BL = new cursor mode
00h cursor off
01h underline
02h block
02h force mode (set size to reflect NumLock state)
Return: BL = current/old cursor mode
SeeAlso: AH=00h"Portfolio",AH=0Eh"Portfolio",AH=10h"Portfolio",INT 10/AH=01h
--------N-6110-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
AH = 10h
Return: CF clear if successful
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Range: INT 20 to INT E0, selected by configuration
Note: this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
--------b-6110-------------------------------
INT 61 - Atari Portfolio - GET/SET VIRTUAL SCREEN POSITION
AH = 10h
AL = function
00h get position
Return: DH,DL = current row,column
01h set position
DH = row
DL = column
Desc: get or specify the upper-left corner of the 40x8 window into the
logical screen
SeeAlso: AH=00h"Portfolio",AH=0Eh"Portfolio",AH=0Fh"Portfolio"
SeeAlso: AH=11h"Portfolio"
--------N-6111-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
AH = 11h
Return: CF clear
AX = previous state
0000h async calls were already disabled
else async calls were enabled
SeeAlso: INT 61"FTP Software",INT 61/AH=12h
--------b-6111-------------------------------
INT 61 - Atari Portfolio - MOVE VIRTUAL SCREEN ORIGIN
AH = 11h
AL = number of lines to move
DL = direction of move (1=up, 2=down, 3=left, 4=right)
SeeAlso: AH=00h"Portfolio",AH=10h"Portfolio",AH=12h"Portfolio"
--------N-6112-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
AH = 12h
Return: CF clear
AX = previous state
0000h async calls were disabled
else async calls were already enabled
SeeAlso: INT 61"FTP Software",INT 61/AH=11h
--------b-6112-------------------------------
INT 61 - Atari Portfolio - SCREEN REFRESH
AH = 12h
Return: nothing
Desc: copy contents of video RAM to LCD controller
SeeAlso: AH=10h"Portfolio",AH=11h"Portfolio",AH=15h"Portfolio"
--------N-6113-------------------------------
INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
AH = 13h
BX = network descriptor (FFFFh for automatic net_getdesc)
DX = protocol (see #3132)
DS:SI -> buffer for "addr" structure (see #3133)
Return: CF clear if successful
AX = network descriptor used or allocated
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Notes: resets the connection with AH=19h in various cases
will wait for protocol on stream connections unless non-blocking was
set with AH=20h
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
SeeAlso: INT 63/AH=14h"BW-TCP"
(Table 3132)
Values for PC/TCP protocol:
0001h raw net (undocumented)
0002h raw IP
0003h datagram (UDP)
0004h stream (TCP)
0005h raw ICMP
Format of structure "addr":
Offset Size Description (Table 3133)
00h DWORD Internet address (network order)
04h WORD remote socket number (network order)
06h WORD local socket number (network order) 0000h means "you choose"
08h BYTE protocol (see #3132)
--------N-6114-------------------------------
INT 61 Ou - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
AH = 14h
BX = network descriptor
Return: CF set
AX = 0018h (see #2990 at INT 61"FTP Software")
Notes: displays error message "Illegal system call! Please upgrade your
PCserver software" to standard output
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
--------N-6115-------------------------------
INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
AH = 15h
???
Return: ???
Notes: this function is described as "unused" in the v2.2 documentation
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
--------b-6115-------------------------------
INT 61 - Atari Portfolio - SOUND GENERATION
AH = 15h
AL = function
00h key click
01h beep
02h alarm
Return: nothing
SeeAlso: AH=00h"Portfolio",AH=12h"Portfolio",AH=16h"Portfolio"
--------N-6116-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
AH = 16h
BX = network descriptor
DS:DX -> 9-byte buffer for "addr" structure (see #3133)
Return: CF clear if successful
buffer filled
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Range: INT 20 to INT E0, selected by configuration
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
--------b-6116-------------------------------
INT 61 - Atari Portfolio - MELODY TONE GENERATOR
AH = 16h
CX = length of tones in 1/100 sec
DL = tone code (see #3134)
SeeAlso: AH=15h"Portfolio",AH=17h"Portfolio"
(Table 3134)
Values for Atari Portfolio tone code:
04h A6#1864.7 Hz
05h B6 1975.5 Hz
06h D7 2348.3 Hz
07h D7# 2489.0 Hz
0Eh F6# 1480.0 Hz
25h C7 2093.0 Hz
29h D6 1174.7 Hz
2Ch G6# 1661.2 Hz
2Fh C7# 2217.5 Hz
30h D5# 622.3 Hz
31h E5 659.3 Hz
32h F5 698.5 Hz
33h F5# 740.0 Hz
34h G5 784.0 Hz
35h G5# 830.6 Hz
36h A5 880.6 Hz
37h A5# 932.3 Hz
38h B5 987.8 Hz
39h C6 1046.5 Hz
3Ah C6# 1108.7 Hz
3Bh D6# 1244.5 Hz
3Ch E6 1318.5 Hz
3Dh F6 1396.9 Hz
3Eh G6 1568.9 Hz
3Fh A6 1760.0 Hz
--------N-6117-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
AH = 17h
Return: CF clear if successful
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Notes: this routine is deprecated in v2.1+ and will eventually be withdrawn;
in v2.1+, this function calls AH=01h which should be used instead
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
--------b-6117-------------------------------
INT 61 - Atari Portfolio - DIAL NUMBER
AH = 17h
DS:SI -> ASCII string containing number to dial
CX = length of string
Note: valid characters for string are "0123456789ABCD*#"
SeeAlso: AH=00h"Portfolio",AH=15h"Portfolio",AH=16h"Portfolio"
SeeAlso: AH=18h"Portfolio"
--------N-6118-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
AH = 18h
BX = network descriptor
Return: CF clear if successful
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: a TCP "FIN" command is sent and no further data may be transmitted,
although the connection remains open
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
SeeAlso: INT 63/AH=0Eh"BW-TCP"
--------b-6118-------------------------------
INT 61 - Atari Portfolio - MUTE STATES
AH = 18h
AL = function
00h get mute state
01h set mute state
02h get key click state
03h set key click state
04h get beep state
05h set beep state
06h get alarm state
07h set alarm state
08h get DTMF duration
09h set DTMF duration
DL = new state ("set" functions) (00h off [muted], 01h on)
Return: DL = current state ("get" functions) (00h off [muted], 01h on)
SeeAlso: AH=15h"Portfolio",AH=16h"Portfolio",AH=17h"Portfolio"
SeeAlso: AH=19h"Portfolio"
--------N-6119-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
AH = 19h
BX = network descriptor
Return: CF clear if successful
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Desc: immediately destroys the specified connection
Note: send a TCP "RST" command if a stream connection is open
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
--------b-6119-------------------------------
INT 61 - Atari Portfolio - GET SERIAL PORT PARAMETERS
AH = 19h
DX = serial port number
Return: AH = status
00h successful
AL = composite parameters (see #0226 at INT 14/AH=00h"SERIAL")
other error
SeeAlso: AH=00h"Portfolio",AH=15h"Portfolio",AH=1Ah"Portfolio"
--------N-611A-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
AH = 1Ah
BX = network descriptor
CX = number of bytes to transmit (0000h allowed)
DX = send options (see #3135)
DS:SI -> data to be written
Return: CF clear if successful
AX = number of bytes actually written
DX = ???
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Range: INT 20h to INT E0h, selected by configuration
Notes: the installation check consists of testing for the signature "TCPTSR"
three bytes beyond the start of the interrupt handler
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
SeeAlso: INT 63/AH=19h"BW-TCP",INT 63/AH=1Bh"BW-TCP"
Bitfields for PC/TCP send options:
Bit(s) Description (Table 3135)
0 signal "URG"ent data
3 attempt rerouting on non-stream calls if first attempt fails
4 send data with PUSH flag (no override of Nagle)
5 fail rather than truncating datagram
6 fail rather than blocking
7 broadcast packet
--------b-611A-------------------------------
INT 61 - Atari Portfolio - GET PERIPHERAL ID BYTE
AH = 1Ah
Return: AH = peripheral ID byte
AL = 00h if no peripheral installed
Desc: get the ID code for the current terminating peripheral
SeeAlso: AH=00h"Portfolio",AH=18h"Portfolio",AH=1Bh"Portfolio"
--------N-611B-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
AH = 1Bh
BX = network descriptor
CX = maximum number of bytes to read
DX = receive options (see #3136)
DS:SI -> buffer for data
ES:DI -> "addr" structure (see #3133) for remote from which to read
0000h:0000h for any
Return: CF clear if successful
AX = number of bytes actually read
DX = ???
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
Bitfields for PC/TCP receive options:
Bit(s) Description (Table 3136)
1 do not remove data from queue, just copy it
2 do not copy data, just remove it from queue
5 fail if datagram would be truncated
6 do not block, return error if no data available
Note: special case for UDP: if both 1 and 2 set, return number of datagrams
--------b-611B-------------------------------
INT 61 - Atari Portfolio - SET PERIPHERAL ID BYTE
AH = 1Bh
AL = which peripheral to set
00h serial
01h parallel
DL = peripheral ID
Return: nothing
Desc: specify that a peripheral is compatible with the BIOS serial or
parallel services
SeeAlso: AH=1Ah"Portfolio",AH=1Ch"Portfolio"
--------N-611C-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
AH = 1Ch
BX = network descriptor
CX = number of bytes to transmit (0000h allowed)
DX = send options (see #3135)
DS:SI -> data to be written
ES:DI -> "addr" structure (see #3133)
Return: CF clear if successful
AX = number of bytes actually written
DX = ???
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: this function differs from AH=1Ah in that the address and socket
numbers can be overridden
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
SeeAlso: INT 63/AH=21h"BW-TCP"
--------b-611C-------------------------------
INT 61 - Atari Portfolio - PRESET/GET PERIPHERAL DATA
AH = 1Ch
AL = function
00h preset data values
BL = data value
DX = I/O address
01h get data values
BH = table entry number (04h-09h)
Return: if function 01h
BL = data value
DX = I/O address
Desc: preset peripheral I/O data in a table mapping I/O addresses to data
values; function 00h additionally outputs the data value to the
I/O port
SeeAlso: AH=1Ah"Portfolio",AH=1Bh"Portfolio",AH=1Eh"Portfolio"
--------N-611D-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
AH = 1Dh
BX = network descriptor
CX = maximum number of bytes to read
DX = receive options (see #3135)
DS:SI -> buffer for received data
ES:DI -> 9-byte buffer containing "addr" structure (see #3133)
Return: CF clear if successful
AX = number of bytes read
DX = ???
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Notes: this function can read from any host or a designated host depending
on settings in the "addr" structure
only for use with datagram or Raw descriptors
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
--------N-611E-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
AH = 1Eh
BX = network descriptor
Return: CF clear if successful
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Range: INT 20 to INT E0, selected by configuration
Notes: bufferred data is transmitted immediately, overriding Nagle's algorithm
if necessary
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
--------b-611E-------------------------------
INT 61 - Atari Portfolio - GET/SET CLOCK TICK SPEED
AH = 1Eh
AL = function
00h get speed
01h set speed
BX = clock tick speed
0000h tick every 128 seconds
0001h tick every second
Return: if function 00h
BX = clock tick speed
Note: the faster tick speed also uses more power
SeeAlso: AH=00h"Portfolio",AH=1Ch"Portfolio",AH=1Fh"Portfolio"
--------N-611F-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
AH = 1Fh
BX = network descriptor
CX = event type (see #3137)
DS:SI -> event handler routine (see #3138)
ES:DI = 32-bit hint passed to handler
Return: CF clear if successful
DS:DX -> previous handler
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: ICMP messages do not trigger events on stream connections
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
(Table 3137)
Values for PC/TCP event type:
00h alarm
01h open (successfully opened stream connection)
02h receive (data available)
03h transmit (ACK received on stream connection)
04h transmit flush???
05h foreign close (remote host closed data connection)
06h close (local host closed connection and protocol is complete)
07h error (error code passed to handler as arg)
(Table 3138)
Values PC/TCP user event handler is called with:
BX = network descriptor
CX = event type (see #3137)
DS:DX -> arg
ES:DI = 32-bit hint value
STACK: small stack, possibly the DOS stack
--------b-611F-------------------------------
INT 61 - Atari Portfolio - GET KEY/NMI-INVOKED SCREEN REFRESH
AH = 1Fh
AL = function
00h get state
01h set state
DH = new refresh-on-NMI state
(00h disabled, 01h enabled, bit 7 set = don't change)
DL = new refresh-on-key state
Return: DH,DL = current/old states
SeeAlso: AH=00h"Portfolio",AH=1Eh"Portfolio",AH=20h"Portfolio"
--------N-6120-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
AH = 20h
BX = network descriptor
CX = length of buffer (usually 04h)
DS:DX -> buffer containing option
SI = (ignored by v2.2-)
DI = option to set (see #3139)
Return: CF clear if successful
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: Beame&Whiteside's BWPCTCP shim only supports options 01h and 0Bh; all
others return CF clear
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
(Table 3139)
Values for PC/TCP option to get or set:
01h set non-blocking mode if non-zero
02h timeout of call in milliseconds
03h user-defined 4-byte magic cookie (not used by kernel)
04h TCP window or UDP buffer count (WORD, unsigned)
06h do TCP keep-alives if non-zero
09h (v2.1+) set IP precedence
0Ah (v2.1+) set IP type of service
0Bh use a privileged port if port = 0
0Ch turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
Note: use "C" true or false values for boolean options
--------b-6120-------------------------------
INT 61 - Atari Portfolio - GET/SET INT 09 REVECTORING
AH = 20h
AL = function
00h get INT 09 revectoring state
01h set state
DL = new state (00h disable, 01h enable)
Return: if function 00h
DL = new state (00h disabled, 01h enabled)
Desc: specify whether INT 09 is automatically revectored to the BIOS,
preventing applications from using their own INT 09 handler on the
incompatible keyboard hardware
SeeAlso: AH=1Eh"Portfolio",AH=1Fh"Portfolio",AH=24h"Portfolio"
--------N-6121-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
AH = 21h
BX = network descriptor
CX = length of buffer
DS:DX -> buffer for return values
SI = 0004h (ignored by v2.2-)
DI = option (see #3139)
Return: CF clear if successful
DS:DX -> value (usually 32 bits) returned by selected option
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
--------N-6122-------------------------------
INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
AH = 22h
Return: CF clear if successful
AX = network descriptor
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: the descriptor will be an integer in the range 00h-1Fh, and a DOS call
is made to allocate this as a file descriptor. Hence a number may
not refer to a PC/TCP network descriptor and a DOS file handle
simultaneously.
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
--------N-6123-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
AH = 23h
BX = network descriptor or FFFFh to allocate descriptor
DX = type of service
DS:SI -> "addr" structure (see #3133)
Return: CF clear if successful
AX = network descriptor
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Notes: type of service and "addr" structure are as for AH=13h
any of the address structure can be zero; normally local socket number
is filled in prior to call
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
SeeAlso: INT 63/AH=12h"BW-TCP"
--------N-6124-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
AH = 24h
Return: always successful
Note: performs "net_abort" (AH=19h) on all open non-global descriptors
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
--------b-6124-------------------------------
INT 61 - Atari Portfolio - GET/SET ROM/CCM SPACE STATE
AH = 24h
AL = function
00h get state
01h set state
DL = new ROM state (see #3140)
DH = new CCM state (see #3141)
Return: CF clear if successful
DL = current/old ROM state
DH = current/old CCM state
CF set on error (invalid option or other error)
Desc: control whether memory cards or an extension ROM are visible in the
range 000C0000h to 000DFFFFh
SeeAlso: AH=00h"Portfolio",AH=20h"Portfolio",AH=26h"Portfolio"
(Table 3140)
Values for Atari Portfolio ROM space state:
00h normal application ROM
01h CCM drive A:
02h CCM drive B:
03h expansion ROM
SeeAlso: #3141
(Table 3141)
Values for Atari Portfolio CCM space state:
00h CCM drives disabled
01h CCM drive A: permanently enabled
02h CCM drive B: permanently enabled
SeeAlso: #3140
--------N-6125-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
AH = 25h
DX,BX = IP address in network order
CX = length of buffer for name
DS:SI -> buffer for host name
Return: CF clear if successful
buffer filled with ASCIZ host name
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: this function will use the host table and or DNS to resolve the
address, depending on kernel configuration. Use this call for the
normal gethostbyaddr function.
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
--------N-6126-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
AH = 26h
DX,BX = IP address in network order
CX = length of buffer
DS:SI -> buffer for host name
Return: CF clear if successful
buffer filled with ASCIZ host name
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Notes: normally one would use AH=25h instead of this function
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=27h
--------b-6126-------------------------------
INT 61 - Atari Portfolio - GET/SET POWER CONTROL
AH = 26h
AL = function
00h get state
01h set state
DL = new state
00h normal power-down on low battery
01h no power-down, but display warning
02h no power-down, no warning on low battery
Return: AL = current/old state
SeeAlso: AH=00h"Portfolio",AH=24h"Portfolio",AH=28h"Portfolio"
--------N-6127-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
AH = 27h
DX,BX = IP address in network order
CX = length of buffer
DS:SI -> buffer for host name
Return: CF clear if successful
buffer filled with ASCIZ host name
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: normally one would use AH=25h instead of this function
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
--------N-6128-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
AH = 28h
BX = network descriptor 1
CX = network descriptor 2
Return: CF clear if successful
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: the two descriptors will exchange places; both must be local or both
global
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
--------b-6128-------------------------------
INT 61 - Atari Portfolio - GET/SET TEXT/KEYBOARD LANGUAGE
AH = 28h
AL = function
00h get languages
01h set languages
DH = new text language (set bit 7 to leave unchanged)
DL = new keyboard language (set bit 7 to leave unchanged)
03h get language table pointers
Return: if function 00h or 01h:
DH = current/old text language
DL = current/old keyboard language
if function 03h
ES:CX -> keyboard table (see #3142)
ES:DX -> language table (see #3142)
SeeAlso: AH=24h"Portfolio",AH=26h"Portfolio",AH=2Ch"Portfolio"
Format of Atari Portfolio language table:
Offset Size Description (Table 3142)
00h BYTE number of languages supported
01h N BYTEs supported languages
00h English
01h French
02h German
03h Spanish
04h Italian
05h Swedish
06h Danish
--------N-6129-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
AH = 29h
Return: CF clear if successful
AX = network descriptor
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: use this function rather than AH=22h to avoid a DOS call by the PC/TCP
kernel; the returned descriptor will be >= 40h and cannot be used
with "net_select" (AH=0Eh)
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
SeeAlso: INT 61/AH=22h
--------N-612A-------------------------------
INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
AH = 2Ah
DS:SI -> 26-byte buffer for configuration information (see #3143)
Return: CF clear
AX = 0000h
buffer filled
Notes: size of buffer may vary with kernel version; 26 bytes is the size for
versions 2.05 through 2.2
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
Format of PC/TCP configuration information:
Offset Size Description (Table 3143)
00h BYTE maximum TCP connections available
01h BYTE maximum UDP connections available
02h BYTE maximum IP connections available
03h BYTE maximum Raw Net connections available
04h BYTE number of TCP connections currently in use
05h BYTE number of UDP connections currently in use
06h BYTE number of IP connections currently in use
07h BYTE number of Raw Net connections currently in use
08h WORD number of local network descriptors active
0Ah WORD number of global network descriptors active
0Ch BYTE maximum header size on network
0Dh BYTE maximum trailer size on network
0Eh WORD size of large packet buffer
10h WORD number of network interfaces attached
12h DWORD milliseconds since kernel started
16h DWORD IP broadcast address
--------N-612B-------------------------------
INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
AH = 2Bh
BX = network descriptor
CX,DX = time before alarm in milliseconds
DS:SI -> handler which will receive call (see #3138 at INT 61/AH=1Fh)
ES:DI = 32-bit cookie passed to handler
Return: CF clear if successful
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Notes: this function will cause a NET_AS_ALARM to be generated; it is intended
for TSRs, etc. to regain control periodically
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
--------b-612C-------------------------------
INT 61 - Atari Portfolio - GET VERSION
AH = 2Ch
Return: DS:BX -> BIOS version string ('$'-terminated)
SeeAlso: AH=28h"Portfolio",AH=2Dh"Portfolio"
--------b-612D-------------------------------
INT 61 - Atari Portfolio - TURN SYSTEM OFF
AH = 2Dh
Return: nothing
SeeAlso: AH=00h"Portfolio",AH=2Ch"Portfolio",AH=2Eh"Portfolio"
--------b-612E-------------------------------
INT 61 - Atari Portfolio - ENABLE/DISABLE SYSTEM STATUS LINE
AH = 2Eh
AL = new state
00h disabled
01h enabled
DH,DL = row,column at which to display
Return: nothing
SeeAlso: AH=00h"Portfolio",AH=2Dh"Portfolio",AH=30h"Portfolio"
--------N-6130-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
AH = 30h
BX,DX = IP address of host
CX = length of data to send
Return: CF clear if successful (i.e. reply received)
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP"
--------b-6130-------------------------------
INT 61 - Atari Portfolio - FILE TRANSFER SERVICES
AH = 30h
AL = function
00h transmit block
CX = number of bytes to send
01h receive block
CX = buffer size
02h open ports
03h close ports
04h wait 500ms
DS:DX -> start of data buffer
Return: DL = status
00h successful
01h buffer too small
02h transmission timeout
03h checksum failure
04h invalid subfunction
05h peripheral not installed
if function 01h:
CX = number of bytes received
SeeAlso: AH=00h"Portfolio",AH=2Eh"Portfolio"
--------N-61---------------------------------
INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
AH = function
31h "net_add_route"
32h "net_del_route"
33h "net_dump_routes"
Notes: these functions are described as "unused" in the v2.2 documentation
router configuration can be altered using INT 61/AH=01h
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
--------N-6132-------------------------------
INT 61 U - PC/TCP kernel v2.3 - GET ???
AH = 32h
Return: AX = ???
Note: this function is fully re-entrant, and may be called even when another
PC/TCP kernel call is already in progress
--------N-6134-------------------------------
INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
AH = 34h
???
Return: ???
Notes: this function is described as "reserved" in the v2.2 documentation
this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
--------N-6150-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
AH = 50h
DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
Return: CF clear if successful
DX:AX -> IP address
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Range: INT 20 to INT E0, selected by configuration
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
--------N-6151-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
AH = 51h
CX = size of destination buffer
DS:DX -> ASCIZ host name (max 127 chars)
ES:DI -> destination buffer or 0000h:0000h
Return: CF clear if successful
DX:AX -> IP address of host
destination buffer filled with canonical host name
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: this function calls DOS, and can fail if the DOS call fails
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
--------N-6152-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
AH = 52h
CX = size of destination buffer
DS:DX -> ASCIZ host name (max 127 chars)
ES:DI -> destination buffer or 0000h:0000h
Return: CF clear if successful
DX:AX -> IP address of host
destination buffer filled with canonical host name
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: this function will poll all configured domain name servers if necessary
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
--------N-6153-------------------------------
INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
AH = 53h
DS:DX -> ASCIZ name to be resolved (max 127 chars)
Return: CF clear if successful
DX:AX -> IP address of host
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Range: INT 20 to INT E0, selected by configuration
Note: this function is not supported by v2.10+
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
--------N-6154-------------------------------
INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
AH = 54h
CX = size of destination buffer
DS:DX -> ASCIZ host name (max 127 chars)
ES:DI -> destination buffer or 0000h:0000h
Return: CF clear if successful
DX:AX -> IP address of host
destination buffer filled with canonical host name
CF set on error
AX = error code (see #2990 at INT 61"FTP Software")
Note: this function uses all configured methods in turn to resolve the
name (numerical, then host table, then DNS, then IEN116)
BUG: the SLIP kernel for v2.05 bounds-checks the wrong register, so values
greater than 54h in AH may crash the system. Other kernels may have
this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
SeeAlso: INT 61"FTP Software",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
SeeAlso: INT 61/AH=52h,INT 61/AH=53h
--------N-6155-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 55h
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-6156-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 56h
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-6157-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 57h
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-6158-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 58h
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-6159-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 59h
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-615A-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 5Ah
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-615B-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 5Bh
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-615C-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 5Ch
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-615D-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 5Dh
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-615E-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 5Eh
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------N-615F-------------------------------
INT 61 U - PC/TCP kernel v2.3 - ???
AH = 5Fh
???
Return: ???
SeeAlso: INT 61"FTP Software"
--------*-62---------------------------------
INT 62 - reserved for user interrupt
--------d-62---------------------------------
INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
Notes: this vector stores the third four bytes of the parameter table for
hard disk 0
SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
--------b-62---------------------------------
INT 62 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
Desc: the low word of this vector contains the segment of the RAM data area
to be used by the expansion ROM at F400h:2000h, and the high word
contains the length of the data area; this segment and size are
both set to 0000h if no ROM is installed at F400h:2000h
SeeAlso: INT 61"TI Professional PC",INT 63"TI Professional"
SeeAlso: INT 66"TI Professional PC"
--------b-62---------------------------------
INT 62 - HP 95LX - USED BY CALCULATOR
SeeAlso: INT 60/DI=0104h"HP 95LX"
----------62---------------------------------
INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
AH = function (00h to 07h)
CX = FFFEh
DX = FFFFh
???
Return: ???
Note: the installation check consists of testing for the string "DBLIBRARY"
2 bytes past the interrupt handler
SeeAlso: AH=08h"SQL"
Index: installation check;MS SQL Server|installation check;Sybase DBLIBRARY
----------62---------------------------------
INT 62 - MPAUSE - ???
details not yet avialable
Program: MPAUSE is a program by Manfred Michael which appeared in the German
_EGA-Handbuch_ from m&t-Verlag
--------N-62---------------------------------
INT 62 - XFS v1.76 - FILTERED PACKET DRIVER API
Program: XFS is a shareware Network File System client by Robert Juhasz
Desc: XFS requires a packet driver to operate. Since it does redirections,
etc., it provides its own packet driver entry point, changing the
signature string of the original packet driver to "XKT DRVR" so that
it will no longer be found by the packet driver installation check
Range: INT 61 to INT 66, selected by scanning for two consecutive free
vectors and hooking the second
Note: the installation check for this vector is the same as that for the
packet driver specification: scan for the signature string "PKT DRVR"
three bytes past the interrupt handler
SeeAlso: INT 60"Packet Driver Specification",INT 61"XFS"
----------62---------------------------------
INT 62 - PC-DRAFT - PRIMARY DISPLAY DRIVER
???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
--------N-6200-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET PHYSICAL HARDWARE ADDRESS
AH = 00h
DS:DX -> 6-byte buffer for address
Return: AX = length of hardware address???
Range: INT 4C to INT FB, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=01h"ETHDEV",AH=04h"ETHDEV",AH=09h"ETHDEV",AH=0Eh"ETHDEV"
SeeAlso: AH=14h"ETHDEV",AH=18h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
--------V-620000-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
AX = 0000h
BX = page number (0000h-003Fh)
Return: AX = status (0000h,0001h,0007h,0008h) (see #3144)
Program: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
The amount of memory required by the virtual video page depends on the
current video mode
The installation check consists of testing for the signature "FG" ten
bytes beyond the start of the interrupt handler
SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=0038h
Index: installation check;Fastgraph/Light
(Table 3144)
Values for FGDRIVER status:
0000h successful
0001h specified page is a physical or logical page
0007h virtual page created/released, but memory control blocks corrupted
0008h not enough memory
0009h attempt to free a page which was never created
FFFCh insufficient memory
FFFDh page already created, or exists as physical or virtual page
FFFEh invalid page number
FFFFh memory manager not initialized
SeeAlso: #3145
(Table 3145)
Values for FGDRIVER functions (by driver version):
Name v1.10 v3.03 v4.02
FG_ALLOCATE 0042h 0000h 0000h
FG_ALLOCCMS 009Dh 0001h 0001h
FG_ALLOCEMS 009Eh 0002h 0002h
FG_ALLOCXMS 009Fh 0003h 0003h
FG_AUTOMODE 0004h 0004h 0004h
FG_BESTMODE 0003h 0005h 0005h
FG_BOX 00A2h 0006h 0006h
FG_BOXDEPTH 00A3h 0007h 0007h
FG_BOXX -- 0008h 0008h
FG_BUTTON 0078h 0009h 0009h
FG_CAPSLOCK 0070h 000Ah 000Ah
FG_CHGATTR 0035h 000Bh 000Bh
FG_CHGTEXT 0036h 000Ch 000Ch
FG_CIRCLE 0030h 000Dh 000Dh
FG_CIRCLEF -- 000Eh 000Eh
FG_CLIPMAP -- -- 000Fh
FG_CLIPMASK 0052h 000Fh 0010h
FG_CLPIMAGE 004Ah 0010h 0011h
FG_CLPRECT 002Bh 0011h 0012h
FG_COLORS -- -- 0013h
FG_COPYPAGE 005Fh 0012h 0014h
FG_CURSOR 0007h 0013h 0015h
FG_DASH 0027h 0014h 0016h
FG_DASHREL 0028h 0015h 0017h
FG_DEFCOLOR 0014h 0016h 0018h
FG_DEFPAGES -- 0017h 0019h
FG_DISPFILE 004Fh 0018h 001Ah
FG_DISPLAY 004Dh 0019h 001Bh
FG_DISPLAYP 004Eh 001Ah 001Ch
FG_DISPPCX 0060h -- --
FG_DRAW 0025h 001Bh 001Dh
FG_DRAWMAP 0047h 001Ch 001Eh
FG_DRAWMASK 0051h 001Dh 001Fh
FG_DRAWREL 0026h 001Eh 0020h
FG_DRAWRELX -- 001Fh 0021h
FG_DRAWX -- 0020h 0022h
FG_DRECT 002Ch 0021h 0023h
FG_DRWIMAGE 0049h 0022h 0024h
FG_EGACHECK 0005h 0023h 0025h
FG_ELLIPSE 002Dh 0024h 0026h
FG_ELLIPSEF -- 0025h 0027h
FG_ERASE 001Eh 0026h 0028h
FG_FADEIN 0064h 0027h 0029h
FG_FADEOUT 0065h 0028h 002Ah
FG_FILLPAGE -- 0029h 002Bh
FG_FINDPAGE -- -- 002Ch
FG_FLICDONE -- -- 002Dh
FG_FLICHEAD -- -- 002Eh
FG_FLICMODE -- -- 002Fh
FG_FLICOPEN -- -- 0030h
FG_FLICPLAY -- -- 0031h
FG_FLICSIZE -- -- 0032h
FG_FLICSKIP -- -- 0033h
FG_FLIPMASK 0054h 002Ah 0034h
FG_FLOOD -- 002Bh 0035h
FG_FLPIMAGE 004Ch 002Ch 0036h
FG_FONTSIZE -- 002Dh 0037h
FG_FREEPAGE 0043h 002Eh 0038h
FG_GETADDR 0044h 002Fh 0039h
FG_GETATTR 0037h 0030h 003Ah
FG_GETBANKS -- -- 003Bh
FG_GETBLOCK -- 0031h 003Ch
FG_GETCHAR 0038h 0032h 003Dh
FG_GETCLIP -- -- 003Eh
FG_GETCLOCK 0099h 0033h 003Fh
FG_GETCOLOR 0015h 0034h 0040h
FG_GETDACS 00A4h 0035h 0041h
FG_GETENTRY -- 0036h 0042h
FG_GETHPAGE 0040h 0037h 0043h
FG_GETIMAGE 0048h 0038h 0044h
FG_GETINDEX 0016h 0039h 0045h
FG_GETKEY 006Eh 003Ah 0046h
FG_GETLINES 0010h 003Bh 0047h
FG_GETMAP 0046h 003Ch 0048h
FG_GETMAXX 000Ah 003Dh 0049h
FG_GETMAXY 000Bh 003Eh 004Ah
FG_GETMODE 0000h 003Fh 004Bh
FG_GETPAGE 003Ch 0040h 004Ch
FG_GETPIXEL 0020h 0041h 004Dh
FG_GETRGB 001Ch 0042h 004Eh
FG_GETVIEW -- -- 004Fh
FG_GETVPAGE 003Eh 0043h 0050h
FG_GETXBOX -- -- 0051h
FG_GETXJOY 0076h 0044h 0052h
FG_GETXJUST -- -- 0053h
FG_GETXPOS 0021h 0045h 0054h
FG_GETYBOX -- -- 0055h
FG_GETYJOY 0077h 0046h 0056h
FG_GETYJUST -- -- 0057h
FG_GETYPOS 0022h 0047h 0058h
FG_HUSH 008Eh 0048h 0059h
FG_HUSHNEXT 008Fh 0049h 005Ah
FG_IMAGEBUF -- 004Ah 005Bh
FG_IMAGESIZ 0062h 004Bh 005Ch
FG_INITEMS 00A0h 004Ch 005Dh
FG_INITJOY 0075h 004Dh 005Eh
FG_INITPM -- -- 005Fh??? (NOP in v4.02)
FG_INITXMS 00A1h 004Eh 0060h
FG_INSIDE -- 004Fh 0061h
FG_INTJOY 0079h 0050h 0062h
FG_INTKEY 006Fh 0051h 0063h
FG_INVERT -- -- 0064h
FG_JUSTIFY -- 0052h 0065h
FG_KBINIT -- 0053h 0066h
FG_KBLAST -- -- 0067h
FG_KBRESET -- -- 0068h
FG_KBTEST -- 0054h 0069h
FG_LOADPCX -- -- 006Ah
FG_LOCATE 0033h 0055h 006Bh
FG_MAKEPCX 0061h 0057h 006Ch
FG_MAKEPPR -- 0058h 006Dh
FG_MAKESPR -- 0059h 006Eh
FG_MAPRGB 001Dh 005Ah 006Fh
FG_MEASURE 0098h 005Bh 0070h
FG_MEMAVAIL 009Bh 005Ch 0071h
FG_MEMORY -- 005Dh 0072h
FG_MOUSE256 -- -- 0073h
FG_MOUSEBUT 007Ch 005Eh 0074h
FG_MOUSECUR 007Eh 005Fh 0075h
FG_MOUSEFIN -- 0060h 0076h
FG_MOUSEINI 007Ah 0061h 0077h
FG_MOUSELIM 0080h 0062h 0078h
FG_MOUSEMOV 0081h 0063h 0079h
FG_MOUSEPOS 007Dh 0064h 007Ah
FG_MOUSEPTR 007Fh 0065h 007Bh
FG_MOUSESPD 0082h 0066h 007Ch
FG_MOUSEVIS 007Bh 0067h 007Dh
FG_MOVE 0023h 0068h 007Eh
FG_MOVEREL 0024h 0069h 007Fh
FG_MUSIC 008Ch 006Ah 0080h
FG_MUSICB 008Dh 006Bh 0081h
FG_NUMLOCK 0072h 006Ch 0082h
FG_PACK -- -- 0083h
FG_PAGESIZE -- 006Dh 0084h
FG_PAINT 002Fh 006Eh 0085h
FG_PALETTE 0017h 006Fh 0086h
FG_PALETTES 0018h 0070h 0087h
FG_PAN 0066h 0071h 0088h
FG_PATTERN 0050h 0072h 0089h
FG_PCXHEAD -- 0073h 008Ah
FG_PCXMODE -- 0074h 008Bh
FG_PCXPAL -- -- 008Ch
FG_PCXRANGE -- -- 008Dh
FG_PLAYING 0091h 0075h 008Eh
FG_POINT 001Fh 0076h 008Fh
FG_POINTX -- 0077h 0090h
FG_POLYEDGE -- -- 0091h
FG_POLYFILL -- 0078h 0092h
FG_POLYGON 002Eh 0079h 0093h
FG_POLYLINE -- 007Ah 0094h
FG_POLYOFF -- 007Bh 0095h
FG_PRINT -- 007Ch 0096h
FG_PRINTC -- -- 0097h
FG_PUTBLOCK -- 007Dh 0098h
FG_PUTIMAGE -- 007Eh 0099h
FG_QUIET 0090h 007Fh 009Ah
FG_RECT 002Ah 0080h 009Bh
FG_RESET 0006h 0081h 009Ch
FG_RESIZE 0045h 0082h 009Dh
FG_RESTORE 005Bh 0083h 009Eh
FG_RESUME 0092h 0084h 009Fh
FG_REVIMAGE 004Bh 0085h 00A0h
FG_REVMASK 0053h 0086h 00A1h
FG_SAVE -- 0087h 00A2h
FG_SCALE -- -- 00A3h
FG_SCRLOCK 0074h 0088h 00A4h
FG_SCROLL 0067h 0089h 00A5h
FG_SETATTR 0019h 008Ah 00A6h
FG_SETBANKS -- -- 00A7h
FG_SETCAPS 0071h 008Bh 00A8h
FG_SETCLIP 0029h 008Ch 00A9h
FG_SETCOLOR 001Ah 008Dh 00AAh
FG_SETDACS 00A5h 008Eh 00ABh
FG_SETENTRY -- 008Fh 00ACh
FG_SETFUNC 009Ch 0090h 00ADh
FG_SETHPAGE 0041h 0091h 00AEh
FG_SETLINES 0011h 0092h 00AFh
FG_SETMODE 0001h 0093h 00B0h
FG_SETNUM 0073h 0094h 00B1h
FG_SETPAGE 003Dh 0095h 00B2h
FG_SETRGB 001Bh 0096h 00B3h
FG_SETVIEW -- -- 00B5h
FG_SETVPAGE 003Fh 0098h 00B6h
FG_SHEAR -- -- 00B7h
FG_SHOWFLIC -- -- 00B8h
FG_SHOWPCX -- 009Ah 00B9h
FG_SHOWPPR -- 009Bh 00BAh
FG_SHOWSPR -- 009Ch 00BBh
FG_SOUND 0088h 009Dh 00BCh
FG_SOUNDS 0089h 009Eh 00BDh
FG_SPLIT -- -- 00BEh
FG_STALL 0097h 009Fh 00BFh
FG_SUSPEND 0093h 00A0h 00C0h
FG_SVGAINIT -- 00A1h 00C1h
FG_SVGASTAT -- 00A2h 00C2h
FG_SVGAVER -- 00A3h 00C3h
FG_TCDEFINE -- 00A4h 00C4h
FG_TCMASK 005Eh 00A5h 00C5h
FG_TCXFER 005Dh 00A6h 00C6h
FG_TESTMODE 0002h 00A7h 00C7h
FG_TEXT 0032h 00A8h 00C8h
FG_TEXTC -- -- 00C9h
FG_TRANSFER 005Ch 00A9h 00CAh
FG_UNPACK -- -- 00CBh
FG_VBADDR -- -- 00CCh
FG_VBALLOC -- -- 00CDh
FG_VBCLOSE -- -- 00CEh
FG_VBCOPY -- -- 00CFh
FG_VBCUT -- -- 00D0h
FG_VBDEFINE -- -- 00D1h
FG_VBFREE -- -- 00D2h
FG_VBHANDLE -- -- 00D3h
FG_VBINIT -- -- 00D4h
FG_VBOPEN -- -- 00D5h
FG_VBPASTE -- -- 00D6h
FG_VBTCCOPY -- -- 00D7h
FG_VBTCXFER -- -- 00D8h
FG_VBUNDEF -- -- 00D9h
FG_VGASTATE -- -- 00DAh
FG_VOICE 008Ah 00AAh 00DBh
FG_VOICES 008Bh 00ABh 00DCh
FG_WAITFOR 0096h 00ACh 00DDh
FG_WAITKEY 006Dh 00ADh 00DEh
FG_WAITVR -- 00AEh 00DFh
FG_WHERE 0034h 00AFh 00E0h
FG_XALPHA 000Ch 00B0h 00E1h
FG_XCONVERT 000Eh 00B1h 00E2h
FG_XVIEW -- -- 00E3h
FG_YALPHA 000Dh 00B2h 00E4h
FG_YCONVERT 000Fh 00B3h 00E5h
FG_YVIEW -- -- 00E6h
SeeAlso: #3144
--------V-620001-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONV)
AX = 0001h
BX = page number (0001h-003Fh)
Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #3144)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
The only operation which is allowed on logical pages is "FG_COPYPAGE"
(see AX=0014h)
SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0014h,AX=0038h
--------V-620002-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
AX = 0002h
BX = page number (0001h-003Fh)
Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #3144)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
You must first call "FG_INITEMS" (see AX=005Dh) before using this
function
The only operation which is allowed on logical pages is "FG_COPYPAGE"
(see AX=0014h)
SeeAlso: AX=0000h,AX=0001h,AX=0003h,AX=0014h,AX=0038h,AX=005Dh
--------V-620003-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
AX = 0003h
BX = page number (0001h-003Fh)
Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #3144)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
You must first call "FG_INITXMS" (see AX=0060h) before using this
function
The only operation which is allowed on logical pages is "FG_COPYPAGE"
(see AX=0014h)
SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0014h,AX=0038h,AX=0060h
--------V-620004-----------------------------
INT 62 u - FGDRIVER 1.10,3.03+ - "FG_AUTOMODE" - GET VIDEO MODE W/MOST FEATURES
AX = 0004h
Return: AX = proposed video mode number (see #3171 at AX=00B0h)
Program: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=0005h,AX=004Bh,AX=00B0h,AX=00C1h,AX=00C7h
--------V-620005-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
AX = 0005h
BX = horizontal resolution
CX = vertical resolution
DX = number of video pages required (both physical and virtual)
Return: AX = proposed video mode number or FFFFh if no matching video mode
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
You must first call "FG_SVGAINIT" (see AX=00C1h) to get SVGA video
modes
SeeAlso: AX=0004h,AX=004Bh,AX=00B0h,AX=00C1h,AX=00C7h
--------V-620006-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BOX" - DRAW UNFILLED RECTANGLE
AX = 0006h
BX = left column
CX = right column
DX = top row
SI = bottom row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
The rectangle is drawn in screen space, respecting the clipping region,
with edges of the width specified with "FG_BOXDEPTH" (see AX=0007h)
(default = 1 is set by "FG_SETMODE")
This function has no effect in text modes
SeeAlso: AX=0007h,AX=0008h,AX=000Ch,AX=0016h,AX=001Dh,AX=0026h,AX=0051h
SeeAlso: AX=0055h,AX=008Fh
--------V-620007-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
AX = 0007h
BX = width of left and right edges in pixels (> 0)
CX = width of top and bottom edges in pixels (> 0)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=0006h,AX=0008h,AX=0051h,AX=0055h
--------V-620008-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BOXX" - XOR HOLLOW RECTANGLE
AX = 0008h
BX = left column
CX = right column
DX = top row
SI = bottom row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
The rectangle is XORed into screen space, respecting the clipping
region, with edges of the width specified with "FG_BOXDEPTH"
(see AX=0007h) (default = 1 is set by "FG_SETMODE")
This function has no effect in text modes
SeeAlso: AX=0006h,AX=0007h,AX=0021h,AX=0022h,AX=0051h,AX=0055h,AX=0090h
--------V-620009-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
AX = 0009h
BX = joystick number (0001h or 0002h)
Return: AX = button states
bit 0: top button pressed
bit 1: bottom button pressed
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=0052h,AX=0056h,AX=005Eh,AX=0062h,AX=0077h
--------V-62000A-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
AX = 000Ah
Return: AX = CapsLock state (0000h off, 0001h on)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=0082h,AX=00A4h,AX=00A8h,AX=00B1h
--------V-62000B-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
AX = 000Bh
BX = number of characters to recolor
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in graphics modes
Starting at the current text cursor position, the specified number of
characters have their attributes to the current text attribute
SeeAlso: AX=000Ch,AX=003Ah,AX=00A6h
--------V-62000C-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
AX = 000Ch
CX = length of string
ES:BX -> string to be displayed
Return: text cursor updated
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in graphics modes
SeeAlso: AX=000Bh,AX=0096h
--------V-62000D-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
AX = 000Dh
BX = radius in horizontal screen space units (> 0)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
The circle is drawn in screen space, centered at the current graphics
cursor position
This call is ignored in text modes
SeeAlso: AX=0006h,AX=0008h,AX=000Eh,AX=0026h,AX=0093h
--------V-62000E-----------------------------
INT 62 u - FGDRIVER v3.03+ - "FG_CIRCLEF" - DRAW FILLED CIRCLE
AX = 000Eh
BX = radius in horizontal screen space units (> 0)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=0008h,AX=000Dh,AX=0027h,AX=0092h
--------V-62000F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CLIPMAP" - DISPLAY CLIPPED IMAGE (MODE-INDEP)
AX = 000Fh
ES:BX -> bitmap
CX = width
DX = height
Desc: display a mode-independent bitmap, showing only the portion within
the current clipping limits
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes and in native EGA and VGA graphics
modes
The image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=0011h,AX=001Fh,AX=0034h,AX=0086h,AX=00A9h,AX=00C5h
--------V-620010-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
AX = 0010h
ES:BX -> array containing image stored as a masking map (see #3146)
CX = number of pixel runs in masking map
DX = width of masking map in pixels
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes and in native EGA and VGA graphics
modes
The image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=0011h,AX=001Fh,AX=0034h,AX=00A1h,AX=00A9h,AX=00C5h
--------V-620011-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
AX = 0011h
ES:BX -> mode-specific bitmap
CX = width of bit map in bytes
DX = height of bit map in pixel rows
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes
The image is drawn with its lower left corner at the current graphics
cursor position
The current clipping region is used, extended to a byte boundary
SeeAlso: AX=0010h,AX=0024h,AX=0036h,AX=0044h,AX=00A0h,AX=00A9h,AX=00B9h
--------V-620012-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
AX = 0012h
BX = screen space column of left edge
CX = screen space column of right edge
DX = screen space row of top edge
SI = screen space row of bottom edge
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes
SeeAlso: AX=0006h,AX=0010h,AX=0011h,AX=0023h,AX=009Bh,AX=00A9h
--------V-620013-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_COLORS" - GET SIMULTANEOUSLY-AVAILABLE COLORS
AX = 0013h
Return: AX = number of colors available at one time
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
--------V-620014-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
AX = 0014h
BX = source page number (0000h-003Fh)
CX = destination page number (0000h-003Fh)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
If both source and destination pages are logical pages, they must both
be located in the same type (conventional, EMS, XMS) of memory
SeeAlso: AX=009Eh,AX=00A2h,AX=00C6h,AX=00CAh
--------V-620015-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
AX = 0015h
BX = new state (0000h invisible, 0001h visible)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes
SeeAlso: AX=000Ch,AX=0054h,AX=0058h,AX=006Bh,AX=0075h,AX=0079h,AX=007Eh
SeeAlso: AX=00E0h
--------V-620016-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
AX = 0016h
BX = endpoint column
CX = endpoint row
DX = dash pattern (set bits cause drawn pixels)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes
The starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=0017h,AX=001Dh,AX=008Fh
--------V-620017-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
AX = 0017h
BX = endpoint column offset
CX = endpoint row offset
DX = dash pattern (set bits cause drawn pixels)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes
The starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=0016h,AX=001Eh,AX=008Fh
--------V-620018-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
AX = 0018h
BX = color index (0000h-00FFh)
CX = new color value (0 to maximum color value for current video mode)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes and 256-color graphics modes
SeeAlso: AX=0040h,AX=0045h,AX=00AAh
--------V-620019-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DEFPAGES" - DEF SRC/DEST PAGES FOR BLOCK XFERS
AX = 0019h
BX = source page
CX = destination page
Desc: specify the source and destination SVGA banks for block transfers on
extended video pages
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This function is ignored if the video controller does not support
extended pages or the current video mode does not allow them
SeeAlso: AX=0014h,AX=00CAh
--------V-62001A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DISPFILE" - DISPLAY STORED IMAGE
AX = 001Ah
ES:BX -> ASCIZ filename
CX = image width in pixels (> 0)
DX = image format
0000h Fastgraph standard pixel run format
0001h packed pixel run format
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes
The image is displayed with its lower left corner at the current
graphics cursor position
SeeAlso: AX=001Bh,AX=001Ch,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62001B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
AX = 001Bh
ES:BX -> pixel run map (pairs of bytes: color index, count)
CX = number of pixel runs to display
DX = width of image in pixels (> 0)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes
The image is displayed with its lower left corner at the current
graphics cursor position
SeeAlso: AX=001Ah,AX=001Ch,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62001C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DISPLAYP" - DISPLAY IMAGE (PACKED PIXEL RUNS)
AX = 001Ch
ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
contains the color for the first run in its high nybble and
the color for the second run in its low nybble)
CX = number of pixel runs to display
DX = width of image in pixels (> 0)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes
The image is displayed with its lower left corner at the current
graphics cursor position
SeeAlso: AX=001Ah,AX=001Bh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62001D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
AX = 001Dh
BX = endpoint column
CX = endpoint row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes
The starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=0016h,AX=0020h,AX=0021h,AX=0026h,AX=008Fh,AX=0090h
--------V-62001E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
AX = 001Eh
ES:BX -> bitmap (each set bit is pixel drawn in current color)
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=0099h,AX=00A0h
--------V-62001F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
AX = 001Fh
ES:BX -> array containing image stored as a masking map (see #3146)
CX = number of pixel runs in masking map
DX = width of masking map in pixels
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
This call is ignored in text modes and in native EGA and VGA graphics
modes
The image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=0010h,AX=001Fh,AX=00A1h,AX=00A9h
Format of FGDRIVER masking map:
Offset Size Description (Table 3146)
00h BYTE length of first "protect" run (pixels remain unchanged)
01h BYTE length of first "zero" run (pixels set to background color)
02h BYTE length of second "protect" run
03h BYTE length of second "zero" run
...
--------V-620020-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
AX = 0020h
BX = endpoint column offset
CX = endpoint row offset
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
The starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=0006h,AX=000Dh,AX=001Dh,AX=0021h,AX=0026h,AX=008Fh
--------V-620021-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWRELX" - XOR SOLID LINE TO RELATIVE POSITION
AX = 0021h
BX = endpoint column offset
CX = endpoint row offset
Desc: draw a solid line, XORing each pixel onto the screen
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
The starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=0006h,AX=000Dh,AX=001Dh,AX=0020h,AX=0026h,AX=0090h
--------V-620022-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRAWX" - XOR SOLID LINE TO ABSOLUTE POSITION
AX = 0022h
BX = endpoint column
CX = endpoint row
Desc: draw a solid line, XORing each pixel onto the screen
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
The starting point is the current graphics cursor position; the cursor
position is updated
SeeAlso: AX=001Dh,AX=0021h,AX=008Fh
--------V-620023-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
AX = 0023h
BX = screen space column of left edge
CX = screen space column of right edge
DX = screen space row of top edge
SI = screen space row of bottom edge
ES:DI -> dithering matrix (video-mode dependent)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
SeeAlso: AX=0006h,AX=0008h,AX=0013h,AX=003Ch,AX=0089h,AX=009Bh
--------V-620024-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
AX = 0024h
ES:BX -> video mode-specific bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The image will be drawn with its lower left corner at the current
cursor position (either text or graphics)
SeeAlso: AX=0011h,AX=0036h,AX=0044h,AX=0099h,AX=00A0h
--------V-620025-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
AX = 0025h
Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
without an Enhanced Color Display
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00C2h
--------V-620026-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
AX = 0026h
BX = horizontal semi-axis length in screen space units
CX = vertical semi-axis length in screen space units
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
The ellipse is centered at the current graphics cursor position
SeeAlso: AX=0006h,AX=000Dh,AX=0027h,AX=008Fh,AX=0093h
--------V-620027-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_ELLIPSEF" - DRAW FILLED ELLIPSE IN SCREEN SPACE
AX = 0027h
BX = horizontal semi-axis length in screen space units
CX = vertical semi-axis length in screen space units
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
The ellipse is centered at the current graphics cursor position
SeeAlso: AX=0006h,AX=000Eh,AX=0026h,AX=008Fh,AX=0092h
--------V-620028-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
AX = 0028h
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function sets each pixel to 0 in graphics modes, each character
cell to a blank with a gray foreground attribute in text modes
SeeAlso: AX=0029h,AX=002Bh,AX=0035h
--------V-620029-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FADEIN" - FADE IN HIDDEN PAGE
AX = 0029h
BX = delay (0000h = fastest possible fade-in)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The current hidden page is copied to the current visible page in small
random sections to produce a fade-in effect
This call is ignored in text modes
SeeAlso: AX=0028h,AX=002Ah,AX=002Bh
--------V-62002A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
AX = 002Ah
BX = delay (0000h = fastest possible fade-out)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The current visible page is filled with pixels of the current color in
small random sections to give a fade-out effect
This call is ignored in text modes
SeeAlso: AX=0028h,AX=0029h,AX=002Bh
--------V-62002B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FILLPAGE" - FILL THE ACTIVE VIDEO PAGE
AX = 002Bh
Desc: fill the active video page with pixels of the current color (graphics
modes) or the block character DBh with the current character
attributes (text modes)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0028h,AX=0029h,AX=002Ah
--------V-62002C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FINDPAGE" - FIND AVAILABLE VIRTUAL/LOGICAL PAGE
AX = 002Ch
Return: AX = first available page number (virtual or logical page)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0028h
--------V-62002D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICDONE" - CLOSE FLIC FILE
AX = 002Dh
ES:BX -> context descriptor (see AX=0030h)
Return: nothing
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=002Eh,AX=0030h
--------V-62002E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICHEAD" - READ FLI/FLC FILE HEADER
AX = 002Eh
ES:BX -> FLICHEAD variable pointer record (see #3148)
Return: AX = status (see #3147)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=002Dh,AX=002Fh,AX=0030h,AX=0032h
(Table 3147)
Values for FGDRIVER FLIC processing status:
0000h successful
FFFEh not an FLI or FLC file
FFFFh file not found
Format of FGDRIVER FLICHEAD variable pointer record:
Offset Size Description (Table 3148)
00h WORD segment of ASCIZ FLI/FLC file name
02h WORD offset of ASCIZ FLI/FLC file name
04h WORD segment of buffer for 128-byte file header
06h WORD offset of buffer for 128-byte file header
--------V-62002F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICMODE" - GET OPTIMAL VIDEO MODE FOR FLI/FLC
AX = 002Fh
ES:BX -> 128-byte buffer containing FLI/FLC file header (see AX=002Eh)
Return: AX = optimal 256-color graphics mode number
FFFFh if invalid file header
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=002Eh,AX=0030h
--------V-620030-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICOPEN" - OPEN FLI/FLC FILE
AX = 0030h
ES:BX -> FLICOPEN variable pointer record (see #3149)
Return: AX = status (see #3147)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=002Dh,AX=002Eh,AX=002Fh,AX=0030h,AX=0031h,AX=0032h
Format of FGDRIVER FLICOPEN variable pointer record:
Offset Size Description (Table 3149)
00h WORD segment of ASCIZ FLI/FLC file name
02h WORD offset of ASCIZ FLI/FLC file name
04h WORD segment of buffer for 16-byte file context descriptor
06h WORD offset of buffer for 16-byte file context descriptor
--------V-620031-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICPLAY" - DISPLAY NEXT FRAME(S) IN FLI/FLC
AX = 0031h
ES:BX -> context descriptor (see AX=0030h)
CX = number of frames to display starting at current frame
DX = control flags (see #3150)
Return: AX = number of frames displayed
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0030h,AX=0033h,AX=00B8h
Bitfields for FGDRIVER FLI/FLC control flags:
Bit(s) Description (Table 3150)
0 skip inter-frame delay specified in FLI/FLC header
1 display relative to current graphics position
2 dipslay image from the FG_IMAGEBUF buffer instead of file
--------V-620032-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICSIZE" - GET IMAGE SIZE
AX = 0032h
ES:BX -> FLICSIZE variable pointer record (see #3151)
Return: image height/width buffers updated; height is set to FFFFh on error
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=002Eh,AX=0030h
Format of FGDRIVER FLICSIZE variable pointer record:
Offset Size Description (Table 3151)
00h WORD segment of buffer for 128-byte FLI/FLC file header
02h WORD offset of buffer for 128-byte FLI/FLC file header
04h WORD segment of WORD buffer for image width in pixels
06h WORD offset of WORD buffer for image width in pixels
08h WORD segment of WORD buffer for image height in pixels
0Ah WORD offset of WORD buffer for image height in pixels
--------V-620033-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLICSKIP" - SKIP FRAME(S) IN FLI/FLC FILE
AX = 0033h
ES:BX -> context descriptor (see AX=0030h)
CX = number of frames to skip
reset to first frame if skip count is negative
Return: AX = number of frames skipped (may be less than requested if EOF)
0000h if resetting to first frame
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0030h,AX=0031h
--------V-620034-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
AX = 0034h
ES:BX -> array containing image stored as a masking map (see #3146)
CX = number of pixel runs in masking map
DX = width of masking map in pixels
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes and in native EGA and VGA graphics
modes
The image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=000Fh,AX=001Fh,AX=0036h,AX=00A1h,AX=00A5h,AX=00C5h
--------V-620035-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLOOD" - FLOOD FILL ARBITRARY CLOSED REGION
AX = 0035h
BX = starting column
CX = starting row
Desc: fill the bounded region around the specified point (respecting clipping
region) with the currrent color
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is ignored in text modes
SeeAlso: AX=0028h,AX=0085h
--------V-620036-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
AX = 0036h
ES:BX -> mode-specific bitmap
CX = width of bit map in bytes
DX = height of bit map in pixel rows
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
The image is drawn with its lower left corner at the current graphics
cursor position
The current clipping region is used, extended to a byte boundary
SeeAlso: AX=0011h,AX=0024h,AX=0034h,AX=0044h,AX=00A0h,AX=00A9h,AX=00B9h
--------V-620037-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FONTSIZE" - SPECIFY FONT SIZE FOR TEXT OUTPUT
AX = 0037h
BX = desired character height in scan lines (8, 14, 16)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored if the current mode is not a VGA or SVGA graphics
mode, or the specified character height is not 8, 14, or 16
SeeAlso: AX=0096h
--------V-620038-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
AX = 0038h
BX = page number (0000h-003Fh)
Return: AX = status (0000h,0001h,0007h,0009h) (see #3144)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0003h
--------V-620039-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
AX = 0039h
Return: AX = segment of active video page
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0042h,AX=00ACh
--------V-62003A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
AX = 003Ah
BX = row
CX = column
Return: AX = character attribute at specified location on active video page
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in graphics modes
SeeAlso: AX=000Bh,AX=003Dh,AX=0040h,AX=00A6h
--------V-62003B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETBANKS" - GET SVGA READ AND WRITE BANKS
AX = 003Bh
ES:BX -> GETBANKS variable pointer record (see #3152)
Return: nothing
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00A7h
Format of FGDRIVER GETBANKS variable pointer record:
Offset Size Description (Table 3152)
00h WORD segment of WORD buffer for read bank number
02h WORD offset of WORD buffer for read bank number
04h WORD segment of WORD buffer for write bank number
06h WORD offset of WORD buffer for write bank number
--------V-62003C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETBLOCK" - GRAB RECTANGLE OF DISPLAY
AX = 003Ch
ES:BX -> buffer for screen contents
CX = leftmost column
DX = rightmost column
SI = top row
DI = bottom row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
In text modes, coordinates are character positions; in graphics modes,
they are defined in screen space, and the left and right edges are
adjusted to a byte boundary if necessary
Use "FG_IMAGESIZ" (see AX=005Ch) to determine the required buffer size
SeeAlso: AX=0044h,AX=005Ch,AX=0098h
--------V-62003D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
AX = 003Dh
BX = row
CX = column
Return: AX = character at specified location on active video page
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in graphics modes
SeeAlso: AX=000Bh,AX=003Ah,AX=0096h,AX=00A6h,AX=00C8h
--------V-62003E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETCLIP" - GET CLIPPING REGION IN SCREEN SPACE
AX = 003Eh
ES:BX -> GETCLIP variable pointer record (see #3153)
Return: variables specifed by GETCLIP structure updated
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00CAh
Format of FGDRIVER GETCLIP variable pointer record:
Offset Size Description (Table 3153)
00h WORD segment of WORD buffer for minimum X coordinate (left edge)
02h WORD offset of WORD buffer for minimum X coordinate (left edge)
04h WORD segment of WORD buffer for maximum X coordinate (right edge)
06h WORD offset of WORD buffer for maximum X coordinate (right edge)
08h WORD segment of WORD buffer for minimum Y coordinate (top edge)
0Ah WORD offset of WORD buffer for minimum Y coordinate (top edge)
0Ch WORD segment of WORD buffer for maximum Y coordinate (bottom edge)
0Eh WORD offset of WORD buffer for maximum Y coordinate (bottom edge)
--------V-62003F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
AX = 003Fh
Return: DX:AX = number of clock ticks since midnight
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: INT 1A/AH=00h
--------V-620040-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
AX = 0040h
Return: AX = current text attribute or color index (graphics modes)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=000Bh,AX=003Ah,AX=00A6h
--------V-620041-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
AX = 0041h
CX = number of DAC registers to return (0001h to 0100h)
DX = starting DAC register number (0000h to 00FFh)
ES:BX -> buffer for DAC red/green/blue triples
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The register number wraps back to zero after FFh
SeeAlso: AX=004Eh,AX=0086h,AX=00ABh
--------V-620042-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETENTRY" - GET PAGE TYPE AND ADDRESS
AX = 0042h
ES:BX -> variable pointer record (see #3154)
CX = page number (00h-3Fh)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
Page addresses are segments for pages stored in conventional memory
(including physical and virtual pages), and EMS or XMS handles for
pages stored in EMS or XMS
SeeAlso: AX=0000h,AX=00ACh
Format of FGDRIVER GETENTRY variable pointer record:
Offset Size Description (Table 3154)
00h WORD segment of WORD buffer for page address
02h WORD offset of WORD buffer for page address
04h WORD segment of WORD buffer for page type (se #3155)
06h WORD offset of WORD buffer for page type
(Table 3155)
Values for FGDRIVER page type:
0000h unallocated
0001h physical
0002h virtual
0003h logical page, stored in expanded memory (EMS)
0004h logical page, stored in extended memory (XMS)
0005h logical page, stored in conventional memory
--------V-620043-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
AX = 0043h
Return: AX = current hidden video page number (0000h-003Fh)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=004Ch,AX=0050h,AX=00AEh
--------V-620044-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
AX = 0044h
ES:BX -> buffer for video mode-specific bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0099h,AX=00A0h
--------V-620045-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
AX = 0045h
BX = color index (0000h to 00FFh)
Return: AX = color value for specified color index
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call returns the value passed to it in text and 256-color
graphics modes
SeeAlso: AX=0018h,AX=0040h
--------V-620046-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETKEY" - GET NEXT KEYSTROKE
AX = 0046h
ES:BX -> variable pointer record (see #3156)
Return: (after next keystroke if no typeahead) variables updated
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=000Ah,AX=0063h,AX=0069h,AX=00DEh,INT 16/AH=00h
Format of FGDRIVER GETKEY variable pointer record:
Offset Size Description (Table 3156)
00h WORD segment of BYTE buffer for ASCII keycode
02h WORD offset of BYTE buffer for ASCII keycode
04h WORD segment of BYTE buffer for extended keycode
06h WORD offset of BYTE buffer for extended keycode
--------V-620047-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
AX = 0047h
Return: AX = number of text rows on screen in current video mode
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00AFh,AX=00C2h
--------V-620048-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
AX = 0048h
ES:BX -> buffer for video mode-independent bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
Return: each bit in bitmap is set if corresponding pixel is of the current
color, cleared otherwise
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
SeeAlso: AX=0011h,AX=001Eh,AX=0024h
--------V-620049-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
AX = 0049h
Return: AX = maximum X coordinate in screen space
(or character space if in text mode)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=004Ah,AX=00C1h
--------V-62004A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
AX = 004Ah
Return: AX = maximum Y coordinate in screen space
(or character space if in text mode)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0049h,AX=00C1h
--------V-62004B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
AX = 004Bh
ES:BX -> WORD ???
Return: AX = current video mode number
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00B0h
--------V-62004C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
AX = 004Ch
Return: AX = active video page (0000h-003Fh)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0039h,AX=0042h,AX=0043h,AX=0050h,AX=00B2h
--------V-62004D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
AX = 004Dh
BX = column in screen space
CX = row in screen space
Return: AX = color value of pixel (0 to num_colors-1)
0000h in text modes
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=003Ah,AX=003Dh,AX=008Fh,AX=0090h
--------V-62004E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
AX = 004Eh
ES:BX -> variable pointer record (see #3157)
CX = DAC register number
Return: variables updated
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes and CGA/EGA video modes (since
they do not use DAC registers)
SeeAlso: AX=0041h,AX=0086h,AX=00ABh
Format of FGDRIVER GETRGB variable pointer record:
Offset Size Description (Table 3157)
00h WORD segment of WORD buffer for red component of DAC register
02h WORD offset of WORD buffer for red component
04h WORD segment of WORD buffer for green component of DAC register
06h WORD offset of WORD buffer for green component
08h WORD segment of WORD buffer for blue component of DAC register
0Ah WORD offset of WORD buffer for blue component
--------V-62004F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETVIEW" - GET VIEWPORT EXTREME LIMITS
AX = 004Fh
ES:BX -> variable pointer record (see #3158)
Return: indicated variables updated
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00B5h
Format of FGDRIVER GETVIEW variable pointer record:
Offset Size Description (Table 3158)
00h WORD segment of WORD buffer for viewport left edge (viewport units)
02h WORD offset of WORD buffer for viewport left edge (viewport units)
04h WORD segment of WORD buffer for viewport right edge (viewport units)
06h WORD offset of WORD buffer for viewport right edge (viewport units)
08h WORD segment of WORD buffer for viewport top edge (viewport units)
0Ah WORD offset of WORD buffer for viewport top edge (viewport units)
0Ch WORD segment of WORD buffer for viewport bottom edge (viewp. units)
0Eh WORD offset of WORD buffer for viewport bottom edge (viewp. units)
10h WORD segment of WORD buffer for viewport left edge (screen space)
12h WORD offset of WORD buffer for viewport left edge (screen space)
14h WORD segment of WORD buffer for viewport right edge (screen space)
16h WORD offset of WORD buffer for viewport right edge (screen space)
18h WORD segment of WORD buffer for viewport top edge (screen space)
1Ah WORD offset of WORD buffer for viewport top edge (screen space)
1Ch WORD segment of WORD buffer for viewport bottom edge (screen space)
1Eh WORD offset of WORD buffer for viewport bottom edge (screen space)
--------V-620050-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
AX = 0050h
Return: AX = visible video page (0000h-003Fh)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0043h,AX=004Ch,AX=00B6h
--------V-620051-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETXBOX" - GET WIDTH OF VERTICAL BOX LINES
AX = 0051h
Return: AX = width (in pixels) of left and right edges of rectangles
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0006h,AX=0007h,AX=0008h,AX=006Bh
--------V-620052-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
AX = 0052h
BX = joystick number (0001h or 0002h)
Return: AX = horizontal position of joystick
FFFFh if joystick uninitialized or not present
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The actual coordinates are processor- and joystick-dependent
You must call "FG_INITJOY" (AX=005Eh) before using this function
SeeAlso: AX=0009h,AX=0056h,AX=005Eh,AX=0062h,AX=0077h
--------V-620053-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETXJUST" - GET HORIZONTAL JUSTIFICATION
AX = 0053h
Return: AX = string justification
0000h strings are centered around current graphics X position
0001h strings are right-justified at current graphics X position
FFFFh strings are left-justified at current graphics X position
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=006Ch,AX=007Bh
--------V-620054-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
AX = 0054h
Return: AX = screen space X coordinate of graphics cursor position
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0058h,AX=007Eh,AX=007Fh
--------V-620055-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETYBOX" - GET WIDTH OF HORIZONTAL BOX LINES
AX = 0055h
Return: AX = width (in pixels) of top and bottom edges of rectangles
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0006h,AX=0007h,AX=0008h,AX=0063h
--------V-620056-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
AX = 0056h
BX = joystick number (0001h or 0002h)
Return: AX = vertical position of joystick
FFFFh if joystick uninitialized or not present
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The actual coordinates are processor- and joystick-dependent
You must call "FG_INITJOY" (AX=005Eh) before using this function
SeeAlso: AX=0009h,AX=0052h,AX=005Eh,AX=0062h,AX=0077h
--------V-620057-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETYJUST" - GET VERTICAL JUSTIFICATION
AX = 0057h
Return: AX = string justification
0000h strings are centered around current graphics Y position
0001h strings have top edge at current graphics Y position
FFFFh strings have bottom edge at current graphics Y position
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0053h,AX=0065h
--------V-620058-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_GETYPOS" - GET GRAPHICS CURSOR ROW
AX = 0058h
Return: AX = screen space Y coordinate of graphics cursor position
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0054h,AX=007Eh,AX=007Fh
--------V-620059-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
AX = 0059h
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function immediately stops any sounds started with "FG_MUSICB",
"FG_SOUNDS", or "FG_VOICES"; it is ignored if no asynchronous sound
is playing
SeeAlso: AX=005Ah,AX=0081h,AX=00BDh,AX=00DCh
--------V-62005A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
AX = 005Ah
Program: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
or "FG_VOICES" after the current repetition completes; it is ignored
unless asynchronous sound is continuous
SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
--------V-62005B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_IMAGEBUF" - SPECIFY TEMPORARY IMAGE BUFFER
AX = 005Bh
ES:BX -> buffer to be used when creating or displaying GIF/PCX/PPR/SPR
images
CX = size of buffer in bytes or 0000h to use internal buffer
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
Fastgraph's internal buffer is 4096 bytes; this function allows the
application to define a larger buffer which will typically speed
processing
SeeAlso: AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62005C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
AX = 005Ch
BX = image width in pixels
CX = image height in pixels
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
SeeAlso: AX=003Ch,AX=0098h
--------V-62005D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
AX = 005Dh
Return: AX = status
0000h successful
FFFFh expanded memory manager inaccessible or not installed
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0002h,AX=0060h"v4.02"
--------V-62005E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
AX = 005Eh
BX = joystick number (0001h or 0002h)
Return: AX = status
0000h successful
FFFFh joystick not connected or no game port
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
Fastgraph assumes that the requested joystick is centered at the time
this function is called
SeeAlso: AX=0009h,AX=0052h,AX=0056h,AX=0062h,AX=0077h
--------V-62005F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INITPM"??? - (NOT IMPLEMENTED)
AX = 005Fh
???
Return: ???
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
--------V-620060-----------------------------
INT 62 u - FGDRIVER v1.10 only - "FG_DISPPCX" - DISPLAY PCX FILE
AX = 0060h
ES:BX -> ASCIZ filename
CX = flags
bit 0: use current palette rather than PCX file's palette
bits 1-15 reserved (0)
Return: AX = status
0000h success
0001h file not found
0002h file is not a valid PCX file
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes and Hercules low-resolution graphics
The image is displayed with its upper left corner at the current
graphics cursor position
SeeAlso: AX=00B9h
--------V-620060-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
AX = 0060h
Return: AX = status
0000h successful
FFFFh extended memory manager inaccessible or not installed
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0003h,AX=005Dh
--------V-620061-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INSIDE" - CHECK IF POINT INSIDE CONVEX POLYGON
AX = 0061h
ES:BX -> vertex array
CX = number of vertices
DX = screen space column of point to test
SI = screen space row of point to test
Return: AX = result
0000h point is outside polygon
0001h point is inside polygon
undefined if not a convex polygon
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0092h,AX=0093h,AX=0094h
--------V-620062-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
AX = 0062h
CX = joystick number (0001h or 0002h)
ES:BX -> variable pointer record (see #3159)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
If the indicated joystick has not been initialized with AX=008Eh, both
the button code and joystick position will be set to 00h
If either button is pressed, a button code of 0Dh is returned;
otherwise, a button code of 00h is returned
SeeAlso: AX=0009h,AX=0052h,AX=0046h,AX=005Eh,AX=0077h
Format of FGDRIVER INTJOY variable pointer record:
Offset Size Description (Table 3159)
00h WORD segment of BYTE buffer for button code
02h WORD offset of BYTE buffer for button code
04h WORD segment of BYTE buffer for joystick position
06h WORD offset of BYTE buffer for joystick position
--------V-620063-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
AX = 0063h
ES:BX -> variable pointer record (see #3160)
Return: variables updated
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
If the keyboard buffer is empty, both the ASCII and extended keycodes
are set to 00h
SeeAlso: AX=000Ah,AX=0046h,AX=0069h,AX=00DEh,INT 16/AH=01h
Format of FGDRIVER INTKEY variable pointer record:
Offset Size Description (Table 3160)
00h WORD segment of BYTE buffer for ASCII keycode
02h WORD offset of BYTE buffer for ASCII keycode
04h WORD segment of BYTE buffer for extended keycode
06h WORD offset of BYTE buffer for extended keycode
--------V-620064-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_INVERT" - INVERT ORIENTATION OF BITMAP
AX = 0064h
ES:BX -> bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
Return: nothing
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
--------V-620065-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_JUSTIFY" - SET TEXT OUTPUT JUSTIFICATION
AX = 0065h
BX = horizontal justification
(00h centered, 01h right-justified, FFh left-justified)
CX = vertical justification
(00h centered, 01h top of characters, FFh bottom of chars)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=000Ch,AX=0037h,AX=0053h,AX=0057h,AX=0096h
--------V-620066-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_KBINIT" - ENABLE/DISABLE LOW-LEVEL KBD HANDLER
AX = 0066h
BX = new state (0000h disabled, 0001h enabled)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
When the low-level handler is enabled, "FG_GETKEY", "FG_INTKEY",
"FG_WAITKEY", and all other functions calling DOS or BIOS keyboard
services become unavailable
SeeAlso: AX=0067h,AX=0068h,AX=0069h
--------V-620067-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_KBLAST" - GET MOST RECENT SCANCODE PROCESSED
AX = 0067h
Return: AX = scancode for keypress most recently processed by FastGraph's
low-level keyboard handler, or 0000h if no keys since FG_KBINIT
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0066h,AX=0068h,AX=0069h
--------V-620068-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_KBRESET" - RESET LOW-LEVEL KEYBOARD HANDLER
AX = 0068h
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0066h,AX=0067h,AX=0069h
--------V-620069-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_KBTEST" - CHECK WHETHER SPECIFIED KEY PRESSED
AX = 0069h
BX = scan code of desired key
Return: AX = state
0000h key is not pressed
0001h key is currently pressed
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The low-level keyboard handler must have been enabled with AX=0066h
SeeAlso: AX=0066h,AX=0067h,INT 16/AH=01h
--------V-62006A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_LOADPCX" - LOAD .PCX INTO ACTIVE VIRTUAL BUFFER
AX = 006Ah
ES:BX -> ASCIZ filename for PCX image
CX = control flags
bit 0: use current palette, overriding stored .PCX palette
bit 1: load at current graphics position, not stored position
bit 2: load image from FG_IMAGEBUF buffer instead of .PCX file
Return: AX = status
0000h successful
0001h file not found
0002h not a .PCX file
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=006Ch,AX=00B9h,AX=00D5h
--------V-62006B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
AX = 006Bh
BX = row
CX = column
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
There are only eight text cursors shared by successive groups of
eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
share the second, etc)
SeeAlso: AX=0054h,AX=0058h,AX=007Eh,AX=00E0h
--------V-62006C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
AX = 006Ch
BX = left edge in screen space units
CX = right edge in screen space units
DX = top edge in screen space units
SI = bottom edge in screen space units
ES:DI -> ASCIZ filename of PCX file to create
Return: AX = status
0000h successful
0001h file not created
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The PCX file is created from the specified region of the active video
page; the left and right edges are adjusted to a byte boundary if
necessary
If the specified file already exists, it is overwritten
This call is ignored in text and Hercules low-resolution graphics modes
SeeAlso: AX=005Bh,AX=006Dh,AX=006Ah,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62006D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MAKEPPR" - CREATE PACKED PIXEL RUN FILE
AX = 006Dh
BX = left edge in screen space units
CX = right edge in screen space units
DX = top edge in screen space units
SI = bottom edge in screen space units
ES:DI -> ASCIZ filename of PPR file to create
Return: AX = status
0000h successful
0001h file not created
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The PPR file is created from the specified region of the active video
page; the left and right edges are adjusted to byte boundaries if
necessary
If the specified file already exists, it is overwritten
This call is ignored in text modes
SeeAlso: AX=005Bh,AX=006Ch,AX=006Eh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62006E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MAKESPR" - CREATE STANDARD PIXEL RUN FILE
AX = 006Eh
BX = left edge in screen space units
CX = right edge in screen space units
DX = top edge in screen space units
SI = bottom edge in screen space units
ES:DI -> ASCIZ filename of SPR file to create
Return: AX = status
0000h successful
0001h file not created
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The SPR file is created from the specified region of the active video
page; the left and right edges are adjusted to byte boundaries if
necessary
If the specified file already exists, it is overwritten
This call is ignored in text modes
SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=00B9h,AX=00BAh,AX=00BBh
--------V-62006F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
AX = 006Fh
BX = red component
CX = green component
DX = blue component
Return: AX = mode-specific palette value corresponding to specified components
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is only meaningful in 16-color graphics modes
SeeAlso: AX=004Eh,AX=00B3h
--------V-620070-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
AX = 0070h
Return: AX = delay units per clock tick (processor-dependent)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
These delay units are used by "FG_STALL" (see AX=00BFh)
SeeAlso: AX=00BFh
--------V-620071-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
AX = 0071h
Return: DX:AX = number of bytes of conventional memory available
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=005Dh,AX=0072h
--------V-620072-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MEMORY" - GET SIZE OF VIDEO MEMORY
AX = 0072h
Return: AX = size of video memory in KB
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
You must first call "FG_SVGAINIT" (see AX=00C1h) before using this
function
SeeAlso: AX=0071h
--------V-620073-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSE256" - DEFINE 256-COLOR MOUSE CURSOR
AX = 0073h
ES:BX -> 512-byte cursor definition
CX = X offset of hot-spot within mouse cursor
DX = Y offset of hot-spot within mouse cursor
Return: nothing
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
the cursor definition array consists of 256 bytes defining the 16x16
screen mask, followed by another 256 bytes definining the 16x16
cursor mask
SeeAlso: AX=0074h,AX=0075h,AX=007Bh
--------V-620074-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
AX = 0074h
CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
-1=left release, -2=right release, -3=middle release)
ES:BX -> variable pointer record (see #3161)
Return: variables updated
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function returns the count of presses or releases since the last
call to this function; if the count is zero, row and column will
also be zero
SeeAlso: AX=0075h,AX=0077h,AX=007Ah
Format of FGDRIVER MOUSEBUT variable pointer record:
Offset Size Description (Table 3161)
00h WORD segment of WORD buffer for press/release count
02h WORD offset of WORD buffer for press/release count
04h WORD segment of WORD buffer for screen space col of last press/rls
06h WORD offset of WORD buffer for screen space col of last press/rels
08h WORD segment of WORD buffer for screen space row of last press/rls
0Ah WORD offset of WORD buffer for screen space row of last press/rls
--------V-620075-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
AX = 0075h
BX = screen mask
CX = cursor mask
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in graphics modes
SeeAlso: AX=007Bh,AX=007Dh
--------V-620076-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEFIN" - UNHOOK FASTGRAPH MOUSE HANDLER
AX = 0076h
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function should be called before switching back to text mode if
"FG_MOUSEINI" was called while in an SVGA graphics mode
SeeAlso: AX=0077h
--------V-620077-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
AX = 0077h
Return: AX = status
0002h two-button mouse
0003h three-button mouse
FFFFh initialization failed
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
After this call, the mouse cursor is invisible
SeeAlso: AX=0076h,AX=0078h,AX=007Ch
--------V-620078-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
AX = 0078h
BX = left-most position allowed for mouse cursor
CX = right-most position allowed
DX = top-most position allowed
SI = bottom-most position allowed
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0077h,AX=0079h,INT 33/AX=0007h,INT 33/AX=0008h
--------V-620079-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
AX = 0079h
BX = new column
CX = new row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function will not move the mouse cursor outside the bounding box
specified with AX=009Bh
SeeAlso: AX=0078h,AX=007Ah,INT 33/AX=0004h
--------V-62007A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
AX = 007Ah
ES:BX -> variable pointer record (see #3162)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0079h
Format of FGDRIVER MOUSEPOS variable pointer record:
Offset Size Description (Table 3162)
00h WORD segment of WORD buffer for mouse column
02h WORD offset of WORD buffer for mouse column
04h WORD segment of WORD buffer for mouse row
06h WORD offset of WORD buffer for mouse row
08h WORD segment of WORD buffer for button status
0Ah WORD offset of WORD buffer for button status
Note: button status: bit 0 = left button, bit 1 = right, bit 2 = middle
--------V-62007B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
AX = 007Bh
ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
CX = X offset of hot spot from upper left corner
DX = Y offset of hot spot from upper left corner
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
SeeAlso: AX=0073h,AX=0075h,INT 33/AX=0009h
--------V-62007C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
AX = 007Ch
BX = horizontal mickeys per eight pixels of movement (default 16)
CX = vertical mickeys per eight pixels of movement (default 16)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
--------V-62007D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
AX = 007Dh
BX = new state (0000h invisible, 0001h visible)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0077h,INT 33/AX=0001h,INT 33/AX=0002h
--------V-62007E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
AX = 007Eh
BX = new column
CX = new row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
SeeAlso: AX=0054h,AX=0058h,AX=006Bh,AX=0079h,AX=007Fh,AX=00E0h
--------V-62007F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
AX = 007Fh
BX = column offset
CX = row offset
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
SeeAlso: AX=0054h,AX=0058h,AX=007Eh
--------V-620080-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MUSIC" - PLAY SERIES OF NOTES
AX = 0080h
ES:BX -> '$'-terminated music string in BASIC PLAY format
Return: after music completed
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
AX=00AAh) is already in progress
SeeAlso: AX=0081h,AX=00BCh,AX=00DBh
--------V-620081-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
AX = 0081h
CX = number of repetitions (negative = continuous play)
ES:BX -> '$'-terminated music string in BASIC PLAY format
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
AX=00AAh) is already in progress
SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
--------V-620082-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
AX = 0082h
Return: AX = NumLock state (0000h off, 0001h on)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=000Ah,AX=00A4h,AX=00A8h,AX=00B1h
--------V-620083-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PACK" - CONVERT PIXEL-PER-BYTE TO PACKED BITMAP
AX = 0083h
ES:BX -> variable pointer record (see #3163)
CX = width of bitmap in pixels
DX = height of bitmap in pixels
Return: result bitmap buffer updated
SeeAlso: AX=00CBh
Format of FGDRIVER PACK variable pointer record:
Offset Size Description (Table 3163)
00h WORD segment of source (mode-independent) bitmap
02h WORD offset of source (mode-independent) bitmap
04h WORD segment of buffer for result (mode-specific) bitmap
06h WORD offset of buffer for result (mode-specific) bitmap
--------V-620084-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PAGESIZE" - GET VIDEO PAGE SIZE FOR CURR MODE
AX = 0084h
Return: DX:AX = page size in bytes
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0072h
--------V-620085-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
AX = 0085h
BX = column
CX = row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function fills an arbitrary closed region around the specified
point with the current color; the screen edges are not considered
region boundaries
This call is ignored in text modes
SeeAlso: AX=0035h
--------V-620086-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
AX = 0086h
---CGA 4-color graphics---
BX = CGA paletee number
CX = background color
---CGA 2-color graphics---
BX ignored
CX = foreground color
---16-color graphics---
BX = palette register number
CX = palette value
---256-color graphics---
BX = DAC register number
CX = DAC value
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is ignored in text modes and Hercules graphics modes
Few EGA/VGA adapters correctly set the foreground color in CGA mode 6
SeeAlso: AX=0041h,AX=004Eh,AX=0087h,AX=00ABh
--------V-620087-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
AX = 0087h
ES:BX -> array of 16 WORDs containing values for palette registers
(or first 16 DAC registers in 256-color modes)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is ignored in text modes, CGA and Hercules graphics modes
SeeAlso: AX=0041h,AX=004Eh,AX=0086h,AX=00ABh
--------V-620088-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PAN" - SET SCREEN ORIGIN
AX = 0088h
BX = new column for screen origin
CX = new row for screen origin
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00B2h
--------V-620089-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
AX = 0089h
BX = index of pattern to define
CX = number of predefined display pattern
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
When displaying a pixel run map, Fastgraph uses the pattern associated
with each color index rather than displaying the actual color
This call has no effect in text and 256-color graphics modes
SeeAlso: AX=0023h,AX=0045h
--------V-62008A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PCXHEAD" - GET PCX FILE HEADER
AX = 008Ah
ES:BX -> variable pointer record (see #3164)
Return: AX = status
0000h successful
FFFEh not a PCX file
FFFFh file does not exist
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=008Bh,AX=00B9h
Format of FGDRIVER PCXHEAD variable pointer record:
Offset Size Description (Table 3164)
00h WORD segment of ASCIZ filename
02h WORD offset of ASCIZ filename
04h WORD segment of 128-byte buffer for PCX header
06h WORD offset of 128-byte buffer for PCX header
--------V-62008B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PCXMODE" - GET OPTIMAL VIDEO MODE FOR DISPLAY
AX = 008Bh
ES:BX -> PCX header (see AX=008Ah)
Return: AX = optimal video mode for PCX file
FFFEh not a valid PCX header
FFFFh unable to determine compatible video mode
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=008Ah,AX=00B9h
--------V-62008C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PCXPAL" - GET PALETTE STORED IN PCX FILE
AX = 008Ch
ES:BX -> variable pointer record (see #3165)
Return: AX = number of colors in palette (16 or 256) or
FFFEh not a valid PCX file
FFFFh file not found
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=008Dh
Format of FGDRIVER PCXPAL variable pointer record:
Offset Size Description (Table 3165)
00h WORD segment of ASCIZ .PCX filename
02h WORD offset of ASCIZ .PCX filename
04h WORD segment of buffer for .PCX palette RGB triples
06h WORD offset of buffer for .PCX palette RGB triples
Note: the buffer for the palette must hold at least three times as many bytes
as there are colors in the palette
SeeAlso: #3166
--------V-62008D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PCXRANGE" - GET EXTENT OF PCX IMAGE
AX = 008Dh
ES:BX -> variable pointer record (see #3166)
Return: indicated variables updated; if the indicated header is not valid,
all of the coordinate variables are set to FFFFh
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=008Ch
Format of FGDRIVER PCXRANGE variable pointer record:
Offset Size Description (Table 3166)
00h WORD segment of 128-byte PCX file header
02h WORD offset of 128-byte PCX file header
04h WORD segment of WORD buffer for X coordinate of image's left edge
04h WORD offset of WORD buffer for X coordinate of image's left edge
08h WORD segment of WORD buffer for X coordinate of image's right edge
0Ah WORD offset of WORD buffer for X coordinate of image's right edge
0Ch WORD segment of WORD buffer for Y coordinate of image's top edge
0Eh WORD offset of WORD buffer for Y coordinate of image's top edge
10h WORD segment of WORD buffer for X coordinate of image's bottom edge
12h WORD offset of WORD buffer for X coordinate of image's bottom edge
SeeAlso: #3165
--------V-62008E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
AX = 008Eh
Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DCh
--------V-62008F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POINT" - DISPLAY A PIXEL
AX = 008Fh
BX = column
CX = row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
SeeAlso: AX=0006h,AX=001Dh,AX=004Dh,AX=0090h
--------V-620090-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POINTX" - DISPLAY A PIXEL IN XOR MODE
AX = 0090h
BX = column
CX = row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
SeeAlso: AX=004Dh,AX=008Fh
--------V-620091-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYEDGE" - SPECIFY INCLUSION OF FINAL PIXELS
AX = 0091h
BX = edge flag
0000h include right- and bottom-edge pixels when drawing polygons
with FG_POLYFILL
0001h (default) exclue right- and bottom-edge pixels
SeeAlso: AX=0092h
--------V-620092-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYFILL" - DRAW A FILLED CONVEX POLYGON
AX = 0092h
CX = number of vertices
ES:BX -> variable pointer record (see #3167)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The vertex array consists of pairs of words specifying the X and Y
coordinates of each vertex; the work array is used internally and
must contain at least four times as many bytes as the polygon is
high in pixels
This function is ignored in text modes
If the polygon is non-convex, only a portion of it may be filled
SeeAlso: AX=000Eh,AX=0027h,AX=0091h,AX=0093h,AX=0094h,AX=0095h
Format of FGDRIVER POLYFILL variable pointer record:
Offset Size Description (Table 3167)
00h WORD segment of vertex array (see #3169)
02h WORD offset of vertex array
04h WORD segment of work array
06h WORD offset of work array
SeeAlso: #3168
--------V-620093-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
AX = 0093h
CX = number of vertices in polygon
ES:BX -> variable pointer record (see #3168)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
SeeAlso: AX=0091h,AX=0092h,AX=0094h,AX=0095h
Format of FGDRIVER POLYGON variable pointer record:
Offset Size Description (Table 3168)
00h WORD segment of WORD array containing vertex columns
02h WORD offset of WORD array containing vertex columns
04h WORD segment of WORD array containing vertex rows
06h WORD offset of WORD array containing vertex rows
SeeAlso: #3167
--------V-620094-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYLINE" - DRAW AN UNFILLED POLYGON
AX = 0094h
CX = number of vertices in polygon
ES:BX -> vertex array (see #3169)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is equivalent to "FG_POLYGON", but uses only a single
array to define the vertices
This call is ignored in text modes
SeeAlso: AX=008Fh,AX=0092h,AX=0093h,AX=0095h
Format of FGDRIVER POLYFILL/POLYLINE vertex array element:
Offset Size Description (Table 3169)
00h WORD column
02h WORD row
SeeAlso: #3168
--------V-620095-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_POLYOFF" - DEFINE POLYGON DRAWING OFFSET
AX = 0095h
BX = horizontal offset (default 0)
CX = vertical offset (default 0)
Desc: define the offsets applied to all vertices of polygons drawn with
"FG_POLYFILL" or "FG_POLYLINE"
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0092h,AX=0094h
--------V-620096-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PRINT" - DISPLAY STRING OF HARDWARE CHARACTERS
AX = 0096h
CX = length of string
ES:BX -> string to display
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The string is displayed in the current color, and the graphics cursor
is updated to be just to the right of the last displayed character
This function is ignored in text modes
SeeAlso: AX=000Ch,AX=0037h,AX=0065h,AX=0097h
--------V-620097-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PRINTC" - DISPLAY STRING OF HW CHARS (CLIPPED)
AX = 0097h
CX = length of string
ES:BX -> string to display
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The string is displayed in the current color, and the graphics cursor
is updated to be just to the right of the last displayed character;
only the portion of the string that lies within the current clipping
area is displayed
This function is ignored in text modes
SeeAlso: AX=0096h
--------V-620098-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PUTBLOCK" - RESTORE RECTANGLE OF DISPLAY
AX = 0098h
ES:BX -> buffer containing previously-saved image
CX = left edge
DX = right edge
SI = top edge
DI = bottom edge
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
In text modes, coordinates are character positions; in graphics modes,
they are defined in screen space, and the left and right edges are
adjusted to a byte boundary if necessary
SeeAlso: AX=003Ch,AX=0099h
--------V-620099-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_PUTIMAGE" - DISPLAY MODE-SPECIFIC BITMAP IMAGE
AX = 0099h
ES:BX -> buffer containing mode-specific bitmap
CX = width in bytes
DX = height in pixel rows
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The bitmap is displayed with its lower left corner at the graphics
cursor position; color 0 is NOT treated as transparent
SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=0098h
--------V-62009A-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
AX = 009Ah
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call has no effect if there is no continuous sound playing
SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00DCh
--------V-62009B-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
AX = 009Bh
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0006h,AX=0012h,AX=0023h,AX=003Ch
--------V-62009C-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
AX = 009Ch
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in graphics modes
The screen attributes are only restored if ANSI.SYS is loaded
SeeAlso: AX=0028h,AX=00B0h
--------V-62009D-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
AX = 009Dh
BX = new page width in pixels
CX = new page height in pixels
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The visible page must be set to 0000h before making this call
The mouse, joysticks, expanded memory, and extended memory must be
reinitialized after this call
SeeAlso: AX=0084h,AX=00ACh
--------V-62009E-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
AX = 009Eh
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The left and right edges are adjusted to byte boundaries if necessary
SeeAlso: AX=00A2h,AX=00C6h
--------V-62009F-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
AX = 009Fh
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00BDh,AX=00C0h
--------V-6200A0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
AX = 00A0h
ES:BX -> mode-specific bitmap
CX = width of bitmap in bytes
DX = height of bitmap in pixel rows
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
The image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=0011h,AX=0024h,AX=0036h,AX=0044h,AX=00A1h,AX=00A9h,AX=00B9h
--------V-6200A1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
AX = 00A1h
ES:BX -> array containing image stored as a masking map (see #3146)
CX = number of pixel runs in masking map
DX = width of masking map in pixels
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes and in native EGA and VGA graphics
modes
The image is drawn with its lower left corner at the current graphics
cursor position
SeeAlso: AX=0010h,AX=001Fh,AX=0034h,AX=00A0h,AX=00A9h,AX=00C5h
--------V-6200A2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
AX = 00A2h
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The left and right edges are adjusted to byte boundaries if necessary
SeeAlso: AX=009Eh,AX=00C6h
--------V-6200A3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SCALE" - SCALE BITMAP
AX = 00A3h
ES:BX -> variable pointer record (see #3170)
CX = width of source bitmap in pixels (0 < width <= 1024)
DX = height of source bitmap in pixels (0 < height <= 1024)
SI = desired width of scaled bitmap (0 < width <= 1024)
DI = desired height of scaled bitmap (0 < height <= 1024)
Return: nothing
SeeAlso: AX=00B7h
Format of FGDRIVER SCALE variable pointer record:
Offset Size Description (Table 3170)
00h WORD segment of source bitmap (one pixel per byte)
02h WORD offset of source bitmap
04h WORD segment of buffer for resulting scaled bitmap
06h WORD offset of buffer for resulting scaled bitmap
--------V-6200A4-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
AX = 00A4h
Return: AX = ScrollLock state (0000h off, 0001h on)
Program: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=000Ah,AX=0082h,AX=00A8h,AX=00B1h
--------V-6200A5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
AX = 00A5h
BX = left edge column
CX = right edge column
DX = top edge row
SI = bottom edge row
DI = number of pixels by which to scroll (positive scrolls up,
negative scrolls down)
ES = type of scroll
0000h circular (rows scrolled off are copied to vacated rows)
else vacated rows are filled with the current color
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
In graphics modes, the left and right edges are adjusted to byte
boundaries if necessary
Circular scrolling uses part of the hidden page as a workspace
SeeAlso: AX=0088h,AX=00B2h
--------V-6200A6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
AX = 00A6h
BX = foreground
CX = background
DX = blink (0000h nonblinking, 0001h blink)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in graphics modes
SeeAlso: AX=000Bh,AX=003Ah,AX=0048h
--------V-6200A7-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETBANKS" - SET SVGA READ AND WRITE BANKS
AX = 00A7h
BX = memory bank from which to read (FFFFh leave unchanged)
CX = memory bank to which to write (FFFFh leave unchanged)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=003Bh
--------V-6200A8-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
AX = 00A8h
BX = new state (0000h off, 0001h on)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=000Ah,AX=0082h,AX=00A4h,AX=00B1h
--------V-6200A9-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETCLIP" - SET CLIPPING REGION
AX = 00A9h
BX = left edge of clipping region
CX = right edge of clipping region
DX = top edge of clipping region
SI = bottom edge of clipping region
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0010h,AX=001Fh,AX=0034h,AX=003Eh,AX=00A1h,AX=00C5h
--------V-6200AA-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETCOLOR" - SET CURRENT COLOR
AX = 00AAh
BX = new color index (or text attribute in text modes)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0018h,AX=0040h,AX=0045h
--------V-6200AB-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
AX = 00ABh
CX = number of DAC registers to set (0001h to 0100h)
DX = starting DAC register number (0000h to 00FFh)
ES:BX -> buffer containing DAC red/green/blue triples
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The register number wraps back to zero after reaching FFh
This call has no effect in text modes or graphics modes below 11h
SeeAlso: AX=0041h,AX=004Eh,AX=0086h,INT 10/AX=1012h
--------V-6200AC-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETENTRY" - SET TYPE AND ADDRESS OF VIDEO PAGE
AX = 00ACh
BX = page number (00h-3Fh)
CX = page address
DX = page type (see #3155 at AX=0042h)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0038h,AX=0042h,AX=00B0h
--------V-6200AD-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
AX = 00ADh
BX = operation
0000h replacement
0001h AND
0002h OR
0003h XOR
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is only available in native EGA/VGA graphics modes
(0Dh to 12h)
SeeAlso: AX=001Eh,AX=008Fh
--------V-6200AE-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
AX = 00AEh
BX = new hidden page (0000h to 003Fh)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The specified page must be a physical page or a virtual page
SeeAlso: AX=0043h,AX=00B2h,AX=00B6h
--------V-6200AF-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
AX = 00AFh
BX = new screen size (25, 43, 50)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0047h
--------V-6200B0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
AX = 00B0h
BX = new video mode or FFFFh for current mode (see #3171)
ES:DX -> WORD shareware splash screen flag
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call resets the active video page to page 0000h, the clipping
region to the entire screen, text rows to 25, etc.
in the shareware version, FGDRIVER sets the word pointed at by ES:DX
to 9090h after it shows the shareware announcement to the user
SeeAlso: AX=004Bh,INT 10/AH=00h
(Table 3171)
Values for FGDRIVER video mode:
00h-07h standard BIOS modes
09h PCjr/Tandy1000 320x200x16
0Bh Hercules graphics 720x348
0Ch Hercules graphics 320x200
0Dh-13h standard BIOS modes
14h VGA graphics 320x200x256
15h VGA graphics 320x400x256
16h VGA graphics 320x240x256
17h VGA graphics 320x480x256
18h SVGA graphics 640x400x256
19h SVGA graphics 640x480x256
1Ah SVGA graphics 800x600x256
1Bh SVGA graphics 1024x768x256
1Ch SVGA graphics 800x600x16
1Dh SVGA graphics 1024x768x16
--------V-6200B1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
AX = 00B1h
BX = new state (0000h off, 0001h on)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=000Ah,AX=0082h,AX=00A4h,AX=00A8h
--------V-6200B2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
AX = 00B2h
BX = new video page (0000h to 003Fh)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The specified page must be a physical or virtual page
SeeAlso: AX=0039h,AX=0042h,AX=0043h,AX=0050h,AX=0088h
--------V-6200B3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
AX = 00B3h
BX = palette or DAC register number
CX = red color component
DX = green component
SI = blue component
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The register number may be negative for Tandy, PCjr, and 200-line
EGA graphics modes to specify an intense color
This call has no effect in text, CGA graphics, and Hercules graphics
modes
SeeAlso: AX=004Eh
--------V-6200B4-----------------------------
INT 62 u - FGDRIVER v4.02 - UNUSED
AX = 00B4h
Return: AX = 0000h
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
--------V-6200B5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETVIEW" - DEFINE VIEWPORT
AX = 00B5h
ES:BX -> variable record (see #3172)
CX = viewport's top edge in screen space
DX = viewport's bottom edge in screen space
Return: nothing
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=004Fh
Format of FGDRIVER SETVIEW variable record:
Offset Size Description (Table 3172)
00h WORD viewport's left edge in viewport units
02h WORD viewport's right edge in viewport units
04h WORD viewport's top edge in viewport units
06h WORD viewport's bottom edge in viewport units
08h WORD viewport's left edge in screen space
0Ah WORD viewport's right edge in screen space
--------V-6200B6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
AX = 00B6h
BX = new video page (0000h to 003Fh)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The specified page must be a physical or virtual page
SeeAlso: AX=0043h,AX=00AEh,AX=00B2h
--------V-6200B7-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHEAR" - SHEAR UNPACKED BITMAP
AX = 00B7h
ES:BX -> variable pointer record (see #3173)
CX = bitmap width (0 < width <= 1024)
DX = bitmap height (0 < height <= 1024)
SI = size of resulting image (width for horiz. shear, height for vert.)
DI = shear type
0000h horizontal shear to left
0001h horizontal shear to right
0002h vertical shear to left (left edge stretched up)
0003h vertical shear to right (right edge stretched up)
Return: nothing
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=00A3h
Format of FGDRIVER SHEAR variable pointer record:
Offset Size Description (Table 3173)
00h WORD segment of source bitmap
02h WORD offset of source bitmap
04h WORD segment of buffer for resulting bitmap
06h WORD offset of buffer for resulting bitmap
--------V-6200B8-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHOWFLIC" - DISPLAY IMAGE FROM FLI/FLC FILE
AX = 00B8h
ES:BX -> ASCIZ filename for FLI/FLC file
CX = number of times to display image file (0000h = continuously)
DX = control flags (see #3150 at AX=0031h)
Return: AX = status
0000h successful
0001h file not found
0002h not a valid FLI/FLC file
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
the FLI/FLC display may be stopped by the user by pressing Esc
SeeAlso: AX=0030h,AX=0031h,AX=00B9h
--------V-6200B9-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHOWPCX" - DISPLAY IMAGE FROM PCX FILE
AX = 00B9h
ES:BX -> ASCIZ filename of PCX image
CX = flags (see #3174)
Return: AX = status
0000h success
0001h file not found
0002h not a PCX file
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is ignored in text modes and Hercules low-res graphics
SeeAlso: AX=005Bh,AX=0060h"1.10",AX=006Ch,AX=006Dh,AX=006Eh,AX=00B8h,AX=00BAh
SeeAlso: AX=00BBh
Bitfields for FGDRIVER flags:
Bit(s) Description (Table 3174)
0 use current palette rather than PCX file's palette
1 display image at cursor position instead of position in PCX header
2-15 reserved
--------V-6200BA-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHOWPPR" - DISPLAY IMAGE FROM PPR FILE
AX = 00BAh
ES:BX -> ASCIZ filename of packed pixel run image
CX = width in pixels (nonzero)
Return: AX = status
0000h successful
0001h file not found
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The image is displayed with its lower left corner at the current
graphics cursor position
This function is ignored in text modes and 256-color graphics modes
SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BBh
--------V-6200BB-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SHOWSPR" - DISPLAY IMAGE FROM SPR FILE
AX = 00BBh
ES:BX -> ASCIZ filename of standard pixel run image
CX = width in pixels (nonzero)
Return: AX = status
0000h successful
0001h file not found
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The image is displayed with its lower left corner at the current
graphics cursor position
This function is ignored in text modes
SeeAlso: AX=005Bh,AX=006Ch,AX=006Dh,AX=006Eh,AX=00B9h,AX=00BAh
--------V-6200BC-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
AX = 00BCh
BX = frequency in Hertz (18-32767)
CX = duration in clock ticks (0000h or negative for continuous sound)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
AX=00AAh) is already in progress
SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00C0h,AX=00DBh
--------V-6200BD-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
AX = 00BDh
CX = number of times to cycle through sound list
ES:BX -> sounds array (see #3175)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored if asynchronous sound (AX=00A5h,AX=00A8h,
AX=00AAh) is already in progress
SeeAlso: AX=0059h,AX=0081h,AX=00BCh,AX=00C0h,AX=00DCh
Format of FGDRIVER sounds array element:
Offset Size Description (Table 3175)
00h WORD frequency of sound in Hertz (0000h ends array)
02h WORD duration of sound in clock ticks
--------V-6200BE-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SPLIT" - ENABLE/DISABLE SPLIT SCREEN ENVIRONMNT
AX = 00BEh
BX = beginning row for bottom half of split-screen
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
--------V-6200BF-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
AX = 00BFh
BX = duration in processor-dependent delay units (see AX=0070h)
Return: after delay elapses
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0070h,INT 2F/AX=1224h
--------V-6200C0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
AX = 00C0h
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call has no effect if there is no asynchronous sound in progress
The program must not exit while sound is suspended
SeeAlso: AX=0059h,AX=0080h,AX=00BDh,AX=00C0h,AX=00DBh
--------V-6200C1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SVGAINIT" - INITIALIZE FASTGRAPH SVGA KERNEL
AX = 00C1h
BX = method (see #3176)
Return: AX = status
0000h no VESA BIOS or supported SVGA chipset
0001h using VESA BIOS
0002h-0016h specific chipset being used (same as "method" below)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function must be called before attempting to set SVGA graphics
modes (18h to 1Dh) or using "FG_BESTMODE", "FG_TESTMODE", or
"FG_MEMORY"
SeeAlso: AX=0025h,AX=00C2h,AX=00C3h
(Table 3176)
Values for FGDRIVER SVGA method:
0000h autodetect, give chipset-specific code priority over VESA
0001h autodetect, give VESA priority over chipset-specific code
0002h Ahead type "A"
0003h Ahead type "B"
0004h ATI 18800
0005h ATI 18800-1
0006h ATI 28800
0007h Chips & Technologies 82c451/455/456
0008h C&T 82c452
0009h C&T 82c453
000Ah Genoa 6000 series
000Bh Oak OTI-067
000Ch Paradise PVGA1a
000Dh Paradise WD90C00/WD90C10
000Eh Paradise WD90C11/WD90C30/WD90C31
000Fh Trident 8800
0010h Trident 8900
0011h Tseng ET3000
0012h Tseng ET4000
0013h Video7
0014h Cirrus Logic 5400 series
0015h S3
0016h Trident 8900B/8900C/9000
--------V-6200C2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SVGASTAT" - GET SVGA CHIPSET INFORMATION
AX = 00C2h
Return: AX = chipset information (see #3177)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0025h,AX=00C1h,AX=00C3h
Bitfields for FGDRIVER chipset information:
Bit(s) Description (Table 3177)
0 SVGA kernel initialized
1 VESA support enabled
2 extended video pages available in modes 13-23
3 SVGA chipset has separate read and write banks
4-15 reserved (0)
--------V-6200C3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_SVGAVER" - GET FASTGRAPH SVGA KERNEL VERSION
AX = 00C3h
ES:BX -> variable pointer record (see #3178)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00C1h,AX=00C2h
Format of FGDRIVER variable pointer record:
Offset Size Description (Table 3178)
00h WORD segment of WORD buffer for major version
02h WORD offset of WORD buffer for major version
04h WORD segment of WORD buffer for minor version (hundredths)
06h WORD offset of WORD buffer for minor version
--------V-6200C4-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TCDEFINE" - DEFINE TRANSPARENCY OF COLOR INDEX
AX = 00C4h
BX = color index
CX = transparency (00h opaque, other transparent)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is ignored in text modes
SeeAlso: AX=00C5h,AX=00C6h
--------V-6200C5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TCMASK" - SET TRANSPARENT COLORS
AX = 00C5h
BX = colors to consider transparent (bit 0 = color 0, etc)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This call is ignored in text modes
The specified colors are considered transparent by "FG_TCXFER"
SeeAlso: AX=00C4h,AX=00C6h
--------V-6200C6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
AX = 00C6h
CX = source video page
DX = destination video page
ES:BX -> copy record (see #3179)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
Pixels which are in any of the colors defined as transparent with
"FG_TCMASK" (see AX=00C5h) are left unchanged in the destination
region
The source and destination regions must not overlap if they are located
on the same page
This call is ignored in text modes
SeeAlso: AX=00C4h,AX=00C5h,AX=00CAh
--------V-6200C7-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
AX = 00C7h
BX = desired video mode (00h-17h, also 18h-1Dh after "FG_SVGAINIT")
CX = required number of video pages (ignore memory size if <= 0)
Return: AX = status
0000h mode not available with requested number of pages
0001h mode is available
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0005h,AX=00B0h
--------V-6200C8-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
AX = 00C8h
CX = length of string
ES:BX -> string
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The string is displayed starting at the text cursor position using the
current text attribute (text modes) or color index (graphics modes)
The text cursor position is updated after this call
SeeAlso: AX=000Ch,AX=0096h,AX=00C9h
--------V-6200C9-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TEXTC" - DISPLAY STRING OF CHARACTERS (CLIPPED)
AX = 00C9h
CX = length of string
ES:BX -> string
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
The string is displayed starting at the text cursor position using the
current text attribute (text modes) or color index (graphics modes),
showing only the portion within the current clipping window
The text cursor position is updated after this call
SeeAlso: AX=00C8h
--------V-6200CA-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_TRANSFER" - COPY REGION
AX = 00CAh
CX = source video page
DX = destination video page
ES:BX -> copy record (see #3179)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
The source and destination regions must not overlap if they are located
on the same page
SeeAlso: AX=009Eh,AX=00A2h,AX=00A5h,AX=00C6h
Format of FGDRIVER copy record:
Offset Size Description (Table 3179)
00h WORD left edge column of source region
02h WORD right edge column of source region
04h WORD top edge row of source region
06h WORD bottom edge row of source region
08h WORD left edge of destination
0Ah WORD bottom edge of destination
--------V-6200CB-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_UNPACK" - EXPAND MODE-SPECIFIC BITMAP
AX = 00CBh
ES:BX -> variable pointer record (see #3180)
CX = size of source bitmap in bytes
Return: result buffer filled
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=0083h
Format of FGDRIVER UNPACK variable pointer record:
Offset Size Description (Table 3180)
00h WORD segment of source bitmap
02h WORD offset of source bitmap
04h WORD segment of buffer for resulting bitmap
06h WORD offset of buffer for resulting bitmap
--------V-6200CC-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBADDR" - GET ADDRESS OF VIRTUAL BUFFER
AX = 00CCh
BX = virtual buffer handle (0000h-001Fh)
Return: DX:AX -> virtual buffer
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=00CDh,AX=00CEh,AX=00CFh,AX=00D3h
--------V-6200CD-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBALLOC" - CREATE VIRTUAL BUFFER
AX = 00CDh
BX = width of virtual buffer in pixels
CX = height in pixels
Return: AX = handle for virtual buffer, or
FFFEh out of memory
FFFFh virtual buffer table full
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=00CCh,AX=00CEh,AX=00D0h,AX=00D1h,AX=00D2h,AX=00D4h
--------V-6200CE-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBCLOSE" - CLOSE ACTIVE VIRTUAL BUFFER
AX = 00CEh
Desc: close the active virtual buffer and direct further graphics to the
active video page
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=00CCh,AX=00D1h,AX=00D4h,AX=00D5h,AX=00D9h
--------V-6200CF-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBCOPY" - COPY RECT BETWEEN VIRTUAL BUFFERS
AX = 00CFh
ES:BX -> variable record (see #3181)
CX = handle for source virtual buffer
DX = handle for destination virtual buffer
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
if the destination buffer is the same as the source buffer, the regions
must not overlap
SeeAlso: AX=00D0h,AX=00D1h,AX=00D4h,AX=00D6h,AX=00D7h
Format of FGDRIVER VBCOPY variable record:
Offset Size Description (Table 3181)
00h WORD source region's left edge
02h WORD source region's right edge
04h WORD source region's top edge
06h WORD source region's bottom edge
08h WORD X coordinate of destination's upper left corner
0Ah WORD Y coordinate of destination's upper left corner
--------V-6200D0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBCUT" - COPY RECT FROM VIDEO TO VIRTUAL BUFFER
AX = 00D0h
BX = source region's left edge
CX = source region's right edge
DX = source region's top edge
SI = source region's bottom edge
DI = X coordinate of destination's upper left corner
ES = Y coordinate of destination's upper left corner
Desc: copy a rectangle from the active video page to the active virtual
buffer
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=00CDh,AX=00CFh,AX=00D4h,AX=00D6h
--------V-6200D1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBDEFINE" - CREATE VIRTUAL BUFFER
AX = 00D1h
ES:BX -> memory block for virtual buffer
CX = buffer width in pixels
DX = buffer height in pixels
Return: AX = virtual buffer handle
FFFFh on error
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
the application-provided buffer must be large enough to hold CX*DX
bytes
SeeAlso: AX=00CCh,AX=00CDh,AX=00CEh,AX=00D2h,AX=00D4h,AX=00D5h
--------V-6200D2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBFREE" - RELEASE VIRTUAL BUFFER
AX = 00D2h
BX = virtual buffer handle
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
this function should be used only for buffers created with FG_VBALLOC
SeeAlso: AX=00CDh,AX=00D4h,AX=00D5h
--------V-6200D3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBHANDLE" - GET ACTIVE VIRTUAL BUFFER'S HANDLE
AX = 00D3h
Return: AX = handle for active virtual buffer
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=00CCh,AX=00D4h
--------V-6200D4-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBINIT" - INITIALIZE VIRTUAL BUFFER ENVIRONMENT
AX = 00D4h
Return: nothing
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
this function must be called before any other virtual buffer functions
are used
SeeAlso: AX=00CDh,AX=00D5h
--------V-6200D5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBOPEN" - MAKE VIRTUAL BUFFER ACTIVE
AX = 00D5h
BX = virtual buffer handle
Return: AX = status
0000h successful
FFFEh no buffer defined for specified handle
FFFFh invalid buffer handle
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=00CDh,AX=00CEh,AX=00D1h,AX=00D4h,AX=00D9h
--------V-6200D6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBPASTE" - COPY RECT FROM VIRTUAL BUF TO VIDEO
AX = 00D6h
BX = source region's left edge
CX = source region's right edge
DX = source region's top edge
SI = source region's bottom edge
DI = X coordinate of destination's upper left corner
ES = Y coordinate of destination's upper left corner
Desc: copy a rectangle from the active virtual buffer to the active video
page
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=00CFh,AX=00D0h,AX=00D4h,AX=00D7h
--------V-6200D7-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBTCCOPY" - COPY RECTANGLE BETWEEN VIRTUAL BUFS
AX = 00D7h
ES:BX -> variable record (see #3182)
CX = source virtual buffer's handle
DX = destination virtual buffer's handle
Desc: copy rectangle from one virtual buffer to another with transparent
colors
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
if the destination buffer is the same as the source buffer, the regions
must not overlap
SeeAlso: AX=00CFh,AX=00D0h,AX=00D6h,AX=00D8h
Format of FGDRIVER VBTCCOPY variable record:
Offset Size Description (Table 3182)
00h WORD source region's left edge
02h WORD source region's right edge
04h WORD source region's top edge
06h WORD source region's bottom edge
08h WORD X coordinate of destination region's upper left corner
0Ah WORD Y coordinate of destination region's upper left corner
--------V-6200D8-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBTCXFER" - COPY RECTANGLE TO ACTIVE VIDEO PAGE
AX = 00D8h
BX = source region's left edge
CX = source region's right edge
DX = source region's top edge
SI = source region's bottom edge
DI = X coordinate of destination's upper left corner
ES = Y coordinate of destination's upper left corner
Desc: copy a rectangle from the active virtual buffer to the active video
page, with transparent colors
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
SeeAlso: AX=00D6h,AX=00D7h
--------V-6200D9-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VBUNDEF" - RELEASE HANDLE FOR VIRTUAL BUFFER
AX = 00D9h
BX = virtual buffer handle
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
the specified handle must not reference the currently-active virtual
buffer
SeeAlso: AX=00D1h,AX=00D5h
--------V-6200DA-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VGASTATE" - SAVE/RESTORE VGA CONTROLLER STATE
AX = 00DAh
BX = direction (0000h save, else restore)
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145)
this function is only meaningful in modes 0Dh and above
--------V-6200DB-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VOICE" - START SOUND
AX = 00DBh
BX = channel on TI sound chip
1-3 = channels 1-3, 4 = channel 4 with periodic noise,
5 = channel 4 with white noise
CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
2=2048 Hz for channels 4 and 5)
DX = volume
SI = duration in clock ticks (continuous if <= 0)
Program: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is only available on the PCjr and Tandy 1000 machines
SeeAlso: AX=0080h,AX=00BCh,AX=00DCh
--------V-6200DC-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
AX = 00DCh
ES:BX -> tone array (see #3183)
CX = number of times to repeat tone array
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
This function is only available on the PCjr and Tandy 1000 machines
SeeAlso: AX=0059h,AX=0081h,AX=00BDh,AX=00DBh
Format of FGDRIVER tone array element:
Offset Size Description (Table 3183)
00h WORD channel number (0000h terminates array)
02h WORD frequency
04h WORD volume
06h WORD duration in 1/72.8 seconds
--------V-6200DD-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
AX = 00DDh
BX = duration in clock ticks
Return: after delay elapses
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00BFh,INT 1A/AX=FF01h
--------V-6200DE-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
AX = 00DEh
Return: after next key pressed
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=000Ah,AX=0046h,AX=0063h,AX=0069h,INT 16/AH=00h
--------V-6200DF-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_WAITVR" - ENABLE/DISABLE VERTICAL RETRACE WAIT
AX = 00DFh
BX = new state (0000h disabled, 0001h enabled)
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
--------V-6200E0-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_WHERE" - GET CURRENT CURSOR POSITION
AX = 00E0h
ES:BX -> variable pointers (see #3184)
Return: indicated variables filled with cursor row and column for active
display
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=0054h,AX=0058h,AX=006Bh,AX=007Eh
Format of FGDRIVER variable pointers:
Offset Size Description (Table 3184)
00h WORD segment of WORD buffer for cursor row
02h WORD offset of WORD buffer for cursor row
04h WORD segment WORD buffer for cursor column
06h WORD offset WORD buffer for cursor column
--------V-6200E1-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
AX = 00E1h
BX = screen space column
Return: AX = character space column containing specified coordinate
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00E2h,AX=00E4h
--------V-6200E2-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
AX = 00E2h
BX = character space column
Return: AX = screen space column of leftmost pixel in specified character col
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00E2h,AX=00E5h
--------V-6200E3-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_XVIEW" - CONVERT VIEWPORT COORDINATE
AX = 00E3h
BX = horizontal viewport coordinate
Return: AX = screen space X coordinate corresponding to supplied coordinate
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
if no viewport has been defined, the returned coordinate will be the
same as the viewport coordinate
SeeAlso: AX=00E2h,AX=00E6h
--------V-6200E4-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
AX = 00E4h
BX = screen space row
Return: AX = character space row containing specified coordinate
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00E1h,AX=00E5h
--------V-6200E5-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
AX = 00E5h
BX = character space row
Return: AX = screen space row of topmost pixel in specified character row
Note: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
SeeAlso: AX=00E2h,AX=00E4h,AX=00E6h
--------V-6200E6-----------------------------
INT 62 u - FGDRIVER v4.02 - "FG_YVIEW" - TRANSLATE VERTICAL VIEWPORT COORDINATE
AX = 00E6h
BX = viewport Y coordinate
Return: AX = screen space row for viewport coordinate
Program: FGDRIVER is the external video driver for the shareware
Fastgraph/Light by Ted Gruber Software
Notes: the FGDRIVER functions are rearranged with each major release, but
their parameters do not change (see #3145 at AX=0000h)
if no viewport has been defined, the returned coordinate will be the
same as the viewport coordinate
SeeAlso: AX=00E3h,AX=00E5h
--------T-6201-------------------------------
INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
AH = 01h
Program: Cswitch is a set of multitasking functions by Herb Rose
SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h
--------N-6201-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
AH = 01h
Return: CF clear if successful
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-6202-------------------------------
INT 62 - Cswitch - WAIT FOR SEMAPHORE
AH = 02h
DX = semaphore number (0-63)
Return: AX = FFFFh bad semaphore number
else success
SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"
--------N-6202-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - INITIALIZE
AH = 02h
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AH=00h"ETHDEV",AH=03h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
--------T-6203-------------------------------
INT 62 - Cswitch - CHECK SEMAPHORE
AH = 03h
DX = semaphore number (0-63)
Return: AX = status
FFFFh not owned
else owned
SeeAlso: AH=02h,AH=04h
--------N-6203-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET REAL IP ADDRESS
AH = 03h
DS:SI -> DWORD buffer for IP address
Return: CF clear if successful
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-6204-------------------------------
INT 62 - Cswitch - TRIGGER SEMAPHORE
AH = 04h
DX = semaphore number (0-63)
Return: AX = status
FFFFh bad semaphore number
else success
SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"
--------N-6204-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
AH = 04h
BX = ???
ES:SI -> FAR routine for ???
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-6205-------------------------------
INT 62 - Cswitch - SLEEP
AH = 05h
BX = seconds to sleep
SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"
--------N-6205-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
AH = 05h
???
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-6206-------------------------------
INT 62 - Cswitch - SUSPEND
AH = 06h
SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"
--------N-6206-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
AH = 06h
???
Return: CF clear if successful
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-6207-------------------------------
INT 62 - Cswitch - SPAWN
AH = 07h
ES:BX -> function address to start executing at
CX = priority (1-10)
Return: AX = result/status
FFFDh no free memory control blocks
FFFEh no free task control blocks
FFFFh not enough memory to create new task stack
>0 the tcb number of the new task, indicating no error
SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"
--------N-6207-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
AH = 07h
DS:SI -> ???
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-6208-------------------------------
INT 62 - Cswitch - WAKE UP TASK
AH = 08h
BX = tcb identifier
SeeAlso: AH=05h,AH=06h
--------N-6208-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
AH = 08h
CX = ???
ES:SI -> ??? buffer (see #3185)
Return: CF clear if successful
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
Format of BW-TCP ??? buffer:
Offset Size Description (Table 3185)
00h 6 BYTEs hardware address???
06h 6 BYTEs ???
0Ch WORD ???
0Eh WORD ???
----------6208--CXFFFE-----------------------
INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
AH = 08h
CX = FFFEh
DX = FFFFh
Return: AX = PSP address of resident DBLIBRARY
Note: this call does not free the memory allocated to the TSR; the calling
code must do the deallocation.
SeeAlso: INT 62"DBLIBRARY"
--------T-6209-------------------------------
INT 62 - Cswitch - SET PRIORITY
AH = 09h
BX = new base priority (1-10)
Note: the lower the priority is numerically, the more often the task will run
--------N-6209-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - HOOK TIMER INTERRUPT
AH = 09h
Return: CF clear if successful
AX = handler ID
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=0Ah"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-620A-------------------------------
INT 62 - Cswitch - TEST MESSAGE QUEUE
AH = 0Ah
DX = queue number (0-63)
Return: AX = result/message size
0000h nothing on queue
FFFFh bad queue number
else number of bytes in first message in queue
SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"
--------N-620A-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - UNHOOK TIMER INTERRUPT
AH = 0Ah
DX = handler ID
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AH=09h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-620B-------------------------------
INT 62 - Cswitch - SEND MESSAGE
AH = 0Bh
CX = number of bytes to write
DS:SI -> buffer
DX = queue number (0-63)
Return: AX = result/message size
0000h no message was on queue
FFFEh triggered by something arriving, redo the call
FFFFh bad queue number
else number of bytes in message
SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"
--------N-620B-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ADD ???
AH = 0Bh
AL = ???
DX = ???
BP = ???
ES:SI -> ???
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AH=0Ch"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-620C-------------------------------
INT 62 - Cswitch - READ MESSAGE
AH = 0Ch
CX = number of bytes to read
DS:SI -> buffer
DX = queue number (0-63)
Return: AX = status
FFFFh bad queue number
else number of bytes transferred
SeeAlso: AH=0Ah,AH=0Bh
--------N-620C-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - REMOVE ???
AH = 0Ch
DX = ???
BP = ???
Return: CF clear if successful
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=0Bh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-620D-------------------------------
INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
AH = 0Dh
SeeAlso: AH=0Eh"Cswitch"
--------N-620D-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
AH = 0Dh
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-620E-------------------------------
INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
AH = 0Eh
SeeAlso: AH=0Dh"Cswitch"
--------N-620E-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - BEGIN CRITICAL SECTION
AH = 0Eh
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AH=0Fh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
--------T-620F-------------------------------
INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
AH = 0Fh
ES:BX -> command line
CX = priority (1-10)
DX = background flag (nonzero allows loading to EMS)
Return: AX = status
0000h task loader queue is full
0001h no error
SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"
--------N-620F-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - END CRITICAL SECTION
AH = 0Fh
Return: CF clear if successful
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=0Eh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
--------T-6210-------------------------------
INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
AH = 10h
SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"
--------N-6210-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - QUERY CRITICAL SECTION
AH = 10h
Return: CF clear if no critical section active
CF set if in critical section
SeeAlso: AH=0Eh"ETHDEV",AH=0Fh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h"BW-TCP",INT 64/AH=01h"BW-NFS"
--------T-6211-------------------------------
INT 62 - Cswitch - GET TCB INFORMATION
AH = 11h
ES:BX -> a pointer which will be set to the tcb address
Return: AX = tcb indentifier
SeeAlso: AH=12h
--------N-6211-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
AH = 11h
ES:SI -> ???
Return: CF clear
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-6212-------------------------------
INT 62 - Cswitch - GET TCB ADDRESS
AH = 12h
ES:BX -> a pointer which will be set to the tcb table address
Return: AX = tcb indentifier
SeeAlso: AH=11h"Cswitch"
--------N-6212-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET SOCKET NUMBER???
AH = 12h
Return: CF clear if successful
AX = socket number??? (memory variable incremented after reading)
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------T-6213-------------------------------
INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
AH = 13h
Return: AX = result
FFFCh no Memory Control Blocks available
FFFDh no TCBs available
FFFEh insufficient memory
FFFFh cannot open file
0000h load in progress (not done yet)
else tcb indentifier
SeeAlso: AH=0Fh
--------N-6213-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
AH = 13h
CX = ???
Return: CF clear if successful
AL = 00h
CF set on error
AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------N-6214-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
AH = 14h
ES:SI -> ???
Return: CF clear if successful
AL = 00h
CF set on error
AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------N-6215-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET ???
AH = 15h
Return: CF clear if successful
AX = ??? (destroyed???)
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
Notes: call this function after reading the "ETHDEV27" device
the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
INT 64/AH=01h"BW-NFS"
--------N-6216-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
AH = 16h
???
Return: CF clear if successful
CF set on error
AL = error code
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------N-6217-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
AH = 17h
DX = segment of ???
Return: CF clear
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=24h"BW-TCP"
SeeAlso: INT 64/AH=01h"BW-NFS"
--------N-6218-------------------------------
INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ALLOCATE AND MAP EMS FOR DRIVER
AH = 18h
Return: CF clear if successful
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
Notes: calls function 17h after EMS allocated and mapped
the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63/AH=03h"BW-TCP",INT 63/AH=24h
SeeAlso: INT 64/AH=01h"BW-NFS"
--------R-6247-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
AH = 47h
AL = subfunction (00h-31h)
???
CF set
Return: ???
Program: COMMUTE is a remote-control program bundled with Central Point
Software's PC Tools
--------R-6248-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
AH = 48h
AL = ???
???
CF set
Return: ???
--------R-6249-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
AH = 49h
???
CF set
Return: ???
Note: may be the same as AH=4Ch
--------R-624A-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
AH = 4Ah
AL = subfunction (00h-46h)
???
CF set
Return: ???
--------R-624B--BX1234-----------------------
INT 62 - PC Tools v7 COMMUTE - ???
AH = 4Bh
BX = 1234h
CX = 1234h
ES = ???
CF set
Return: ???
Program: COMMUTE is a remote-control program bundled with Central Point
Software's PC Tools
--------R-624C-------------------------------
INT 62 - PC Tools v7 COMMUTE - ???
AH = 4Ch
BL = subfunction
00h ???
02h ???
Return: CF clear if successful
CF set on error
--------R-626262-----------------------------
INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
AX = 6262h
CF set
Return: AX = 0000h
BX = segment of resident code's PSP
Program: COMMUTE is a remote-control program bundled with Central Point
Software's PC Tools
--------s-62C0-------------------------------
INT 62 U - GWBTSR - API
AH = C0h
AL = function
00h installation check
Return: AX = 00FFh if installed
01h ???
Program: GWBTSR is a huge (48K) resident mixer controller for the Gateway 2000
sound card (OEM version of Aztech Sound Galaxy)
Index: installation check;GWBTSR
--------N-62FE-------------------------------
INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
AH = FEh
AL = direction
00h map in driver's memory block
01h map out driver's memory block
Return: CF clear if successful
CF set on error
AL = error code
Range: INT 4C to INT FB, selected by configuration
Notes: this function is supported by at least the SLIP and ODI versions of
ETHDEV.SYS
the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=00h"ETHDEV",INT 62/AH=18h"ETHDEV"
SeeAlso: INT 63/AH=03h"BW-TCP",INT 63/AH=24h,INT 64/AH=FEh
--------*-63---------------------------------
INT 63 - reserved for user interrupt
--------d-63---------------------------------
INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
Desc: this vector stores the last four bytes of the parameter table for
hard disk 0
SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
--------b-63---------------------------------
INT 63 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
Desc: the low word of this vector contains the segment of the RAM data area
to be used by the expansion ROM at F400h:4000h, and the high word
contains the length of the data area; this segment and size are
both set to 0000h if no ROM is installed at F400h:4000h
SeeAlso: INT 60"TI Professional PC",INT 62"TI Professional"
SeeAlso: INT 64"TI Professional PC"
----------63---------------------------------
INT 63 - Oracle SQL Protected Mode Executive - ???
--------d-63---------------------------------
INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
Desc: the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
INT 13 has been moved there) and places the old value here
----------63---------------------------------
INT 63 - Kofax KF9X00 image manipulation card interface
--------Q-63---------------------------------
INT 63 - DESQview/X - SOCKET API
Notes: parameters are passed by patching (!) data field immediately following
the entry point, as detailed below (see #3186); the preferred
method for calling the socket API is via INT 15/AX=DE2Eh
the installation check consists of testing for the string "dvxunix"
(yes, lowercase) at offset 9 from the interrupt handler start
(see #3186)
SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
Index: installation check;DESQview/X socket interface
Format of DESQview/X socket interrupt handler entry:
Offset Size Description (Table 3186)
00h 3 BYTEs near jump or short jump + NOP to actual interrupt handler
03h WORD offset from following pointer for initial top of local stack
05h DWORD pointer to argument/stack block (see INT 15/AX=DE2Eh)
09h 7 BYTEs signature "dvxunix"
--------b-6300-------------------------------
INT 63 - HP 100LX - MAP HIGH MEMORY
AH = 00h
AL = physical page (00h seg C000, 01h seg C400h, ...)
BX = zero-based logical page
CX = page number
DX = device ID (00h system ROM, 05h plugin, etc.)
Return: ???
SeeAlso: AH=01h
--------N-6300-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
AH = 00h
DS:BX -> DWORD containing IP address (big-endian)
Return: CF clear if successful
CF set on error
AX destroyed
Range: INT 4D to INT FC, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
--------b-6301-------------------------------
INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
AH = 01h
AL = function (00h save, 01h restore)
???
Return: ???
--------N-6301-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 01h
ES:BX -> ???
???
Return: ???
Range: INT 4D to INT FC, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
--------N-6302-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 02h
???
Return: ???
SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
--------N-6303-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
AH = 03h
DS:SI -> buffer for DWORD IP address (big-endian)
Return: AX destroyed
CF clear if successful
CF set on error
Note: this call may use ARP or RARP to determine the address
--------N-6304-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 04h
???
Return: ???
--------N-6305-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 05h
DS:BX -> ???
ES:SI -> ???
Return: ???
Range: INT 4D to INT FC, selected by configuration
--------N-6306-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 06h
???
Return: ???
--------N-6307-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 07h
???
Return: ???
--------N-6308-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
AH = 08h
DS:BX -> DWORD containing IP address
Return: CF clear if successful
CF set on error
???
--------N-6309-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
AH = 09h
BL = handler type
ES:SI -> FAR handler of specified type
Return: ???
SeeAlso: AH=0Ah,AH=0Dh
--------N-630A-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
AH = 0Ah
BL = handler type
Return: CF clear if successful
CF set on error (no handler of specified type installed)
SeeAlso: AH=09h
--------N-630B-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 0Bh
AL = ???
DL = ???
DS:BX -> ???
ES:SI -> ???
Return: ???
--------N-630C-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 0Ch
???
Return: ???
Range: INT 4D to INT FC, selected by configuration
--------N-630D-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
AH = 0Dh
???
Return: ???
Note: if not already installed, installs a type 06h handler with AH=09h
SeeAlso: AH=09h
--------N-630E-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
AH = 0Eh
???
Return: ???
SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
--------N-630F-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 0Fh
AL = ???
SI = ???
DS:DI -> ???
???
Return: ???
Range: INT 4D to INT FC, selected by configuration
--------N-6310-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 10h
DS:DI -> ???
???
Return: ???
--------N-6311-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 11h
???
Return: ???
--------N-6312-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
AH = 12h
DS:SI -> ???
ES:BP -> ???
Return: ???
SeeAlso: AH=14h,INT 61/AH=23h
--------N-6313-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - NOP
AH = 13h
Return: nothing
Range: INT 4D to INT FC, selected by configuration
--------N-6314-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
AH = 14h
BX = network descriptor???
DS:SI -> ???
ES:BP -> ???
Return: ???
SeeAlso: AH=12h,AH=16h,AH=19h,INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
--------N-6315-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 15h
DS:DI -> ???
???
Return: ???
Range: INT 4D to INT FC, selected by configuration
--------N-6316-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
AH = 16h
DS:DI -> ???
Return: ???
Note: calls AH=17h after preprocessing
SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
--------N-6317-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 17h
DS:DI -> ???
???
Return: ???
Range: INT 4D to INT FC, selected by configuration
SeeAlso: AH=18h
--------N-6318-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 18h
DS:DI -> ???
???
Return: ???
Note: same as AH=17h, except performed with interrupts disabled
SeeAlso: AH=17h
--------N-6319-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
AH = 19h
DS:DI -> ???
???
Return: BX = number of bytes NOT written
???
Range: INT 4D to INT FC, selected by configuration
Note: calls AH=17h with interrupts disabled and ??? set to 01h
SeeAlso: AH=14h,AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
--------N-631A-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
AH = 1Ah
CX = maximum number of bytes to read
ES:BP -> ???
???
Return: CX = number of bytes actually read
???
SeeAlso: AH=12h,AH=14h,AH=19h,INT 61/AH=1Bh"PC/TCP"
--------N-631B-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 1Bh
CX = ???
ES:BP -> ???
Return: DX = ???
???
Range: INT 4D to INT FC, selected by configuration
--------N-631C-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 1Ch
DS:DI -> ???
???
Return: ???
Note: calls AH=17h with ???
SeeAlso: AH=17h
--------N-631D-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 1Dh
???
Return: ???
Range: INT 4D to INT FC, selected by configuration
--------N-631E-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 1Eh
DS:BX -> DWORD containing IP address (big-endian)
???
Return: CF clear if successful
CF set on error
???
--------N-631F-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
AH = 1Fh
BX = socket number
ES:SI -> FAR function for ???
Return: CF clear if successful
CF set on error (out of slots)
SeeAlso: AH=20h
--------N-6320-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
AH = 20h
BX = socket number
Return: CF clear if successful
CF set on error (not set)
Range: INT 4D to INT FC, selected by configuration
SeeAlso: AH=1Fh
--------N-6321-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 21h
ES:SI -> ???
Return: ???
SeeAlso: INT 61/AH=1Ch"PC/TCP"
--------N-6322-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
AH = 22h
Return: CF clear
Range: INT 4D to INT FC, selected by configuration
Note: decrements a counter if not already zero, and calls AH=0Ah with BL=11h
if the counter reaches zero
--------N-6323-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 23h
DS:BX -> ???
ES:SI -> 6-byte buffer for ???
Return: CF clear if successful
CF set on error
--------N-6324-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
AH = 24h
Return: AX = socket number (0400h-FFFFh)
Range: INT 4D to INT FC, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
SeeAlso: AH=12h,AH=14h,INT 62/AH=12h"ETHDEV",INT 64/AH=01h"BW-NFS"
--------N-6325-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
AH = 25h
Return: CL:CH:DL:DH = caller's Internet address
SeeAlso: AH=03h,AH=26h,INT 61/AH=05h"PC/TCP"
--------N-6326-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
AH = 26h
CL:CH:DL:DH = Internet address
Return: nothing
Range: INT 4D to INT FC, selected by configuration
Note: this function sets a different variable than AH=25h returns
SeeAlso: AH=03h,AH=25h
--------N-6327-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - SET ???
AH = 27h
BX = ???
ES:SI -> ???
Return: ???
--------N-6328-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 28h
???
Return: ???
--------N-6329-------------------------------
INT 63 - BW-TCP - TCPIP.SYS - ???
AH = 29h
???
Return: ???
Range: INT 4D to INT FC, selected by configuration
Note: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
--------*-64---------------------------------
INT 64 - reserved for user interrupt
--------d-64---------------------------------
INT 64 - Adaptec controllers - DRIVE 1 DATA
Desc: this vector stores the first four bytes of the parameter table for
hard disk 1
Notes: these vectors are used by the following Adaptec controllers:
ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
these vectors are NOT used by the following Adaptec controllers:
ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
--------b-64---------------------------------
INT 64 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
Desc: the low word of this vector contains the segment of the RAM data area
to be used by the expansion ROM at F400h:6000h, and the high word
contains the length of the data area; this segment and size are
both set to 0000h if no ROM is installed at F400h:6000h
SeeAlso: INT 60"TI Professional PC",INT 63"TI Professional"
SeeAlso: INT 65"TI Professional PC"
----------64---------------------------------
INT 64 - Oracle SQL Protected Mode Executive - ???
--------N-64---------------------------------
INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
Note: equivalent to INT 7A for NetWare versions through 2.0a only; later
versions do not use this interrupt for IPX/SPX access, instead
getting an entry point from INT 2F/AX=7A00h
SeeAlso: INT 2F/AX=7A00h,INT 7A"LOW-LEVEL API"
--------h-64---------------------------------
INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
SeeAlso: INT 65"DG10",INT 66"DG10"
--------r-64---------------------------------
INT 64 - Extended Batch Language v3.14+
AH = function
00h to 5Fh chained to previous handler
60h to 6Ch reserved, return immediately
80h to FFh chained to previous handler
6Dh (v4.01+) insert tone in queue
AL = ???
CX = frequency in Hertz
DL = duration in clock ticks
Return: AL = 00h if note stored
= 01h if no room to store
6Eh clear ??? counter/flag
6Fh return counter/flag that AH=6Eh clears
70h ???
AL = ???
71h ???
AL = ???
72h ???
73h insert byte at end of keyboard buffer
AL = byte to insert
Return: AL = 00h if byte inserted
= 01h if no room to store
74h insert byte at front of keyboard buffer
AL = byte to insert
Return: AL = 00h if byte inserted
= 01h if no room to store
75h ???
76h get keyboard "stack" status
AL = 'K' if kbd read will read physical keyboard
'S' if it will read EBL internal keyboard buffer
AH = ???
77h clear internal keyboard buffer
78h ???
AL = ???
79h ???
7Ah ???
AL = ???
7Bh ???
AL = ???
7Ch ???
AL = ???
7Dh ???
AL = ???
7Eh clear buffer for ???
7Fh installation check
Return: CX = version in BCD
DI = segment of ???
BX = segment of next program's PSP???
Program: Extended Batch Language is a batch-file enhancer by Seaware
Notes: the chaining does not check whether the interrupt had been hooked
before, so if you try to chain when the previous vector was
0000h:0000h, you'll be in trouble
functions 72h and 7Ah-7Dh appear to be interfaces to the optional
floating-point and extended function packages
Index: installation check;EBL|installation check;Extended Batch Language
--------d-64---------------------------------
INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
Note: This vector is overwritten by Pdisk to install custom harddrive types.
It can either destroy 4 vectors and take no memory or TSR and take
up some memory.
SeeAlso: INT 65"Pdisk"
----------64---------------------------------
INT 64 - PC-DRAFT - ASYNCHRONOUS DRIVER
???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 62"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
--------N-6401-------------------------------
INT 64 U - BW-NFS - BWRPC - ???
AH = 01h
ES:BX -> ??? (at least 8 bytes)
ES:BP -> DWORD ???
???
Return: CF clear if successful
???
CF set on error
CX = 0000h
Range: INT 4E to INT FD, selected by configuration
Notes: the Beame&Whiteside TCP/IP protocol stack uses two consecutive
interrupts (62h and 63h by default); the BW-NFS client uses a third
consecutive interrupt (64h by default) if it is loaded
the BWRPC installation check consists of determining the interrupt
vector assigned to it (two more than the value returned by reading
the ETHDEV27 device), and testing whether the word immediately
preceding the interrupt handler is 4257h ('BW')
SeeAlso: INT 62/AH=00h"ETHDEV",INT 63/AH=03h"BW-TCP",INT 63/AH=24h
Index: installation checks;BWRPC
--------N-6402-------------------------------
INT 64 U - BW-NFS - BWRPC - ???
AH = 02h
DS:DI -> ???
Return: ???
Note: this call is passed directly through to INT 62/AH=07h
SeeAlso: INT 62/AH=07h"ETHDEV"
--------N-6403-------------------------------
INT 64 U - BW-NFS - BWRPC - ADD ???
AH = 03h
AL = ???
BP = ???
ES:SI -> ???
Return: ???
Note: this call is passed directly through to INT 62/AH=0Bh
SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
--------N-6404-------------------------------
INT 64 U - BW-NFS - BWRPC - REMOVE ???
AH = 04h
BP = ???
Return: ???
Range: INT 4E to INT FD, selected by configuration
Note: this call is passed directly through to INT 62/AH=0Ch
SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
--------N-6405-------------------------------
INT 64 U - BW-NFS - BWRPC - ???
AH = 05h
CX = ???
Return: ???
Note: this call is passed directly through to INT 62/AH=13h
SeeAlso: INT 62/AH=13h"ETHDEV"
--------N-6406-------------------------------
INT 64 U - BW-NFS - BWRPC - ???
AH = 06h
ES:SI -> ???
Return: AL = 00h if CF clear
Range: INT 4E to INT FD, selected by configuration
Note: this call is passed directly through to INT 62/AH=14h
SeeAlso: INT 62/AH=14h"ETHDEV"
--------N-6407-------------------------------
INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
AH = 07h
Return: CX:DX = IP address
--------N-6410-------------------------------
INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
AH = 10h
AL = ETHDEV function number
other registers as appropriate for ETHDEV call
Return: as returned by ETHDEV
Note: this call is passed directly through to INT 62
SeeAlso: INT 62/AH=00h"ETHDEV"
--------N-6411-------------------------------
INT 64 U - BW-NFS - BWRPC - NOP???
AH = 11h
Return: CF clear
Range: INT 4E to INT FD, selected by configuration
--------N-64FE-------------------------------
INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
AH = FEh
AL = direction
00h map in driver's memory block
01h map out driver's memory block
Return: CF clear if successful
CF set on error
AL = error code
Range: INT 4E to INT FD, selected by configuration
Note: this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63/AH=03h"BW-TCP"
SeeAlso: INT 63/AH=24h
--------*-65---------------------------------
INT 65 - reserved for user interrupt
--------d-65---------------------------------
INT 65 - Adaptec controllers - DRIVE 1 DATA
Desc: this vector stores the second four bytes of the parameter table for
hard disk 1
SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
--------b-65---------------------------------
INT 65 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
Desc: the low word of this vector contains the segment of the RAM data area
to be used by the expansion ROM at F400h:8000h, and the high word
contains the length of the data area; this segment and size are
both set to 0000h if no ROM is installed at F400h:8000h
SeeAlso: INT 60"TI Professional PC",INT 64"TI Professional"
SeeAlso: INT 66"TI Professional PC"
--------h-65---------------------------------
INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
SeeAlso: INT 64"DG10",INT 66"DG10"
--------N-65---------------------------------
INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
--------U-65---------------------------------
INT 65 - SD.COM v6.2
Desc: The unregistered version of SD62.COM uses the low byte of this vector
to count the number of invocations, displaying a registration
reminder each time after the 20th use.
--------d-65---------------------------------
INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
----------65---------------------------------
INT 65 - PC-DRAFT - SECONDARY DISPLAY DRIVER
???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 66"PC-DRAFT",INT 67"PC-DRAFT"
--------s-65---------------------------------
INT 65 - Ad Lib SOUND.COM - INTERFACE
SI = function number (also see separate entries below)
0000h Init
0002h RelTimeStart
0003h SetState
0004h GetState
0005h Flush
0006h SetMode
0007h GetMode
0008h SetRelVolume
0009h SetTempo
000Ah SetTranspose
000Bh GetTranspose
000Ch SetActVoice
000Dh GetActVoice
000Eh PlayNoteDel
000Fh PlayNote
0010h SetTimbre
0011h SetPitch
0012h SetTickBeat
0013h NoteOn
0014h NoteOff
0015h Timbre
0016h SetPitchBend
0017h WaveForm
ES:BX -> arguments
Note: the installation check consists of checking for the signature block
immediately preceding the interrupt handler (see #3187)
SeeAlso: SI=8000h
Index: installation check;Ad Lib SOUND.COM
Format of AdLib signature block:
Offset Size Description (Table 3187)
00h WORD version number
02h 19 BYTEs "SOUND-DRIVER-AD-LIB"
15h BYTE 01h
16h BYTE 01h
17h BYTE 00h
--------N-65----DX4147-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
DX = 4147h
BH = 01h
BL = function number (00h-2Ah)
???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code (0001h=invalid function/subfunction)
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number and function number may be retrieved via INT 2A/AX=4147h
Note: this API is supported by CLIENT.COM, SERVER.COM, DOSNET.COM, and
ROUTER.COM
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4147-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
DX = 4147h
BH = 02h
BL = function number (00h-05h)
???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code (0001h=invalid function/subfunction)
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number and function number may be retrieved via INT 2A/AX=4147h
Note: this API is supported by CLIENT.COM, SERVER.COM, DOSNET.COM, and
ROUTER.COM
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4147-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
DX = 4147h
BH = 03h
BL = function number (00h-03h) (00h-04h for ROUTER.COM)
???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number and function number may be retrieved via INT 2A/AX=4147h
Note: this API is supported by CLIENT.COM, SERVER.COM, DOSNET.COM, and
ROUTER.COM
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4147-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
DX = 4147h
BH = 04h
BL = function number (00h-07h)
???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number and function number may be retrieved via INT 2A/AX=4147h
Note: this API is supported by CLIENT.COM, SERVER.COM, and DOSNET.COM
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4147-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - ??? API
DX = 4147h
BH = 07h
BL = function number (00h-08h)
???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code (0001h=invalid function/subfunction)
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number and function number may be retrieved via INT 2A/AX=4147h
Note: this API is supported by CLIENT.COM, SERVER.COM, and DOSNET.COM
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4147-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - INSTALLATION CHECK???
DX = 4147h
BH = 80h
Return: CF set
AX = 0001h
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number and function number may be retrieved via INT 2A/AX=4147h
Note: this call is supported by CLIENT.COM, SERVER.COM, and ROUTER.COM
SeeAlso: DX=4147h,INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - SPOOLER - ???
DX = 4741h
BH = 01h
AL = 02h
BL = function number (0Eh,0Fh)
AH = subfunction number
???
Return: ???
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - PRNREDIR - ???
DX = 4741h
BH = 01h
AL = 03h
BL = function number (0Eh,0Fh)
AH = subfunction number
???
Return: ???
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - PRNREDIR - ???
DX = 4741h
BH = 01h
AL = 04h
BL = function number (0Eh,0Fh)
AH = subfunction number
???
Return: ???
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - NETBIOS - ???
DX = 4741h
BH = 01h
AL = 07h
BL = function number (0Eh,0Fh)
AH = subfunction number
???
Return: ???
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - MACTEST - ???
DX = 4741h
BH = 01h
AL = 08h
BL = function number (0Eh,0Fh)
AH = subfunction number
???
Return: ???
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - Physical Layer - ???
DX = 4741h
BH = 02h
BL = function number (01h-04h)
???
Return: ???
---function 02h---
DS:SI -> ??? data area
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
Note: this API is supported by PARALLEL.COM, SERIAL.COM, ARCNET.COM,
ETHERNET.COM, NDIS.COM, ODI.COM, SMC.COM, and FTP.COM
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - SPOOLER.COM - ???
DX = 4741h
BH = 05h
BL = function number (00h,01h)
Return: CF clear
AL = status code (00h=successful)
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - PRNREDIR.COM - ???
DX = 4741h
BH = 06h
BL = function number (00h-04h)
???
Return: ???
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - COMREDIR.COM - ???
DX = 4741h
BH = 08h
BL = function number (00h-01h)
???
Return: ???
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------N-65----DX4741-----------------------
INT 65 U - NetSoft DOS-NET v1.20+ - FTP.COM - ???
DX = 4741h
BX = 8010h
AL = instance number???
Return: AX = 0008h if AL matches internal variable (call chained otherwise)
Range: INT ?? to INT ??, selected by configuration option; actual interrupt
number may be retrieved via INT 2A/AX=4147h
SeeAlso: DX=4147h"INSTALLATION",INT 2A/AX=4147h
--------s-65----SI0000-----------------------
INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
SI = 0000h
--------s-65----SI0003-----------------------
INT 65 - Ad Lib SOUND.COM - SET STATE
SI = 0003h
ES:BX -> WORD new state (0000h disabled, 0001h enabled)
SeeAlso: SI=0004h
--------s-65----SI0004-----------------------
INT 65 - Ad Lib SOUND.COM - GET STATE
SI = 0004h
Return: AX = status
0000h all done playing sounds
else still playing sounds
SeeAlso: SI=0003h
--------s-65----SI0006-----------------------
INT 65 - Ad Lib SOUND.COM - SET MODE
SI = 0006h
ES:BX -> WORD new mode (0000h melodic, 0001h percussive)
SeeAlso: SI=0007h
--------s-65----SI0007-----------------------
INT 65 - Ad Lib SOUND.COM - GET MODE
SI = 0007h
Return: AX = mode
0000h melodic
0001h percussive
SeeAlso: SI=0006h
--------s-65----SI000C-----------------------
INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
SI = 000Ch
ES:BX -> WORD voice = 0000h to 0008h
SeeAlso: SI=000Dh
--------s-65----SI000D-----------------------
INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
SI = 000Dh
Return: AX = voice (0000h to 0008h)
SeeAlso: SI=000Ch
--------s-65----SI8000-----------------------
INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
SI = 8000h
Return: DX:AX -> internal data structures
Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
Pro Audio Spectrum sound boards
SeeAlso: SI=8001h
--------s-65----SI8001-----------------------
INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
SI = 8001h
Return: AX = ???
DX = number of voices??? (09h or 0Bh)
SeeAlso: SI=8000h
--------s-65----SI8002-----------------------
INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
SI = 8002h
SeeAlso: SI=8003h
--------s-65----SI8003-----------------------
INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
SI = 8003h
SeeAlso: SI=8002h
--------s-65----SI8004-----------------------
INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
SI = 8004h
Return: AX = ??? (0280h)
DX = ??? (01A0h)
--------s-65----SI8005-----------------------
INT 65 U - Media Vision FM.COM v4.1a+ - ???
SI = 8005h
???
Return: ???
SeeAlso: SI=8000h
--------S-65---------------------------------
INT 65 U - EZRECV v1.0 - API
AX = function
0000h ???
Return: AX = ??? or FFFFh
0001h ???
Return: AX = status (0000h or 0001h)
0002h ???
Return: AX = status (0000h or 0001h)
0003h set ??? to 0001h
Return: AX = 0000h
0004h ???
Return: AX = ???
Return: BH = COM port being used
BL = speed???
CH = ???
CL = ???
DX = ???
DS = ???
ES = EZRECV data segment
Program: EZRECV is a background Zmodem file receiver by Express Consulting
--------*-66---------------------------------
INT 66 - reserved for user interrupt
--------d-66---------------------------------
INT 66 - Adaptec controllers - DRIVE 1 DATA
Desc: this vector stores the third four bytes of the parameter table for
hard disk 1
SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
--------b-66---------------------------------
INT 66 - TI Professional PC - SYSTEM INFORMATION (NOT A VECTOR!)
Desc: the low word of this vector contains the system memory size in
paragraphs; the third byte contains the number of outstanding
interrupt requests, and the fourth byte contains a description
of the installed drive types (see #3188)
SeeAlso: INT 60"TI Professional PC",INT 67"TI Professional"
Bitfields for TI Professional drive type information:
Bit(s) Description (Table 3188)
7 floppy drive D: has 80 tracks
6 floppy drive D: is double-sided
5 floppy drive C: has 80 tracks
4 floppy drive C: is double-sided
3 floppy drive B: has 80 tracks
2 floppy drive B: is double-sided
1 floppy drive A: has 80 tracks
0 floppy drive A: is double-sided
--------h-66---------------------------------
INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
SeeAlso: INT 64"DG10"
--------N-66---------------------------------
INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
Program: TurboNET is a NetBIOS-based file redirector and server
Note: hooked but not used (IRET) by both redirector and server; called from
server's INT 28 handler
SeeAlso: INT 2F/AX=8100h
--------d-66---------------------------------
INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
--------W-66---------------------------------
INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
Note: This Windows 3.x Virtual Device Driver implements a virtual timer
which will expire and call INT 66. This timer can be used to
calculate elapsed execution time etc.
--------K-66---------------------------------
INT 66 - Newkey v5.4 - INSTALLATION VECTOR
Return: immediately (IRET)
Program: Newkey is a shareware keyboard macro program by Frank A. Bell
Range: INT 60h to INT 67h, selected by scanning for highest unused vector
Note: the installation check consists of testing for the signature bytes
FDh FCh FFh FEh at offset 03h in the interrupt handlers segment
BUG: the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
before falling back to INT 60-67, but only uses the last of these
ranges in v5.4
SeeAlso: INT 2F/AX=E300h
Index: installation checks;Newkey|Newkey;installation check
----------66---------------------------------
INT 66 - PC-DRAFT - TABLET/DIGITIZER DRIVER
???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 67"PC-DRAFT"
--------U-66---------------------------------
INT 66 - PC-Magazin - INCA
details not yet availble
Program: INCA is a utility from PC-Magazin (the German edition of PC Magazine)
issue 51-52/85.
SeeAlso: INT 61"SWAPx"
--------F-6601-------------------------------
INT 66 - BitFax Scheduler - SET MODE???
AH = 01h
SeeAlso: AH=02h
--------F-6602-------------------------------
INT 66 - BitFax Scheduler - SET MODE???
AH = 02h
SeeAlso: AH=01h
--------F-6603-------------------------------
INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
AH = 03h
???
Return: ???
SeeAlso: AH=05h
--------F-6604-------------------------------
INT 66 - BitFax Scheduler - GET STATUS???
AH = 04h
Return: AX = ??? (0000h or 0001h)
DX = BitSched version??? (for versions >= 3.00)
9796h (ver. 3.00)
97E6h (ver. 3.02)
92D0h (ver. 3.04.06)
9510h (ver. 3.06.02)
SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
--------F-6605-------------------------------
INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
AH = 05h
BX:CX -> command block (see #3189)
???
Return: ???
SeeAlso: AH=03h
Format of BitFax command block:
Offset Size Description (Table 3189)
00h 18 BYTEs configuration bytes???
12h BYTEs ASCIZ temporary file name to place converted fax
52h BYTEs ASCIZ directory containing BitFax executables
92h BYTEs ASCIZ telephone number
C2h BYTE cover page control (00h don't send, 01h do send cover page)
C3h 15 BYTEs configuration bytes???
E2h BYTEs ASCIZ path of BITFAX.TRA file (containing additional
configuration information???)
122h BYTEs configuration bytes???
12Ch BYTE 00h don't send cover page
01h send cover page
12Dh 7 BYTEs configuration bytes???
134h BYTEs ASCIZ path of file to send
174h BYTEs more configuration bytes???
???
--------F-6606-------------------------------
INT 66 - BitFax Scheduler - SET MODE???
AH = 06h
Return: DX = BitSched version??? (same as AH=04h)
SeeAlso: AH=04h
--------s-660688-----------------------------
INT 66 - IBMSND driver, DIGPAK - PLAY 8-BIT DIGITIZED SOUND
AX = 0688h
DS:SI -> SNDSTRUC (see #3190)
Return: ???
Program: The IBMSND driver is part of John W. Ratcliff's
The IBM Digitized Sound Package
DIGPAK is a set of digitized sound drivers written by
John W. Ratcliff, The Audio Solution, Inc.
Note: the installation check consists of looking for a valid signature
string six bytes prior to the interrupt handler; this string may
be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
determine whether IBMSND is installed)
SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
Format of IBMSND driver SNDSTRUC:
Offset Size Description (Table 3190)
00h DWORD -> audio data
04h WORD length of audio data in bytes
06h DWORD -> playback status flag
0Ah WORD playback frequency
--------s-660689-----------------------------
INT 66 - IBMSND driver, DIGPAK - REPORT SOUND DRIVER STATUS
AX = 0689h
Return: AX = status
0000h no sound playing
0001h sound effect is currently playing
---DIGPAK---
BX = version number (v3.1+)
DX = looping status
0000h no sound looping
0001h sound effect is currently looping
SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
Index: version check;DIGPAK
--------s-66068A-----------------------------
INT 66 - IBMSND driver, DIGPAK - PREFORMAT SOUND
AX = 068Ah
DS:SI -> SNDSTRUC (see #3190)
Desc: convert audio data into output hardware format
SeeAlso: AX=068Bh
--------s-66068B-----------------------------
INT 66 - IBMSND driver, DIGPAK - PLAY PREFORMATTED SOUND
AX = 068Bh
DS:SI -> SNDSTRUC (see #3190)
Return: AX = ???
SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
--------s-66068C-----------------------------
INT 66 - IBMSND driver, DIGPAK - REPORT AUDIO DRIVER CAPABILITIES
AX = 068Ch
Return: AX = capabilities (see #3191)
DX = playback rate if fixed-frequency playback
---DIGPAK---
BX:CX -> ASCIZ ID string
SeeAlso: AX=0689h,AX=068Dh
Bitfields for IBMSND driver capabilities:
Bit(s) Description (Table 3191)
0 can play audio in background
1 data is massaged for output device
2 driver plays at fixed frequency, resampling input data to fit
3 driver uses timer interrupt
---DIGPAK---
4 device supports timer sharing
5 supports looped sounds and pending
6 supports stereo panning
7 supports 8-bit PCM stereo playback
8 supports audio recording
9 supports DMA bakcfilling
--------s-66068D-----------------------------
INT 66 - IBMSND driver, DIGPAK - REPORT CURRENT SAMPLE ADDRESS
AX = 068Dh
Return: AX = current playback address
Desc: determine what point in the audio data the playback has reached, for
synchronization with video or animation effects
Notes: this function applies to background playback only
the reported address may be an approximation rather than the exact
address
SeeAlso: AX=068Ch,AX=0691h
--------s-66068E-----------------------------
INT 66 - IBMSND driver, DIGPAK - SET CALLBACK ADDRESS
AX = 068Eh
BX:DX -> callback function
0000h:0000h to disable callback
DS = value to load into DS when calling the callback function
Desc: specify the function to be called when playback of a sound effect is
completed
Note: the callback function will typically be called during a hardware
interrupt, so all the usual precautions should be taken except for
preserving registers
SeeAlso: AX=0691h
--------s-66068F-----------------------------
INT 66 - IBMSND driver, DIGPAK - STOP CURRENT SOUND
AX = 068Fh
Desc: cause any currently-playing sound effect to be terminated
SeeAlso: AX=0688h,AX=068Bh
--------s-660690-----------------------------
INT 66 - IBMSND driver, DIGPAK - "SetAudioHardware" - SET UP HARDWARE INFO
AX = 0690h
BX = IRQ
CX = base address
DX = other setup value (device-dependent???)
--------s-660691-----------------------------
INT 66 - IBMSND driver, DIGPAK - REPORT CALLBACK ADDRESS
AX = 0691h
Return: AX:DX -> current callback function
BX = original caller's DS register
Program: The IBMSND driver is part of John W. Ratcliff's
The IBM Digitized Sound Package
DIGPAK is a set of digitized sound drivers written by
John W. Ratcliff, The Audio Solution, Inc.
SeeAlso: AX=068Eh
--------s-660693-----------------------------
INT 66 - DIGPAK - SET TIMER DIVISOR RATE
AX = 0693h
DX = rate
Program: DIGPAK is a set of digitized sound drivers written by
John W. Ratcliff, The Audio Solution, Inc.
--------s-660694-----------------------------
INT 66 - DIGPAK - PLAY PREFORMATTED DATA
AX = 0694h
DS:SI -> Sound Data structure (see #3190)
Return: AX = status???
--------s-660695-----------------------------
INT 66 - DIGPAK - POST AUDIO PENDING
AX = 0695h
DS:SI -> Sound Data structure (***)
Return: AX = status
0000h sound started playing
0001h sound was posted as pending to play
0002h sound effect already pending, this one not posted
SeeAlso: AX=0696h
--------s-660696-----------------------------
INT 66 - DIGPAK - GET AUDIO PENDING STATUS
AX = 0696h
Return: AX = status
0000h no sound is playing
0001h sound playing, and a sound is pending
0002h sound playing, no sound pending
SeeAlso: AX=0695h
--------s-660697-----------------------------
INT 66 - DIGPAK - SET STEREO PANNING
AX = 0697h
DX = panning position (0 = right, 127 = left)
Return: AX = status
0000h command ignored (not supported)
0001h panning set
--------s-660698-----------------------------
INT 66 - DIGPAK - SET PLAY MODE
AX = 0698h
DX = playback mode
0000h 8-bit PCM
0001h 8-bit stereo PCM
0002h 16-bit PCM
0003h 16-bit stereo PCM
Return: AX = status
0000h command ignored
0001h mode set
--------s-660699-----------------------------
INT 66 - DIGPAK - GET ADDRESSES
AX = 0699h
Return: AX = pending address
BX = semaphore address
--------s-66069A-----------------------------
INT 66 - DIGPAK - SET RECORD MODE
AX = 069Ah
DX = recording mode
0000h turn audio recording on
0001h turn audio recording off
Return: AX = status
0000h command ignored
0001h audio recording mode set
--------s-66069B-----------------------------
INT 66 - DIGPAK - STOP NEXT LOOP
AX = 069Bh
--------s-66069C-----------------------------
INT 66 - DIGPAK - SET DMA BACKFILL MODE
AX = 069Ch
DX = mode
0000h turn backfill mode on
0001h turn backfill mode off
Return: AX = status
0000h command ignored
0001h backfill mode set
SeeAlso: AX=069Dh,AX=069Eh
--------s-66069D-----------------------------
INT 66 - DIGPAK - REPORT DMA COUNTER
AX = 069Dh
Return: AX = DMA counter
SeeAlso: AX=069Eh
--------s-66069E-----------------------------
INT 66 - DIGPAK - VERIFY DMA BLOCK
AX = 069Eh
CX = length of buffer
ES:BX -> buffer containing sound data
Return: AX = status
0000h block crosses 64K bounadary
0001h block is OK
SeeAlso: AX=069Dh
--------s-66069F-----------------------------
INT 66 - DIGPAK - SET PCM VOLUME
AX = 069Fh
BX = left channel volume (0-100)
CX = right channel volume (0-100)
Return: AX = status
0000h command ignored
0001h volume set
--------s-6606A0-----------------------------
INT 66 - DIGPAK - SET DPMI MODE
AX = 06A0h
DX = mode
0000h 32-bit register addressing on
0001h 32-bit register addressing off
SeeAlso: INT 31/AX=0400h
--------s-660700-----------------------------
INT 66 - MIDPAK - UNINSTALL
AX = 0700h
Note: this function should NOT be called by applications
Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
Incorporated.
--------s-660701-----------------------------
INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
AX = 0701h
Return: AX = digitized sound capabilities
0000h if digitized sound driver (functions 06xxh) not available
Notes: the installation check for the MIDI driver is to test for the signature
"MIDI" six bytes before the interrupt handler
also supported by MIDPAK, the successor to the Digitized Sound
Package's MIDI driver
SeeAlso: AX=0688h
--------s-660702-----------------------------
INT 66 - MIDPAK - PLAY SEQUENCE
AX = 0702h
BX = Sequence number
Return: AX = status
0000h Sequence is being played
0001h Sequence not available
SeeAlso: AX=0703h,AX=0705h
--------s-660703-----------------------------
INT 66 - MIDPAK - SEGUE SEQUENCE
AX = 0703h
BX = sequence number
CX = activation code (FFFFh is next trigger)
Return: ???
--------s-660704-----------------------------
INT 66 - MIDPAK - REGISTER XMIDI
AX = 0704h
CX:BX -> XMIDI sequence data
DI:SI = length of XMIDI data
Return: AX = status
0000h unable to register XMIDI data
0001h XMIDI file registered resident
0002h XMIDI file was registered to the application
--------s-660705-----------------------------
INT 66 - MIDPAK - STOP MIDI
AX = 0705h
SeeAlso: AX=0702h,AX=0709h
--------s-660706-----------------------------
INT 66 O - MIDPAK - REMAP CHANNEL
AX = 0706h
BX = sequence
CX = physical
--------s-660707-----------------------------
INT 66 - MIDPAK - REPORT TRIGGER EVENT COUNTER
AX = 0707h
Return: AX = count of number of callbacks since last reset
DX = ID
SeeAlso: AX=0708h,AX=0713h
--------s-660708-----------------------------
INT 66 - MIDPAK - RESET EVENT TRIGGER COUNTER
AX = 0708h
SeeAlso: AX=0707h,AX=0713h
--------s-660709-----------------------------
INT 66 O - MIDPAK - MIDI SLEEP
AX = 0709h
SeeAlso: AX=070Ah
--------s-66070A-----------------------------
INT 66 O - MIDPAK - MIDI AWAKE
AX = 070Ah
SeeAlso: AX=0709h
--------s-66070B-----------------------------
INT 66 - MIDPAK - RESUME PLAYING
AX = 070Bh
SeeAlso: AX=070Ch
--------s-66070C-----------------------------
INT 66 - MIDPAK - GET SEQUENCE STATUS
AX = 070Ch
Return: AX = status
0000h sequence stopped
0001h sequence playing
0002h sequence done
SeeAlso: AX=070Bh
--------s-66070D-----------------------------
INT 66 - MIDPAK - REGISTER XMIDI FILE
AX = 070Dh
CX:BX -> ASCII filename
SeeAlso: AX=0704h,AX=0710h
--------s-66070E-----------------------------
INT 66 - MIDPAK - GET RELATIVE VOLUME
AX = 070Eh
Return: AX = current volume
SeeAlso: AX=070Fh
--------s-66070F-----------------------------
INT 66 - MIDPAK - SET RELATIVE VOLUME
AX = 070Fh
BX = new volume
CX = time
SeeAlso: AX=070Eh
--------s-660710-----------------------------
INT 66 - MIDPAK - LOAD MIDPAK DRIVER
AX = 0710h
BX = segment of .ADV driver
CX = 0000h (offset must be zero)
DX:SI -> .AD driver
SeeAlso: AX=070Dh
--------s-660711-----------------------------
INT 66 - MIDPAK - POLL MIDPAK
AX = 0711h
Return: AX = ???
???
SeeAlso: AX=0712h
--------s-660712-----------------------------
INT 66 - MIDPAK - GET MIDI CLOCK
AX = 0712h
Return: AX:DX = clock counter
CX:BX = clock address
SeeAlso: AX=0711h,AX=0713h
--------s-660713-----------------------------
INT 66 - MIDPAK - GET TRIGGER COUNT ADDRESS
AX = 0713h
Return: AX:DX -> trigger counter address
SeeAlso: AX=0707h,AX=0712h,AX=0714h
--------s-660714-----------------------------
INT 66 - MIDPAK - GET EVENT ID ADDRESS
AX = 0714h
Return: AX:DX -> event ID
SeeAlso: AX=0713h,AX=0716h
--------s-660716-----------------------------
INT 66 - MIDPAK - REPORT SEQUENCE NUMBER
AX = 0716h
Return: AX = current sequence number
SeeAlso: AX=0702h
Program: MIDPAK is a set of MIDI sound drivers developed by Miles Design
Incorporated.
--------n-6610-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - GET ???
AH = 10h
Return: CF clear
AX = 0000h
BX = ??? (0012h)
DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
a touchpad; PenDOS is a set of programs by Communication Intelligence
Corporation which makes applications pen-aware
--------n-6611-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
AH = 11h
DX:BX -> new handler for ???
Return: CF clear
AX = 0000h
DX:BX -> old handler for ??? (points at RETF by default)
--------n-6612-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
AH = 12h
Return: CF clear
AX = 0000h
Note: this function calls the old mouse handler with functions 0000h, 0002h,
0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
SeeAlso: AH=13h
--------n-6613-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
AH = 13h
Return: CF clear
other register as returned by INT 33/AX=0000h
SeeAlso: AH=12h
--------n-6614-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - ???
AH = 14h
BX = ???
CX = ???
Return: CF clear
AX = 0000h
--------n-6615-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
AH = 15h
DX:BX -> new handler for ???
Return: CF clear
AX = 0000h
DX:BX -> old handler (points at RETF by default)
--------n-6616-------------------------------
INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
AH = 16h to 1Fh
Return: CF set
Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
a touchpad; PenDOS is a set of programs by Communication Intelligence
Corporation which makes applications pen-aware
--------n-6621-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 21h
Return: CF clear if successful
CF set on error
Note: this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
--------n-6622-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 22h
DX:BX -> ???
CL = ???
Return: CF clear if successful
CF set on error
???
SeeAlso: AH=24h
--------n-6623-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 23h
???
Return: CF clear if successful
CF set on error
???
--------n-6624-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 24h
DX:BX -> ???
CL = ???
Return: CF clear if successful
CF set on error
???
SeeAlso: AH=22h
--------n-6625-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 25h
CL = ??? (NOP if 00h)
???
Return: CF clear if successful
CF set on error
???
--------n-6627-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 27h
BL = ???
BH = ???
CL = ??? (0-3)
DL = ??? (> BL)
DH = ??? (> BH)
Return: ???
--------n-6628-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 28h
???
Return: CF clear if successful
CF set on error
???
Note: this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
--------n-6629-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 29h
???
Return: ???
Note: this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
--------n-662A-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 2Ah
DL = ??? (nonzero)
DH = ??? (nonzero)
Return: CF clear if successful
CF set on error
???
--------n-662B-------------------------------
INT 66 - PenDOS - PINK - ???
AH = 2Bh
???
Return: CF clear if successful
CF set on error
???
--------n-662F-------------------------------
INT 66 - PenDOS - PINK - INITIALIZE
AH = 2Fh
???
Return: AX = status
0000h failed
FFFFh successful
???
Note: this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
--------F-663345-----------------------------
INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
AX = 3345h
Return: AX = FFFFh error removing TSR
Note: the installation check consists of checking for the signature
"BitFax Scheduler" beginning two bytes past the interrupt handler
SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
Index: installation check;BitFax Scheduler
--------n-6640-------------------------------
INT 66 - PenDOS - PKEYUS - GET VERSION
AH = 40h
Return: CF clear
AX = 0000h
BH = major version (02h for version bundled with IBM DOS 6.1)
BL = minor version (00h for version bundled with IBM DOS 6.1)
DL = ??? (4Eh)
DH = ??? (0Eh)
--------n-6641-------------------------------
INT 66 - PenDOS - PKEYUS - SET ???
AH = 41h
BX = ???
CL = ??? (08h-20h)
DL = screen column??? (<= 50h)
DH = screen row??? (<= 3Ch)
Return: AX = status (0000h successful, 0001h error)
Note: this function also sets an internal flag
SeeAlso: AH=42h,AH=43h
--------n-6642-------------------------------
INT 66 - PenDOS - PKEYUS - ???
AH = 42h
Return: CF clear
AX = 0000h
Note: this function also clears the flag set by AH=41h
SeeAlso: AH=41h
--------n-6643-------------------------------
INT 66 - PenDOS - PKEYUS - ???
AH = 43h
BX = ???
DX = ???
Return: AX = status
0000h if AH=41h flag set
else
AH = ???
AL = ???
BX = ???
DX = ???
SeeAlso: AH=41h
--------n-6644-------------------------------
INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
AH = 44h to 4Fh
Return: CF set
--------n-6650-------------------------------
INT 66 - PenDOS - PMOUSE - SET ???
AH = 50h
BX = ???
CH = ???
DX = ???
Return: CF clear
AX = 0000h
--------n-6651-------------------------------
INT 66 - PenDOS - PMOUSE - NOP
AH = 51h
Return: CF set
--------n-6652-------------------------------
INT 66 - PenDOS - PMOUSE - ???
AH = 52h
BX = ???
CL = ???
DX = ???
Return: ???
--------n-6653-------------------------------
INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
AH = 53h to 57h
Return: CF set
--------n-66---------------------------------
INT 66 - PenDOS - PMOUSE - ALTERNATE API
AH = function (58h-5Fh)
Note: these functions exactly duplicate AH=50h-57h
--------U-66AA02-----------------------------
INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
AX = AA02h
Return: ES:DI -> 7 byte signature "HelpTSR" if resident
Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
--------n-66C5-------------------------------
INT 66 - PenDOS - VLOAD - API
AH = C5h
???
Return: ???
--------t-66FFFBBXFFFB-----------------------
INT 66 - MicroHelp Stay-Res Plus - ???
AX = FFFBh
BX = FFFBh
???
Return: ???
SeeAlso: AX=FFFEh,INT 2D"AMIS"
--------t-66FFFEBXFFFE-----------------------
INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
AX = FFFEh
BX = FFFEh
Return: only if unsuccessful
Notes: installation check is for the interrupt handler to begin with the bytes
FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
appear at offset 0005h (older versions) or the offset returned by
AX=FFFFh/BX=FFF0h in the interrupt handler segment.
Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
Index: installation check;MicroHelp Stay-Res|installation check;ThesPlus
Index: installation check;Personal Calendar|installation check;CAL
--------t-66FFFFBXFFF0-----------------------
INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
AX = FFFFh
BX = FFF0h
Return: DI = offset of program name in interrupt handler segment
SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
--------!---Section--------------------------
Interrupt List, part 15 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------d-67---------------------------------
INT 67 - Adaptec controllers - DRIVE 1 DATA
Desc: this vector stores the last four bytes of the parameter table for
hard disk 1
SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
--------b-67---------------------------------
INT 67 - TI Professional PC - SYSTEM DATA (NOT A VECTOR!)
Desc: this vector contains the TI Pro's system configuration words
(see #3192)
SeeAlso: INT 66"TI Professional PC"
Bitfields for TI Professional PC System Configuration doubleword:
Bit(s) Description (Table 3192)
0 8087 present
31-1 reserved (0)
--------d-67---------------------------------
INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
--------I-67---------------------------------
INT 67 - Sangoma CCPOP 3270 resident module
SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
--------U-67---------------------------------
INT 67 - CUCKOO.COM - INSTALLATION CHECK
Program: CUCKOO is a resident on-screen clock with optional hourly chime or
cuckoo by an unknown author with revisions by Thomas A. Lundin
Note: this is not a vector; when loaded for the first time, CUCKOO.COM uses
the last unused (0000h:0000h) vector in the range 60h-67h to store
the signature value 434Ch:4F4Bh ('CLOK')
----------67---------------------------------
INT 67 - PC-DRAFT - KEYBOARD DRIVER
???
Return: ???
Program: PC-DRAFT is a powerful CAD environment by rhv.
SeeAlso: INT 62"PC-DRAFT",INT 64"PC-DRAFT",INT 65"PC-DRAFT",INT 66"PC-DRAFT"
--------N-6700-------------------------------
INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
AH = 00h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see #3193)
AH = semaphore owner if status=02h
SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
(Table 3193)
Values for PC-NET semaphore function status:
00h successful
01h invalid function
02h semaphore already locked
03h unable to lock semaphore
04h semaphore space exhausted
--------N-6701-------------------------------
INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
AH = 01h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see #3193)
AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
--------N-6702-------------------------------
INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
AH = 02h
DS:DX -> ASCIZ semaphore name (max 64 bytes)
Return: AL = status (see #3193)
AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
--------m-671E-------------------------------
INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
AH = 1Eh
Return: AH = 00h if installed
AL destroyed
ES:DI -> ASCII signature "MemLimit"
SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
--------m-671F-------------------------------
INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
AH = 1Fh
DS:SI -> request packet (see #3194)
Return: AH = status (00h successful, 84h invalid function code, etc.)
SeeAlso: AH=1Eh
Format of 386MAX MEMLIMIT request packet:
Offset Size Description (Table 3194)
00h WORD function code (00h-0Fh)
02h WORD return code (see #3195)
04h 4 BYTEs ???
08h WORD ???
???
(Table 3195)
Values for 386MAX MEMLIMIT return code:
00h unknown request
01h invalid parameter for VCPI limit
02h VCPI limit set
03h invalid parameter for EMS limit
04h EMS limit set
05h DPMI disabled
06h XMS disabled
07h XMS limit set
08h unable to uninstall
09h unloaded
--------m-672763CL01-------------------------
INT 67 - VIDEMS.SYS v1.31+ - INSTALLATION CHECK
AX = 2763h
CL = 01h
BX = signature AAFFh
Return: AH = 00h if VIDEMS is installed
CH = 00h if optimization for 80286 is used, 01h otherwise
CL = internal revision number (typically 00h to 03h)
DX = driver version (DH=major, DL=minor; not a BCD!)
AH = 84h if not installed but EMS manager is present
Program: VIDEMS is an expanded memory manager from Conea Software Corp. It
converts video adapter RAM to LIM 3.2 EMS.
SeeAlso: AX=2763h/CL=02h,AX=2763h/CL=03h
--------m-672763CL02-------------------------
INT 67 - VIDEMS.SYS v1.31+ - FLUSH EMS TO VIDEO RAM
AX = 2763h
CL = 02h
BX = signature AAFFh
Return: AH = 00h if successful
Notes: This call is normally used by Conea products only.
SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=03h
--------m-672763CL02-------------------------
INT 67 - VIDEMS.SYS v1.31+ - RELOAD EMS FROM VIDEO RAM
AX = 2763h
CL = 02h
[Yes, I know the registers are duplicated. Clarification to follow.]
BX = signature AAFFh
Return: AH = 00h if successful
Notes: This call is normally used by Conea products only.
SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=03h
--------m-672763CL03-------------------------
INT 67 - VIDEMS.SYS v1.31+ - RETURN HIDDEN BLOCK SIZE
AX = 2763h
CL = 03h
BX = signature AAFFh
Return: AH = 00h if successful
DX = block size in kilobytes
Desc: Returns the amount of EMS which can be safely used at any time, and
can't be destroyed by writing anything to the B800:0000 buffer.
Note: this function normally returns 184K, while the driver provides up to
240K of EMS.
SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=02h
--------m-672763CL03-------------------------
INT 67 - VIDEMS.SYS v1.31+ - RETURN PHYSICAL PAGE SIZE
AX = 2763h
CL = 03h
[Yes, I know the registers are duplicated. Clarification to follow.]
BX = signature AAFFh
Return: AH = 00h
DX = size in bytes
Desc: Used by Conea products to determine if addressing mode has changed.
Normally, all VIDEMS versions beginning from 1.10 (or 1.15 - ?) use
4K "physical" pages.
Notes: this function will probably become raw page size in future releases of
VIDEMS, which will support the LIM 4.0 standard.
SeeAlso: AX=2763h/CL=01h,AX=2763h/CL=02h
--------u-672833-----------------------------
INT 67 - Q87 v4+ - PREPARE TO UNLOAD AND GET XMS HANDLE FOR Q87 MEMORY
AX = 2833h
EAX = 29482833h (entire EAX value required)
Return: EAX = XMS handle for memory allocated when Q87 was installed
EBX = status
00000000h Q87 is in demo mode (countdown running);
Q87 remains active
00000001h Q87 is in registered mode; memory manager's IDT, GDT,
and optionally CR0 (if BL <> 5Fh on entry) have
been restored
00000002h Q87 is in demo mode (demo time has expired);
Q87 remains active
Note: this call is used by UNLOAD87 to release the memory used by Q87
BUG: v4.00-v4.03 will hang on most machines when run under bare DOS with
no memory manager, because neither Q87 nor UNLOAD87 checks whether
there is a valid INT 67 handler before performing an installation
check via INT 67
SeeAlso: AX=4321h,INT 21/AX=4321h/BX=0000h
--------m-673F--CX5145-----------------------
INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
AH = 3Fh
CX = 5145h ("QE")
DX = 4D4Dh ("MM")
Return: AH = 00h if installed
ES:DI -> QEMM API entry point (see #3196,#3199,#3311)
Notes: if no other program has hooked INT 67, an alternate installation
check is to test for the string
"QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
handler's segment; the word at offset 12h contains the offset in
the handler's segment of the API entry point
although this function is still undocumented, Quarterdeck has recently
documented two alternate methods for determining the QEMM API entry
point, as well as several of the API functions
MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
the alternate QEMM installation check and entry point functions 00h,
02h, and 03h; version 4D only provides the signature string if the
commandline argument "DV" is provided
386MAX v6.01 responds to this call, but DESQview 2.42 does not
recognize the returned entry point as providing QEMM's capabilities
because a) only functions 0Ch (different from QEMM 0Ch) and
1000h-1009h are supported,
b) status is returned as for EMS functions, not QEMM funcs
c) the protected-mode entry point returned by function 1000h
only supports functions 0Ch, 1004h, 1005h, and 100Ah
the string check mentioned above is not supported by 386MAX
SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
(Table 3196)
Values for calling QEMM "QPI_GetStatus" function:
AH = 00h get QEMM state
Return: CF clear
AL = QEMM state
bit 0 set if QEMM turned OFF
bit 1 set if in "Auto" mode
Note: this function is officially documented
SeeAlso: #3197,#3198,#3199,#3311
(Table 3197)
Values for calling QEMM "QPI_SetStatus" function:
AH = 01h set QEMM state
AL = new state
bit 0 set: place QEMM in OFF state
Return: CF clear if successful
CF set on error
Note: this function is officially documented
SeeAlso: #3196
(Table 3198)
Values for calling QEMM QPI function 02h:
AH = 02h get ???
Return: CF clear
AX = segment of ??? data structure
Data Structure
Offset Size Description
00h DWORD page table entry for ???
???
SeeAlso: #3199
(Table 3199)
Values for calling QEMM "QPI_GetVersion" function:
AH = 03h get QEMM version
Return: CF clear
AX = BX = version in BCD
Notes: this function is officially documented. The most recent official docs
state that the version is returned in both AX and BX; older
documentation only mentions BX
MICEMM returns AX=0001h, BX unchanged
SeeAlso: #3196,#3200
(Table 3200)
Values for calling QEMM QPI function 04h:
AH = 04h allocate 4K page and set AUTO/ON mode
Return: CF clear if successful
DX = page number of a 4K page
CF set if unable to allocate page
Note: QEMM mode unchanged if not AUTO/OFF
SeeAlso: #3201
(Table 3201)
Values for calling QEMM QPI function 05h:
AH = 05h free 4K page and turn QEMM off
DX = page number returned by function 04h
Return: CF clear
Note: QEMM mode unchanged if not AUTO/ON
SeeAlso: #3200,#3202
(Table 3202)
Values for calling QEMM QPI function 06h:
AH = 06h make new mapping context???
DX = page number of 4K page to hold page table
Return: CF clear
Note: copies page table into given page and then sets ??? page table entry
to point at copy
SeeAlso: #3203,#3204
(Table 3203)
Values for calling QEMM QPI function 07h:
AH = 07h get mapping context
Return: CF clear
DX = page number of page table for current mapping context
SeeAlso: #3199,#3202,#3204
(Table 3204)
Values for calling QEMM QPI function 08h:
AH = 08h set mapping context???
DX = linear page number of page table
Return: CF clear
SeeAlso: #3199,#3202,#3203,#3205,#3207
(Table 3205)
Values for calling QEMM QPI function 09h:
AH = 09h get linear page number for page table entry
CX = page table index
Return: CF clear
DX = linear page number
SeeAlso: #3206
(Table 3206)
Values for calling QEMM QPI function 0Ah:
AH = 0Ah set linear page number for page table entry
CX = page table index
DX = linear page number
Return: CF clear
SeeAlso: #3205
(Table 3207)
Values for calling QEMM QPI function 0Bh:
AH = 0Bh map 4K pages
BX = number of pages
CX = first page number (must be 0100h to allocate HMA)
DX = EMS handle (memory belonging to EMS handle will be mapped
into the address space beginning with the first page
allocated to the handle)
Return: AH = 00h
SeeAlso: #3204,#3208
(Table 3208)
Values for calling QEMM QPI function 0Ch:
AH = 0Ch get available memory
Return: CF clear
BX = 0001h
CX = total 4K pages???
DX = number of 4K pages free
SeeAlso: #3207,#3209
(Table 3209)
Values for calling QEMM QPI function 0Dh:
AH = 0Dh CRT controller I/O port trapping
AL = mode
00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
03D4h, and 03D5h
02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
Return: CF clear
(Table 3210)
Values for calling QEMM QPI function 0Eh:
AH = 0Eh set cursor virtualization callbacks
DS:BX -> FAR routine for getting hardware cursor address
ES:DX -> FAR routine for setting hardware cursor address
Return: CF clear
Note: both callbacks are invoked with CL indicating which
CRT controller register to access (0Eh for high
byte of cursor address, 0Fh for low byte)
the DS:BX callback should return BX=cursor address;
ES:DX is called with BL or BH (depending on CL)
set to the appropriate half of the cursor's address
(Table 3211)
Values for calling QEMM QPI function 0Fh:
AH = 0Fh unmap 4K pages
CX = first page number
DX = number of pages
Return: CF clear
AL = 00h/01h if ???
Note: if CX=0100h and DX=0010h, the HMA is remapped to
simulate a disabled A20
(Table 3212)
Values for calling QEMM QPI function 1000h:
AX = 1000h get protected-mode interface
DS:SI -> 16-byte buffer for two GDT entries
ES:DI -> buffer for 4K page table
Return: CF clear
EAX = offset of protected-mode API entry point
DS:SI buffer filled with two GDT descriptors
first is QEMM code segment, second is data???
ES:DI buffer filled with 4K page table
DI points to first unused page table entry
SeeAlso: INT 67/AX=DE01h
(Table 3213)
Values for calling QEMM QPI function 1001h:
AX = 1001h get CPU debug registers
ES:DI -> buffer for debug registers (8 DWORDs)
Return: CF clear
BL = INT01 handling (see #3214)
ES:DI buffer filled
(Table 3214)
Values for calling QEMM QPI function 1002h:
AX = 1002h set CPU debug registers
BL = INT01 handling
00h reflect all debugging exceptions as V86-mode INT 01's
else convert debugging exceptions other than single-step
into V86-mode INT 03's, single-step to INT 01's
ES:DI -> buffer containing debug registers (8 DWORDs)
Return: CF clear
Notes: identical to INT 67/AX=DE09h if BL=01h
the INT01 handling flag is set to 01h by the general-protection
violation handler for certain privileged instructions
SeeAlso: #3213
(Table 3215)
Values for calling QEMM QPI function 1003h:
AX = 1003h get machine status word CR0
Return: CF clear
EAX = contents of CR0
SeeAlso: INT 67/AX=DE07h
(Table 3216)
Values for calling QEMM QPI function 1004h:
AX = 1004h allocate a 4K page
Return: CF clear if successful
EDX = linear address of allocated page
CF set on error
SeeAlso: INT 67/AX=DE04h
(Table 3217)
Values for calling QEMM QPI function 1005h:
AX = 1005h free 4K page
EDX = linear address of page to free
Return: CF clear
SeeAlso: INT 67/AX=DE05h
(Table 3218)
Values for calling QEMM QPI function 1006h:
AX = 1006h NOP
Return: CF set
(Table 3219)
Values for calling QEMM QPI function 1007h:
AX = 1007h get maximum physical memory address
Return: CF clear
EDX = physical address of highest 4K memory page
SeeAlso: INT 67/AX=DE02h
(Table 3220)
Values for calling QEMM QPI function 1008h:
AX = 1008h get physical address of page in first megabyte
CX = page number (linear address shifted right 12 bits)
Return: CF clear
EDX = linear address of page
SeeAlso: #3219,#3295,#3296
(Table 3221)
Values for calling QEMM QPI function 1009h:
AX = 1009h switch to protected mode
ESI = linear address in first megabyte of system reg values
(see INT 67/AX=DE0Ch)
interrupts disabled
Return: interrupts disabled
GDTR, IDTR, LDTR, TR loaded
SS:ESP must have at least 16 bytes space, and the
entry point is required to set up a new stack
before enabling interrupts
EAX, ESI, DS, ES, FS, GS destroyed
(Table 3222)
Values for calling QEMM QPI function 100Ah:
AX = 100Ah switch back to virtual-86 mode
DS = selector for data segment from function 1000h
SS:ESP in first megabyte of linear memory
interrupts disabled
STACK: QWORD return address from FAR call to 32-bit segment
DWORD EIP
DWORD CS
DWORD reserved for EFLAGS
DWORD ESP
DWORD SS
DWORD ES
DWORD DS
DWORD FS
DWORD GS
will switch to virtual86 mode with interrupts disabled, all
segment registers loaded, and EAX destroyed.
(Table 3223)
Values for calling QEMM QPI function 11h:
AH = 11h get memory type map
AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
by QEMM 6.00)
ES:DI -> 256-byte buffer for memory types
Return: CF clear
BL = ???
ES:DI buffer filled
Note: each byte of the buffer corresponds to a 4K page, and
contains the type of that page: 00h = mappable,
02h = mapped ROM, 03h = high RAM, 04h = excluded,
05h = video, 06h = ROM, 07h = adapter ROM,
08h = split ROM, 09h = page frame, 0Ah = RAMmable,
0Bh = conventional, 83h = high RAM under MS Windows
(Table 3224)
Values for calling QEMM QPI function 12h:
AH = 12h get HIRAM chain
Return: CF clear
BX = segment of first MCB in high memory
0000h if no high memory
(Table 3225)
Values for calling QEMM QPI function 1300h:
AX = 1300h VIDRAMEGA???
BL = 00h copy ???
nonzero copy ??? (reverse)
Return: CF clear
AL = status
00h if all pages clean
01h if any page dirty
(Table 3226)
Values for calling QEMM QPI function 1301h:
AX = 1301h check if pages modified
DX:DI = start address of range to check
CX = length of range in paragraphs
Return: CF clear
CX = status
0000h none of the indicated pages is dirty
DI destroyed
1000h one or more pages is dirty
DI = low word of first dirty page's linear addr
(Table 3227)
Values for calling QEMM QPI function 1302h:
AX = 1302h ???
BL = ???
BH = ???
CX = ???
SI = offset of ???
DI = offset of ???
???
Return: CF clear
???
Note: disables certain interrupts at the two 8259 PICs during
execution; also modifies CRT controller during
execution under certain circumstances
(Table 3228)
Values for calling QEMM QPI function 1303h:
AX = 1303h initialize EGA graphics virtualization
BX = number of pages (less 1) of EMS to allocate
Return: CF clear if successful
DX = EMS handle
CF set on error
(Table 3229)
Values for calling QEMM QPI function 1304h:
AX = 1304h shutdown EGA graphics virtualization
DX = EMS handle being used for virtualization
Return: CF clear
(Table 3230)
Values for calling QEMM QPI function 1305h:
AX = 1305h select portion of EGA graphics to virtualize???
(related to graphics virtualization, changes memory mappings)
CX = start offset within A000h segment of virtualized mem???
Return: CF clear
Note: disables certain interrupts at the two 8259 PICs during
execution (see #3237) and runs inside a QEMM
critical section
(Table 3231)
Values for calling QEMM QPI function 1306h:
AX = 1306h set DESQview critical section counter address
ES:BX -> WORD DESQview critical section counter or 0000h:0000h
Return: CF clear
Note: also sets a pointer in the low-memory part of QEMM to
the current value of INT 15 if ES:BX not 0000h:0000h
(Table 3232)
Values for calling QEMM QPI function 1307h:
AX = 1307h ??? (changes memory mappings for entire A000h segment)
Return: CF clear
Note: disables certain interrupts at the two 8259 PICs during
execution (see #3237) and runs inside a QEMM
critical section
(Table 3233)
Values for calling QEMM QPI function 1308h:
AX = 1308h start/reset CRT controller I/O trapping
BL = subfunction
00h restore CRTC I/O port trapping to previous state
else start trapping all accesses to I/O ports 03B0-03DF
Return: CF clear
Note: if called more than once in a row with BL nonzero, the
original state of the I/O port trapping will be lost
(Table 3234)
Values for calling QEMM QPI function 1309h:
AX = 1309h Hercules mode-change support
ES:BX -> new address for Hercules mode-change callback
Return: CF clear
Note: the callback function is called whenever the CRTC mode
register is written, with AL set to the value written
(Table 3235)
Values for calling QEMM QPI function 130Ah:
AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
CX:DX -> DAC register virtualization buffer (see #3318)
or 0000h:0000h to disable
Return: CF clear
(Table 3236)
Values for calling QEMM QPI function 130Bh:
AX = 130Bh ???
BL = ??? (??? or 00h)
Return: CF clear
???
Note: calls AX=130Eh in some cases
(Table 3237)
Values for calling QEMM QPI function 130Ch:
AX = 130Ch set interrupts to mask
BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
Return: CF clear
(Table 3238)
Values for calling QEMM QPI function 130Dh:
AX = 130Dh map EGA memory at A0000h
???
Return: CF clear
Note: disables certain interrupts at the two 8259 PICs during execution
(see #3237) and runs inside a QEMM critical section
calls AX=1307h (see #3232)
(Table 3239)
Values for calling QEMM QPI function 130Eh:
AX = 130Eh ??? (modifies CRT controller setup)
???
Return: CF clear
(Table 3240)
Values for calling QEMM QPI function 130Fh:
AX = 130Fh reset ???
Return: CF clear
(Table 3241)
Values for calling QEMM QPI function 1310h:
AX = 1310h copy modified pages to physical video RAM???
???
Return: CF clear
Note: disables certain interrupts at the two 8259 PICs during execution
(see #3237) and runs inside a QEMM critical section
also calls AX=130Dh (see #3238)
(Table 3242)
Values for calling QEMM QPI function 1311h:
AX = 1311h set ???
BL = zero/nonzero???
Return: CF clear
Note: certain operations will be performed with interrupts
(as set by AX=130Ch) enabled rather than disabled if
called with BL nonzero
(Table 3243)
Values for calling QEMM QPI function 1312h:
AX = 1312h (v6.02) NOP???
Note: called by DV 2.42, but appears to be a NOP in QEMM 6.02
(Table 3244)
Values for calling QEMM QPI function 1400h:
AX = 1400h initialize DESQview "protection level" support
ES:DI -> protection level configuration (at least 24 bytes)
(see #3312)
BL = highest ??? to return (one less than number of words)
Return: CF clear
AX = ??? (4204h for v6.00)
Note: QEMM also sets the protected mode INT 02 and INT 06
vectors to alternate handlers in certain cases
(Table 3245)
Values for calling QEMM QPI function 1401h:
AX = 1401h turn off DESQview protection level support
Return: CF clear
???
Notes: clears the DV critical-section flag address set with
function 1306h
QEMM also sets the protected mode INT 02 and INT 06
vectors to the default handlers if they had been
revectored by function 1400h
(Table 3246)
Values for calling QEMM QPI function 1402h:
AX = 1402h set protection level???
BL = protection level???
00h NOP
01h ???
02h ???
other (03h) ???
ES:DI -> ???
Return: CF clear
???
Format of Data structure:
Offset Size Description
00h WORD segment of ??? (X, word at X:0136h set to X)
02h WORD segment of ??? (word at X:0124h set to this)
04h WORD number of paragraphs of ???
06h 3 WORDs ??? (copied to X:0000h)
0Ch WORD ???
(Table 3247)
Values for calling QEMM QPI function 1403h:
AX = 1403h add ??? to end of list and ??? (execute func 1406h)
ES:DI -> ??? structure added to end of ??? list
(at least 31 bytes, DWORD at offset 06h used for
storing pointer to next struc, WORD at offset 00h
seems to be a key or index)
Return: CF clear
(Table 3248)
Values for calling QEMM QPI function 1404h:
AX = 1404h NOP
Return: CF clear
(Table 3249)
Values for calling QEMM QPI function 1405h:
AX = 1405h remove ??? from ??? list
BX = key???
Return: CF clear
(Table 3250)
Values for calling QEMM QPI function 1406h:
AX = 1406h ???
???
Return: CF clear
???
Notes: this function is a NOP unless protection level 2 or 3
is active
when not a NOP, one of the actions is to write-protect
certain memory pages
(Table 3251)
Values for calling QEMM QPI function 1407h:
AX = 1407h ???
???
Return: CF clear
???
Note: same as function 1406h, but only does anything if
protection level 2 is active
(Table 3252)
Values for calling QEMM QPI function 1408h:
AX = 1408h unprotect???
???
Return: CF clear
???
(Table 3253)
Values for calling QEMM QPI function 1409h:
AX = 1409h abort program causing protection violation???
???
Return: CF clear
???
(Table 3254)
Values for calling QEMM QPI function 140Ah:
AX = 140Ah set ???
BX = index of ???
Return: CF clear
???
Notes: no range checking is performed on BX
this function is a NOP unless protection level 3 active
(Table 3255)
Values for calling QEMM QPI function 140Bh:
AX = 140Bh get ???
BX = index of ???
SI = 0000h
Return: CF clear
SI = segment of 256-byte buffer??? or 0000h
Notes: no range checking is performed on BX
this function is a NOP unless protection level 3 active
(Table 3256)
Values for calling QEMM QPI function 15h:
AH = 15h set timer channel 0 virtualization buffer
ES:BX -> WORD buffer for timer channel 0 divisor
0000h:0000h to disable virtualization
Return: CF clear
(Table 3257)
Values for calling QEMM v5.00+ QPI function 1600h:
AX = 1600h get memory access status
ES:DI -> 256-byte buffer
Return: ES:DI buffer filled
Note: each byte of the buffer indicates the status of a 4K
page (bit 0 set if read, bit 1 set if written)
(Table 3258)
Values for calling QEMM v5.00+ QPI function 1601h:
AX = 1601h set memory access status
ES:DI -> 256-byte buffer containing access statuses (see #3257)
(Table 3259)
Values for calling QEMM v5.00+ QPI function 17h:
AH = 17h get memory usage statistics
ES:DI -> 81-byte buffer for memory statistics (see #3316)
Return: CF clear
(Table 3260)
Values for calling QEMM v5.11+ QPI function 18h:
AH = 18h check whether conventional memory mapped into address range
ES:BX = starting address
CX = number of 4K pages
Return: CF clear
AL = 00h one or more pages is remapped
01h all pages in range are conventional memory
(physical address == virtual address)
(Table 3261)
Values for calling QEMM v5.11+ QPI function 19h:
AH = 19h NOP
Return: CF set
(Table 3262)
Values for calling QEMM v5.11+ "QPI_UntrappedIORead" function:
AX = 1A00h get byte from I/O port
DX = port number
Return: CF clear
BL = port value
Note: this function was officially documented with the release of QEMM 7.50
(Table 3263)
Values for calling QEMM v5.11+ "QPI_UntrappedIOWrite" function:
AX = 1A01h send byte to I/O port
BL = value to send
DX = port number
Return: CF clear
Note: this function was officially documented with the release of QEMM 7.50
(Table 3264)
Values for calling QEMM v5.11+ "QPI_UntrappedIOReadIndexed" function:
AX = 1A02h
BH = index value to send
DX = base port number
Return: CF clear
BL = value read from I/O port (DX+1)
Note: this function was officially documented with the release of QEMM 7.50
(Table 3265)
Values for calling QEMM v5.11+ "QPI_UntrappedIOWriteIndexed" function:
AX = 1A03h send bytes to two consecutive I/O ports
BH = value for first I/O port (DX)
BL = value for second I/O port (DX+1)
DX = base port number
Return: CF clear
Note: this function was officially documented with the release of QEMM 7.50
(Table 3266)
Values for calling QEMM v7.03+ "QPI_UntrappedIO" function:
AX = 1A04h
BX = value to write to port
CX = direction and size
bit 2: output instead of input
bit 3: word instead of byte
DX = I/O port to be accessed
Return: CF clear
BX = value read (if CX indicates read)
Note: this function was officially documented with the release of QEMM 7.50
(Table 3267)
Values for calling QEMM v7.03+ function 1A05h
AX = 1A05h
???
Return: ???
(Table 3268)
Values for calling QEMM v7.03+ "QPI_GetIOCallback" function:
AX = 1A06h
Return: CF clear
ES:DI -> current I/O callback function (see #3270)
Note: this function was officially documented with the release of QEMM 7.50
(Table 3269)
Values for calling QEMM v7.03+ "QPI_SetIOCallback" function:
AX = 1A07h
ES:DI -> new I/O callback function (see #3270)
Return: CF clear
Note: this function was officially documented with the release of QEMM 7.50
(Table 3270)
Values QEMM v7.03+ I/O callback function is called with:
AL/AX = data to/from trapped port
CL = I/O direction (00h = IN instruction, else OUT instruction)
DX = I/O port address
Return: CF clear if port handled by callback function
CF set if not handled
all other registers returned to application executing the IN or OUT
instruction (allowing arbitrary changes to port address, data value,
etc.)
SeeAlso: #3268,#3269
(Table 3271)
Values for calling QEMM v7.03+ "QPI_GetPortTrap" function:
AX = 1A08h
DX = I/O port number
Return: CF clear
BL = trapping state (00h not being trapped, 01h trap installed)
Note: this function was officially documented with the release of QEMM 7.50
(Table 3272)
Values for calling QEMM v7.03+ "QPI_SetPortTrap" function:
AX = 1A09h
DX = I/O port number
Return: CF clear
Note: this function was officially documented with the release of QEMM 7.50
(Table 3273)
Values for calling QEMM v7.03+ "QPI_ClearPortTrap" function:
AX = 1A0Ah
DX = I/O port number
Return: CF clear
Note: this function was officially documented with the release of QEMM 7.50
(Table 3274)
Values for calling QEMM v5.11+ QPI function 1B00h:
AX = 1B00h get EMM Import Structure address
ES:DI -> buffer for EMM import data structure (see #3314)
Return: CF set on error
CF clear if successful
SeeAlso: INT 21/AX=4402h/SF=01h
(Table 3275)
Values for calling QEMM v5.11+ QPI function 1B01h:
AX = 1B01h disable V86 mode
Return: CF set on error
(i.e. no Global EMM Import rec. allocated)
CF clear if successful
Note: shuts down EMS and initializes Global EMM Import record; this function
is invoked from the callback supplied by INT 2F/AX=1605h
(Table 3276)
Values for calling QEMM v5.11+ QPI function 1B02h:
AX = 1B02h enable V86 mode
Return: CF set on error
CF clear if successful
Note: restarts EMS and frees Global EMM Import record; this function is
invoked from the callback supplied by INT 2F/AX=1605h
(Table 3277)
Values for calling QEMM v5.11+ QPI function 1B03h:
AX = 1B03h MS Windows initializing
CX = segment from which Windows init broadcast made???
DX = Windows startup flags
DI = Windows version number (major in upper byte)
Return: CF clear if successful
DS:SI -> V86 mode enable/disable callback
(see #2321 at INT 2F/AX=1605h)
ES:BX -> startup info structure (see #2318 at INT 2F/AX=1605h)
CF set on error (unable to start Windows)
SeeAlso: INT 2F/AX=1605h
(Table 3278)
Values for calling QEMM v5.11+ QPI function 1B04h:
AX = 1B04h MS Windows terminating
Return: CF clear
(Table 3279)
Values for calling QEMM v5.11+ QPI function 1B05h:
AX = 1B05h determine whether program is driver
DS:DX -> ASCIZ filename
Return: CF clear
AL = status
01h if string ends in ".DRV"
FFh if string ends in "GDI.EXE"
00h otherwise
Note: when MS Windows 3.0 standard mode starts, QEMM patches all drivers
until GDI.EXE is loaded
(Table 3280)
Values for calling QEMM v5.11+ QPI function 1B06h:
AX = 1B06h patch protected-mode check in Windows driver
CX = length of data pointed at by DS:DX
DS:DX -> buffer containing Windows driver code
Return: CF clear
Note: patches all SMSW x/TEST x,1 instruction sequences into MOV x,CS/VERW x
sequences, which has the effect that the protected-mode check will
only indicate protected mode in native protected mode and not in V86
mode
(Table 3281)
Values for calling QEMM v5.11+ QPI function 1B07h:
AX = 1B07h
BUG: QEMM 6.00-7.01 accept this and branch randomly
(Table 3282)
Values for calling QEMM v5.11+ QPI function 1Bxxh:
AX = 1B08h to 1BFFh
Return: CF set
(Table 3283)
Values for calling QEMM v5.11+ QPI function 1C00h:
AX = 1C00h disable IRQ0-7 calldowns
Return: CF clear
(Table 3284)
Values for calling QEMM v5.11+ QPI function 1C01h:
AX = 1C01h set V86-mode IRQ0-7 handlers
ES:DI -> 8 DWORDs containing V86-mode handler addresses
Return: CF clear
(Table 3285)
Values for calling QEMM v5.11+ QPI function 1C02h:
AX = 1C02h disable IRQ8-15 handlers
Return: CF clear
(Table 3286)
Values for calling QEMM v5.11+ QPI function 1C03h:
AX = 1C03h set V86-mode IRQ8-15 handlers
ES:DI -> 8 DWORDs containing V86-mode handler addresses
BUG: although the jump table only contains four entries, QEMM 6.00 will
attempt to use it for any value of AL between 00h and 2Ah, thus
branching unpredictably for AL=04h-2Ah; QEMM v7.01 behaves
similarly for AL=04h-1Bh
Note: when enabled, the appropriate IRQs are reflected back to the specified
handlers in virtual-86 mode after the CPU automatically invokes the
protected-mode handler inside QEMM
(Table 3287)
Values for calling QEMM v7.03+ "QPI_SimulateHWInt" function:
AX = 1C04h
BX = number of interrupt to simulate
Return: ???
Notes: this function will allow proper simulation of a hardware interrupt
under DESQview and DESQview/X, where the correct interrupt handler
may be in a different process with a completely different address
space
this function was officially documented with the release of QEMM v7.50
(Table 3288)
Values for calling QEMM v6.0x only QPI function 1D00h:
AX = 1D00h switch to pre-Stealth interrupt vector table
Return: CF clear if supported (QEMM v6.x)
CF set if not supported (QEMM v7+)
Notes: also switches VGA Save table pointer (0040h:00A8h) and overwrites the
vectors currently assigned for use by the two interrupt controllers
(see INT 67/AX=DE0Ah) with the vectors for INT 08-0F and 70-77 (to
avoid crashing the system).
functions 1Dxxh are not supported by QEMM v7.01, and always return CF
set
(Table 3289)
Values for calling QEMM v6.0x only QPI function 1D01h:
AX = 1D01h restore user interrupt vector table
Return: CF clear if supported (QEMM v6.x)
CF set if not supported (QEMM v7+)
Notes: interrupts should be disabled around the AX=1D00h and AX=1D01h calls
because QEMM does not modify the memory maps to map in ROM, so
an interrupt could be disastrous
clears any pending IRQ7 at end of function
functions 1Dxxh are not supported by QEMM v7.01, and always return CF
set
(Table 3290)
Values for calling QEMM v6.00+ QPI function 1Dxxh:
AX = 1D02h to 1DFFh
Return: CF set
(Table 3291)
Values for calling QEMM v6.00+ "QEMM_GET_INFO"/"QPI_GetInfo" function:
AX = 1E00h get Stealth configuration
Return: CF clear
BL = memory configuration flags (documented as "reserved") (see #3315)
BH = (v7.00+) disk buffer flags
bit 0: DISKBUFFRAME buffer instead of DISKBUF buffer
bit 1: buffer has already been used
CL = stealth type (00h none, 46h Frame, 4Dh Map, 50h Protect)
CH = suspend/resume interrupt (00h none)
DL = (v7.00+) size of QEMM disk buffer in KB (00h none)
DH = reserved (always 00h for v6.00)
SI = reserved (always 0000h for v6.00)
DI = reserved (always 0000h for v6.00)
Note: this function is officially documented
(Table 3292)
Values for calling QEMM v6.00+ "QPI_GetStealthCount" function:
AX = 1E01h get number of Stealth'ed ROMs
Return: CF clear
BX = number of Stealth'ed ROMs
Note: this function is officially documented
(Table 3293)
Values for calling QEMM v6.00+ "QPI_GetStealthList" function:
AX = 1E02h
ES:DI -> buffer for Stealth ROM info (see #3317)
Return: CF clear
BX = number of Stealth'ed ROMs
ES:DI buffer filled
Note: this function is officially documented
(Table 3294)
Values for unimplemented Stealth information functions:
AX = 1E03h to 1EFFh
Return: CF set
(Table 3295)
Values for calling QEMM v6.00+ "QEMM_GET_PTE"/"QPI_GetPTE" function:
AX = 1F00h get page table entry
CX = page number (0000h-010Fh)
Return: CF clear
EDX = page table entry
Note: this function is officially documented
(Table 3296)
Values for calling QEMM v6.00+ "QEMM_SET_PTE"/"QPI_SetPTE" function:
AX = 1F01h set page table entry
CX = page number (0000h-010Fh)
EDX = new page table entry
Return: CF clear
Note: this function is officially documented
SeeAlso: #3220
(Table 3297)
Values for calling QEMM v6.00+ QPI function 1Fxxh:
AX = 1F02h to 1FFFh
Return: CF set
(Table 3298)
Values for calling QEMM v6.00+ "QEMM_GET_VHI_INFO"/"QPI_GetVHIInfo" function:
AX = 2000h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
Return: CF clear
BL = flags
bit 7: VirtualHDIRQ setting respected
(set if Stealth active)
bits 6-1 reserved
bit 0: VirtualHDIRQ currently enabled
(INT 15/AH=90h suppressed when enabled)
Note: this function is officially documented
SeeAlso: #3299
(Table 3299)
Values for calling QEMM v6.00+ "QEMM_SET_VHI_INFO"/"QPI_SetVHIInfo" function:
AX = 2001h set VirtualHDIRQ state
BL bit 0 = new VirtualHDIRQ state
Return: CF clear
BL = old VHI setting (bits 0 and 7, see #3298)
Note: this function is officially documented
SeeAlso: #3298
(Table 3300)
Values for calling QEMM v6.00+ QPI function 20xxh:
AX = 2002h to 20FFh
Return: CF set
(Table 3301)
Values for calling QEMM v6.00+ "QEMM_COPY_STEALTH_ROMS"/"QPI_CopyStealthRoms":
AX = 2100h copy data from Stealthed address space
DS:SI -> start address of hidden memory to copy
ES:DI -> buffer for copied data
ECX = number of bytes to copy
Return: CF clear if successful
CF set on error (no Stealth or DS:SI < C000h:0000h or DS:SI + ECX > 1M)
Note: this function was officially documented with the release of QEMM 7.50
(Table 3302)
Values for calling QEMM v6.00+ QPI function 21xxh:
AX = 2101h to 21FFh
Return: CF set
(Table 3303)
Values for calling QEMM v6.03+ QPI function 2200h:
AX = 2200h DESQview/X support -- get ???
Return: CF clear
ES:DI -> ???
(Table 3304)
Values for calling QEMM v6.03+ QPI function 2201h:
AX = 2201h DESQview/X support -- set ???
ES:DI -> ??? or 0000h:0000h
Return: CF clear if successful
CF set on error
(Table 3305)
Values for calling QEMM v6.04+ QPI function 2300h:
AX = 2300h get ???
BX = which ??? to get (must be 0000h for v6.04)
Return: CF clear if successful
ES:DI -> ???
CF set on error
(Table 3306)
Values for calling QEMM v6.04+ QPI function 2301h:
AX = 2301h set ???
BX = which ??? to set (must be 0000h for v6.04)
ES:DI -> ???
Return: CF clear if successful
CF set on error
(Table 3307)
Values for calling QEMM v6.04+ QPI function 2302h:
AX = 2302h clear specified ???
BX = which ??? to clear (must be 0000h for v6.04)
Return: CF clear if successful
CF set on error
(Table 3308)
Values for calling QEMM v6.04+ QPI function 23FFh:
AX = 23FFh clear all ???
Return: CF clear if successful
CF set on error
(Table 3309)
Values for calling QEMM v6.04+ QPI function 23xxh:
AX = 2303h to 23FEh
Return: CF set
(Table 3310)
Values for calling QEMM v7.01+ QPI function 24h:
AH = 24h ST-DBL support
AL = subfunction
00h set ???
EDX -> information table (EDX = segment SHL 16 + offset)
01h ???
Return: CF clear if successful
CF set on error
(Table 3311)
Values for calling QEMM unimplemented QPI functions:
AH = 25h to FFh
Return: CF set
Format of QEMM protection level configuration:
Offset Size Description (Table 3312)
00h WORD segment of 128 breakpoint (INT 3) instructions for use in
DESQview protection level 3 interrupt vector checking, or
0000h to disable; in pl3, INTs 00-7F are pointed at these
breakpoints
02h DWORD -> array of actual interrupt handler addresses for INT 00-7F
when interrupt vectors are pointed at protection level 3
breakpoints
06h DWORD far pointer to ??? region list (see #3313)
0Ah DWORD far pointer to buffer for returned ???
0Eh DWORD seg:ofs of function to call on protection violation???
12h WORD segment of ???
14h DWORD far pointer to DWORD containing number of paragraphs of
??? for segment at offset 12h
???
Format of protection level Region List:
Offset Size Description (Table 3313)
00h WORD number of PAIRS of pointers to follow
02h 2N DWORDs start/end seg:ofs addresses of ??? regions
Note: QEMM converts the segmented addresses into linear addresses in place
Format of EMM Import structure:
Offset Size Description (Table 3314)
00h DWORD physical address of EMM import struct
04h BYTE major version (v6.00 sets to 01h)
05h BYTE minor version (v6.00 sets to 00h/0Bh)
SeeAlso: INT 21/AX=4402h/SF=01h
Bitfields for memory configuration flags:
Bit(s) Description (Table 3315)
0 conventional memory sorted
1 conventional memory filled
2 ???
3 ???
4 expanded memory is in use
5 ???
Format of QEMM 6.0 memory statistics:
Offset Size Description (Table 3316)
00h BYTE 01h if Shadow RAM found, 00h otherwise
01h DWORD initial conventional memory in bytes
05h DWORD initial extended memory in bytes
09h DWORD initial expanded memory in bytes
0Dh DWORD initial "top" or "shadow" memory in bytes
11h DWORD Unavailable conventional memory in bytes
15h DWORD Unavailable extended memory in bytes
19h DWORD Unavailable expanded memory in bytes
1Dh DWORD Unavailable "top" or "shadow" memory in bytes
Add to offset 49h for Total unavailable top/shadow.
21h DWORD QEMM code size in bytes
25h DWORD QEMM data size in bytes
29h DWORD bytes used for TASKS=
2Dh DWORD DMA buffer size
31h DWORD bytes used for MAPS=
35h DWORD bytes of high RAM
39h DWORD bytes used by mapped ROMs
3Dh DWORD bytes of conventional memory provided by QEMM
41h DWORD bytes of extended memory NOT converted by QEMM (EXT=xxx)
45h DWORD bytes of EMS/XMS pool memory provided by QEMM
49h DWORD Unavailable "top" or "shadow" memory in bytes
Add to offset 1Dh for Total unavailable top/shadow.
4Dh DWORD conventional memory overhead in bytes
(set to 0 by QEMM.COM prior to call)
Format of Stealth ROM info [array]:
Offset Size Description (Table 3317)
00h WORD starting segment of ROM
02h WORD length of ROM in paragraphs
Format of QEMM EGA/VGA DAC register virtualization buffer:
Offset Size Description (Table 3318)
00h BYTE (temp) current color register number
01h BYTE (temp) number of bytes written so far for current color reg
02h 768 BYTEs three bytes per color register
--------m-6740-------------------------------
INT 67 - LIM EMS - GET MANAGER STATUS
AH = 40h
Return: AH = status (00h,80h,81h,84h) (see #3319)
Note: this call can be used only after establishing that the EMS driver is in
fact present
SeeAlso: AH=3Fh,AX=FFA5h,@xxxxh:xxxxh"PMM"
(Table 3319)
Values for EMS function status:
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested by application
85h no more handles available
86h error in save or restore of mapping context
87h insufficient memory pages in system
88h insufficient memory pages available
89h zero pages requested
8Ah invalid logical page number encountered
8Bh invalid physical page number encountered
8Ch page-mapping hardware state save area is full
8Dh save of mapping context failed
8Eh restore of mapping context failed
8Fh undefined subfunction
90h undefined attribute type
91h feature not supported
92h successful, but a portion of the source region has been overwritten
93h length of source or destination region exceeds length of region
allocated to either source or destination handle
94h conventional and expanded memory regions overlap
95h offset within logical page exceeds size of logical page
96h region length exceeds 1M
97h source and destination EMS regions have same handle and overlap
98h memory source or destination type undefined
9Ah specified alternate map register or DMA register set not supported
9Bh all alternate map register or DMA register sets currently allocated
9Ch alternate map register or DMA register sets not supported
9Dh undefined or unallocated alternate map register or DMA register set
9Eh dedicated DMA channels not supported
9Fh specified dedicated DMA channel not supported
A0h no such handle name
A1h a handle found had no name, or duplicate handle name
A2h attempted to wrap around 1M conventional address space
A3h source array corrupted
A4h operating system denied access
--------m-6741-------------------------------
INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
AH = 41h
Return: AH = status (see also AH=40h)
00h function successful
BX = segment of page frame
SeeAlso: AH=58h,AH=68h
--------m-6742-------------------------------
INT 67 - LIM EMS - GET NUMBER OF PAGES
AH = 42h
Return: AH = status (see also AH=40h)
00h function successful
BX = number of unallocated pages
DX = total number of pages
BUG: DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
when this call is made; use AH=46h to ensure that EMM386 is ON
before making this call
SeeAlso: INT 2F/AX=2702h
--------m-6743-------------------------------
INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
AH = 43h
BX = number of logical pages to allocate
Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #3319)
DX = handle if AH=00h
SeeAlso: AH=45h
--------u-674321-----------------------------
INT 67 - Q87 v4+ - INSTALLATION CHECK
AX = 4321h
EAX = 87654321h (entire EAX value required)
Return: EAX = 12345678h if Q87 is installed
Note: this call requires that VCPI services be available; if they are not,
this call will not be recognized
BUG: v4.00-v4.03 will hang on most machines when run under bare DOS with
no memory manager, because neither Q87 nor UNLOAD87 checks whether
there is a valid INT 67 handler before performing an installation
check via INT 67
SeeAlso: AX=2833h,INT 21/AX=4321h
--------m-6744-------------------------------
INT 67 - LIM EMS - MAP MEMORY
AH = 44h
AL = physical page number (0-3)
BX = logical page number
or FFFFh to unmap (QEMM)
DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #3319)
SeeAlso: AH=69h
--------m-6745-------------------------------
INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
AH = 45h
DX = EMM handle
Return: AH = status (00h,80h,81h,83h,84h,86h) (see #3319)
SeeAlso: AH=43h
--------m-6746-------------------------------
INT 67 - LIM EMS - GET EMM VERSION
AH = 46h
Return: AH = status (00h,80h,81h,84h) (see #3319)
AL = EMM version number if AH=00h
--------m-6747-------------------------------
INT 67 - LIM EMS - SAVE MAPPING CONTEXT
AH = 47h
DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #3319)
SeeAlso: AH=48h
--------m-6748-------------------------------
INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
AH = 48h
DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #3319)
SeeAlso: AH=47h
--------m-6749-------------------------------
INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
AH = 49h
Note: defined in EMS 3.0, but undocumented in EMS 3.2
--------m-674A-------------------------------
INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
AH = 4Ah
Note: defined in EMS 3.0, but undocumented in EMS 3.2
--------m-674B-------------------------------
INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
AH = 4Bh
Return: AH = status (00h,80h,81h,83h,84h) (see #3319)
BX = number of EMM handles if AH=00h
--------m-674C-------------------------------
INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
AH = 4Ch
DX = EMM handle
Return: AH = status (see #2472)
BX = number of logical pages if AH=00h
SeeAlso: AH=4Dh
--------m-674D-------------------------------
INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
AH = 4Dh
ES:DI -> array to receive information
Return: AH = status (00h,80h,81h,84h) (see #3319)
---if AH=00h---
BX = number of active EMM handles
array filled with 2-word entries, consisting of a handle and the
number of pages allocated to that handle
SeeAlso: AH=4Ch
--------m-674E-------------------------------
INT 67 - LIM EMS - GET OR SET PAGE MAP
AH = 4Eh
AL = subfunction
00h get mapping registers
01h set mapping registers
02h get and set mapping registers at once
03h get size of page-mapping array
DS:SI -> array holding information (AL=01h/02h)
ES:DI -> array to receive information (AL=00h/02h)
Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
00h successful
AL = bytes in page-mapping array (AL=03h only)
array pointed to by ES:DI receives mapping info (AL=00h/02h)
Notes: this function was designed to be used by multitasking operating systems
and should not ordinarily be used by appplication software.
MD386 returns the size of the page-mapping array in AX instead of AL
SeeAlso: AH=4Fh
--------m-674F-------------------------------
INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
AH = 4Fh
AL = subfunction
00h get partial page map
DS:SI -> structure containing list of segments whose mapping
contexts are to be saved
ES:DI -> array to receive page map
01h set partial page map
DS:SI -> structure containing saved partial page map
02h get size of partial page map
BX = number of mappable segments in the partial map to be saved
Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
8Bh one of the specified segments is not mappable
A3h contents of partial page map corrupted or count of mappable
segments exceeds total number of mappable segments in system
AL = size of partial page map for subfunction 02h
SeeAlso: AH=4Eh
--------m-6750-------------------------------
INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
AH = 50h
AL = subfunction
00h use physical page numbers
01h use segment addresses
DX = handle
CX = number of entries in array
DS:SI -> mapping array (see #3320)
Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #3319)
SeeAlso: AH=40h
Format of EMS mapping array entry:
Offset Size Description (Table 3320)
00h WORD logical page number or FFFFh to unmap physical page
02h WORD physical page number or segment address
--------m-6751-------------------------------
INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
AH = 51h
DX = handle
BX = number of pages to be allocated to handle
Return: AH = status (00h,80h,81h,83h,84h,87h,88h) (see #3321)
BX = actual number of pages allocated to handle
(Table 3321)
Values for EMS function status:
00h successful
80h internal error
81h hardware malfunction
83h invalid handle
84h undefined function requested
87h more pages requested than present in system
88h more pages requested than currently available
8Ah invalid logical page number encountered
8Bh invalid physical page number encountered
8Fh undefined subfunction
90h undefined attribute type
91h feature not supported
A0h no such handle name
A1h duplicate handle name
--------m-6752-------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
AH = 52h
AL = subfunction
00h get handle attributes
Return: AL = attribute
00h handle is volatile
01h handle is nonvolatile
01h set handle attributes
BL = new attribute
00h handle is volatile
01h handle is nonvolatile
02h get attribute capability
Return: AL = attribute capability
00h only volatile handles supported
01h both volatile and non-volatile supported
DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #3319)
SeeAlso: AH=53h
--------m-6753-------------------------------
INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
AH = 53h
AL = subfunction
00h get handle name
ES:DI -> 8-byte buffer for handle name
01h set handle name
DS:SI -> 8-byte handle name
DX = handle
Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #3319)
SeeAlso: AH=52h
--------m-6754-------------------------------
INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
AH = 54h
AL = subfunction
00h get handle directory
ES:DI -> buffer for handle directory (see #3322)
01h search for named handle
DS:SI -> 8-byte name
02h get total number of handles
Return: AL = number of entries in handle directory (subfunction 00h)
DX = value of named handle (subfunction 01h)
BX = total number of handles (subfunction 02h)
AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #3321)
A1h a handle found had no name
Format of EMS handle directory entry:
Offset Size Description (Table 3322)
00h WORD handle
02h 8 BYTEs handle's name
--------m-6755-------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
AH = 55h
AL = subfunction
00h physical page numbers provided by caller
01h segment addresses provided by caller
DX = handle
DS:SI -> structure containing map and jump address
Return: (at target address unless error)
AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #3319)
SeeAlso: AH=56h
--------m-6756-------------------------------
INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
AH = 56h
AL = subfunction
00h physical page numbers provided by caller
DX = handle
DS:SI -> structure containing page map and call address
01h segment addresses provided by caller
DX = handle
DS:SI -> structure containing page map and call address
02h get page map stack space required
Return: BX = stack space required
Return: (if successful, the target address is called. Use a RETF to return
and restore mapping context)
AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #3319)
SeeAlso: AH=55h
--------m-6756FF-----------------------------
INT 67 - RM386 v6.00 - ???
AX = 56FFh
DS:SI -> ???
???
Return: ???
--------m-6757-------------------------------
INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
AH = 57h
AL = subfunction
00h move memory region
01h exchange memory region
DS:SI -> structure describing source and destination (see #3324)
Return: AH = status (see #3323)
Note: source and destination may overlap for a move, in which case the copy
direction is chosen such that the destination receives an intact copy
of the source region
(Table 3323)
Values for EMS function status:
00h successful
80h internal error
81h hardware failure
83h invalid handle
84h undefined function requested
8Ah invalid logical page number encountered
8Fh undefined subfunction
92h successful, but a portion of the source region has been overwritten
93h length of source or destination region exceeds length of region
allocated to either source or destination handle
94h conventional and expanded memory regions overlap
95h offset within logical page exceeds size of logical page
96h region length exceeds 1M
97h source and destination EMS regions have same handle and overlap
98h memory source or destination type undefined
A2h attempted to wrap around 1M conventional address space
Format of EMS copy data:
Offset Size Description (Table 3324)
00h DWORD region length in bytes
04h BYTE source memory type
00h conventional
01h expanded
05h WORD source handle (0000h if conventional memory)
07h WORD source initial offset (within page if EMS, segment if convent)
09h WORD source initial segment (conv mem) or logical page (EMS)
0Bh BYTE destination memory type
00h conventional
01h expanded
0Ch WORD destination handle
0Eh WORD destination initial offset
10h WORD destination initial segment or page
--------m-6758-------------------------------
INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
AH = 58h
AL = subfunction
00h get mappable physical address array
ES:DI -> buffer to be filled with array (see #3325)
01h get number of entries in m.p.a. array
Return: CX = number of entries in array
AH = status (00h,80h,81h,84h,8Fh) (see #3323)
Note: the returned array for subfunction 00h is filled in physical segment
address order
Format of EMS mappable physical address entry:
Offset Size Description (Table 3325)
00h WORD physical page segment
02h WORD physical page number
--------m-675857-----------------------------
INT 67 U - NETROOM??? - ???
AX = 5857h
BX = function??? (0057h,0059h,0159h seen)
???
Return: ???
Note: BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
be analogous to AX=5801h; BX=0057h appears to indicate whether
AX=580xh or AX=5857h/BX=0x59h should be used
SeeAlso: AX=5BF0h
--------m-6759-------------------------------
INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
AH = 59h
AL = subfunction
00h get hardware configuration array
ES:DI -> buffer to be filled with array (see #3326)
01h get unallocated raw page count
Return: BX = unallocated raw pages
DX = total raw pages
Return: AH = status (see also AH=58h"EMS 4.0")
A4h access denied by operating system
Note: subfunction 00h is for use by operating systems only, and can be
enabled or disabled at any time by the operating system
Format of EMS hardware configuration array:
Offset Size Description (Table 3326)
00h WORD size of raw EMM pages in paragraphs
02h WORD number of alternate register sets
04h WORD size of mapping-context save area in bytes
06h WORD number of register sets assignable to DMA
08h WORD DMA operation type
0000h DMA with alternate register sets
0001h only one DMA register set
--------m-675A-------------------------------
INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
AH = 5Ah
AL = subfunction
00h allocate standard pages
01h allocate raw pages
BX = number of pages to allocate
Return: DX = handle
AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #3319)
--------m-675B-------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
AH = 5Bh
AL = subfunction
00h get alternate map register set
Return: BL = current active alternate map register set number
ES:DI -> map register context save area if BL=00h
01h set alternate map register set
BL = new alternate map register set number
ES:DI -> map register context save area if BL=0
02h get alternate map save array size
Return: DX = array size in bytes
03h allocate alternate map register set
Return: BL = number of map register set; 00h = not supported
04h deallocate alternate map register set
BL = number of alternate map register set
Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #3327)
Note: this function is for use by operating systems only, and can be
enabled or disabled at any time by the operating system
(Table 3327)
Values for EMS function status:
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
9Ah specified alternate map register or DMA register set not supported
9Bh all alternate map register or DMA register sets currently allocated
9Ch alternate map register or DMA register sets not supported
9Dh undefined or unallocated alternate map register/DMA register set
9Eh dedicated DMA channels not supported
9Fh specified dedicated DMA channel not supported
A3h source array corrupted
A4h operating system denied access
--------m-675B-------------------------------
INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
AH = 5Bh
AL = subfunction
05h allocate DMA register set
Return: BL = DMA register set number, 00h if not supported
06h enable DMA on alternate map register set
BL = DMA register set number
DL = DMA channel number
07h disable DMA on alternate map register set
BL = DMA register set number
08h deallocate DMA register set
BL = DMA register set number
Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #3327)
Note: this function is for use by operating systems only, and can be
enabled or disabled at any time by the operating system
--------m-675BE0-----------------------------
INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
AX = 5BE0h
ES:BX -> memory for which to get linear address
Return: AH = 00h
CX:DX = linear address of physical memory corresponding to ES:BX
Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
MICEMM is a memory manager for some Micronics motherboards
Note: this has been superceded by AX=DE06h, which should be used instead
SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
--------m-675BE1-----------------------------
INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
AX = 5BE1h
Return: AH = 00h
CX = code and data size in bytes
DX:BX = physical address of RM386 code
DI:SI = total size of RM386 area including handle tables
BP = number of additional pages (high DOS, etc.)
SeeAlso: AX=5BE0h,AX=5BE2h
--------m-675BE2-----------------------------
INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
AX = 5BE2h
Return: DS:SI -> V86-mode table (see #3328)
ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
SeeAlso: AX=5BE0h,AX=5BE1h
Format of RM386 V86-mode table:
Offset Size Description (Table 3328)
00h DWORD original INT 13 vector
04h DWORD original INT 15 vector
08h DWORD original INT 19 vector
0Ch DWORD original INT 21 vector
10h DWORD original INT 4B vector
14h DWORD original INT 67 vector
--------m-675BF0-----------------------------
INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
AX = 5BF0h
Return: AH = 00h if MICEMM or RM386 present
BX = code segment of driver
Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
manager included in Helix Software's Netroom
SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
--------m-675BF1-----------------------------
INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
AX = 5BF1h
ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
Return: AH = 00h
ES:BX buffer filled (see #3329)
Note: each byte in the buffer specifies the type of a 4K page of memory
SeeAlso: AX=5BE0h,AX=5BF0h
(Table 3329)
Values for MICEMM/RM386 memory type:
00h unused (MICEMM), RAM/available (RM386)
02h DOS extension (XMS UMB)
04h shadowed ROM
08h mappable EMS
10h page frame
20h ROM
40h reserved (video memory, etc)
80h RAM (MICEMM), Windows UMB (RM386)
--------m-675BF2-----------------------------
INT 67 - RM386 - GET RM386 INTERNAL DATA
AX = 5BF2h
CX = size of buffer
DS:SI -> buffer for internal data
(documentation says ES:BX -> buffer, SI = offset within RM386)
Return: buffer filled
Note: the data returned by this function is release-specific
SeeAlso: AX=5BF0h
--------m-675BF3-----------------------------
INT 67 - RM386 - RETURN TO REAL MODE
AX = 5BF3h
Return: nothing
Note: use AX=5DE0h instead of this functin
SeeAlso: AX=5BF0h,AX=5DE0h
--------m-675BF4-----------------------------
INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
AX = 5BF4h
Return: AH = 00h
BX = global flags 1 (see #3330)
CX = global flags 2 (see #3331)
DX = global flags 3 (see #3332)
SI = global flags 4 (see #3333)
SeeAlso: AX=5BF0h
Bitfields for RM386 global flags 1:
Bit(s) Description (Table 3330)
0-3 reserved
4 V86 mode
5 reserved
6 80386 or higher CPU
7,8 reserved
9 A20 enabled at startup
10 "HIGH_IO"
11 ROM
12 large frame
13,14 reserved
15 PS/2-style A20 control
Bitfields for RM386 global flags 2:
Bit(s) Description (Table 3331)
0 HMA in use
1 XMS present
2 using XMS driver memory
3 HIGH (NEAT only)
4-7 reserved
8 NOBKTRAP
9 NORESET
10 ALTMAP
11 NOFRAME
12-15 reserved
Bitfields for RM386 global flags 3:
Bit(s) Description (Table 3332)
0 NOTEST
1 NOEBDA
2 Windows3 support
3 system board mouse
4 DISKBUF
5 EBDALOW
6 A20 global enable flag
7 A20 flag
8 EBDA moved to stub
9 VXD file was found
10 reserved
11 NOBOOTMAP
12 AUTO
13 PS/2 machine
14 Compaq ROM merge active
15 NOHMA set
Bitfields for RM386 global flags 4:
Bit(s) Description (Table 3333)
0 "NOV8259" don't virtualize interrupt controller
1 NOSCSI
2 NOSCAN
3 NOTR
4 ALTBOOT
5 NOCOMPQ
6 KB2TRAP
7 DESHADOW
8 Video 7 VGA detected
9 reserved
10 NOVGA
11 NOPS2
12 DEBUG
13 NOVKB
14,15 reserved
--------m-675BF5-----------------------------
INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
AX = 5BF5h
Return: AH = status
00h successful
BX = current number of allocated EMS handles
84h function not available
SeeAlso: AX=5BF0h
--------m-675C-------------------------------
INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
AH = 5Ch
Return: AH = status (see #3334)
Note: when MS-DOS v6.xx EMM386 is loaded and the keyboard driver supports
INT 15/AH=4Fh (keyboard intercept) calls, the system may hang
instead of booting if this function is called just prior to a jump
to F000h:FFF0h
(Table 3334)
Values for EMS function status:
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
--------m-675D-------------------------------
INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
AH = 5Dh
AL = subfunction
00h enable OS Function Set
01h disable OS Function Set
02h return access key (resets memory manager, returns access key at
next invocation)
BX,CX = access key returned by first invocation
Return: BX,CX = access key, returned only on first invocation of function
AH = status (see also AH=5Ch)
8Fh undefined subfunction
A4h operating system denied access
--------m-675D03-----------------------------
INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
AX = 5D03h
???
Return: ???
Program: MD386 is a subset EMS memory manager by Nanosoft specifically
designed for use with the MultiDOS Plus multitasker
SeeAlso: AX=5D04h,AX=5E00h
--------m-675D04-----------------------------
INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
AX = 5D04h
BX = alternate register set number
ES:DI -> 1024-byte buffer for map structure
Return: AH = status (see #3319)
buffer filled if AH=00h
Note: used for debugging purposes
SeeAlso: AX=5D05h
--------m-675D05-----------------------------
INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
AX = 5D05h
BX = handle number
ES:DI -> 1024-byte buffer for handle table
Return: AH = status (see #3319)
buffer filled if AH=00h
Note: used for debugging purposes
SeeAlso: AX=5D04h
--------m-675DE0-----------------------------
INT 67 - RM386 - DISABLE RM386
AX = 5DE0h
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DE1h
--------m-675DE1-----------------------------
INT 67 - RM386 - ENABLE RM386
AX = 5DE1h
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DE0h
--------m-675DE2-----------------------------
INT 67 - RM386 - GET PAGE TABLE
AX = 5DE2h
ES:DI -> 1088-byte buffer for page table
Return: ES:DI buffer filled
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DE3h
--------m-675DE3-----------------------------
INT 67 - RM386 - SET PAGE TABLE
AX = 5DE3h
ES:DI -> 1088-byte buffer containing page table
Notes: only the access bits of the page table are used, the remainder is
ignored
RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DE2h
--------m-675DE4-----------------------------
INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
AX = 5DE4h
BL = page number
BH = access (00h read-only, 01h read-write)
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
--------m-675DE5-----------------------------
INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
AX = 5DE5h
EBX = physical page number
DX = page number in first megabyte to be remapped (linear-addr SHR 12)
Return: AH = status
00h successful
8Bh invalid destination page (not in first megabyte)
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DE6h
--------m-675DE6-----------------------------
INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
AX = 5DE6h
BX = logical page number in 4K pages from beginning of memory for EMS
handle
CX = segment in first megabyte to be remapped
DX = previously-allocated EMS handle
Return: AH = status
00h successful
83h invalid handle
8Ah invalid logical page (out of handle's range)
8Bh invalid destination page (not in first megabyte)
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DE5h
--------m-675DE7-----------------------------
INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
AX = 5DE7h
BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
CX = number of pages to set
DX = first page number to set (in first megabyte)
Return: AH = status
00h successful
8Bh invalid destination page (not in first megabyte)
A5h invalid page bits
A6h invalid page count (overflows first megabyte)
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
--------m-675DE8-----------------------------
INT 67 - RM386 - GET PARTIAL PAGE TABLE
AX = 5DE8h
BX = starting page number in first megabyte+HMA (0000h-010Fh)
CX = number of page table entries to get
ES:DI -> buffer for DWORD page table entries
Return: AH = status (00h successful, 8Bh invalid page)
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DE9h
--------m-675DE9-----------------------------
INT 67 - RM386 - SET PARTIAL PAGE TABLE
AX = 5DE9h
BX = starting page number in first megabyte+HMA (0000h-010Fh)
CX = number of page table entries to get
DS:SI -> buffer of DWORD page table entries
Return: AH = status (00h successful, 8Bh invalid destination page)
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DE8h
--------m-675DEA-----------------------------
INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
AX = 5DEAh
BX = function
00h globally disable V86-mode trapping
01h globally enable V86-mode trapping
CL = interrupt to use for trapping
02h get I/O trapping state
Return: AH = status
00h successful
BX = current trapping state (function 02h)
0000h disabled, 0001h enabled
CX = interrupt used as trap interrupt (functions 00h and 02h)
Notes: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
when I/O trapping is enabled and I/O port access occurs, RM386
simulates an INT instruction for the specified interrupt; the
interrupt handler is responsible for decoding the trapped instruction
and performing the appropriate action. INT 2C/AX=002Dh provides a
similar but more-easily used interface.
SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
--------m-675DEB-----------------------------
INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
AX = 5DEBh
BX = function
00h disable V86-mode trapping for specified port
01h enable V86-mode trapping for specified port
02h get V86-mode trapping state for specified port
DX = port for which to enable/disable/query trapping
Return: AH = status
00h successful
BX = current trapping state (00h off, 01h on) (function 02)
A7h invalid port ID
A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
Notes: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DEAh
--------m-675DFD-----------------------------
INT 67 U - RM386 v6.00 - ???
AX = 5DFDh
???
Return: ???
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DFEh
--------m-675DFE-----------------------------
INT 67 U - RM386 v6.00 - ???
AX = 5DFEh
???
Return: ???
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DFDh
--------m-675DFF-----------------------------
INT 67 U - RM386 v6.00 - ???
AX = 5DFFh
???
Return: ???
Note: RM386 traps this function on the initial transition to protected
mode caused by the INT instruction, which means it can not be
overridden simply by hooking the interrupt
SeeAlso: AX=5DFDh,AX=5DFEh
--------m-675E00-----------------------------
INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
AX = 5E00h
DH = breakpoint number (0-3)
DL = breakpoint attributes (used to set DR7)
CX:BX = linear address of breakpoint
SeeAlso: AX=5D03h,AX=5E01h
--------m-675E01-----------------------------
INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
AX = 5E01h
BL = register number (0-3,7)
Return: CX:BX = value of specified DRx register
SeeAlso: AX=5E00h
--------m-675E02-----------------------------
INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
AX = 5E02h
CX:BX -> exception handler
Note: the specified exception handler is called with a simulated interrupt
whenever a debug exception occurs which was caused by a hardware
breakpoint set with the debug registers
SeeAlso: AX=5E04h,AX=5E05h
--------m-675E03-----------------------------
INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
AX = 5E03h
BL = register map set number
BH = new state (00h read-only, else read-write)
CX = linear page number (linear address SHR 12)
Note: setting write protection in map set 0 will cause the setting to become
the default for newly-allocated map sets
--------m-675E04-----------------------------
INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
AX = 5E04h
Return: BL = debug exception (low byte of DR6 register)
SeeAlso: AX=5E02h,AX=5E05h
--------m-675E05-----------------------------
INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
AX = 5E05h
Note: may be required when using AX=5E02h for handling instruction
breakpoints
SeeAlso: AX=5E02h,AX=5E04h
--------m-6760-------------------------------
INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
AH = 60h
ES:DI -> buffer
Return: AH = status (see also AH=40h)
AL = number of entries
buffer at ES:DI filled
--------m-6761-------------------------------
INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
AH = 61h
???
Return: ???
Note: can be used by accelerator card manufacturer to flush RAM cache,
ensuring that the cache accurately reflects what the processor would
see without the cache.
--------m-676100-----------------------------
INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - INSTALLATION CHECK???
AX = 6100h
Return: AH = status (00h if installed???)
Note: STB's RAPIDMAP.SYS EMS driver calls this function and AX=6101h if
the signature "GACXXX" is found at offset 0Ah in the INT 67 handler's
segment (i.e. a device driver named GACXXX?? has hooked INT 67)
SeeAlso: AX=6101h,INT 02/SI=0714h
--------m-676101-----------------------------
INT 67 - EEMS - STB GENERIC ACCELERATOR CARD SUPPORT - GET ??? ENTRY POINT
AX = 6101h
Return: AH = status
---if AH=00h---
ES:BX -> ??? entry point
SeeAlso: AX=6100h
--------m-6768-------------------------------
INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
AH = 68h
ES:DI -> buffer
Return: AH = status (see also AH=40h)
AL = number of entries
buffer at ES:DI filled
Note: equivalent to LIM 4.0 function 58h
--------m-6769-------------------------------
INT 67 - EEMS - MAP PAGE INTO FRAME
AH = 69h
AL = frame number
BX = page number
DX = handle
Return: AH = status (see also AH=40h)
Note: similar to EMS function 44h
SeeAlso: AH=44h,AH=50h,AH=6Ah
--------m-676A-------------------------------
INT 67 - EEMS - PAGE MAPPING
AH = 6Ah
AL = subfunction
00h save partial page map
CH = first page frame
CL = number of frames
ES:DI -> buffer which is to be filled
01h restore partial page map
CH = first page frame
CL = number of frames
DI:SI -> previously saved page map
02h save and restore partial page map
CH = first page frame
CL = number of frames
ES:DI = buffer for current page map
DI:SI = new page map
03h get size of save array
CH = first page frame
CL = number of frames
Return: AL = size of array in bytes
04h switch to standard map register setting
05h switch to alternate map register setting
06h deallocate pages mapped to frames in conventional memory
CH = first page frame
CL = number of frames
Return: AH = status (see #3319)
Note: similar to EMS function 4Eh, except that a subrange of pages can be
specified
SeeAlso: AH=69h
--------m-676B-------------------------------
INT 67 - DESQview 2.42-2.53 - BUG
AH = 6Bh
Note: the EMM.DVR portion of DESQview branches to a random location on this
function due to a fencepost error
--------m-67DD-------------------------------
INT 67 - Quadtel QMAPS - API
AH = DDh
AL = function
???
Return: ???
Notes: details are not yet available
Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
supports this API
SeeAlso: AH=3Fh,AX=FFA5h
--------E-67DE00-----------------------------
INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
AX = DE00h
Return: AH = status
00h VCPI is present
BH = major version number
BL = minor version number
nonzero VCPI not present
BUG: MS Windows 3.00 is reported to "object violently" to this call.
SeeAlso: INT 2F/AX=1687h
--------E-67DE01-----------------------------
INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
AX = DE01h
ES:DI -> 4K page table buffer
DS:SI -> three descriptor table entries in GDT
first becomes code segment descriptor, other two for use by
main control program
Return: AH = 00h successful
DI -> first unused page table entry in buffer
EBX -> protected mode entry point in code segment (see #3335)
AH = nonzero failed
Note: protected mode entry point may be called with AX=DE00h-DE05h and
AX=DE0Ch (in each case, all other registers as appropriate for
the function)
SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
(Table 3335)
Call QEMM v6.03 protected mode entry point additionally with:
AX = DF00h ???
???
Return: ???
AX = DF01h ???
???
Return: ???
--------E-67DE02-----------------------------
INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
AX = DE02h
Return: AH = 00h successful
EDX = physical address of highest 4K memory page
AH nonzero: failed
SeeAlso: AH=3Fh
--------E-67DE03-----------------------------
INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
AX = DE03h
Return: AH = 00h successful
EDX = number of free 4K pages
AH nonzero: failed
Notes: returns total number of pages available to ALL tasks in system
also available in protected mode by calling the protected-mode VCPI
entry point (see AX=DE01h,#3335)
SeeAlso: AX=DE04h
--------E-67DE04-----------------------------
INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
AX = DE04h
Return: AH = 00h successful
EDX = physical address of allocated page
AH nonzero: failed
Notes: the client program is responsible for freeing all memory allocated
with this call before terminating
also available in protected mode by calling the protected-mode VCPI
entry point (see AX=DE01h,#3335)
SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
--------E-67DE05-----------------------------
INT 67 - Virtual Control Program Interface - FREE 4K PAGE
AX = DE05h
EDX = physical address of 4K page
Return: AH = status
00h successful
nonzero failed
Note: also available in protected mode by calling the protected-mode VCPI
entry point (see AX=DE01h,#3335)
SeeAlso: AH=3Fh,AX=DE04h
--------E-67DE06-----------------------------
INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
AX = DE06h
CX = page number (linear address shifted right 12 bits)
Return: AH = status
00h successful
EDX = physical address of page
nonzero invalid page number (AH = 8Bh recommended)
SeeAlso: AX=5BE0h
--------E-67DE07-----------------------------
INT 67 - Virtual Control Program Interface - READ CR0
AX = DE07h
Return: AH = 00h
EBX = value of Control Register 0
SeeAlso: AH=3Fh,AX=DE07h
--------E-67DE08-----------------------------
INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
AX = DE08h
ES:DI -> array of 8 DWORDs
Return: AH = 00h
buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
SeeAlso: AH=3Fh,AX=DE09h
--------E-67DE09-----------------------------
INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
AX = DE09h
ES:DI -> array of 8 DWORDs holding new values of debug registers
Return: AH = 00h
Note: values for DR4 and DR5 ignored
SeeAlso: AH=3Fh,AX=DE08h
--------E-67DE0A-----------------------------
INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
AX = DE0Ah
Return: AH = 00h successful
BX = first vector used by master 8259 (IRQ0)
CX = first vector used by slave 8259 (IRQ8)
AH nonzero: failed
Note: CX is undefined in systems without a slave 8259
SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
--------E-67DE0B-----------------------------
INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
AX = DE0Bh
BX = first vector used by master 8259
CX = first vector used by slave 8259
interrupts disabled
Return: AH = 00h successful
AH nonzero: failed
Notes: This call merely informs the server that the client has changed the
interrupt mappings. The client may not change the mappings if they
have already been changed by the server or another client, and is
responsible for restoring the original mappings before terminating.
SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
--------E-67DE0C-----------------------------
INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
AX = DE0Ch
ESI = linear address in first megabyte of values for system
registers (see #3336)
interrupts disabled
Return: interrupts disabled
GDTR, IDTR, LDTR, TR loaded
SS:ESP must have at least 16 bytes space, and the entry point is
required to set up a new stack before enabling interrupts
EAX, ESI, DS, ES, FS, GS destroyed
Note: in protected mode, calling the protected-mode VCPI entry point with
AX = DE0Ch
DS = segment selector mapping entire linear address space obtained
via AX=DE01h
SS:ESP in first megabyte of linear memory
STACK:QWORD return address from FAR call to 32-bit segment
DWORD EIP
DWORD CS
DWORD reserved for EFLAGS
DWORD ESP
DWORD SS
DWORD ES
DWORD DS
DWORD FS
DWORD GS
and interrupts disabled, will switch to virtual86 mode with
interrupts disabled, all segment registers loaded, and EAX
destroyed.
SeeAlso: AH=3Fh,INT 15/AH=89h,INT D4/AH=10h
Format of system register values for switch to protected mode:
Offset Size Description (Table 3336)
00h DWORD value for CR3
04h DWORD linear address in first megabyte of value for GDTR
08h DWORD linear address in first megabyte of value for IDTR
0Ch WORD value for LDTR
0Eh WORD value for TR
10h PWORD CS:EIP of protected mode entry-point
--------m-67DE0F-----------------------------
INT 67 - Netroom3 - ???
AX = DE0Fh
???
Return: ???
Note: called by Netroom's DPMI.EXE
--------m-67EF-------------------------------
INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
AH = EFh
AL = function (00h-12h,80h-8Fh)
other register as appropriate for XMS function
Return: varies by function (see INT 2F/AX=4310h"XMS")
Note: these functions appear to be equivalent to the XMS functions with the
same numbers
SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h"XMS"
--------m-67FFA5-----------------------------
INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
AX = FFA5h
Return: AX = 845Ah/84A5h if loaded
BX:CX -> API entry point (see #3337)
Notes: this call is available even if EMM386 is not providing EMS
the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
if no other program has hooked INT 67, an alternate installation
check is to test for the string
"MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
handler's segment; the word immediately preceding this string
contains the offset of the API entry point
SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
(Table 3337)
Call EMM386.EXE API entry point with:
AH = 00h get memory manager's status
Return: AH = status
bit 0: not active (OFF)
bit 1: in "Auto" mode
AH = 01h set memory manager's state
AL = new state (00h ON, 01h OFF, 02h AUTO)
AH = 02h Weitek coprocessor support
AL = subfunction
00h get Weitek support state
Return: AL = status
bit 0: Weitek coprocessor is present
bit 1: Weitek support is enabled
01h turn on Weitek support
02h turn off Weitek support
--- v4.20-4.41 only ---
AH = 03h Windows support???
AL = subfunction (00h, 01h)
AH = 04h print copyright notice to standard output
(using INT 21/AH=09h)
AH = 05h print available report
(the one shown when running EMM386 from the DOS prompt)
SeeAlso: #1200 at INT 21/AX=4402h/SF=02h,#2304 at INT 2F/AX=12FFh/BX=0106h
--------m-67FFA5BX4345-----------------------
INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
AX = FFA5h
BX = 4345h ("CE")
DX = subfunction
0000h unshadow video ROM???
0001h shadow video ROM???
0002h map pages
CX = number of pages (00h=one)
ESI = linear address of first page to map into address space
EDI = linear starting address at which pages are to be visible
0003h get ???
Return: DX = ??? (0-2)
0004h BUG: crashes system due to fencepost error
Return: AH = 84h
AL = status (84h = error, FFh = success)
Note: if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
Microsoft's EMM386 (see AX=FFA5h"EMM386")
SeeAlso: AX=FFA5h"EMM386",#1200 at INT 21/AX=4402h/SF=02h,#3337
--------I-68---------------------------------
INT 68 - Sangoma CCPOP 3270 resident module
SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
--------N-68---------------------------------
INT 68 - Novell NetWare LU6.2
Note: the installation check consists of testing for the signature string
"APPC/PC" nine bytes before the interrupt handler
SeeAlso: AH=01h/SF=1B00h,AH=FAh
--------h-68---------------------------------
INT 68 C - HP Vectra AT - IRQ16 - 8041 SERVICE REQUEST
SeeAlso: INT 08"IRQ0",INT 69"HP Vectra",INT 6F/AH=00h"HP"
--------N-6801--SF1B00-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
AH = 01h subfn 1B00h
DS:DX -> control block (see #3338)
Return: control block updated
SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h,INT 68"Novell"
Format of APPC/PC "DISPLAY" control block:
Offset Size Description (Table 3338)
00h 12 BYTEs reserved
0Ch WORD 1B00h (verb "DISPLAY")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h WORD 00h
1Ah 8 BYTEs (big-endian) logical unit ID
22h 8 BYTEs (big-endian) partner logical unit name
2Ah 8 BYTEs (big-endian) mode name
32h BYTE logical unit session limit
33h BYTE partner logical unit session limit
34h BYTE node maximum negotiable session limit
35h BYTE current session limit
36h BYTE minimum negotiated winner limit
37h BYTE maximum negotiated loser limit
38h BYTE active session count
39h BYTE active CONWINNER session count
3Ah BYTE active CONLOSER session count
3Bh BYTE session termination count
3Ch BYTE bit 7: SESSION_TERMINATION_TARGET_DRAIN
bit 6: SESSION_TERMINATION_SOURCE_DRAIN
(Table 3339)
Values for APPC/PC return code:
0000h successful
0001h BAD_TP_ID
0002h BAD_CONV_ID
0003h bad logical unit ID
0008h no physical unit attached
0110h bad state
01B1h BAD_PART_LUNAME
01B2h bad mode name
0201h physical unit already active
0211h logical unit already active
0212h BAD_PART_SESS
0213h BAD_RU_SIZES
0214h BAD_MODE_SESS
0216h BAD_PACING_CNT
0219h EXTREME_RUS
021Ah SNASVCMG_1
0223h SSCP_CONNECTED_LU
0230h invalid change
0243h too many TPs
0272h adapter close failure
0281h GET_ALLOC_BAD_TYPE
0282h unsuccessful
0283h DLC failure
0284h unrecognized DLC
0286h duplicate DLC
0301h SSCP_PU_SESSION_NOT_ACTIVE
0302h data exceeds RU size
0401h invalid direction
0402h invalid type
0403h segment overlap
0404h invalid first character
0405h table error
0406h conversion error
F0010000h APPC disabled
F0020000h APPC busy
F0030000h APPC abended
F0040000h incomplete
--------N-6801--SF2000-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
AH = 01h subfn 2000h
DS:DX -> control block (see #3340)
Return: control block updated
SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h
Format of APPC/PC "Attach Physical Unit" control block:
Offset Size Description (Table 3340)
00h 12 BYTEs reserved
0Ch WORD 2000h (verb "Attach Physical Unit")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h WORD 00h
1Ah BYTE version
1Bh BYTE release
1Ch 8 BYTEs (big-endian) net name
24h 8 BYTEs (big-endian) physical unit name
2Ch 8 BYTEs 00h
34h DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
(see also AH=01h/SF=2100h)
38h DWORD 00h
3Ch BYTE 00h RETURN_CONTROL: COMPLETE
01h RETURN_CONTROL: INCOMPLETE
--------N-6801--SF2100-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
AH = 01h subfn 2100h
DS:DX -> control block (see #3341)
Return: control block updated
SeeAlso: #3344,#3345,#3347,AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h
Format of APPC/PC "Attach Logical Unit" control block:
Offset Size Description (Table 3341)
00h 12 BYTEs reserved
0Ch WORD 2100h (verb "Attach Logical Unit")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h WORD 70 offset to partner logical unit record
1Ah 8 BYTEs (big-endian) logical unit name
22h 8 BYTEs (big-endian) logical unit ID
2Ah BYTE logical unit local address
2Bh BYTE logical unit session limit
2Ch DWORD pointer to CREATE_TP_EXIT routine,
FFFFFFFFh = reject incoming ALLOCATEs
00000000h = queue ALLOCATEs
30h DWORD 00h
34h DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
38h DWORD 00h
3Ch BYTE maximum TPs
3Dh BYTE queue depth
3Eh DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
42h DWORD 00h
46h WORD total length of partner records
48h var array of partner logical unit records (see #3342)
SeeAlso: #3344,#3345,#3347
Format of APPC/PC partner logical unit record:
Offset Size Description (Table 3342)
00h WORD length of this partner logical unit record
02h WORD 42 offset to mode records
04h 8 BYTEs (big-endian) partner logical unit name
0Ch BYTE partner logical unit security capabilities
bit 7: already verified
bit 6: conversation level security
bit 5: session level security
0Dh BYTE partner logical unit session limit
0Eh WORD partner logical unit maximum MC_SEND_LL
10h 8 BYTEs (big-endian) partner logical unit DLC name
18h BYTE partner logical unit adapter number
19h 17 BYTEs (counted string) partner logical unit adapter address
2Ah WORD total length of mode records
2Ch 16N BYTEs array of mode records (see #3343)
Format of mode record:
Offset Size Description (Table 3343)
00h WORD 16 length of this mode record
02h 8 BYTEs (big-endian) mode name
0Ah WORD RU_SIZE high bound
0Ch WORD RU_SIZE low bound
0Eh BYTE mode maximum negotiable session limit
0Fh BYTE pacing size for receive
Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
pointers are called by pushing the DWORD pointer to the verb on the stack and
then performing a FAR call.
Format of ACCESS_LU_LU_PW verb:
Offset Size Description (Table 3344)
00h 12 BYTEs reserved
0Ch WORD 1900h (verb "ACCESS_LU_LU_PW")
0Eh 8 BYTEs (big-endian) logical unit ID
16h 8 BYTEs (big-endian) logical unit name
1Eh 8 BYTEs (big-endian) partner logical unit name
26h 17 BYTEs (counted string) partner fully qualified logical unit name
37h BYTE password available (0=no, 1=yes)
38h 8 BYTEs password
SeeAlso: #3341,#3345,#3347
Format of CREATE_TP verb:
Offset Size Description (Table 3345)
00h 12 BYTEs reserved
0Ch WORD 2300h (verb "CREATE_TP")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) sense code (see #3346)
18h 8 BYTEs (big-endian) TP ID
20h 8 BYTEs (big-endian) logical unit ID
28h DWORD (big-endian) conversation ID
2Ch BYTE 0 basic conversation, 1 mapped conversation
2Dh BYTE 0 no sync level, 1 confirm
2Eh BYTE reserved
2Fh 65 BYTEs (counted string) transaction program name
70h 6 BYTEs 00h
76h WORD length of ERROR_LOG_DATA to return
78h DWORD pointer to ERROR_LOG_DATA buffer
7Ch 8 BYTEs (big-endian) partner logical unit name
84h 18 BYTEs (counted string) partner fully qualified logical unit name
96h 8 BYTEs (big-endian) mode name
9Eh 12 BYTEs 00h
AAh 11 BYTEs (counted string) password
B5h 11 BYTEs (counted string) user ID
C0h BYTE 0 verification should be performed
1 already verified
SeeAlso: #3344,#3347
(Table 3346)
Values for APPC/PC sense code:
00000000h Ok
080F6051h SECURITY_NOT_VALID
084B6031h TP_NOT_AVAIL_RETRY
084C0000h TP_NOT_AVAIL_NO_RETRY
10086021h TP_NAME_NOT_RECOGNIZED
10086034h CONVERSATION_TYPE_MISMATCH
10086041h SYNC_LEVEL_NOT_SUPPORTED
Format of SYSLOG verb:
Offset Size Description (Table 3347)
00h 12 BYTEs reserved
0Ch WORD 2600h (verb "SYSLOG")
0Eh 10 BYTEs 00h
18h WORD (big-endian) type
1Ah DWORD (big-endian) subtype
1Eh DWORD pointer to ADDITIONAL_INFO
22h DWORD (big-endian) conversation ID
26h 8 BYTEs (big-endian) TP ID
2Eh 8 BYTEs (big-endian) physical unit or logical unit name
36h WORD length of data
38h DWORD pointer to data
3Ch BYTE 00h
SeeAlso: #3344,#3345
--------N-6801--SF2200-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
AH = 01h subfn 2200h
DS:DX -> control block (see #3348)
Return: control block updated
SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h
Format of APPC/PC "Detach Logical Unit" control block:
Offset Size Description (Table 3348)
00h 12 BYTEs reserved
0Ch WORD 2200h (verb "Detach Logical Unit")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h 8 BYTEs (big-endian) logical unit ID
20h BYTE 00h
--------N-6801--SF2700-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
AH = 01h subfn 2700h
DS:DX -> control block (see #3349)
Return: control block updated
SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h
Format of APPC/PC "Detach Physical Unit" control block:
Offset Size Description (Table 3349)
00h 12 BYTEs reserved
0Ch WORD 2700h (verb "Detach Physical Unit")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h BYTE 00h type: hard
01h type: soft
--------N-6801--SF2B00-----------------------
INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
AH = 01h subfn 2B00h
DS:DX -> control block (see #3350)
Return: control block updated
SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h
Format of APPC/PC "Activate DLC" control block:
Offset Size Description (Table 3350)
00h 12 BYTEs reserved
0Ch WORD 2B00h (verb "Activate DLC")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h 8 BYTEs (big-endian) DLC name
20h BYTE adapter number
--------N-6802--SF0100-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
AH = 02h subfn 0100h
DS:DX -> control block (see #3351)
Return: control block updated
SeeAlso: AH=02h/SF=0500h
Format of APPC/PC "Allocate" control block:
Offset Size Description (Table 3351)
00h 12 BYTEs reserved
0Ch WORD 0100h (verb "Allocate" or "MC_Allocate")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE (MC_Allocate only) conversation type
0 basic conversation
1 mapped conversation
27h BYTE SYNC_LEVEL (00h none, 01h confirm)
28h WORD 0000h
2Ah BYTE RETURN_CONTROL
00h when session allocated
01h immediate
02h when session free
2Bh 8 BYTEs 00h
33h 8 BYTEs (big-endian) partner logical unit name
3Bh 8 BYTEs (big-endian) mode name
43h 65 BYTEs (counted string) TP name
84h BYTE security (00h none, 01h same, 02h pgm)
85h 11 BYTEs 00h
90h 11 BYTEs (counted string) password
9Bh 11 BYTEs (counted string) user ID
A6h WORD PIP_DATA length
A8h DWORD pointer to PIP_DATA
(Table 3352)
Values for APPC/PC primary return code:
0000h successful
0001h parameter check
0002h state check
0003h allocation error
0005h deallocate abended
0006h deallocate abended program
0007h deallocate abended SVC
0008h deallocate abended timer
0009h deallocate normal return
000Ah data posting blocked
000Bh posting not active
000Ch PROG_ERROR_NO_TRUNC
000Dh PROG_ERROR_TRUNC
000Eh PROG_ERROR_PURGING
000Fh CONV_FAILURE_RETRY
0010h CONV_FAILURE_NO_RETRY
0011h SVC_ERROR_NO_TRUNC
0012h SVC_ERROR_TRUNC
0013h SVC_ERROR_PURGING
0014h unsuccessful
0018h CNOS partner logical unit reject
0019h conversation type mixed
F001h APPC disabled
F002h APPC busy
F003h APPC abended
F004h incomplete
(Table 3353)
Values for APPC/PC error code:
0001h bad TP ID
0002h bad conversation ID
0004h allocation error, no retry
0005h allocation error, retry
0006h data area crosses segment boundary
0010h bad TPN length
0011h bad CONV length
0012h bad SYNC level
0013h bad security selection
0014h bad return control
0015h SEC_TOKENS too big
0016h PIP_LEN incorrect
0017h no use of SNASVCMG
0018h unknown partner mode
0031h confirm: SYNC_NONE
0032h confirm: bad state
0033h confirm: NOT_LL_BDY
0041h confirmed: bad state
0051h deallocate: bad type
0052h deallocate: flush bad state
0053h deallocate: confirm bad state
0055h deallocate: NOT_LL_BDY
0057h deallocate: log LL_WRONG
0061h flush: not send state
0091h post on receipt: invalid length
0092h post on receipt: not in receive state
0093h post on receipt: bad fill
00A1h prepare to receive:invalid type
00A2h prepare to receive: unfinished LL
00A3h prepare to receive: not in send state
00B1h receive and wait: bad state
00B2h receive and wait: NOT_LL_BDY
00B5h receive and wait: bad fill
00C1h receive immediate: not in receive state
00C4h receive immediate: bad fill
00E1h request to send: not in receive state
00F1h send data: bad LL
00F2h send data: not in send state
0102h send error: log LL wrong
0103h send error: bad type
0121h test: invalid type
0122h test: not in receive state
--------N-6802--SF0300-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
AH = 02h subfn 0300h
DS:DX -> control block (see #3354)
Return: control block updated
SeeAlso: AH=02h/SF=0400h
Format of APPC/PC "Confirm" control block:
Offset Size Description (Table 3354)
00h 12 BYTEs reserved
0Ch WORD 0300h (verb "Confirm" or "MC_Confirm")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE request to send received (0=no, 1=yes)
--------N-6802--SF0400-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
AH = 02h subfn 0400h
DS:DX -> control block (see #3355)
Return: control block updated
SeeAlso: AH=02h/SF=0300h
Format of APPC/PC "Confirmed" control block:
Offset Size Description (Table 3355)
00h 12 BYTEs reserved
0Ch WORD 0400h (verb "Confirmed" or "MC_Confirmed")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
--------N-6802--SF0500-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
AH = 02h subfn 0500h
DS:DX -> control block (see #3356)
Return: control block updated
SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h
Format of APPC/PC "Deallocate" control block:
Offset Size Description (Table 3356)
00h 12 BYTEs reserved
0Ch WORD 0500h (verb "Deallocate" or "MC_Deallocate")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE 00h
27h BYTE type
00h SYNC_LEVEL
01h FLUSH
02h ABEND_PROC
03h ABEND_SVC
04h ABEND_TIMER
05h ABEND
28h WORD (MC_Deallocate only) length of error log data
2Ah DWORD (MC_Deallocate only) pointer to error log data
--------N-6802--SF0600-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
AH = 02h subfn 0600h
DS:DX -> control block (see #3357)
Return: control block updated
SeeAlso: AH=02h/SF=0300h
Format of APPC/PC "Flush" control block:
Offset Size Description (Table 3357)
00h 12 BYTEs reserved
0Ch WORD 0600h (verb "Flush" or "MC_Flush")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
--------N-6802--SF0700-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
AH = 02h subfn 0700h
DS:DX -> control block (see #3358)
Return: control block updated
SeeAlso: AH=02h/SF=0300h
Format of APPC/PC "Get_Attributes" control block:
Offset Size Description (Table 3358)
00h 12 BYTEs reserved
0Ch WORD 0700h (verb "Get_Attributes" or "MC_Get_Attributes")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h 8 BYTEs (big-endian) logical unit ID
2Eh BYTE 00h
2Fh BYTE SYNC_LEVEL (0=none, 1=confirm)
30h 8 BYTEs (big-endian) mode name
38h 8 BYTEs (big-endian) own net name
40h 8 BYTEs (big-endian) own logical unit name
48h 8 BYTEs (big-endian) partner logical unit name
50h 18 BYTEs (counted string) partner's fully qualified logical unit name
62h BYTE 00h
63h 11 BYTEs (counted string) user ID
--------N-6802--SF0800-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
AH = 02h subfn 0800h
DS:DX -> control block (see #3359)
Return: control block updated
SeeAlso: AH=02h/SF=0300h
Format of APPC/PC "Get_Type" control block:
Offset Size Description (Table 3359)
00h 12 BYTEs reserved
0Ch WORD 0800h (verb "Get_Type")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE (ret) type (0=basic conversation, 1=mapped conversation)
--------N-6802--SF0900-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
AH = 02h subfn 0900h
DS:DX -> control block (see #3360)
Return: control block updated
SeeAlso: AH=02h/SF=0A00h
Format of APPC/PC "Post_on_Receipt" control block:
Offset Size Description (Table 3360)
00h 12 BYTEs reserved
0Ch WORD 0900h (verb "Post_on_Receipt")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h WORD maximum length
28h BYTE fill (0=buffer, 1=LL)
--------N-6802--SF0A00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
AH = 02h subfn 0A00h
DS:DX -> control block (see #3361)
Return: control block updated
SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h
Format of APPC/PC "Prepare_to_Receive" control block:
Offset Size Description (Table 3361)
00h 12 BYTEs reserved
0Ch WORD 0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE type (0=SYNC_LEVEL, 1=FLUSH)
27h BYTE locks (0=short, 1=long)
--------N-6802--SF0B00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
AH = 02h subfn 0B00h
DS:DX -> control block (see #3362)
Return: control block updated
SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h
Format of APPC/PC "Receive_and_Wait" control block:
Offset Size Description (Table 3362)
00h 12 BYTEs reserved
0Ch WORD 0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE type of information received (see #3363)
27h BYTE (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
28h BYTE Request_to_Send_Received (0=no, 1=yes)
29h WORD maximum length
2Bh WORD data length
2Dh DWORD pointer to data
(Table 3363)
Values for type of information received:
00h data
01h data complete
02h data incomplete
03h confirm
04h confirm send
05h confirm deallocate
06h send
--------N-6802--SF0C00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
AH = 02h subfn 0C00h
DS:DX -> control block (see #3364)
Return: control block updated
SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h
Format of APPC/PC "Receive_Immediate" control block:
Offset Size Description (Table 3364)
00h 12 BYTEs reserved
0Ch WORD 0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE type of information received (see #3363)
27h BYTE (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
28h BYTE Request_to_Send_Received (0=no, 1=yes)
29h WORD maximum length
2Bh WORD data length
2Dh DWORD pointer to data
--------N-6802--SF0E00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
AH = 02h subfn 0E00h
DS:DX -> control block (see #3365)
Return: control block updated
SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h
Format of APPC/PC "Request_to_Send" control block:
Offset Size Description (Table 3365)
00h 12 BYTEs reserved
0Ch WORD 0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
--------N-6802--SF0F00-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
AH = 02h subfn 0F00h
DS:DX -> control block (see #3366)
Return: control block updated
SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h
Format of APPC/PC "Send_Data" control block:
Offset Size Description (Table 3366)
00h 12 BYTEs reserved
0Ch WORD 0F00h (verb "Send_Data" or "MC_Send_Data")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE request to send received (0=no, 1=yes)
27h BYTE 00h
28h WORD data length
2Ah DWORD pointer to data
--------N-6802--SF1000-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
AH = 02h subfn 1000h
DS:DX -> control block (see #3367)
Return: control block updated
SeeAlso: AH=02h/SF=0F00h
Format of APPC/PC "Send_Error" control block:
Offset Size Description (Table 3367)
00h 12 BYTEs reserved
0Ch WORD 1000h (verb "Send_Error" or "MC_Send_Error")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE request to send received (0=no, 1=yes)
27h BYTE type (0=program, 1=SVC)
28h DWORD 00h
2Ch WORD (MC_Send_Error only) LOG_DATA length
2Eh DWORD (MC_Send_Error only) pointer to LOG_DATA
--------N-6802--SF1200-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - TEST
AH = 02h subfn 1200h
DS:DX -> control block (see #3368)
Return: control block updated
SeeAlso: AH=02h/SF=1300h
Format of APPC/PC "Test" control block:
Offset Size Description (Table 3368)
00h 12 BYTEs reserved
0Ch WORD 1200h (verb "Test" or "MC_Test")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE (MC_Test only) test (0=posted, 1=request_to_send received)
Note: error code has different interpretations for:
0 posted data
1 posted not data (primary return code = 0)
1 bad TP_ID (primary return code = 1)
--------N-6802--SF1300-----------------------
INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
AH = 02h subfn 1300h
DS:DX -> control block (see #3369)
Return: control block updated
SeeAlso: AH=02h/SF=1200h
Format of APPC/PC "Wait" control block:
Offset Size Description (Table 3369)
00h 12 BYTEs reserved
0Ch WORD 1300h (verb "Wait")
0Eh BYTE 1 if MC_ (mapped conversation) form of verb
0 if basic verb
0Fh 5 BYTEs reserved (0)
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) error code (see #3353,#3368)
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD (big-endian) conversation ID
26h BYTE number of conversations to wait on
Note: error codes have interpretations as for AH=02h/SF=1200h
--------N-6803--SF2400-----------------------
INT 68 - APPC/PC - TP STARTED
AH = 03h subfn 2400h
DS:DX -> control block (see #3370)
Return: control block updated
Format of APPC/PC "TP Started" control block:
Offset Size Description (Table 3370)
00h 12 BYTEs reserved
0Ch WORD 2400h (verb "TP Started")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h WORD 00h
1Ah 8 BYTEs (big-endian) logical unit ID
22h 8 BYTEs (big-endian) TP ID
--------N-6803--SF2800-----------------------
INT 68 - APPC/PC - GET ALLOCATE
AH = 03h subfn 2800h
DS:DX -> control block (see #3371)
Return: control block updated
Format of APPC/PC "Get ALLOCATE" control block:
Offset Size Description (Table 3371)
00h 12 BYTEs reserved
0Ch WORD 2800h (verb "Get ALLOCATE")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h WORD 00h
1Ah 8 BYTEs (big-endian) logical unit ID
22h BYTE type (00h dequeue, 01h test)
23h DWORD pointer to CREATE_TP record
--------N-6803--SF2A00-----------------------
INT 68 - APPC/PC - CHANGE LOGICAL UNIT
AH = 03h subfn 2A00h
DS:DX -> control block (see #3372)
Return: control block updated
Format of APPC/PC "Change Logical Unit" control block:
Offset Size Description (Table 3372)
00h 12 BYTEs reserved
0Ch WORD 2A00h (verb "Change Logical Unit")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h WORD 00h
1Ah 8 BYTEs (big-endian) logical unit ID
22h DWORD pointer to CREATE_TP_EXIT routine
00000000h queue ALLOCATEs
FFFFFFFFh reject incoming ALLOCATEs
26h DWORD 00000000h
2Ah DWORD pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
2Eh DWORD 00000000h
32h BYTE maximum TPs
33h BYTE 00h stop QUEUE_ALLOCATEs
01h resume QUEUE_ALLOCATEs
34h DWORD pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
38h DWORD 00000000h
--------N-6804-------------------------------
INT 68 - APPC/PC - TRANSACTION PROCESSING
AH = 04h
DS:DX -> control block (see #3373)
Return: control block updated
Format of APPC/PC control block:
Offset Size Description (Table 3373)
00h 12 BYTEs reserved
0Ch WORD verb (action)
2500h TP_ENDED
2900h TP_VALID
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h WORD 00h
1Ah 8 BYTEs (big-endian) TP_ID
22h DWORD -> CREATE_TP record (only if verb = 2900h)
--------N-6805-------------------------------
INT 68 - APPC/PC - TRANSFER MESSAGE DATA
AH = 05h
DS:DX -> control block (see #3374)
Return: control block updated
Format of APPC/PC "Transfer Message Data" control block:
Offset Size Description (Table 3374)
00h 12 BYTEs reserved
0Ch WORD 1C00h (verb "Transfer Message Data")
0Eh BYTE data type
00h user defined
01h NMVT
02h alert subvectors
03h PDSTATS subvectors
0Fh 5 BYTEs 00h
14h DWORD (big-endian) return code (see #3339)
18h 12 BYTEs 00h
24h BYTE flags (see #3375)
25h BYTE 00h
26h WORD length of data
28h N BYTEs data
Bitfields for APPC/PC message transfer flags:
Bit(s) Description (Table 3375)
0 don't add correlation subvector
1 don't add product set ID subvector
2 don't do SYSLOG
3 don't send SSCP_PU_SESSION
SeeAlso: #3374
--------N-6806-------------------------------
INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
AH = 06h
DS:DX -> control block (see #3376)
Return: control block updated
Format of APPC/PC "Change Number of Sessions" control block:
Offset Size Description (Table 3376)
00h 12 BYTEs reserved
0Ch WORD 1500h (verb "Change Number of Sessions")
0Eh 6 BYTEs 00h
14h WORD (big-endian) primary return code (see #3352)
16h DWORD (big-endian) secondary return code (see #3339,#3377)
1Ah 8 BYTEs (big-endian) logical unit ID
22h 8 BYTEs blanks
2Ah 8 BYTEs (big-endian) partner logical unit name
32h 8 BYTEs (big-endian) mode name
3Ah BYTE bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
bit 6: set negotiable values
3Bh BYTE partner logical unit mode session limit
3Ch BYTE minimum CONWINNERS_SOURCE
3Dh BYTE maximum CONWINNERS_TARGET
3Eh BYTE automatic activation
3Fh BYTE 00h
40h BYTE flags
bit 7: drain target
bit 6: drain source
bit 5: target responsible, not source
(Table 3377)
Values for secondary return code (see also AH=01h/SF=1B00h):
0000h accepted
0001h negotiated
0003h bad logical unit ID
0004h allocation failure, no retry
0005h allocation failure, retry
0151h can't raise limits
0153h all modes must reset
0154h bad SNASVCMG limits
0155h minimum greater than total
0156h mode closed (primary return code = 1)
CNOS mode closed (primary return code = 18h)
0157h bad mode name (primary return code = 1)
CNOS bad mode name (primary return code = 18h)
0159h reset SNA drains
015Ah single not SRC response
015Bh bad partner logical unit
015Ch exceeds maximum allowed
015Dh change SRC drains
015Eh logical unit detached
015Fh CNOS command race reject
--------N-6807-------------------------------
INT 68 - APPC/PC - PASSTHROUGH
AH = 07h
DS:DX -> control block (format depends on application subsystem)
Return: control block updated
SeeAlso: AH=FFh
----------684300-----------------------------
INT 68 U - ??? - INSTALLATION CHECK???
AX = 4300h
Return: AX = F386h if ???
???
Note: called by Novell DOS 7.0 EMM386.EXE
SeeAlso: AX=4400h,INT 41/AX=004Fh
----------684400-----------------------------
INT 68 U - ???
AX = 4400h
BX = ???
CX = ???
DX = ???
DS:SI = real-mode address of protected-mode GDT
ES:DI = real-mode address of protected-mode IDT
Return: ???
Note: called by Novell DOS 7.0 EMM386.EXE if AX=4300h returns AX=F386h
SeeAlso: AX=4300h
--------W-6847-------------------------------
INT 68 - MS Windows debugging kernel - OUTPUT STRING
AH = 47h
ES:SI -> string
Notes: output a string (to inform a debugger of some events)
KERNEL outputs "Windows Kernel Entry\r\n" on startup
SeeAlso: INT 41/AX=0012h
--------N-68FA-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE APPC
AH = FAh
AL bit 0 = new state (0 enable, 1 disable)
SeeAlso: AH=FDh,INT 68"Novell"
--------N-68FB-------------------------------
INT 68 - APPC/PC - CONVERT
AH = FBh
DS:DX -> control block (see #3378)
Return: control block updated
Format of APPC/PC "CONVERT" control block:
Offset Size Description (Table 3378)
00h 12 BYTEs reserved
0Ch WORD 1A00h (verb "CONVERT")
0Eh 6 BYTEs 00h
14h DWORD (big-endian) return code
18h BYTE conversion
00h ASCII to EBCDIC
01h EBCDIC to ASCII
19h BYTE character set
00h AE
01h A
02h G
1Ah WORD length of string to convert
1Ch DWORD pointer to source
20h DWORD pointer to target
--------N-68FC-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
AH = FCh
AL = new state
00h disable tracing
01h enable tracing
DX = number of bytes to keep (0=all)
SeeAlso: AH=FDh,AH=FEh
--------N-68FD-------------------------------
INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
AH = FDh
AL = new tracing state (00h disabled, 01h enabled)
SeeAlso: AH=FAh,AH=FCh,AH=FEh
--------N-68FE-------------------------------
INT 68 - APPC/PC - SET TRACE DESTINATION
AH = FEh
AL = trace destinations (see #3379)
DS:DX -> trace stats record if AL bit 0 set (see #3380)
SeeAlso: AH=FCh,AH=FDh
Bitfields for trace destinations:
Bit(s) Description (Table 3379)
0 storage (DS:DX -> trace stats record)
1 display
2 file (trace written to file OUTPUT.PC)
3 printer
Format of APPC/PC Trace Statistics Record:
Offset Size Description (Table 3380)
00h DWORD pointer to storage trace buffer
04h WORD max number of 80-byte records in trace
06h WORD (high-order byte first!) current record number (must init to 0)
08h DWORD (high-order byte first!) number of records written (init to 0)
0Ch DWORD reserved
Note: do not move record while trace is active
--------N-68FF-------------------------------
INT 68 - APPC/PC - SET PASSTHROUGH
AH = FFh
DS:DX -> passthrough exit routine
SeeAlso: AH=07h,INT 68"Novell"
--------b-69---------------------------------
INT 69 - Zenith AT BIOS - ???
Note: called by INT 09 handler
--------h-69---------------------------------
INT 69 C - HP Vectra AT - IRQ17 - KEYBOARD OUTPUT-BUFFER-FULL SERVICE ROUTINE
SeeAlso: INT 09"IRQ1",INT 68"HP Vectra",INT 6A"HP Vectra"
--------N-690100-----------------------------
INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
AX = 0100h
Return: AL = FFh if present
SeeAlso: AX=010Fh
--------N-690101-----------------------------
INT 69 - DECnet DOS CTERM - SEND BYTE
AX = 0101h
BL = character
DX = session handle
Return: AH >= 80h on error
SeeAlso: AX=0102h
--------N-690102-----------------------------
INT 69 - DECnet DOS CTERM - READ BYTE
AX = 0102h
DX = session handle
Return: AH >= 80h on error
AH < 80h if successful
AL = character
SeeAlso: AX=0101h
--------N-690103-----------------------------
INT 69 - DECnet DOS CTERM - STATUS
AX = 0103h
DX = session handle
Return: AH status flags (see #3381)
AL = reason code if DECnet error (see #3382)
SeeAlso: AX=0104h
Bitfields for DECnet DOS CTERM status flags:
Bit(s) Description (Table 3381)
7 session has been aborted
6 DECnet error
1 trace data available
0 receive data available
(Table 3382)
Values for reason code:
00h normal disconnect
01h unknown message from host
02h protocol violation from host
03h could not process the initiate message
04h error receiving message from host
05h error sending message to host
06h error checking for message from host
07h remote system does not support CTERM
08h remote system does not support correct protocol version
09h did not receive BIND message from host
0Ah could not send BIND message to host
0Bh no more sessions available
0Ch session does not exist
0Dh not enough memory to complete operation
0Eh connection has broken
Index: error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
--------N-690104-----------------------------
INT 69 - DECnet DOS CTERM - DECnet STATUS
AX = 0104h
DX = session handle
Return: AX = reason code (see #3382)
Note: use this call when AX=0103h returns a DECnet error
SeeAlso: AX=0103h
--------N-690105-----------------------------
INT 69 - DECnet DOS CTERM - OPEN SESSION
AX = 0105h
DS:BX -> ASCIZ node name
ES:DX -> buffer for session control block (see #3398 at INT 6A/AH=D0h)
Return: AX <= 0 on error
AX > 0 session handle
SeeAlso: AX=0103h,AX=0106h,AX=010Ah
--------N-690106-----------------------------
INT 69 - DECnet DOS CTERM - CLOSE SESSION
AX = 0106h
DX = session handle
Return: AH = status
00h good close
other error code (see #3382)
SeeAlso: AX=0103h,AX=0105h
--------N-69010A-----------------------------
INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
AX = 010Ah
Return: AX = length of session control block in bytes
SeeAlso: AX=0105h
--------N-69010B-----------------------------
INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
AX = 010Bh
DX = session handle
Return: AX > 0 DECnet socket for the session
AX = 0 no match for handle
--------N-69010F-----------------------------
INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
AX = 010Fh
Return: AH = status
00h successful uninstall
other error code (see #3382)
Note: CTERM must have been the last TSR loaded in order to deinstall it
SeeAlso: AX=0100h
Index: uninstall;DECnet DOS CTERM
--------N-690A-------------------------------
INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
AH = 0Ah
AL = function number (see #3383)
ES:BX -> Datalink Communication Block (see #3385)
Return: AX = status (see #3384)
SeeAlso: INT 6D"DECnet"
(Table 3383)
Values for DECnet DOS Data Link Layer function:
00h initialize
01h open portal
02h close portal
03h enable multicast address
04h disable multicast address
05h transmit
06h request transmit buffer
07h deallocate transmit buffer
08h read channel status
09h read datalink portal list
0Ah read information about a datalink portal
0Bh read and/or clear counters
0Ch request to boot from a network server
0Dh enable Ethernet channel
0Eh disable Ethernet channel
0Fh start MOP/send a System ID message
10h stop MOP
11h get DECPARM
12h set DECPARM
13h external loopback
(Table 3384)
Values for DECnet DOS Data Link Layer status:
00h successful
01h hardware failed to initialize
02h channel state was not off (must be off to execute that command)
03h channel state is off (must be on to execute that command)
04h address not set
05h hardware missing
06h buffer too small
07h no more buffers available
08h no more resources available
09h promiscuous receiver active
0Ah non exclusive
0Bh unrecognized portal
0Ch protocol type in use
0Dh not a valid Multicast address
0Eh outstanding calls
0Fh hardware doesn't support receiving bad frames
10h none outstanding
11h no events
12h broken
13h buffer quota exceeded
14h already initialized
15h loopback failure
Index: error codes;DECnet DOS|DECnet DOS;error codes
Format of Datalink Communication Block:
Offset Size Description (Table 3385)
00h WORD portal ID
02h 6 BYTEs source address
08h 6 BYTEs destination address
0Eh DWORD buffer pointer
12h WORD buffer length
14h WORD operation
16h BYTE pad flag (used on open)
00h no pad
01h pad
17h BYTE mode flag (used on open)
00h 802.3
01h Ethernet
02h promiscuous
18h DWORD line status change function
1Ch DWORD received data function
20h DWORD transmitted data function
24h BYTE maximum outstanding transmits/receives
25h 2 BYTEs protocol type
27h WORD buffers lost
--------N-694001-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4001h
Return: CF clear
AX = 0000h
ES:SI -> ???
Range: INT 60 to INT 7F, selected by configuration
Note: the signature "SYSV" immediately before the interrupt handler serves
as the installation check
SeeAlso: AX=4002h
Index: installation check;10NET SYSSVC
--------N-694002-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4002h
???
Return: ???
Range: INT 60 to INT 7F, selected by configuration
Note: the signature "SYSV" immediately before the interrupt handler serves
as the installation check
--------N-694101-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4101h
Return: CF clear
ES:SI -> ???
Range: INT 60 to INT 7F, selected by configuration
SeeAlso: AX=4102h,AX=4103h,AX=4104h
--------N-694102-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4102h
???
Return: ???
--------N-694103-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4103h
???
Return: ???
--------N-694104-----------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AX = 4104h
???
Return: ???
--------N-6942-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AH = 42h
AL = function (01h-14h)
???
Return: ???
Range: INT 60 to INT 7F, selected by configuration
--------N-6943-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AH = 43h
AL = function (01h-05h)
???
Return: ???
--------N-6944-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - ???
AH = 44h
AL = function (01h-03h)
???
Return: ???
Range: INT 60 to INT 7F, selected by configuration
--------N-6949-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
AH = 49h
Note: due to a fencepost error, this function branches to hyperspace
SeeAlso: AX=4001h,AH=FFh
--------G-696996-----------------------------
INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
AX = 6996h
DS:DX -> interrupt handler or 0000h:0000h to disable
Return: AX = 9669h
Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
a program to provide hardware interrupt handlers even while being
debugged with a debugger that swaps interrupt vectors during
debugging.
Note: the interrupt vector which is to be reflected is set at installation
time and cannot be changed
--------N-69FF-------------------------------
INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
AH = FFh
Return: never???
Desc: displays "System Error" message and register dump, then halts system
Range: INT 60 to INT 7F, selected by configuration
Notes: the signature "SYSV" immediately before the interrupt handler serves
as the installation check
SeeAlso: AX=4001h,AH=49h
--------U-6A---------------------------------
INT 6A - OPTHELP.COM
Program: OPTHELP is an optionally-resident help system for SLR Systems's OPTASM
assembler
Range: INT 60h to INT 7Fh, selected by configuration
--------N-6A---------------------------------
INT 6A - DECnet DOS - LOCAL AREA TRANSPORT PROGRAM - INSTALLATION CHECK
Note: the installation check consists of testing for a signature area
immediately preceding the interrupt handler (see #3386)
SeeAlso: AH=01h/DH=FFh,INT 6B"DECnet",INT 6D"DECnet"
Index: installation check;DECnet DOS Local Area Transport
Format of DECnet DOS signature area:
Offset Size Description (Table 3386)
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "LAT")
--------h-6A---------------------------------
INT 6A C - HP Vectra AT - IRQ18 - RESERVED HARDWARE INTERRUPT
SeeAlso: INT 0A"IRQ2",INT 69"HP Vectra",INT 6B"HP Vectra"
--------N-6A0000-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - INSTALLATION CHECK
AX = 0000h
Return: AX = 4357h ('CW')
Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
Note: an alternate installation check is to test for the ASCIZ signature
"FTC Super-TCP" three bytes past the interrupt handler
SeeAlso: AX=0001h,AX=0002h,AX=000Fh,AX=0010h,INT 21/AH=3Fh"BW-TCP"
SeeAlso: INT 61"FTP Software",INT 62/AH=00h"ETHDEV"
--------N-6A0001-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
AX = 0001h
BH = function number
01h ???
DS:SI -> ??? 24-byte record1 (see #3388)
ES:DI -> buffer containing ???
02h ???
DS:SI -> ??? 18-byte record2 (see #3389)
ES:DI -> buffer containing ???
04h ???
BL = subfunction
01h
DS:SI -> ??? 28-byte record3 (see #3390)
ES:DI -> buffer containing ???
02h
DS:SI -> ??? 28-byte record3 (see #3390)
ES:DI -> buffer containing ???
03h
DS:SI -> ??? 28-byte record3 (see #3390)
else Return: AX = 0005h
05h ???
DS:SI -> ??? 20-byte record4 (see #3391)
ES:DI -> buffer containing ???
06h ???
BL = subfunction
01h
DS:SI -> ??? 40-byte record5 (see #3392)
02h
DS:SI -> ??? 20-byte record6 (see #3393)
ES:DI -> ???
03h
DS:SI -> ??? 20-byte record6 (see #3393)
04h
DS:SI -> ??? 46-byte record7 (see #3394)
else Return: AX = 0005h
11h ???
DS:SI -> ??? 28-byte record8 (see #3395)
ES:DI -> ???
Return: AX = function status (see #3387)
SeeAlso: AX=0000h
(Table 3387)
Values for Super-TCP function status:
0000h successful
0005h unsupported function
000Ah out of memory
Format of record1:
Offset Size Description (Table 3388)
00h 4 BYTEs ???
04h WORD size of ES:DI buffer
06h 18 BYTEs ???
Format of record2:
Offset Size Description (Table 3389)
00h 4 BYTEs ???
04h WORD size of ES:DI buffer
06h 12 BYTEs ???
Format of record3:
Offset Size Description (Table 3390)
00h 2 BYTEs ???
02h WORD ???
04h WORD size of ES:DI buffer
06h WORD ???
08h WORD operation number (for function 0401h)
0Ah DWORD -> ???
0Eh WORD (ret) ???
10h 12 BYTEs ???
Format of record4:
Offset Size Description (Table 3391)
00h 4 BYTEs ???
04h WORD size of ES:DI buffer
06h 14 BYTEs ???
Format of record5:
Offset Size Description (Table 3392)
00h BYTE operation??? (00h-07h)
01h BYTE ???
02h WORD (ret) ???
04h DWORD -> ???
08h 4 BYTEs ???
0Ch DWORD -> ??? or 0000h:0000h
10h 16 BYTEs ???
20h DWORD ???
24h 4 BYTEs ???
Format of record6:
Offset Size Description (Table 3393)
00h 4 BYTEs ???
04h WORD size of ES:DI buffer
06h 14 BYTEs ???
Format of record7:
Offset Size Description (Table 3394)
00h WORD ???
02h WORD ???
04h WORD ???
06h 40 BYTEs ???
Format of record8:
Offset Size Description (Table 3395)
00h 4 BYTEs ???
04h WORD size of ES:DI buffer
06h 6 BYTEs ???
0Ch WORD (ret) ???
0Eh WORD operation??? (01h-03h)
10h 12 BYTEs ???
--------N-6A0002-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ???
AX = 0002h
BX = ??? (zero/nonzero)
CX = ??? identifier (see AX=0004h)
DS:SI -> 40-byte buffer for ??? or 0000h:0000h
ES:DI -> buffer for ??? or 0000h:0000h
Return: AX = 0000h (successful) ???
BL = ???
BH = ???
CX = ???
DX = ???
--------N-6A0003-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - GET ??? DATA AREA
AX = 0003h
Return: CX:DX -> data area (see #3396)
Format of Super-TCP data area:
Offset Size Description (Table 3396)
00h 2 BYTEs ???
02h DWORD original INT 6A vector
06h 2 BYTEs ???
08h 96 BYTEs array of 16 6-byte ???
68h WORD number of elements of above array in use
6Ah WORD ???
???
--------N-6A0004-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - ALLOCATE ???
AX = 0004h
CX = size in ???
Return: AX = 0000h (successful)
CX = DX = ???
SeeAlso: AX=0005h,AX=000Fh
--------N-6A0005-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ???
AX = 0005h
CX = ??? identifier (from AX=0004h)
Return: AX = status (0000h successful, FFFFh failed)
SeeAlso: AX=0004h,AX=000Fh
--------N-6A000F-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - FREE/CLOSE ALL ???
AX = 000Fh
Return: AX = 0000h (successful)
SeeAlso: AX=0000h,AX=0004h,AX=0005h
--------N-6A0010-----------------------------
INT 6A U - Super-TCP DOS TSR Kernel v3.57 - UNINSTALL
AX = 0010h
Return: AX = status
0000h successful
0002h can't uninstall, interrupt vector hooked by another program
Program: Super-TCP is a TCP/IP protocol stack by Frontier Technologies Corp.
Note: if AX is not one of the values listed here on entry, Super-TCP
returns AX=FFFEh
SeeAlso: AX=0000h
--------N-6A01--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BYTE
AH = 01h
DH = FFh
AL = character
DL = handle
Return: AH >= 80h on error
SeeAlso: AH=02h
--------N-6A02--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - READ BYTE
AH = 02h
DH = FFh
DL = handle
Return: AH < 80h if successful
AL = character
AH >= 80h on error
SeeAlso: AH=01h
--------N-6A03--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - STATUS
AH = 03h
DH = FFh
DL = handle
Return: AH = status flags (see #3397)
Bitfields for DECnet DOS LAT status flags:
Bit(s) Description (Table 3397)
5 transmit buffer empty
3 session in start state
2 session not active
1 unable to queue transmit data
0 receive data available
--------N-6AD0--DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - OPEN SESSION
AH = D0h
DH = FFh
AL = password flag
FFh no password
0Fh password at ES:DI
ES:BX -> LAT session control block (see #3398)
ES:DI -> 16-byte blank-padded password (optional)
Return: AH = 00h success
DL = handle
SeeAlso: AX=D000h
Format of LAT Session Control Block:
Offset Size Description (Table 3398)
00h 18 BYTEs service name
12h 18 BYTEs node name (future use)
24h 18 BYTEs port name (future use)
36h DWORD -> session stopped post routine
3Ah DWORD -> service table overflow post routine
3Eh DWORD -> transmit post routine
42h DWORD -> receive post routine
46h WORD session status
04h circuit failure
08h stop slot received
---LAT v???---
48h WORD slot state (LAT driver use)
4Ah WORD local credits (LAT driver use)
4Ch DWORD -> VCB (LAT driver use)
50h WORD backward slot (LAT driver use)
52h WORD forward slot (LAT driver use)
54h WORD remote slot ID (LAT driver use)
56h WORD local slot ID (LAT driver use)
58h WORD slot byte count (LAT driver use)
5Ah BYTE remote credits (LAT driver use)
5Bh 255 BYTEs transmitted data slot
15Ah BYTE number of receive data slots (4 recommended)
15Bh BYTE number of occupied slots
15Ch BYTE index of next receive slot to use
15Dh BYTE index of current receive slot
15Eh WORD pointer to first received character
160h N WORDs pointers to receive slots (buffers); each is 259 bytes
259N BYTEs buffers
Note: set post routines to 0000h:0000h if polled operation will be used
---LAT v4.1.17---
48h WORD session state (LAT driver use)
4Ah BYTE local credits (LAT driver use)
4Bh DWORD -> VCB (LAT driver use)
4Fh WORD backward slot (LAT driver use)
51h WORD forward slot (LAT driver use)
53h BYTE remote slot ID (LAT driver use)
54h BYTE local slot ID (LAT driver use)
55h BYTE slot byte count (LAT driver use)
56h BYTE remote credits (LAT driver use)
57h 255 BYTEs transmitted data slot
156h BYTE number of receive data slots (4 recommended)
157h BYTE number of occupied slots
158h BYTE index of next receive slot to use
159h BYTE index of current receive slot
15Ah WORD pointer to first received character
15Ch N WORDs pointers to receive slots (buffers); each is 259 bytes
259N BYTEs buffers
Note: set post routines to 0000h:0000h if polled operation will be used
--------N-6AD000DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - CLOSE SESSION
AX = D000h
DH = FFh
DL = handle
Return: AX = status (see #3399)
SeeAlso: AH=D0h
(Table 3399)
Values for DECnet DOS LAT function status:
0000h successful
0001h no such session
0002h session not running, try again later
--------N-6AD100DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - SEND BREAK
AX = D100h
DH = FFh
DL = handle
Return: AX = 0000h if successful
AH bit 7 set if unable to send break
--------N-6AD300DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - RESET LAT COUNTERS
AX = D300h
DH = FFh
SeeAlso: AX=D400h
--------N-6AD400DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - COPY LAT COUNTERS
AX = D400h
DH = FFh
CX = buffer size
ES:BX -> buffer for LAT counters
Return: AX = status
0000h counters copied into buffer
FFFFh buffer too small
SeeAlso: AX=D300h
--------N-6AD500DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - GET NEXT LAT SERVICE NAME
AX = D500h
DH = FFh
ES:BX -> 17-byte buffer for name
Return: AH = 00h if successful
ES:BX buffer filled
AX = FFFFh if end of table or no name available
Notes: use this function to get the names of the hosts on the network
successive calls are necessary to get all names
SeeAlso: AX=D600h/DH=FFh
--------N-6AD600DHFF-------------------------
INT 6A - DECnet DOS LOCAL AREA TRANSPORT - LAT SERVICE TABLE RESET
AX = D600h
DH = FFh
Return: AX = number of service table entries
BX = status
0000h service table has not overflowed
FFFFh service table has overflowed
SeeAlso: AX=D500h
--------N-6B---------------------------------
INT 6B - DECnet DOS - PORT DRIVER
Note: the installation check consists of testing for a signature area
(see #3400) immediately preceding the interrupt handler
SeeAlso: INT 6A"DECnet",INT 6C"DECnet"
Index: installation check;DECnet DOS Port Driver
Format of DECnet DOS signature area:
Offset Size Description (Table 3400)
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "PDV")
--------v-6B---------------------------------
INT 6B - VIRUS - "Saddam" - ORIGINAL INT 21h VECTOR
SeeAlso: INT 21/AX=FFFFh,INT 61"VIRUS",INT 70"VIRUS"
--------h-6B---------------------------------
INT 6B C - HP Vectra AT - IRQ19 - RESERVED HARDWARE INTERRUPT
SeeAlso: INT 0B"IRQ3",INT 6A"HP Vectra",INT 6C"HP Vectra"
--------S-6B0000-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED WRITE
AX = 0000h
CX = length
ES:BX -> buffer
Return: CX = number of bytes written
Program: NASI is Novell's NetWare Asynchronous Services Interface (purchased
from Network Products Corp, who call it NCSI) which runs on
workstations; NACS is the NetWare Asynchronous Communications
Services module which runs on servers
Notes: the installation check consists of testing for the signature string
"NCSI" three bytes past the interrupt handler; see also AH=02h.
As of version 3.0, Novell's NASI can be distinguished from NPC's
NCSI by the presence of an 'A' immediately following the signature
this function is also supported by TelAPI, NPC NCSI, and Connection
Manager CLIENT.EXE; for TelAPI, nonzero values in AL specify a
connection ID
Connection Manager returns CF set/AL=FFh if called while an INT 6B
call is already in progress
SeeAlso: AX=0100h,AH=18h,INT 14/AH=19h,INT 14/AH=E3h
--------S-6B0100-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - BUFFERED READ
AX = 0100h
CX = length of buffer
ES:BX -> buffer
Return: CX = number of bytes read
Note: also supported by TelAPI and NPC NCSI; for TelAPI, nonzero values in
AL specify a connection ID
SeeAlso: AX=0000h,AH=19h,INT 14/AH=18h,INT 14/AH=E2h,INT 14/AX=FF02h
--------S-6B02-------------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - INSTALL CHECK
AH = 02h
AL nonzero
Return: AL = 00h if present and OK
Note: this function is also supported by TelAPI and NPC NCSI
SeeAlso: AX=0700h
--------S-6B0600-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - CONTROL
AX = 0600h
CX = command
02h send break
04h disconnect
06h hold
Return: CF clear if successful
AL = 00h
CF set on error
AX < 0
Note: this function is also supported by TelAPI and NPC NCSI
--------S-6B0700-----------------------------
INT 6B - Novell NASI/NACS, Ungermann-Bass Net One SERIAL I/O - GET STATUS
AX = 0700h
Return: CH <> 00h if connection active
Notes: this function is also supported by TelAPI and NPC NCSI
Novell TelAPI returns CX=FF01h and CF clear
SeeAlso: AH=02h,AH=10h
--------N-6B08-------------------------------
INT 6B - TelAPI - CHECK FOR BREAK SIGNAL
AH = 08h
AL = circuit number
Return: CF clear if no breaks
AL = 00h
CX = 0000h
CF set if one or more breaks received
Note: this function also clears ??? flag
SeeAlso: INT 14/AX=FF00h
--------S-6B10-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - GET STATUS
AH = 10h
AL = connection ID (Novell TELAPI.EXE)
CX = ???
ES:BX -> buffer for status (see #3401)
Return: CF clear if successful
CL = ???
CH = ???
CF set on error
???
Notes: this function is also supported by TelAPI
when shelled out to an external protocol from Novell NASI, the circuit
whose status indicates that it is connected is the currently active
circuit
SeeAlso: AX=0700h,AH=12h,AH=1Fh
Format of NASI status:
Offset Size Description (Table 3401)
00h BYTE number of allocated virtual circuits
01h BYTE reserved
02h 9 BYTEs states of emulated circuits 0-8
00h idle
01h attached Telnet session, in command state
02h attached Telnet session, connected with host
03h-06h ??? (not returned by TelAPI)
Note: this description is derived from the Novell TelAPI emulation of NASI
--------S-6B11--DX0001-----------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - ALLOCATE A VIRTUAL CIRCUIT
AH = 11h
DX = 0001h
AL = 00h
ES:BX -> service name string (8 characters, blank-padded)
Return: CF clear if successful
AL = virtual circuit number allocated (01h for Novell TELAPI.EXE)
CL = ??? (01h for Novell TELAPI.EXE)
CH = ??? (01h for Novell TELAPI.EXE)
CF set on error
???
Note: this function is also supported by TelAPI
SeeAlso: AH=12h,AH=15h,AH=16h,AH=17h,AH=18h
--------S-6B12-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - VIRTUAL CIRCUIT STATUS
AH = 12h
AL = virtual circuit number (0-8)
Return: CF clear if successful
AL = virtual circuit number
CL = virtual circuit's state
00h idle
01h Telnet session, in command state
02h Telnet session, connected to host
03h-06h ??? (not returned by TelAPI)
CF set on error
AL = error code
E2h invalid virtual circuit number
E4h specified virtual circuit not allocated
Note: this function is also supported by TelAPI
SeeAlso: AH=10h,AH=15h,AH=1Ah,AH=1Bh,AH=1Fh
--------S-6B13-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE REQUEST/REPLY SERVICE NAME
AH = 13h
AL = virtual circuit number
CL = direction (00h get, nonzero set)
ES:BX -> buffer for/containing service name
Return: ???
Note: this function is also supported by TelAPI
SeeAlso: AH=14h,AH=15h
--------S-6B14-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE SERVICE ADDRESS
AH = 14h
AL = virtual circuit number
ES:BX -> buffer for/containing service address
Return: ???
Note: this function is also supported by TelAPI, which only supports
retrieving the address
SeeAlso: AH=13h,AH=15h,AH=21h
--------S-6B15-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - SET/RETRIEVE VIRTUAL CIRCUIT CONFIG
AH = 15h
AL = virtual circuit number
CL = direction (00h get, nonzero set)
ES:BX -> buffer for/containing virtual circuit config (see #3402)
Return: ES:BX buffer filled
Note: this function is also supported by TelAPI
SeeAlso: AH=13h"NCSI",AH=14h"NCSI"
Format of virtual circuit configuration:
Offset Size Description (Table 3402)
00h WORD buffer length
02h WORD port ID
04h WORD receive rate
06h WORD receive word length
08h WORD receive stop bits
0Ah WORD receive parity
0Ch WORD transmit rate
0Eh WORD transmit word length
10h WORD transmit stop bits
12h WORD transmit parity
14h WORD DTR
16h WORD RTS
--------S-6B16-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - LOG AND/OR INITIALIZE VIRTUAL CIRCUIT
AH = 16h
AL = virtual circuit number
CL = ??? switch (00h, ???)
Return: CF clear if successful
AL = virtual circuit number
CF set on error
???
Note: this function is also supported by TelAPI, which always returns CF
clear and AL=00h
SeeAlso: AH=11h,AH=12h,AH=17h
--------S-6B17-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - DISCONNECT A VIRTUAL CIRCUIT
AH = 17h
AL = virtual circuit number
Return: CF clear if successful
CF set on error
???
Note: this function is also supported by TelAPI, which always returns CF
clear and AL=00h
SeeAlso: AH=11h,AH=16h
--------S-6B18-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - WRITE DATA ON A VIRTUAL CIRCUIT
AH = 18h
AL = virtual circuit number
CX = number of characters to send
ES:BX -> buffer containing characters to be sent
Return: CF clear if successful
CF set on error
???
Note: this function is also supported by TelAPI, which always returns CF
clear and AL=30h
SeeAlso: AX=0000h,AH=12h,AH=19h
--------S-6B19-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - READ DATA ON A VIRTUAL CIRCUIT
AH = 19h
AL = virtual circuit number
CX = number of characters to read
ES:BX -> buffer for received characters
Return: CX = 0000h if failed
CX = nonzero (possibly number of characters received) if successful
Note: this function is also supported by TelAPI
SeeAlso: AX=0100h,AH=12h,AH=18h
--------S-6B1A-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - RECEIVE STATUS
AH = 1Ah
???
Return: ???
SeeAlso: AH=12h,AH=1Bh
--------S-6B1B-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT STATUS
AH = 1Bh
???
Return: ???
SeeAlso: AH=12h,AH=1Ah
--------S-6B1C-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - CLEAR RECEIVE BUFFER
AH = 1Ch
AL = circuit number
Return: nothing
SeeAlso: AH=1Dh"NCSI",AH=1Eh"NCSI"
--------S-6B1D-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - TRANSMIT BUFFER CONTROL
AH = 1Dh
???
Return: ???
SeeAlso: AH=1Ch,AH=1Eh
--------S-6B1E-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - ISSUE CONTROL REQUEST
AH = 1Eh
???
Return: ???
SeeAlso: AH=1Ch,AH=1Dh
--------S-6B1F-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - EXTERNAL STATUS
AH = 1Fh
???
Return: ???
SeeAlso: AH=10h,AH=12h
--------S-6B20-------------------------------
INT 6B - Connection Manager CLIENT.EXE - ???
AH = 20h
???
Return: ???
Program: Connection Manager by Softwarehouse Corp. permits the sharing of
serial ports over an IPX or NetBIOS-based network
Note: CLIENT.EXE returns CF set/AL=F9h if AH is not 00h to 21h on entry
--------S-6B21-------------------------------
INT 6B - NPC NCSI EXTENDED SERIAL I/O - QUERY NAME SERVICE
AH = 21h
AL = virtual circuit number
CL = ??? (00h or 01h)
ES:BX -> buffer for service name structure (see #3403)
Return: CF clear if successful
ES:BX buffer filled
CF set on error
Notes: a program should call this function after allocating a virtual circuit
and check that the general name matches the requested service
prior to version 3.0, Novell's NASI returned the first available port;
v3.0+ returns the first port found--check the returned status to
determine whether the port is available
SeeAlso: AH=14h"NCSI"
Format of NCSI service name structure:
Offset Size Description (Table 3403)
00h WORD buffer length
02h 8 BYTEs service name
0Ah 8 BYTEs general name
12h 8 BYTEs specific name
1Ah 4 BYTEs ???
---Novell NASI v3.0+ ---
1Eh BYTE port number
1Fh BYTE port status
00h idle (available)
01h allocated (available)
02h connected
03h on hold
----------6B6B-------------------------------
INT 6B - Tandy SCHOOLMATE PLUS - API
AH = 6Bh
AL = E0h to FFh
Note: details not yet available
----------6C---------------------------------
INT 6C - system resume vector (CONVERTIBLE)
----------6C---------------------------------
INT 6C - DOS 3.2 Realtime Clock update
--------N-6C---------------------------------
INT 6C - DECnet DOS network scheduler
Notes: the installation check consists of testing for a signature area
immediately preceding the interrupt handler (see #3404)
also supported by DEC Pathworks for DOS
SeeAlso: INT 6B"DECnet",INT 6D"DECnet",INT 6E"DECnet"
Index: installation check;DECnet DOS scheduler
Format of DECnet DOS signature area:
Offset Size Description (Table 3404)
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "SCH")
--------h-6C---------------------------------
INT 6C C - HP Vectra AT - IRQ20 - HP-HIL CONTROLLER INTERRUPT
SeeAlso: INT 0C"IRQ4",INT 6B"HP Vectra",INT 6D"HP Vectra"
--------V-6D---------------------------------
INT 6D - VIDEO - many VGA - VIDEO BIOS ENTRY POINT
Desc: points at the original INT 10 entry point set up by the VGA BIOS
Notes: used by IBM, ATI VGA Wonder, Paradise, Video7, and NCR, and many others
the Diamond Stealth64 BIOS uses this vector to store the INT 42 vector
of the inactive video (see INT 10/AH=12h/BL=35h)
SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh,INT 10/AH=12h/BL=10h
--------V-6D---------------------------------
INT 6D - Trident SVGA - VIDEO BIOS HANDLER
Note: the BIOS INT 10 handler on various Trident VGA cards consists merely
of a call to INT 6D followed by an IRET.
--------N-6D---------------------------------
INT 6D - DECnet DOS (before 2.1) - DATA LINK LAYER PROGRAM
AH = function
???
Return: ???
Note: the installation check consists of testing for a signature area
immediately preceding the interrupt handler (see #3405)
SeeAlso: INT 69/AH=0Ah,INT 6C"DECnet",INT 6E"DECnet"
Index: installation check;DECnet DOS Data Link Layer
Format of DECnet DOS signature area:
Offset Size Description (Table 3405)
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "DLL")
--------h-6D---------------------------------
INT 6D C - HP Vectra AT - IRQ21 - RESERVED HARDWARE INTERRUPT
SeeAlso: INT 0D"IRQ5",INT 6C"HP Vectra",INT 6E"HP Vectra"
--------V-6DBD60-----------------------------
INT 6D U - Matrox Multiple Monitor Support v1.0 - ???
AX = BD60h
DS:SI -> buffer containing ??? (see #3406)
???
Return: AX = 00BDh if function executed
???:SI -> 22-byte buffer (inside TSR) filled with ??? (see #3406)
AX unchanged if function disabled
Note: this function is a NOP if AX=BD6Fh/BL=01h was called
SeeAlso: AX=BD61h,AX=BD6Fh,AX=BDFFh
Format of Matrox ??? buffer:
Offset Size Description (Table 3406)
00h 4 BYTEs ???
04h WORD video mode width in pixels
06h WORD video mode height in pixels
08h BYTE ???
09h BYTE ???
0Ah BYTE ???
0Bh BYTE flags
bit 1: ???
bit 4: ??? (corresponds to bit 14 for AX=BD61h)
bit 5: ??? (corresponds to bit 15 for AX=BD61h)
0Ch DWORD -> ??? buffer
10h WORD ???
bit 4: ??? (corresponds to bit 14 for AX=BD61h)
bit 5: ??? (corresponds to bit 15 for AX=BD61h)
12h 4 BYTEs ???
SeeAlso: #3407
--------V-6DBD61-----------------------------
INT 6D U - Matrox Multiple Monitor Support v1.0 - GET VIDEO MODE INFORMATION
AX = BD61h
BX = width in pixels (bits 13-0)
bit 14: ???
bit 15: ???
CX = height in pixels
Return: AL = BDh if function supported
AH = status
00h successful
01h failed (resolution/flags not supported)
CX:BX -> video mode data structure (see #3407)
(first word is FFFFh if unsupported resolution)
EAX high word cleared
SeeAlso: AX=BD60h,AX=BD6Fh,AX=BDFFh
Format of Matrox video mode information (VCE structure):
Offset Size Description (Table 3407)
00h WORD width in pixels
02h WORD height in pixels
04h WORD ???
06h DWORD dot clock frequency
0Ah 25 BYTEs ???
SeeAlso: #3406
--------V-6DBD6F-----------------------------
INT 6D U - Matrox Multiple Monitor Support v1.0 - INSTALLATION CHECK
AX = BD6Fh
BL = subfunction
00h installation check
01h disable TSR
02h enable TSR (see AX=BD60h)
Return: AX = 00BDh if installed
SeeAlso: AX=BD60h,AX=BD61h,AX=BDFFh
--------V-6DBDFF-----------------------------
INT 6D U - Matrox Multiple Monitor Support v1.0 - UNHOOK INTERRUPT (UNINSTALL)
AX = BDFFh
Return: AX = 00BDh if supported
Note: this function revectors INT 6D without checking that it points at the
TSR, and does not release the memory occupied by the TSR
SeeAlso: AX=BD60h,AX=BD61h,AX=BD6Fh
--------N-6E---------------------------------
INT 6E - DECnet DOS - DECnet NETWORK PROCESS API
Notes: this is the main DECnet DOS access, and is described in Digital manual
AA-EB46B-TV ("DECnet-DOS Programmer's Reference Manual")
there is a signature/data area immediately prior to the interrupt
handler which may be used as an installation check (see #3408)
Index: installation check;DECnet DOS
Format of DECnet DOS signature area:
Offset Size Description (Table 3408)
-5 BYTE major version number
-4 BYTE minor version number
-3 3 BYTEs signature (ASCII "DNP")
--------h-6E---------------------------------
INT 6E C - HP Vectra AT - IRQ22 - RESERVED HARDWARE INTERRUPT
SeeAlso: INT 0E"IRQ6",INT 6D"HP Vectra",INT 6F/AH=00h"HP Vectra"
--------N-6F---------------------------------
INT 6F - Novell NetWare - PCOX API (3270 PC terminal interface)
AX = function
0000h enter terminal mode
Return: AX = status
0000h no action requested
0001h screen save
0001h reset interface and set configuration parameters
DX = bitfields
bits 2-0: model number
bits 4-3: I/O address
bits 6-5: DMA channel
Return: nothing
0002h set display parameters
DX = bitfields
bits 1-0: OIA mode
bits 4-2: monitor support
Return: nothing
0003h read status
Return: AX = status word (see #3409)
0004h read cursor position
Return: AX = cursor position
0005h get character from device buffer
DX = cursor position
Return: AH = type (00h data, 01h attribute)
AL = data or attribute character
0006h send character
DH = type (00h ASCII, 01h extended code)
DL = ASCII character or extended code
Return: nothing
0007h set timeout
DX = timeout in seconds
Return: nothing
0008h wait for location to be modified
DX = cursor position
Return: AX = status (0000h modified, nonzero timeout)
0009h NOP
000Ah restore display
Return: nothing
000Bh update device buffer
Return: AX = cursor positoin
000Ch write string to add information area
DS:DX -> string
Return: nothing
000Dh maintenance operations
DX = maintenance operation code
Return: AX = operation status
000Eh get control program version
Return: AH = release number (major version)
AL = level number (minor version)
000Fh get microcode version
Return: AH = release number (major version)
AL = level number (minor version)
0010h save or display graphics
BX = length of data buffer
CX = subfunction request code
DS:DX -> data buffer
Return: AX = return code
CX = length of PIF data
0011h perform structured field operation
CX = request number
DS:DX -> parameter list
Return: AX = status word (see #3409)
CX = error number
0012h set cursor position for direct write buffer
DX = new cursor position
Return: AX = status word (see #3409)
0013h write direct to buffer
DL = character to be written
DH = translation option
Return: AX = status word (see #3409)
0014h write direct to buffer without echo
DL = character to be written
DH = translation option
Return: AX = status word (see #3409)
0015h set direct write string length
DX = string value
Return: nothing
0016h write string direct to buffer
DS:DX -> string
Return: AX = status word (see #3409)
0017h write string direct to buffer, untranslated
DS:DX -> string
Return: AX = status word (see #3409)
0018h get direct-write cursor position
Return: AX = cursor position
0019h convert row/column to cursor position
DH = display row (1-43)
DL = display column (1-132)
Return: AX = cursor position
001Ah convert cursor position to row/column
DX = cursor position
Return: AH = display row
AL = display column
001Bh find next field
DX = initial cursor position
Return: AX = field cursor position
001Ch find previous field
DX = initial cursor position
Return: AX = field cursor position
001Dh find next unprotected field
DX = initial cursor position
Return: AX = field cursor position
001Eh find previous unprotected field
DX = initial cursor position
Return: AX = field cursor position
001Fh find next protected field
DX = initial cursor position
Return: AX = field cursor position
0020h find previous protected field
DX = initial cursor position
Return: AX = field cursor position
0021h masked search forward
DH = mask
DL = search pattern
Return: AX = cursor position or 0000h
0022h masked search backward
DH = mask
DL = search pattern
Return: AX = cursor position or 0FFFh
0023h find field length
DX = cursor position
Return: AX = field length
0024h read field
DS:DX -> buffer for field contents
Return: AX = status word (see #3409)
0025h read screen
DS:DX -> buffer for screen contents
Return: AX = status word (see #3409)
0026h read buffer untranslated
DX = cursor position
Return: AX = buffer code
CX:BX -> 3278/79 device buffer image
0027h enable/disable keyboard
DL = new state of keyboard breaks (00h enabled, 01h disabled)
Return: nothing
0028h select host session
DL = session short name
Return: AX = session information
0029h retrieve host session name
AX = short name (DFT) or 0000h (not available, CUT mode)
002Ah get current device buffer size
Return: AX = device buffer size
CX = segment of EAB
002Bh arm modified location trigger
DX = cursor position
Return: AX = status (0000h not available, 0001h successful)
Bitfields for PCOX status word:
Bit(s) Description (Table 3409)
0,1 cursor type
2 cursor inhibited
3 display inhibited
4 feature step inhibited
5 480-character format code
6,7 unused
8-10 model number (2-5)
11 unit has been reset by controller (cleared after status returned)
12 buffer has been written into (cleared after status returned)
13 alarm has been sounded (cleared after status returned)
14-15 monitor type (01 mono, 10 color, 11 hybrid)
--------N-6F00-------------------------------
INT 6F - 10NET - LOGIN
AH = 00h
DS:DX -> login record (see #3410)
Return: CL = security level
AX = status (see #3411)
SeeAlso: AH=01h,AH=80h,INT 21/AX=4402h"10MEMMGR"
Format of 10NET login record:
Offset Size Description (Table 3410)
00h 8 BYTEs user name
08h 8 BYTEs password
10h 12 BYTEs name of SuperStation
(Table 3411)
Values for 10NET status:
0000h successful
01FFh "RTO_NERR" transmit interrupt lost (time out on response)
02FFh "NET_NERR" network (hardware) error
03FFh "PAS_NERR" invalid password
04FFh "LRN_NERR" local resource not available
05FFh "SRN_NERR" server resource not available
06FFh "LNM_NERR" already logged in under different name
07FFh "LSF_NERR" login security failure (node)
08FFh "NLI_NERR" not logged in
09FFh "DIVZ_NERR" position calc error
0AFFh "NT1_NERR" receive subfunction not = send subfunction (i.e. read,write)
0BFFh "RFNC_NERR" request function not in range
0CFFh "NSFH_NERR" no more server file handle entries left
0DFFh "NFTAB_NERR" no more shared file table entries left
0EFFh "NUFH_NERR" no more user file handle entries left
0FFFh "CHAT_NERR" chat permit not on
10FFh "NSRV_NERR" not a server on request
11FFh "NOBD_NERR" no transporter board error
12FFh "STO_NERR" time out on send
13FFh "INF_NERR" item not found (spool item not on queue)
14FFh "DACS_NERR" DOS access incompatible
15FFh "RLOCK_NERR" record already locked
16FFh "IVP_NERR" invalid parameter
17FFh "RLTO_NERR" record lock time out error
18FFh "CSPL_NERR" currently spooling to named device
19FFh "DRP_NERR" dropped receive message (throttle)
1AFFh "SOPV_NERR" open sharing violation
1BFFh "NTUF_NERR" no more tuf entries left
1CFFh "NOWN_NERR" not file owner on open
1DFFh "RSEC_NERR" read security not passed
1EFFh "WSEC_NERR" write security not passed
1FFFh "GSEC_NERR" group security not passed
20FFh "SEC1_NERR" security file failure
21FFh "ACT1_NERR" activity file failure
22FFh "SPL1_NERR" spool control file failure
23FFh "NMT_NERR" device not mounted (spooling)
24FFh "RSPL_NERR" spool file has not been terminated
25FFh "DNSH_NERR" device not mounted or is not being shared
26FFh "DUP_NERR" duplicate node ID
27FFh "FNF_NERR" file not found error
28FFh "NMF_NERR" no more files
29FFh "UN_NERR" unknown internal system error
2AFFh "QCP_NERR" print queue is full or corrupted
2BFFh "IFNC_NERR" invalid function
2CFFh "IVH_NERR" invalid handle
2DFFh "TOF_NERR" too many files opened
2EFFh "PNF_NERR" path not found
2FFFh "SACT_NERR" named file is active
---10NET v5.0+ ---
30FFh "NAK_NERR" received NAK on send (destination out of buffers)
31FFh "RENT_NERR" reentrancy in driver F_SEND
32FFh "RECV_NERR" driver could not be put in receive mode
33FFh "NRLT_NERR" no more RLTAB entries left
34FFh "DIAL_NERR" function requires an unsupported dialect
35FFh "IVD_NERR" invalid device
36FFh "NALV_NERR" netname access level violated
37FFh "NPIDNF_NERR" network path not found
38FFh "SP_NERR" server is paused
39FFh "TMNM_NERR" too many remote user names
3AFFh "DUPD_NERR" duplicate network device
3BFFh "DIU_NERR" shared device in use, can't delete
3CFFh "NNWD_NERR" network name was deleted
3DFFh "NPFS_NERR" not enough space for print file
3EFFh "NNNF_NERR" network name not found (can't find the call name)
3FFFh "NB_NERR" network busy
40FFh "NDNLE_NERR" network device no longer exists
41FFh "NBCLE_NERR" NetBIOS command limit exceeded
42FFh "FINT24_NERR" Fail on INT 24h
43FFh "PEXP_NERR" password expired
44FFh "NPUP_NERR" new password error
45FFh "MAXS_NERR" maximum allowed disk space exceeded
46FFh "TDOW_NERR" time-of-day/day-of-week error
SeeAlso: #3438
Index: error codes;10Net|10Net;error codes
--------b-6F00-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_ISR" (internal) - RESPOND TO LOGICAL ISR
AH = 00h
BP = ID for driver (see #3412)
DH = data type (see #3413)
DL = physical device driver's index (driver ID / 6)
BX,CX = data
ES:0000h -> physical device's Describe Record (see #3420)
---keypress event data---
BH = keyboard state (only if bit 5 of DH set) (see #3414)
BL = scancode (if bit 4 of DH clear)
CX = number of scancodes in list (if bit 4 of DH set)
ES:SI -> scancode list (if bit 4 of DH set)
---motion event data---
BX = new X position (abs device) or X increment (relative device)
CX = new Y position (abs device) or Y increment (relative device)
---button event data
BL = button information
bits 15-8 reserved
bit 7: button state (0 = down, 1 = up)
bits 6-0: button number (0-7)
BH = reserved
Return: AH = status (see #3415)
BP,DS destroyed
---if device is keyboard translator---
BL = translated scancode
BH = new keyboard state (if DH bit 5 set) (see #3414)
DH = new scancode type (see #3413)
Notes: INT 6F corresponds to IRQ23 on the original HP Vectra AT, which is
unavailable because of its use as a BIOS extension software interrupt
the INT 6F handler consists of an instruction to load DS with the
driver's data segment followed by an indexed far jump using BP to
select the destination vector; since the interrupt handler is
located immediately following the dispatch table, the HP_VECTOR_TABLE
may be found by looking at offset 0000h in the INT 6F segment, and
its size is equal to the offset of the interrupt handler
each entry in the HP_VECTOR table consists of a DWORD for the driver's
entry point address and a WORD for the driver's data segment
this function is not user-callable, as it is a response to a physical
event, and assumes that the caller has already handled the physical
interrupt and updated the Describe Record (see #3420) to reflect
the event
SeeAlso: INT 6C"HP Vectra",INT 6F/AX=0200h"HP Vectra"
(Table 3412)
Values for HP Vectra EX-BIOS driver ID:
0000h V_SCOPY (null driver, but DS value points at system copyright string)
0006h V_DOLITTLE (null driver)
000Ch V_PNULL (null driver)
0012h V_SYSTEM
0018h reserved
001Eh V_S8259
0024h reserved
002Ah V_SINPUT
0030h reserved
0036h V_QWERTY (keyboard translator)
003Ch V_SOFTKEY (keyboard translator)
0042h V_FUNCTION (keyboard translator)
0048h V_NUMPAD (keyboard translator)
004Eh V_CCP (keyboard translator)
0054h V_SVIDEO
005Ah V_STRACK
0060h V_EVENT_TOUCH
0066h V_EVENT_TABLET
006Ch V_EVENT_POINTER
0072h reserved
0078h reserved
007Eh reserved
0084h reserved
008Ah V_CCPCUR (keyboard translator)
0090h V_RAW (keyboard translator)
0096h V_CCPNUM (keyboard translator)
009Ch V_OFF (keyboard translator)
00A2h V_CCPGID (translator: cursor control pad keys to GID data)
00A8h V_SKEY2FKEY (keyboard translator)
00AEh V_8041
00B4h V_PGID_CCP
00BAh C_LTABLET
00C0h V_LPOINTER (pointing device: mouse, etc.)
00C6h V_LTOUCH (touch screen)
00CCh V_LHPMOUSE
00D2h ???
...
0102h ???
0108h V_LNULL
010Eh reserved
0114h V_HPHIL
011Ah-01C2h reserved
016Eh V_SCANDOOR (scancode management chip driver) (ES/QS/RS only)
01C8h-0228h available
(Table 3413)
Values for HP Vectra EX-BIOS ISR data type:
00h reserved "T_KC_R0"
01h reserved "T_KC_R1"
02h ASCII data
03h reserved "T_KC_R3"
04h HP150 keyboard (ITF) scancode
05h reserved "T_KC_R5"
06h device-definable type
07h HP Vectra keyboard set
08h IBM AT scancode set
09h button data
0Ah IBM PC scancode set
0Bh Softkey keypad (F1-F8)
0Ch function key keypad (F1-F10)
0Dh HP Cursor Control Pad keypad
0Eh Qwerty keypad
0Fh Numeric keypad
1xh bit 4 set: string of CX scancode of type 0xh at ES:SI
2xh bit 5 set: BH contains current keyboard state
40h signed 8-bit relative data
41h signed 16-bit relative data
42h unsigned 8-bit absolute data
43h unsigned 16-bit absolute data
45h specially-formed data (80x25) generated by V_LTOUCH
46h specially-formed data (640x200) generated by V_LTABLET
47h specially-formed data (640x200) generated by V_LPOINTER
Bitfields for HP Vectra EX-BIOS keyboard state:
Bit(s) Description (Table 3414)
0 Alt pressed
1 Left Shift pressed
2 Right Shift pressed
3 Ctrl pressed
4 CapsLock active
5 NumLock active
6 Right unlabeled key pressed (some international keyboards)
7 Left unlabeled key pressed (some international keyboards)
SeeAlso: #0506
(Table 3415)
Values for HP Vectra EX-BIOS status:
00h successful
02h unsupported function
04h not serviced
06h done (no further processing should be performed on the ISR event)
F2h device is out of paper
F4h device is offline
F6h no more space for more drivers
F8h driver is busy
FAh bad parameter
FEh operation failed
Note: status codes are always even; negative values (>= 80h) indicate errors
while positive values indicate exceptional conditions
Format of HP EX-BIOS driver header data:
Offset Size Description (Table 3416)
00h WORD driver attributes (see #3417)
02h WORD string index of driver's name
04h WORD driver's default logical device vector (see #3412)
06h WORD driver's parent class (bitset) (see #3418)
08h WORD driver's child class (bitset)
0Ah WORD driver's parent vector
0Ch WORD driver's child vector
0Eh BYTE major subaddress
0Fh BYTE minor subaddress
Notes: this structure is located at offset 0 in the driver's data segment,
which in turn may be read from the HP_VECTOR_TABLE (refer to note in
main entry)
only the first WORD is required, and everything from offset 6 onward
is only required if the device wishes to perform device mapping
SeeAlso: #3419,#3420
Bitfields for HP EX-BIOS driver header attributes:
Bit(s) Description (Table 3417)
15 this is a complete driver header
14 "ATR_DEVCFG" reserved
13 driver can be mapped with the parent vector at offset 0Ah
12 driver can be mapped with the child vector at offset 0Ch
11-9 driver type
000 reserved vector
001 free vector
010 EX-BIOS service
011 logical driver (mapped from parent to child)
100 mappable driver (cannot be last in driver chain)
101 mappable driver that is last in driver chain
110 input driver (mappable)
111 reserved
8 "ATR_STRING" reserved
7 call SF_START whenever driver is remapped
6-5 addressing requirements
00 no subaddresses required
01 requires major address be stored at offset 0Eh
10 requires minor address be stored at offset 0Fh
11 required major,minor, and mid addresses (minor in low nybble of
offset 0Fh, mid address in high nybble of 0Fh)
4 driver can be shared between several parent drivers
3 driver can be shared between several child drivers
2 this driver header is in ROM
1 "ATR_YIELD" reserved
0 reserved
SeeAlso: #3416,#3418
Bitfields for HP EX-BIOS driver class:
Bit(s) Description (Table 3418)
15 maps F1 to F8 softkeys
14 keyboard
13 cursor pad
12 console device
11 serial output device (may be capable of limited input)
10 "CL_COMM" reserved
9 interfaces multiple resources transparent to operating system
8 serial output device filter (can be mapped between logical and physical
driver to perform translations)
7 addressed block device
6 priority boot device
5 logical graphics input device
4 physical graphics input device (can map to child of another driver)
3 "CL_GID" can map to an event
2 physical touch device
1 reserved
0 class extension bit
Note: special values: FFFFh maps to all other devices (V_PNULL), and 0000h
maps to no other driver
SeeAlso: #3416
Format of HP EX-BIOS global data area:
Offset Size Description (Table 3419)
00h 20 BYTEs reserved
14h BYTE sound driver status
15h BYTE number of pending key clicks (max 4) (see AH=34h/BP=0012h)
16h BYTE current tick duration scaling factor
17h BYTE current key click volume
18h WORD current beep period (10 us increments) (see AH=3Ch/BP=0012h)
1Ah WORD current beep duration (10 us increments)
1Ch BYTE number of pending beep functions (max 4) (see AH=3Ah/BP=0012h)
1Dh BYTE reserved
1Eh WORD next unused string index number
20h ... reserved
SeeAlso: #3416
Format of HP EX-BIOS Driver Describe Record:
Offset Size Description (Table 3420)
00h 16 BYTEs EX-BIOS driver header data (see #3416)
10h BYTE device GID type
bits 7-4: device type
bits 3-0: physical device link address
11h BYTE physical device ID (see #3422)
12h WORD logical device status bits (see #3421)
14h BYTE physical device vector number (driver ID / 6)
15h BYTE maximum number of axes reported (0-2)
16h BYTE device class
bits 7-4: current class
bits 3-0: default class
17h BYTE number of buttons/prompts
bits 7-4: number of prompts
bits 3-0: number of buttons
18h BYTE reserved
19h BYTE (physical devices only) maximum output burst length
1Ah BYTE (physical devices only) number of write registers
1Bh BYTE (physical devices only) number of read registers
1Ch BYTE button transition flags (bit 0 = button0, etc.)
1Dh BYTE current button states (bit 0 = button0, etc.)
1Eh WORD device resolution
20h WORD maximum x-axis count
22h WORD maximum y-axis count
24h WORD X position data for absolute devices
26h WORD Y position data for absolute devices
28h WORD X delta for relative devices
2Ah WORD Y delta for relative devices
2Ch WORD (logical devices only) X-axis scaling accumulator
(fraction of one logical unit)
2Eh WORD (logical devices only) Y-axis scaling accumulator
(fraction of one logical unit)
Bitfields for HP logical device status flags:
Bit(s) Description (Table 3421)
15-5 reserved
4 event enabled
3 tracking enabled
2 clipping enabled
1 button error occurred
0 interrupt in progress
SeeAlso: #3420
(Table 3422)
Values for HP-HIL device ID:
00h-02h reserved
03h Swiss-French keyboard
04h-06h reserved
07h Canadian-English keyboard
08h-0Ah reserved
0Bh Italian keyboard
0Ch reserved
0Dh Dutch keyboard
0Eh Swedish keyboard
0Fh German keyboard
10h-12h reserved
13h Spanish keyboard
14h reserved
15h Belgian (Flemish) keyboard
16h Finnish keyboard
17h UK keyboard
18h French-Canadian keyboard
19h Swiss-German keyboard
1Ah Nerwegian keyboard
1Bh Frensh keyboard
1Ch Danish keyboard
1Dh Katakana keyboard
1Eh Latin American-Spanish keyboard
1Fh US-American keyboard
20h-2Bh reserved
2Ch-2Fh tone generator
30h-3Fh reserved
40h-5Bh reserved (character entry)
5Ch-5Fh barcode reader
60h-67h reserved (relative positions)
68h-6Bh mouse
6Ch-6Fh trackball
70h-7Fh reserved (relative positions)
80h-87h reserved (absolute positions)
88h-8Bh touchpad
8Ch-8Fh touch screen
90h-97h graphics tablet
98h-9Fh reserved (absolute positions)
A0h-BFh compressed keyboard (91-93 keys)
C0h-DFh extended keyboard (107-109 keys)
E0h-FFh standard keyboard (85-87 keys)
--------N-6F01-------------------------------
INT 6F - 10NET - LOGOFF
AH = 01h
DS:DX -> superstation ID or nulls (12 bytes)
Return: CX = number of files closed
AX = status (see also #3411)
08FFh superstation ID not already logged in
SeeAlso: AH=00h"10NET",AH=81h
--------N-6F02-------------------------------
INT 6F - 10NET - STATUS OF NODE
AH = 02h
DS:DX -> 512-byte status record (see #3424)
Return: CF clear if successful
CF set on error
AX = error code (see #3411)
SeeAlso: INT 21/AX=5E01h"10NET"
(Table 3423)
Values for 10NET station type:
00h workstation
01h superstation
02h gateway station
03h gateway active
04h logged into multiple superstations
05h reserved
Format of 10NET node status record:
Offset Size Description (Table 3424)
00h 8 BYTEs user name (0 if none)
08h BYTE station type (see #3423)
09h 24 BYTEs list of superstations logged into more than one superstation
21h 12 BYTEs node ID
2Dh WORD message count for this station (send for user node, receive for
superstations)
---for superstations only---
2Fh WORD drives allocated (bit 0=A:, bit 1=B:,...)
31h BYTE user service flags (see #3425)
32h BYTE printers allocated (bit 0=LPT1,...)
33h BYTE number of unprinted spool files
34h BYTE number of opened files
35h BYTE number of logged on nodes
36h BYTE primary drive (1=A:)
37h BYTE reserved
38h N BYTEs list of logged on node IDs (each 12 bytes, max 37 IDs)
1F4h 3 BYTEs time: sec/min/hrs
1F7h 3 BYTEs date: day/mon/year-1980
Bitfields for 10NET user service flags:
Bit(s) Description (Table 3425)
7 gate
6 print permit on
4 SUBMIT is on
3 mail waiting for node
2 calendar waiting for you
1 news waiting for you
0 mail waiting for you
--------b-6F0200-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_INIT" - START INITIALIZING DRIVER
AX = 0200h
BP = driver ID (see #3412)
BX = "last-used DS" value from HP global data area (see #3419)
Return: AH = status (see #3415)
BX = new "last-used DS" value
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0202h,AH=0Ch"F_INS_FIXOWNDS"
--------b-6F0202-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_START" - COMPLETE DRIVER INITIALIZ.
AX = 0202h
BP = driver ID (see #3412)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0204h"HP Vectra"
--------W-6F0204-----------------------------
INT 6F C - MS Windows 3.0 - DOS APPLICATION SWITCH HOOK
AX = 0204h
Return: AX = status
0000h switch is allowed
other switch not allowed
Note: intercepting this call will allow a DOS application to ensure that
Windows will not switch away from it.
--------b-6F0204-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_REPORT_STATE" - GET DRIVER STATE
AX = 0204h
BP = driver ID (see #3412)
Return: AH = status (see #3415)
DX = device state from Logical Describe Record (see #3420,#3426)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0206h"HP Vectra"
Bitfields for HP Vectra V_HPHIL driver state:
Bit(s) Description (Table 3426)
0 link configuration in progress
1 reserved
2 no devices attached
3 general failure
4,5 reserved
6 HP-HIL driver open
7 reserved
8 link has been reconfigured
9 error during output request
10 reserved
11 output request complete
12 timeout
13-15 reserved
--------b-6F0206-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_VERSION_DESC" - GET DRIVER VERSION
AX = 0206h
BP = driver ID (see #3412)
Return: AH = status (see #3415)
BX = driver release date code
(BL = BCD years since 1960, BH = BCD week number within year)
CX = length of version string
ES:DI -> version string
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0204h"HP Vectra",AX=0208h
--------b-6F0208-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_DEF_ATTR" - RESET TO DEFAULT ATTR
AX = 0208h
BP = driver ID (see #3412)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=020Ah,AX=020Ch
--------b-6F020A-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_GET_ATTR" - GET CURRENT ATTRIBUTES
AX = 020Ah
BP = driver ID (see #3412)
Return: AH = status (see #3415)
BX,CX = current attributes
BP,DS destroyed
---for V_LTOUCH, V_LPOINTER---
BX = logical width
CX = logical height
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Ch
--------b-6F020C-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_SET_ATTR" - SET DEVICE ATTRIBUTES
AX = 020Ch
BP = driver ID (see #3412)
BX,CX = new attributes
---for V_LTOUCH, V_LPOINTER---
BX = new logical width
CX = new logical height
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Ah
--------b-6F020E-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_OPEN" - RESERVE DRIVER FOR ACCESS
AX = 020Eh
BP = driver ID (see #3412) for V_HPHIL, others
Return: AH = status (see #3415)
BP,DS destroyed
Desc: place device in open state, which allows output to the device
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=0210h
--------b-6F0210-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_CLOSE" - RELEASE DRIVER
AX = 0210h
BP = driver ID (see #3412) for V_HPHIL, others
Return: AH = status (see #3415)
BP,DS destroyed
Desc: place device in closed state, which disallows output to the device
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh
--------b-6F0212-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_TIMEOUT" - REPORT REQUESTED TIMEOUT
AX = 0212h
BP = driver ID (see #3412)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: report to driver that a previously-requested timeout interval has
expired
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0214h,AX=0216h
--------b-6F0214-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_INTERVAL" - 60 HZ INTERVAL EXPIRED
AX = 0214h
BP = driver ID (see #3412)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: report to driver that a previously-requested 60 Hz interval has
expired
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0212h,AX=0216h
--------b-6F0216-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_SYSTEM SF_TEST" - PERFORM HARDWARE TEST
AX = 0216h
BP = driver ID (see #3412)
Return: AH = status (see #3415)
BP,DS destroyed
---on failure---
CX = length of reason string
ES:DI -> string describing error
SeeAlso: AH=00h"HP Vectra",AX=0200h,AX=0208h,AX=020Eh,AX=0212h,AX=0214h
--------N-6F03-------------------------------
INT 6F - 10NET - GET ADDRESS OF CONFIGURATION TABLE
AH = 03h
DS:DI -> node ID (optional)
Return: ES:BX -> configuration table (see #3427)
SeeAlso: AH=13h,INT 21/AX=5E01h"10NET"
Format of 10NET configuration table:
Offset Size Description (Table 3427)
-41 WORD local device table address
-39 WORD extended network error mapping table address
-37 WORD shared device table address
-35 WORD mounted device table address
-33 BYTE receive buffer counter
-32 BYTE collect buffer counter
-31 WORD TUF address
-29 BYTE enable flag
-28 BYTE FCB keep flag
-27 WORD reserved
---up to here, 10NET v3.3---
-25 WORD count of dropped Send6F
-23 WORD buffer start address
-21 WORD comm driver base address
-19 WORD send/receive retry count
-17 BYTE number of 550ms loops before timeout
-16 WORD UFH address
-14 WORD CDIR address
-12 WORD LTAB address
-10 WORD SFH address
-8 WORD FTAB address
-6 WORD RLTAB address
-4 WORD SMI address
-2 WORD NTAB address
00h WORD address of first CT_DRV
02h BYTE number of DRV entries
03h 8 BYTEs login name
0Bh 12 BYTEs node ID (blank-padded)
17h 6 BYTEs node address
1Dh BYTE flag
1Eh BYTE CT_CFLG (chat permit)
bit 1: sound bell
bit 0: CHAT permit
1Fh BYTE CT_PSFLG (see #3428)
20h BYTE in 10Net flag
21h WORD receive message count
23h WORD send message count
25h WORD retry count
27h WORD failed count
29h WORD driver errors
2Bh WORD dropped responses/CHATs
2Dh 9 BYTEs LIST ID/NTAB address (3 entries--LPT1-3)
36h 6 BYTEs AUX ID/NTAB address (2 entries--COM1-2)
3Ch BYTE active CB channel
3Dh BYTE received 6F messages on queue
3Eh 9 BYTEs activity counters for channels 1-9
---beyond here, 10NET v3.3---
47h BYTE bit 0: RS232 gate
bit 1: Send6F gate (user set)
48h DWORD pointer into gate (user set)
4Ch DWORD pointer into 10Net send
50h N WORDs addresses of timer blocks
Bitfields for CT_PSFLG:
Bit(s) Description (Table 3428)
5 PRINT permit
4 KB initiated
3 CHAT called FOXPTRM
2 SUBMIT active
1 SUBMIT received
0 SUBMIT permit
--------N-6F04-------------------------------
INT 6F - 10NET - SEND
AH = 04h
DS:BX -> send record (see #3429)
DS:DX -> data (max 1024 bytes)
Return: CF clear if successful
CF set on error
AX = error code (see #3411)
SeeAlso: AH=05h"10NET",AH=09h"10NET",AH=0Ah"10NET"
Format of 10NET send record:
Offset Size Description (Table 3429)
00h 12 BYTEs receiving node's ID
if first byte has high-order bit set, message is directed to
the CT_RGATE vector at the receiver
if second byte is 00h, first byte is taken as a CB
channel number and delivered to all nodes on same channel
0Ch WORD length of data at DX
--------b-6F04--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_BASEHPVT" - GET HP_VECTOR_TABLE ADDRESS
AH = 04h
BP = 0012h (driver ID for V_SYSTEM)
Return: AH = status (see #3415)
ES = segment of HP_VECTOR_TABLE (see also AH=00h"HP Vectra")
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=06h"F_INS_XCHGFIX",AH=08h"F_INS_XCHGRSVD"
--------b-6F04--BP005A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_TRACK_INIT" - RESET TRACKING DRIVER TO DEFAULTS
AH = 04h
BP = 005Ah (driver ID for V_STRACK)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=06h"F_TRACK_ON",AH=08h"F_TRACK_OFF"
SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
--------b-6F0400-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_LOCK" - RESERVE SUB-ADDRESSES
AX = 0400h
BP = driver ID (see #3412)
DH,DL = major,minor address (optional)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: reserve specified sub-addresses on an already-allocated driver for
exclusive access
Note: this function is documented as present but unsupported in the drivers
V_LTABLET, V_LPOINTER, and V_LTOUCH
SeeAlso: AX=0200h"HP Vectra",AX=0402h"SF_UNLOCK"
--------b-6F0400BP001E-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_SVC" - UNMASK 8041 SVC INT
AX = 0400h
BP = 001Eh (driver ID for V_S8259)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0402h"SF_DISABLE_SVC",AX=0404h"SF_ENABLE_KBD"
SeeAlso: AX=0408h"SF_ENABLE_HPHIL"
--------b-6F0400BP002A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DEF_LINKS" - SET DEFAULT PARENTS
AX = 0400h
BP = 002Ah (driver ID for V_SINPUT)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: set the parent vectors in the physical device driver headers to their
system defaults
SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=002Ah,AX=0404h/BP=002Ah
SeeAlso: AH=06h"F_INQUIRE"
--------b-6F0400BP0054-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_ID_HP" - INSTALLATION CHECK
AX = 0400h
BP = 0054h (driver ID for V_SVIDEO)
???
Return: AH = status (see #3415)
BX = 4850h ('BP')
BP,DS destroyed
???
Note: only partially documented
SeeAlso: AX=0402h/BP=0054h,AX=0404h/BP=0054h,AX=0406h/BP=0054h
SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
--------b-6F0400BP00CC-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_MOUSE_COM" - INIT INT 33 HANDLER
AX = 0400h
BP = 00CCh (driver ID for V_LHPMOUSE)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=00CCh
--------b-6F0402-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_UNLOCK" - RELEASE SUB-ADDRESSES
AX = 0402h
BP = driver ID (see #3412)
DH,DL = major,minor address (optional)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: release specified sub-addresses from exclusive access
Note: this function is documented as present but unsupported in the drivers
V_LTABLET, V_LPOINTER, and VLTOUCH
SeeAlso: AX=0200h"HP Vectra",AX=0400h"SF_LOCK"
--------b-6F0402BP001E-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_SVC" - MASK 8041 SVC INT
AX = 0402h
BP = 001Eh (driver ID for V_S8259)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=001Eh,AX=0406h/BP=001Eh
SeeAlso: AX=040Ah/BP=001Eh
--------b-6F0402BP002A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_GET_LINKS" - GET DRIVER LINK FIELDS
AX = 0402h
BP = 002Ah (driver ID for V_SINPUT)
ES:SI -> buffer for link table (see #3430)
Return: AH = status (see #3415)
ES:SI buffer filled
BP,DS destroyed
Desc: get the parent and child vectors for the seven supported physical
device drivers
SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_DEF_LINKS",AX=0404h"SF_SET_LINKS"
SeeAlso: AH=06h"F_INQUIRE"
Format of HP Vectra EX-BIOS driver link table:
Offset Size Description (Table 3430)
00h BYTE vector number of HP-HIL device #1's child
01h BYTE vector number of HP-HIL device #1's parent
...
0Ch BYTE vector number of HP-HIL device #7's child
0Dh BYTE vector number of HP-HIL device #7's parent
--------b-6F0402BP0054-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_GET_INFO" - GET DISPLAY INFO
AX = 0402h
BP = 0054h (driver ID for V_SVIDEO)
???
Return: AH = status (see #3415)
BP,DS destroyed
???
Note: only partially documented
SeeAlso: AX=0400h/BP=0054h,AX=0404h/BP=0054h,AX=0406h/BP=0054h
SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
--------b-6F0402BP00CC-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_MOUSE_COM" - FORCE INT 33 INIT
AX = 0402h
BP = 00CCh (driver ID for V_LHPMOUSE)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: set up INT 33 even if no mouse is installed
SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=00CCh
--------b-6F0404-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_TRACK_ON" - GRAPHICS CURSOR ON
AX = 0404h
BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
Return: AH = status (see #3415)
BP,DS destroyed
Desc: enables graphics cursor tracking of the logical device's movement
SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0406h"SF_TRACK_OFF"
--------b-6F0404BP001E-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_KBD" - UNMASK 8041 OBF INT
AX = 0404h
BP = 001Eh (driver ID for V_S8259)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_ENABLE_SVC",AX=0406h"SF_DISABLE_KBD"
SeeAlso: AX=0408h"SF_ENABLE_HPHIL"
--------b-6F0404BP002A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_LINKS" - SET DRIVER LINK FIELDS
AX = 0404h
BP = 002Ah (driver ID for V_SINPUT)
ES:SI -> buffer containing link table (see #3430)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: specify the parent and child vectors for the seven supported physical
device drivers
SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_DEF_LINKS",AX=0402h"SF_GET_LINKS"
SeeAlso: AH=06h"F_INQUIRE"
--------b-6F0404BP0054-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_SET_INFO" - SET EXT-CTRL INFO
AX = 0404h
BP = 0054h (driver ID for V_SVIDEO)
???
Return: AH = status (see #3415)
BP,DS destroyed
???
Note: only partially documented
SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0406h/BP=0054h
SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
--------b-6F0406-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_TRACK_OFF" - GRAPHICS CURSOR OFF
AX = 0406h
BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
Return: AH = status (see #3415)
BP,DS destroyed
Desc: disables graphics cursor tracking of the logical device's movement
SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0404h"SF_TRACK_ON"
SeeAlso: AX=0408h"SF_CREATE_EVENT"
--------b-6F0406BP001E-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_KBD" - MASK 8041 OBF INT
AX = 0406h
BP = 001Eh (driver ID for V_S8259)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0402h"SF_DISABLE_SVC",AX=0404h"SF_ENABLE_KBD"
SeeAlso: AX=040Ah"SF_DISABLE_HPHIL"
--------b-6F0406BP0054-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_MOD_INFO" - SET EXT-CTRL REG
AX = 0406h
BP = 0054h (driver ID for V_SVIDEO)
???
Return: AH = status (see #3415)
BP,DS destroyed
???
Note: only partially documented
SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
SeeAlso: AX=0408h/BP=0054h,AX=040Ah/BP=0054h
--------b-6F0406BP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_RECONFIGURE" - RECONFIG LINK
AX = 0406h
BP = 0114h (driver ID for V_HPHIL)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=020Eh,AX=0408h"SF_CRV_WR_PROMPTS"
SeeAlso: AX=0410h"SF_CRV_SELF_TEST"
--------b-6F0408-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CREATE_EVENT" - SET EVENT HANDLER
AX = 0408h
BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
ES:SI -> new event handler (see AH=00h"HP Vectra")
DX = new handler's DS
Return: AH = status (see #3415)
ES:SI -> old event handler
DX = old handler's DS
BP,DS destroyed
Desc: specify routine to be called on logical device events
Note: when events occur, the event handler is called with the same registers
as the "F_ISR" function on AH=00h"HP Vectra"
SeeAlso: AH=00h"HP Vectra",AX=0400h"SF_LOCK",AX=0406h"SF_TRACK_OFF"
SeeAlso: AX=040Ah"SF_EVENT_ON",AX=040Ch"SF_EVENT_OFF",AH=06h"F_SAMPLE"
--------b-6F0408BP001E-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABLE_HPHIL" - UNMASK HP-HIL INT
AX = 0408h
BP = 001Eh (driver ID for V_S8259)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=001Eh,AX=0404h/BP=001Eh
SeeAlso: AX=040Ah/BP=001Eh
--------b-6F0408BP0054-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_GET_RES" - GET VIDMODE RESOLUTN
AX = 0408h
BP = 0054h (driver ID for V_SVIDEO)
???
Return: AH = status (see #3415)
BP,DS destroyed
???
Note: only partially documented
SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
SeeAlso: AX=0406h/BP=0054h,AX=040Ah/BP=0054h
--------b-6F0408BP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_WR_PROMPTS" - WRITE PROMPT
AX = 0408h
BP = 0114h (driver ID for V_HPHIL)
BX = device address indicator (see #3431)
DH = HP HIL device major address
DL = prompt number
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=020Eh,AX=0406h/BP=0114h,AX=040Ah/BP=0114h
Bitfields for HP Vectra V_HPHIL device address indicator:
Bit(s) Description (Table 3431)
15-14 reserved
13 address in DH is valid (must be set, clear is reserved)
12 valid value in DL
11-0 reserved
--------b-6F040A-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_EVENT_ON" - ENABLE EVENT HANDLER
AX = 040Ah
BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0408h"SF_CREATE_EVENT",AX=040Ch"SF_EVENT_OFF"
SeeAlso: AX=040Eh"SF_CLIPPING_ON"
--------b-6F040ABP001E-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISABLE_HPHIL" - MASK HP-HIL INT
AX = 040Ah
BP = 001Eh (driver ID for V_S8259)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0402h/BP=001Eh,AX=0406h/BP=001Eh
SeeAlso: AX=0408h/BP=001Eh
--------b-6F040ABP0054-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_VID_SET_MODE" - SET VIDEO MODE
AX = 040Ah
BP = 0054h (driver ID for V_SVIDEO)
???
Return: AH = status (see #3415)
BP,DS destroyed
???
Note: only partially documented
SeeAlso: AX=0400h/BP=0054h,AX=0402h/BP=0054h,AX=0404h/BP=0054h
SeeAlso: AX=0406h/BP=0054h,AX=0408h/BP=0054h
--------b-6F040ABP00AE-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CREATE_INTR" - CREATE INTERVAL ENTRY
AX = 040Ah
BP = 00AEh (driver ID for V_8041)
BH = vector number of driver to be called regularly (vector addr / 6)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: add a driver to the list (max eight) of drivers which will be called
by the HP's 8041 at 60 Hz
Note: the newly added entry will not be called until enabled with
AX=040Eh/BP=00AEh
SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
--------b-6F040ABP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_WR_ACK" - ACKNOWLEDGE DEVICE
AX = 040Ah
BP = 0114h (driver ID for V_HPHIL)
BX = device address indicator (see #3431)
DH = HP HIL device major address
DL = acknowledge number (specific if 01h-07h, generic otherwise)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0406h/BP=0114h,AX=040Ch/BP=0114h
--------b-6F040C-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_EVENT_OFF" - DISABLE EVENT HANDLER
AX = 040Ch
BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0408h"SF_CREATE_EVENT",AX=040Ah"SF_EVENT_ON"
--------b-6F040CBP00AE-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DELET_INTR" - DELETE INTERVAL ENTRY
AX = 040Ch
BP = 00AEh (driver ID for V_8041)
BH = vector number of driver to be removed (vector addr / 6)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: remove a driver to the list (max eight) of drivers which will be called
by the HP's 8041 at 60 Hz
SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=0410h/BP=00AEh
SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
--------b-6F040CBP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPEAT" - SET KEY REPEAT RATE
AX = 040Ch
BP = 0114h (driver ID for V_HPHIL)
BX = device address indicator (see #3431)
DH = HP HIL device major address
DL = repeat rate (00h = 30 Hz, 01h = 60 Hz)
Return: AH = status (see #3415)
BP,DS destroyed
Note: this function is only available if the driver is in the open state
(see AX=020Eh"SF_OPEN")
SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=0114h,AX=040Eh/BP=0114h
--------b-6F040E-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLIPPING_ON" - ENABLE CLIPPING
AX = 040Eh
BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
Return: AH = status (see #3415)
BP,DS destroyed
Desc: causes the physical device's motion to be clipped to prevent overflow
or underflow of the logical position
SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=0410h"SF_CLIPPING_OFF"
--------b-6F040EBP00AE-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_ENABL_INTR" - START INTERRUPT SRVICE
AX = 040Eh
BP = 00AEh (driver ID for V_8041)
BH = vector number of driver to be called regularly (vector addr / 6)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: enable 60 Hz calling of a driver previously added to the list of
drivers to be called by the HP's 8041
SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=0410h/BP=00AEh
SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
--------b-6F040EBP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_DISABLE_REPEAT" - KEY REPT OFF
AX = 040Eh
BP = 0114h (driver ID for V_HPHIL)
BX = device address indicator (see #3431)
DH = HP HIL device major address
Return: AH = status (see #3415)
BP,DS destroyed
Note: this function is only available if the driver is in the open state
(see AX=020Eh"SF_OPEN")
SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=0114h,AX=0410h/BP=0114h
SeeAlso: AX=0416h/BP=0114h
--------b-6F0410-----------------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLIPPING_OFF" - DISABLE CLIPPING
AX = 0410h
BP = driver ID (see #3412) for V_LPOINTER, V_LTOUCH, V_LTABLET
Return: AH = status (see #3415)
BP,DS destroyed
Desc: disables clipping of the physical device's motion, which may cause
overflow or underflow of the logical position
SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=040Eh"SF_CLIPPING_ON"
--------b-6F0410BP00AE-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_DISBL_INTR" - END INTERRUPT SERVICE
AX = 0410h
BP = 00AEh (driver ID for V_8041)
BH = vector number of driver (vector addr / 6)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: disable 60 Hz interval calls to the specified driver
SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
SeeAlso: AX=0412h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
--------b-6F0410BP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_SELF_TEST" - PERFORM SELFTEST
AX = 0410h
BP = 0114h (driver ID for V_HPHIL)
BX = device address indicator (see #3431)
DH = HP HIL device major address
ES:SI -> buffer for result
Return: AH = status (see #3415)
CX = number of bytes in buffer
BP,DS destroyed
Note: this function is only available if the driver is in the open state
(see AX=020Eh"SF_OPEN")
SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=0114h,AX=0412h/BP=0114h
--------b-6F0412BP00AE-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_RAMSW" - SET RAM SWITCH IN 8041
AX = 0412h
BP = 00AEh (driver ID for V_8041)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: sets a flag in the 8041 indicating that a second 256K bank of RAM
on the motherboard is enabled
SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
SeeAlso: AX=0414h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
--------b-6F0412BP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPORT_STATUS" - GET DEVSTATUS
AX = 0412h
BP = 0114h (driver ID for V_HPHIL)
BX = device address indicator (see #3431)
DH = HP HIL device major address
ES:SI -> 15-byte buffer for status
Return: AH = status (see #3415)
CX = number of bytes returned in buffer
BP,DS destroyed
Note: this function is only available if the driver is in the open state
(see AX=020Eh"SF_OPEN")
SeeAlso: AH=00h"HP Vectra",AX=0410h/BP=0114h,AX=0414h/BP=0114h
--------b-6F0414BP00AE-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLR_RAMSW" - CLEAR 8041 RAM SWITCH
AX = 0414h
BP = 00AEh (driver ID for V_8041)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: clears a flag in the 8041 indicating that a second 256K bank of RAM
on the motherboard is enabled, causing the second bank to be disabled
Note: this function should normally never be called
SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
SeeAlso: AX=0412h/BP=00AEh,AX=0418h/BP=00AEh,AX=041Ah/BP=00AEh
--------b-6F0414BP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CRV_REPORT_NAME" - GET DEV NAME
AX = 0414h
BP = 0114h (driver ID for V_HPHIL)
BX = device address indicator (see #3431)
DH = HP HIL device major address
ES:SI -> 15-byte buffer for name
Return: AH = status (see #3415)
CX = number of bytes returned in buffer
BP,DS destroyed
Note: this function is only available if the driver is in the open state
(see AX=020Eh"SF_OPEN")
SeeAlso: AH=00h"HP Vectra",AX=0412h/BP=0114h
--------b-6F0416BP00AE-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_SET_CRTSW" - SET CRT TO MULTIMODE
AX = 0416h
BP = 00AEh (driver ID for V_8041)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: sets a flag in the 8041 indicating that the primary display is the
Multimode graphics adapter (default)
SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
SeeAlso: AX=0412h/BP=00AEh,AX=0418h/BP=00AEh,AX=041Ah/BP=00AEh
--------b-6F0416BP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_KEYBOARD_REPEAT" - SET TYPEMATIC
AX = 0416h
BP = 0114h (driver ID for V_HPHIL)
BH = what to set (00h typematic rate, 01h delay, 02h both)
BL = flag (00h = non-CCP keypad, 01h = Cursor Control Pad only)
DL = rate
bits 7-4: delay value
bits 3-0: typematic rate
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=040Eh/BP=0114h,AX=0418h/BP=0114h
--------b-6F0418BP00AE-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_CLR_CRTSW" - SET CRT TO MONOCHROME
AX = 0418h
BP = 00AEh (driver ID for V_8041)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: clears a flag in the 8041, indicating that the primary display is the
monochrome adapter
SeeAlso: AH=00h"HP Vectra",AX=040Ch/BP=00AEh,AX=040Eh/BP=00AEh
SeeAlso: AX=0414h/BP=00AEh,AX=0416h/BP=00AEh,AX=041Ah/BP=00AEh
--------b-6F0418BP0114-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_KEYBOARD_LED" - SET KEYBOARD LEDS
AX = 0418h
BP = 0114h (driver ID for V_HPHIL)
BL = new LED states
bit 0: scroll lock
bit 1: NumLock
bit 2: CapsLock
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=040Eh/BP=0114h,AX=0416h/BP=0114h
--------b-6F041ABP00AE-----------------------
INT 6F - HP Vectra EX-BIOS - "F_IO_CTRL SF_PASS_THRU" - SEND DATA BYTE TO 8041
AX = 041Ah
BP = 00AEh (driver ID for V_8041)
BL = byte to send to 8041
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=040Ah/BP=00AEh,AX=040Eh/BP=00AEh
--------N-6F05-------------------------------
INT 6F - 10NET - RECEIVE
AH = 05h
CX = number of seconds before timeout
DS:DX -> receive buffer (see #3432)
Return: CF clear if successful
AH = FEh if dequeued message is a CB message
CF set on error
AX = error code (see #3411)
SeeAlso: AH=04h"10NET"
Format of 10NET receive buffer:
Offset Size Description (Table 3432)
00h 12 BYTEs sending node's ID
0Ch WORD length of message
0Eh N BYTEs message (maximum 1024 bytes)
--------b-6F06-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_PUT_BYTE" - WRITE A BYTE OF DATA TO DEVICE
AH = 06h
BP = driver ID (see #3412) for V_HPHIL, others
AL = value to output
---if driver is V_HPHIL---
BX = device address indicator (see #3431)
DH = HP HIL device major address
DL = HP-HIL device register (00h-7Fh)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: output a byte to a specific HP-HIL device register
Note: this function is only available if the driver is in the open state
(see AX=020Eh"SF_OPEN")
SeeAlso: AH=04h"HP Vectra",AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BUFFER"
--------b-6F06-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_SAMPLE" - POLL CURRENT ABSOLUTE POSITION
AH = 06h
BP = driver ID (see #3412) for V_LTOUCH, V_LPOINTER, V_LTABLET, etc.
Return: AH = status (see #3415)
BX = current logical X position
CX = current logical Y position
DL = button transitions (bit N = button N state has changed)
DH = current button states (bit N = current button N state)
ES:0000h -> logical device's Describe Record (see #3420)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=040Ah"SF_EVENT_ON",AX=040Eh"SF_CLIPPING_ON"
--------b-6F06--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGFIX" - EXCH VALUES WITH FIXED VECTOR
AH = 06h
BP = 0012h (driver ID for V_SYSTEM)
BX = vector address
DX = new value for DS
ES:DI -> new CS:IP entry point
Return: AH = status (see #3415)
DX = old value for DS
ES:DI -> old CS:IP entry point
BP,DS destroyed
Desc: replace an existing EX-BIOS driver at a fixed HPVT location without
initialization
SeeAlso: AH=00h"HP Vectra",AH=04h"F_INS_BASEHPVT",AH=08h"F_INS_XCHGRSVD"
SeeAlso: AH=0Ah"F_INS_XCHGFREE",AH=0Ch"F_INS_FIXOWNDS"
--------b-6F06--BP002A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INQUIRE" - GET DRIVER PHYSICAL DESCRIBE RECORD
AH = 06h
BP = 002Ah (driver ID for V_SINPUT)
AL = HP-HIL physical device number (01h-07h)
Return: AH = status (see #3415)
ES:SI -> physical describe record for driver
BP,DS destroyed
Note: the returned physical describe record must not be modified
SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=08h/BP=002Ah,AH=0Ah/BP=002Ah
SeeAlso: AH=0Ch/BP=002Ah
--------b-6F06--BP005A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_TRACK_ON" - ENABLE CURSOR TRACKING
AH = 06h
BP = 005Ah (driver ID for V_STRACK)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
--------N-6F07-------------------------------
INT 6F - 10NET - LOCK HANDLE
AH = 07h
BX = file handle
CX:DX = starting offset in file
SI = record length
Return: CF clear if successful
CF set on error
AX = error code (see also AH=00h)
0002h file not found
SeeAlso: AH=08h"10NET",AH=0Fh,INT 21/AH=5Ch
--------N-6F08-------------------------------
INT 6F - 10NET - UNLOCK HANDLE
AH = 08h
BX = file handle
AL = mode
00h unlock all
01h unlock record at CX:DX
Return: CF clear if successful
CF set on error
AX = error code (see also AH=00h)
0002h file not found
SeeAlso: AH=07h,AH=0Fh,INT 21/AH=5Ch
--------b-6F08-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_GET_BYTE" - READ A BYTE OF DATA FROM DEVICE
AH = 08h
BP = driver ID (see #3412) for V_HPHIL (0114h), others
---if device is V_HPHIL---
BX = device address indicator (see #3431)
DH = HP HIL device major address
DL = HP-HIL device register (00h-7Fh)
Return: AH = status (see #3415)
AL = value read from device
BP,DS destroyed
Desc: generic read-byte function; for driver V_HPHIL, retrieves the value
of a specific HP-HIL device register
Note: this function is only available if the driver is in the open state
(see AX=020Eh"SF_OPEN")
SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BUFFER"
--------b-6F08--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGRSVD" - EXCH VALUES WITH RESRVED VECTOR
AH = 08h
BP = 0012h (driver ID for V_SYSTEM)
DX = new value for DS
ES:DI -> new CS:IP entry point
Return: AH = status (00h,F6h) (see also #3415)
00h successful
BX = vector address used
DX = old value for DS
ES:DI -> old CS:IP entry point
BP,DS destroyed
Desc: exchange the supplied entry point and DS with the values in the next
reserved entry in the HP_VECTOR_TABLE
Note: returns AH=F6h if no more reserved vectors are available
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=0Ah/BP=0012h
SeeAlso: AH=0Ch/BP=0012h
--------b-6F08--BP002A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_ALL" - GET DRIVER STATUS TABLE
AH = 08h
BP = 002Ah (driver ID for V_SINPUT)
ES:SI -> buffer for device status table (see #3433)
Return: AH = status (see #3415)
ES:SI buffer filled
BP,DS destroyed
Note: the returned physical describe record must not be modified
SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=0Ah/BP=002Ah
SeeAlso: AH=0Ch/BP=002Ah
Format of HP Vectra HP-HIL physical device status table:
Offset Size Description (Table 3433)
00h BYTE status for HP-HIL device #1
bit 0: device present
bits 7-2 reserved
01h BYTE device ID for HP-HIL device #1
...
0Ch BYTE status for HP-HIL device #7
0Dh BYTE device ID for HP-HIL device #7
--------b-6F08--BP005A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_TRACK_OFF" - DISABLE CURSOR TRACKING
AH = 08h
BP = 005Ah (driver ID for V_STRACK)
Return: AH = status (see #3415)
BP,DS destroyed
Note: also removes the graphics cursor sprite from the screen
SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=06h"F_TRACK_ON"
SeeAlso: AH=0Ah"F_DEF_MASKS",AH=0Ch"F_SET_LIMITS_X"
--------N-6F09-------------------------------
INT 6F - 10NET - SUBMIT
AH = 09h
DS:BX -> submit record (see #3434)
SeeAlso: AH=04h"10NET"
Format of 10NET submit record:
Offset Size Description (Table 3434)
00h 12 BYTEs destination node ID (must be logged in)
0Ch WORD length+2 of following 'command line' text
0Eh N BYTEs command line text (<=100 bytes), system adds CR
--------N-6F0A-------------------------------
INT 6F - 10NET - CHAT
AH = 0Ah
DS:BX -> control parameters (see #3435)
DS:DX -> chat message (see #3436)
SeeAlso: AH=04h"10NET",AH=8Ah
Format of 10NET chat control parameters:
Offset Size Description (Table 3435)
00h 8 BYTEs sender ID, defaults to node's userID if nulls
08h 8 BYTEs destination user ID, 'EVERYONE' may be used
10h 12 BYTEs destination node ID
Format of 10NET chat message:
Offset Size Description (Table 3436)
00h WORD length+2 of following text
02h N BYTEs text, max 101 bytes
--------b-6F0A-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_PUT_BUFFER" - WRITE A BUFFER TO DEVICE
AH = 0Ah
BP = driver ID (see #3412) for V_HPHIL (0114h), others
CX = number of bytes to write
ES:DI -> buffer containing data
---if driver is V_HPHIL---
BX = device address indicator (see #3431)
DH = HP HIL device major address
DL = HP-HIL device register (00h-7Fh)
Return: AH = status (see #3415)
CX = number of unwritten bytes left in buffer
BP,DS destroyed
SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BLOCK",AH=0Ch"F_GET_BUFFER"
SeeAlso: AH=0Eh"F_PUT_WORD"
--------b-6F0A-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_PUT_BLOCK" - WRITE BLOCKS TO DEVICE
AH = 0Ah
BP = driver ID (see #3412) for block device
DH = device major number
DL = device minor number
ES:DI -> command block (see #3437)
Return: AH = status (see #3415)
BX = operation status
BP,DS destroyed
SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BUFFER"
SeeAlso: AH=0Eh"F_PUT_WORD"
Format of HP Vectra F_PUT_BLOCK/F_GET_BLOCK command block:
Offset Size Description (Table 3437)
00h DWORD data transfer address
04h WORD number of blocks
06h DWORD block address (some devices only use low word)
--------b-6F0A--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_XCHGFREE" - EXCH VALUES WITH FREE VECTOR
AH = 0Ah
BP = 0012h (driver ID for V_SYSTEM)
DX = new value for DS
ES:DI -> new CS:IP entry point
Return: AH = status (00h,F6h) (see also #3415)
00h successful
BX = vector address used
DX = old value for DS
ES:DI -> old CS:IP entry point
BP,DS destroyed
Desc: exchange the supplied entry point and DS with the values in the next
free entry in the HP_VECTOR_TABLE
Note: returns AH=F6h if no more reserved vectors are available
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=08h/BP=0012h
SeeAlso: AH=0Ch/BP=0012h
--------b-6F0A--BP002A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_FIRST" - GET PHYSICAL DRIVER VECTOR
AH = 0Ah
BP = 002Ah (driver ID for V_SINPUT)
Return: AH = status (see #3415)
BX = vector address for first HP-HIL device
BP,DS destroyed
Note: all seven HP-HIL devices use consecutive vectors in the
HP_VECTOR_TABLE
SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=08h/BP=002Ah
SeeAlso: AH=0Ch/BP=002Ah
--------b-6F0A--BP005A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_DEF_MASKS" - DEFINE GRAPHICS CURSOR MASKS
AH = 0Ah
BP = 005Ah (driver ID for V_STRACK)
BH = width of save area in bytes
BL = hot-spot X coordinate
CH = height in scan lines
CL = hot-spot Y coordinate
ES:SI -> sprite mask (screen mask followed by XOR sprite mask)
Return: AH = status (see #3415)
BP,DS destroyed
Note: the save area is one byte wider than the actual sprite mask; the total
size of the sprite is at most 144 bytes
SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
SeeAlso: AH=0Ch"F_SET_LIMITS_X",AH=10h"F_PUT_SPRITE",AH=12h"F_REMOVE_SPRITE"
--------N-6F0B-------------------------------
INT 6F - 10NET - LOCK SEMAPHORE, RETURN IMMEDIATELY
AH = 0Bh
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see #3438)
Note: same as INT 60/AH=12h
SeeAlso: AH=0Ch"10NET",INT 60/AH=12h
(Table 3438)
Values for 10NET status:
00h successful
01h semaphore currently locked
02h server not responding
03h invalid semaphore name
04h semaphore list is full
05h invalid drive ID
06h invalid Ethernet address
07h not logged in
08h write to network failed
09h semaphore already logged in this CPU
SeeAlso: #3411
Index: error codes;10-Net|10-Net;error codes
--------N-6F0C-------------------------------
INT 6F - 10NET - UNLOCK SEMAPHORE
AH = 0Ch
AL = drive number or 0
ES:SI = Ethernet address or 0
DS:BX -> 31-byte ASCIZ semaphore name
Return: AL = status (see also #3438)
01h semaphore not locked
Note: same as INT 60/AH=13h
SeeAlso: AH=0Bh,INT 60/AH=13h
--------b-6F0C-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_GET_BUFFER" - READ A BUFFER OF DATA FROM DEVICE
AH = 0Ch
BP = driver ID (see #3412) for V_HPHIL (0114h), others
CX = number of bytes or blocks to read
DS:SI -> buffer for received data
Return: AH = status (see #3415 at AH=00h"HP Vectra")
BP,DS destroyed
SeeAlso: AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BUFFER",AH=0Ch"F_GET_BLOCK"
SeeAlso: AH=10h"F_GET_WORD"
--------b-6F0C-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_GET_BLOCK" - READ BLOCKS OF DATA FROM DEVICE
AH = 0Ch
BP = driver ID (see #3412)
DH = device major number
DL = device minor number
ES:DI -> command block (see #3437)
Return: AH = status (see #3415 at AH=00h"HP Vectra")
BX = operation status
BP,DS destroyed
SeeAlso: AH=08h"F_GET_BYTE",AH=0Ah"F_PUT_BLOCK",AH=0Ch"F_GET_BUFFER"
SeeAlso: AH=10h"F_GET_WORD"
--------b-6F0C--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_FIXOWNDS" - INSTALL VALUES IN FIXED VECTOR
AH = 0Ch
BP = 0012h (driver ID for V_SYSTEM)
BX = vector address used
ES:DI -> new CS:IP entry point
Return: AH = status (00h) (see #3415)
BP,DS destroyed
Note: on installation, the given entry point will be invoked with an SF_INIT
call (see AX=0200h"SF_INIT"), which should return the routine's DS
in BX. If the SF_INIT call returns with error code FEh, the power-on
self-test sequence will be called.
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=08h/BP=0012h
SeeAlso: AH=0Eh/BP=0012h,AH=12h/BP=0012h
--------b-6F0C--BP002A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INQUIRE_ENTRY" - GET GID DRIVER ENTRY POINT
AH = 0Ch
BP = 002Ah (driver ID for V_SINPUT)
Return: AH = status (see #3415)
ES:BX -> physical GID driver CS:IP
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AX=0400h/BP=002Ah,AH=06h/BP=002Ah,AH=08h/BP=002Ah
SeeAlso: AH=0Ah/BP=002Ah
--------b-6F0C--BP005A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SET_LIMITS_X" - SET HORIZONTAL TRACKING LIMITS
AH = 0Ch
BP = 005Ah (driver ID for V_STRACK)
CX = minimum X coordinate
DX = maximum X coordinate
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=005Ah,AH=08h/BP=005Ah,AH=0Eh/BP=005Ah
SeeAlso: AH=10h/BP=005Ah,AH=12h/BP=005Ah,INT 33/AX=0007h
--------N-6F0D-------------------------------
INT 6F - 10NET - "WHO" - ENUMERATE USERS ON NETWORK
AH = 0Dh
AL = type code
01h return superstations only
02h return non-superstations only
otherwise return all
CX = length of data buffer
DS:DX -> array of records to be filled (see #3439)
Return: CL = number of records returned (responding stations)
SeeAlso: AH=16h,AH=8Dh
Format of station record:
Offset Size Description (Table 3439)
00h 12 BYTEs node ID
0Ch BYTE station flags (see #3440)
---if AL = 01h---
0Dh BYTE version number
0Eh WORD level number of 10Net software in responding node
---if AL = 02h---
0Dh 8 BYTEs user ID
15h BYTE version number
16h WORD level number
Bitfields for station flags:
Bit(s) Description (Table 3440)
1 workstation
2 superstation
3 xgate
4 active gate
--------N-6F0E-------------------------------
INT 6F - 10NET - SPOOL/PRINT
AH = 0Eh
DS:DX -> spool/print record (see #3442)
Return: CF clear if successful
CF set on error
AX = error code (see also #3411)
17FFh device not mounted
18FFh already spooling to named device
(Table 3441)
Values for 10NET spooler operation code:
0000h initiate spool
0001h abort print
0002h close spool
0003h delete spool
0004h print
0005h get report info
0006h set chat template
0007h queue
0008h return queue
0009h queue non-spooled file for printing
Format of 10NET Spool/Print record:
Offset Size Description (Table 3442)
00h WORD operation code (see #3441)
02h 11 BYTEs file name in FCB format
---if operation code = 00h or 06h---
0Dh BYTE notification flags (see #3443)
0Eh BYTE days to keep (FFh=forever)
0Fh BYTE bits 0,1: device (1=LPT1)
bits 4-7: remote drive to store spool file (1=A,...)
10h WORD length of following data area
12h N BYTEs up to 64 bytes of description
---if operation code = 03h---
0Dh 8 BYTEs user ID to associate with filename
---if operation code = 04h---
0Dh WORD block number
0Fh 8 BYTEs user ID to associate with filename
---if operation code = 05h---
0Dh BYTE RRN to start retrieve
0Eh BYTE bits 0,1: local print device (LPTx)
bit 3: if set, return entries for all users
0Fh WORD length of following area
11h N BYTEs up to 1500 bytes to receive $SCNTL records returned
---if operation code = 07h---
0Dh BYTE queue number
0Eh BYTE bits 0,1: local print device (LPTx)
0Fh WORD number of bytes of test print to be done
11h BYTE code:
01h print device
02h test print count
03h prn
---if operation code = 08h---
0Dh BYTE queue location or $SCNTL location to start access
returns next item for access:
00h-7Fh queued items
80h-FEh non-queued, non-printed items
FFh no more items
0Eh WORD unused
10h WORD length of following area
12h N BYTEs up to 64 bytes to receive $SCNTL records (see #3444)
---if operation code = 09h---
0Dh 3 BYTEs unused
10h N BYTEs path to non-spooled file to be queued for printing
Bitfields for notification flags:
Bit(s) Description (Table 3443)
7 queue to top
6 do ID page
5 no form feed
4 reserved
3 explicit queuing only
2 notify at print completion
1 notify server operator, with reply
0 notify at print start
Format of 10NET $SCNTL record:
Offset Size Description (Table 3444)
00h 8 BYTEs user ID
08h 11 BYTEs filename in FCB format
13h 6 BYTEs node ID
19h 3 BYTEs creation date
1Ch BYTE notification flags (see #3443)
1Dh BYTE retention time in days
1Eh BYTE printing device (LPTx)
1Fh 3 BYTEs date last printed (0 = never)
22h BYTE device containing spoolfile
23h WORD bytes to print for test print
25h WORD block number to start print
27h BYTE reserved
--------b-6F0E-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_PUT_WORD" - WRITE WORD OF DATA TO DEVICE
AH = 0Eh
BP = driver ID (see #3412)
DX = data word
Return: AH = status (see #3415 at AH=00h"HP Vectra")
BP,DS destroyed
SeeAlso: AH=06h"F_PUT_BYTE",AH=0Ah"F_PUT_BUFFER",AH=10h"F_GET_WORD"
--------b-6F0E-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_PUT_WORD" - WRITE A WORD OF DATA
AH = 0Eh
BP = driver ID (see #3412)
??? details not yet available
Return: ???
SeeAlso: AH=06h"HP Vectra",AH=0Ah"HP Vectra",AH=10h"HP Vectra"
--------b-6F0E--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_FIXGETDS" - INSTALL VALUES IN FIXED VECTOR
AH = 0Eh
BP = 0012h (driver ID for V_SYSTEM)
BX = vector address used
ES:DI -> new CS:IP entry point
Return: AH = status (00h) (see #3415)
BP,DS destroyed
Note: on installation, the given entry point will be invoked with an SF_INIT
call (see AX=0200h"SF_INIT"), with the "last used DS" value in BX;
the routine should adjust BX and return the new value. If the
SF_INIT call returns with error code FEh, the power-on self-test
sequence will be called.
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h,AH=0Ch/BP=0012h
SeeAlso: AH=10h/BP=0012h,AH=14h/BP=0012h
--------b-6F0E--BP005A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SET_LIMITS_Y" - SET VERTICAL TRACKING LIMITS
AH = 0Eh
BP = 005Ah (driver ID for V_STRACK)
CX = minimum Y coordinate
DX = maximum Y coordinate
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=005Ah,AH=08h/BP=005Ah,AH=0Ch/BP=005Ah
SeeAlso: AH=10h/BP=005Ah,AH=12h/BP=005Ah,INT 33/AX=0008h
--------N-6F0F-------------------------------
INT 6F - 10NET v5.0 - "RM LOCK" - ???
AH = 0Fh
???
Return: ???
SeeAlso: AH=07h,AH=08h"10NET"
--------N-6F10-------------------------------
INT 6F - 10NET - ATTACH/DETACH PRINTER
AH = 10h
AL = subfunction
00h initiate spooling if LPT1 is mounted
01h terminate spooling if LPT1 is mounted
SeeAlso: INT 21/AX=5D08h
--------b-6F10-------------------------------
INT 6F - HP Vectra EX-BIOS - "F_GET_WORD" - READ WORD OF DATA FROM DEVICE
AH = 10h
BP = driver ID (see #3412)
Return: AH = status (see #3415 at AH=00h"HP Vectra")
DX = data word
BP,DS destroyed
SeeAlso: AH=08h"F_GET_BYTE",AH=0Ch"F_GET_BUFFER",AH=0Eh"F_PUT_WORD"
--------b-6F10--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_FIXGLBDS" - INSTALL VALUES IN FIXED VECTOR
AH = 10h
BP = 0012h (driver ID for V_SYSTEM)
BX = vector address used
ES:DI -> new CS:IP entry point
Return: AH = status (00h) (see #3415)
BP,DS destroyed
Note: on installation, the given entry point will be invoked with an SF_INIT
call (see AX=0200h"SF_INIT"), with BX set to the EX-BIOS global
data area. If the SF_INIT call returns with error code FEh, the
power-on self-test sequence will be called.
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=06h/BP=0012h
SeeAlso: AH=0Ch/BP=0012h,AH=0Eh/BP=0012h,AH=12h/BP=0012h,AH=16h/BP=0012h
--------b-6F10--BP005A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_PUT_SPRITE" - DISPLAY GRAPHICS CURSOR SPRITE
AH = 10h
BP = 005Ah (driver ID for V_STRACK)
BX = X coordinate
CX = Y coordinate
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=04h"F_TRACK_INIT",AH=08h"F_TRACK_OFF"
SeeAlso: AH=12h"F_REMOVE_SPRITE",INT 33/AX=0004h
--------N-6F11-------------------------------
INT 6F - 10NET - LOCK FCB
AH = 11h
AL = mode
01h sequential
02h random
03h random block
CX = number of records
DS:DX -> FCB (see #1034 at INT 21/AH=0Fh)
Return: CF clear if successful
CF set on error
AX = error code (see also #3411)
0002h file not found
SeeAlso: AH=12h,INT 21/AH=0Fh
--------N-6F12-------------------------------
INT 6F - 10NET - UNLOCK FCB
AH = 12h
AL = mode
00h sequential
01h random
02h random block
CX = number of records
DS:DX -> FCB (see #1034 at INT 21/AH=0Fh)
Return: CF clear if successful
CF set on error
AX = error code (see also #3411)
0002h file not found
SeeAlso: AH=11h
--------b-6F12--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_FREEOWNDS" - INSTALL VALUES IN FREE VECTOR
AH = 12h
BP = 0012h (driver ID for V_SYSTEM)
ES:DI -> new CS:IP entry point
Return: AH = status (00h) (see #3415)
BP,DS destroyed
Note: on installation, the given entry point will be invoked with an SF_INIT
call (see AX=0200h"SF_INIT"), which should return the routine's DS
in BX. If the SF_INIT call returns with error code FEh, the power-on
self-test sequence will be called.
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Ch/BP=0012h,AH=14h/BP=0012h
SeeAlso: AH=16h/BP=0012h,AH=18h/BP=0012h
--------b-6F12--BP005A-----------------------
INT 6F - HP Vectra EX-BIOS - "F_REMOVE_SPRITE" - REMOVE GRAPHICS CURSOR SPRITE
AH = 12h
BP = 005Ah (driver ID for V_STRACK)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=06h"F_TRACK_ON",AH=10h"F_PUT_SPRITE"
--------N-6F13-------------------------------
INT 6F - 10NET v3.3+ - GET REMOTE CONFIGURATION TABLE ADDRESS
AH = 13h
DS:DX -> node ID, 12 bytes blank-padded
Return: CF clear if successful
ES:BX = configuration table address on given machine
CF set on error
AX = error code (see #3411)
SeeAlso: AH=03h
--------N-6F14-------------------------------
INT 6F - 10NET v3.3+ - GET REMOTE MEMORY
AH = 14h
BX:SI = address of remote memory
CX = length (<=1024 bytes)
DS:DX -> node ID, 12 bytes blank-padded
DS:DI -> area to receive remote memory image
Return: CF clear if successful
CX = amount of memory copied to DS:SI
CF set on error
AX = error code (see #3411)
--------b-6F14--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_FREEGETDS" - INSTALL VALUES IN FREE VECTOR
AH = 14h
BP = 0012h (driver ID for V_SYSTEM)
ES:DI -> new CS:IP entry point
Return: AH = status (00h) (see #3415)
BP,DS destroyed
Note: on installation, the given entry point will be invoked with an SF_INIT
call (see AX=0200h"SF_INIT"), with the "last used DS" value in BX;
the routine should adjust BX and return the new value. If the
SF_INIT call returns with error code FEh, the power-on self-test
sequence will be called.
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Eh/BP=0012h,AH=12h/BP=0012h
SeeAlso: AH=16h/BP=0012h
--------N-6F1501-----------------------------
INT 6F - 10NET v3.3+ - GET SHARED DEVICE ENTRY
AX = 1501h
BX = zero-based index
DS:SI -> node ID, 12 bytes blank-padded
ES:DI -> 85-byte buffer for shared device table entry (see #3445)
Return: CF clear if successful
ES:DI buffer contains shared device table entry of BXth device
CF set on error
AX = error code (see #3411)
SeeAlso: AX=1502h,AX=1503h,AX=9501h
Format of 10NET shared device table entry:
Offset Size Description (Table 3445)
00h 8 BYTEs device
08h 8 BYTEs alias
10h 64 BYTEs path
50h 8 BYTEs password
58h BYTE access
59h 4 BYTEs mask
--------N-6F1502-----------------------------
INT 6F - 10NET v3.3+ - SET SHARED DEVICE ENTRY
AX = 1502h
DS:SI -> node ID, 12 bytes blank-padded
ES:DI -> valid shared device table entry
Return: CF clear if successful
CF set on error
AX = error code (see #3411)
SeeAlso: AX=1501h,AX=1503h,AX=9502h
--------N-6F1503-----------------------------
INT 6F - 10NET v3.3+ - DELETE SHARED DEVICE ENTRY
AX = 1503h
BX = zero-based index
DS:SI -> node ID, 12 bytes blank-padded
Return: CF clear if successful
CF set on error
AX = error code (see #3411)
SeeAlso: AX=1501h,AX=1502h,AX=9503h
--------N-6F16-------------------------------
INT 6F - 10NET v5.0 - "GL WHO" - ???
AH = 16h
???
Return: ???
SeeAlso: AH=0Dh
--------b-6F16--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_FREEGLBDS" - INSTALL VALUES IN FREE VECTOR
AH = 16h
BP = 0012h (driver ID for V_SYSTEM)
ES:DI -> new CS:IP entry point
Return: AH = status (00h) (see #3415 at INT 6F/AH=00h"HP Vectra")
BP,DS destroyed
Note: on installation, the given entry point will be invoked with an SF_INIT
call (see AX=0200h"SF_INIT"), with BX set to the EX-BIOS global
data area. If the SF_INIT call returns with error code FEh, the
power-on self-test sequence will be called.
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=10h/BP=0012h,AH=12h/BP=0012h
SeeAlso: AH=14h/BP=0012h,AH=18h/BP=0012h
--------N-6F17-------------------------------
INT 6F - 10NET v3.3+ - MOUNT
AH = 17h
AL = local drive number (0=A:)
BL = remote drive letter or '1'..'3' for LPTn or '4' or '5' for COMx
DS:DX -> node ID, 12 bytes blank-padded
Return: CF clear if successful
CF set on error
AX = error code (see #3411)
SeeAlso: AH=18h
--------N-6F18-------------------------------
INT 6F - 10NET v3.3+ - UNMOUNT
AH = 18h
AL = local drive number (0=A:)
BL = type
00h disk
01h-03h LPTn
04h,05h COMx
Return: CF clear if successful
CF set on error
AX = error code (see #3411)
SeeAlso: AH=17h
--------b-6F18--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_INS_FIND" - FIND DRIVER BY ATTRIBUTES
AH = 18h
BP = 0012h (driver ID for V_SYSTEM)
AL = sense of test (00h equal, 02h non-equal)
BX = AND mask
DX = pattern
SI = first vector address to search
DI = offset in HP header of field to test
Return: AH = status (00h,FEh) (see #3415 at INT 6F/AH=00h"HP Vectra")
BP,DS destroyed
---if AH=00h---
SI = first matching vector address
Desc: compare successive drivers' header fields starting at address SI
until the header field AND BX is either equal or non-equal to DX
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=0Ch/BP=0012h,AH=10h/BP=0012h
SeeAlso: AH=12h/BP=0012h,AH=16h/BP=0012h
--------N-6F19-------------------------------
INT 6F U - 10NET v5.0 - AUDIT
AH = 19h
???
Return: ???
SeeAlso: AH=99h
--------N-6F1A-------------------------------
INT 6F U - 10NET v5.0 - "BULL" - ???
AH = 1Ah
???
Return: ???
--------N-6F1B-------------------------------
INT 6F U - 10NET v5.0 - "GMOUNT" - ???
AH = 1Bh
???
Return: ???
--------N-6F1C-------------------------------
INT 6F U - 10NET v5.0 - "GLOGIN" - GET LOGIN LIST
AH = 1Ch
???
Return: ???
--------N-6F1D-------------------------------
INT 6F U - 10NET v5.0 - "TABDATA" - ???
AH = 1Dh
???
Return: ???
--------N-6F1E-------------------------------
INT 6F U - 10NET v5.0 - "SCHED" - ???
AH = 1Eh
???
Return: ???
--------b-6F1E--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_RAM_GET" - GET EX-BIOS FREE RAM AREA
AH = 1Eh
BP = 0012h (driver ID for V_SYSTEM)
Return: AH = status (00h) (see #3415 at INT 6F/AH=00h"HP Vectra")
BX = last-used DS
DX = maximum DS
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=04h/BP=0012h,AH=20h/BP=0012h,AH=22h/BP=0012h
--------N-6F1F-------------------------------
INT 6F U - 10NET v5.0 - "WHOAMI" - ???
AH = 1Fh
???
Return: ???
--------N-6F20-------------------------------
INT 6F U - 10NET v5.0 - ???
AH = 20h
???
Return: ???
--------b-6F20--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_RAM_RET" - RESERVE EX-BIOS MEMORY
AH = 20h
BP = 0012h (driver ID for V_SYSTEM)
BX = new value for "last-used DS"
DX = new value for "maximum DS"
Return: AH = status (00h) (see #3415 at INT 6F/AH=00h"HP Vectra")
BP,DS destroyed
Note: the F_INS_FIXGETDS and F_INS_FREEGETDS functions
(see AH=0Eh/BP=0012h,AH=14h/BP=0012h) also modify the values returned
by this call, requiring care if both methods are used to allocate
memory
SeeAlso: AH=00h"HP Vectra",AH=0Eh/BP=0012h,AH=14h/BP=0012h,AH=1Eh/BP=0012h
--------N-6F21-------------------------------
INT 6F U - 10NET v5.0 - ???
AH = 21h
???
Return: ???
--------N-6F22-------------------------------
INT 6F U - 10NET v5.0 - ???
AH = 22h
???
Return: ???
--------b-6F22--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_CMOS_GET" - READ CMOS MEMORY
AH = 22h
BP = 0012h (driver ID of V_SYSTEM)
BL = address of CMOS byte to read
Return: AH = status (see #3415 at AH=00h"HP Vectra")
AL = byte read
BP,DS destroyed
Note: supported by ES, QS, and RS series HP Vectras
SeeAlso: AH=00h"HP Vectra",AH=1Eh/BP=0012h,AH=24h/BP=0012h
--------b-6F24--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_CMOS_RET" - WRITE CMOS MEMORY
AH = 24h
BP = 0012h (driver ID of V_SYSTEM)
BL = address of CMOS byte to write
AL = new value
Return: AH = status (see #3415)
BP,DS destroyed
Note: updates the CMOS checksum fields (both IBM-standard and HP checksums)
SeeAlso: AH=00h"HP Vectra",AH=22h/BP=0012h
--------b-6F2A--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_YIELD" - GIVE UP CPU TO OTHER TASKS
AH = 2Ah
BP = 0012h (driver ID of V_SYSTEM)
Return: AH = status (see #3415)
BP,DS destroyed
Note: this is a hook for multitasking systems
SeeAlso: AH=00h"HP Vectra",INT 15/AX=1000h,INT 2F/AX=1680h
--------b-6F30--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK_ENABLE" - TURN ON KEYCLICKS
AH = 30h
BP = 0012h (driver ID of V_SYSTEM)
Return: AH = status (see #3415 at AH=00h"HP Vectra")
BP,DS destroyed
Desc: enables keyclicks and flushes any pending keyclicks
SeeAlso: AH=32h/BP=0012h,AH=34h/BP=0012h,AH=36h/BP=0012h
--------b-6F32--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK_DISABLE" - TURN OFF KEYCLICKS
AH = 32h
BP = 0012h (driver ID of V_SYSTEM)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: disables keyclicks and flushes any pending keyclicks
SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=38h/BP=0012h
--------b-6F34--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SND_CLICK" - GENERATE KEYCLICK
AH = 34h
BP = 0012h (driver ID of V_SYSTEM)
Return: AH = status (see #3415)
BP,DS destroyed
Desc: generate a keyclick if fewer than four clicks are already pending
Note: if keyclicks are already pending, the remaining click count is
incremented and the function returns immediately
SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=36h/BP=0012h,AH=3Ah/BP=0012h
--------b-6F36--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP_ENABLE" - ENABLE BEEPS
AH = 36h
BP = 0012h (driver ID of V_SYSTEM)
Return: AH = status (see #3415 at AH=00h"HP Vectra")
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=30h/BP=0012h,AH=34h/BP=0012h,AH=38h/BP=0012h
--------b-6F38--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP_DISABLE" - DISABLE BEEPS
AH = 38h
BP = 0012h (driver ID of V_SYSTEM)
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=32h/BP=0012h,AH=36h/BP=0012h
--------b-6F3A--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SND_BEEP" - SOUND BEEP WITH CURRENT VALUES
AH = 3Ah
BP = 0012h (driver ID of V_SYSTEM)
Return: AH = status (see #3415 at AH=00h"HP Vectra")
BP,DS destroyed
Desc: make a sound of the frequency and duration defined in the EX-BIOS
global data area (see #3419)
SeeAlso: AH=00h"HP Vectra",AH=34h/BP=0012h,AH=36h/BP=0012h,AH=38h/BP=0012h
SeeAlso: AH=3Ch/BP=0012h,AH=3Eh/BP=0012h
--------b-6F3C--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SND_SET_BEEP" - SET BEEP FREQUENCY AND DURATION
AH = 3Ch
BP = 0012h (driver ID of V_SYSTEM)
BX = frequency in Hz (1-25000, 0 = off)
DX = duration in 10-microsecond increments
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=3Ah/BP=0012h,AH=3Eh/BP=0012h,#3419
--------b-6F3E--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_SND_TONE" - SOUND TONE WITH FREQ AND DURATION
AH = 3Eh
BP = 0012h (driver ID of V_SYSTEM)
BX = frequency in Hz (1-25000, 0 = off)
DX = duration in 10-microsecond increments
Return: AH = status (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=3Ah/BP=0012h,AH=3Ch/BP=0012h,AH=40h/BP=0012h
--------b-6F40--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_STR_GET_FREE_INDEX" - FIND FREE STRING INDEX
AH = 40h
BP = 0012h (driver ID of V_SYSTEM)
Return: AH = status (see #3415)
BX = next free string index
BP,DS destroyed
Desc: get the next string index available to user programs
SeeAlso: AH=00h"HP Vectra",AH=42h/BP=0012h,AH=44h/BP=0012h,AH=46h/BP=0012h
--------b-6F42--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_STR_DEL_BUCKET" - DEL HEADER FROM BUCKET LIST
AH = 42h
BP = 0012h (driver ID of V_SYSTEM)
ES:DI -> bucket header (see #3446)
Return: AH = status (00h,FEh) (see #3415 at AH=00h"HP Vectra")
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=40h/BP=0012h,AH=44h/BP=0012h
Format of HP Vectra EX-BIOS bucket header:
Offset Size Description (Table 3446)
00h DWORD pointer to next bucket header (FFFFh:FFFFh if last)
04h WORD upper bound on string index
06h WORD lower bound on string index
08h DWORD pointer to array of string offset pointers
0Ch WORD segment of strings
Note: the strings pointed at by the offset pointers are byte-counted ASCIZ
strings
--------b-6F44--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_STR_PUT_BUCKET" - ADD HEADER TO BUCKET HDR LIST
AH = 44h
BP = 0012h (driver ID of V_SYSTEM)
ES:DI -> bucket header (see #3446)
Return: AH = status (00h) (see #3415)
BP,DS destroyed
SeeAlso: AH=00h"HP Vectra",AH=42h/BP=0012h,AH=46h/BP=0012h
--------b-6F46--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_STR_GET_STRING" - FIND STRING IN BUCKET LIST
AH = 46h
BP = 0012h (driver ID of V_SYSTEM)
BX = string index
Return: AH = status (00h,other) (see #3415)
BP,DS destroyed
---if successful---
CX = length of string (excluding count byte and terminating NUL)
DS:SI -> header for string
ES:DI -> found string
SeeAlso: AH=00h"HP Vectra",AH=44h/BP=0012h,AH=48h/BP=0012h
--------b-6F48--BP0012-----------------------
INT 6F - HP Vectra EX-BIOS - "F_STR_GET_INDEX" - GET INDEX FOR STRING
AH = 48h
BP = 0012h (driver ID of V_SYSTEM)
ES:DI -> ASCIZ string
Return: AH = status (00h,other) (see #3415 at AH=00h"HP Vectra")
BP,DS destroyed
---if successful---
BX = index for the given string
SeeAlso: AH=00h"HP Vectra",AH=40h/BP=0012h,AH=46h/BP=0012h
--------A-6F636FBX6D70-----------------------
INT 6F - Clara Empricost - TSR Version - INSTALLATION CHECK
AX = 636Fh ('co')
BX = 6D70h ('mp')
CX = 696Eh ('in')
SS:DX -> WORD to set if installed
Return: SS:DX word set to 636Fh if installed
Program: Condition List Action Rejection Algorithm for the Evaluation
of Music at Pseudo-Random Idea COnstruction STage
(CLARA EMPRICOST) is an experimental program by Silas Brown
SeeAlso: AX=636Fh/BX=6D70h"UNINSTALL"
--------A-6F636FBX6D70-----------------------
INT 6F - Clara Empricost - TSR Version - UNINSTALL
AX = 636Fh ('co')
BX = 6D70h ('mp')
CX = 6F73h ('os')
Return: nothing -- call installation check to determine whether successful
Program: Condition List Action Rejection Algorithm for the Evaluation
of Music at Pseudo-Random Idea COnstruction STage
(CLARA EMPRICOST) is an experimental program by Silas Brown
Notes: Saves any unfinished task and prevents processing of
new tasks, even if can't uninstall
If INT 28h or INT 6Fh have been chained since installation,
returns without changing interrupts or freeing memory
do not call while DOS is active (i.e. InDOS flag is nonzero or INT 28
is active and InDOS > 1)
SeeAlso: AX=636Fh/BX=6D70h"INSTALLATION CHECK"
--------N-6F80-------------------------------
INT 6F - 10NET v5.0 - LOGIN
AH = 80h
DS:DX -> login record (see #3447)
Return: CF clear if successful
BL = number of days until password expires (00h = never)
CL = security level
CF set on error
AX = status (see #3411)
SeeAlso: AH=00h,AH=81h
Format of 10NET login record:
Offset Size Description (Table 3447)
00h 8 BYTEs user name
08h 8 BYTEs password
10h 15 BYTEs server node ID
1Fh 8 BYTEs new password
27h BYTE invoke mode (00h command line, 01h interactive)
--------N-6F81-------------------------------
INT 6F - 10NET v5.0 - LOGOUT
AH = 81h
DS:DX -> server node ID (DX=0000h for universal logout)
Return: AX = status (see #3411)
SeeAlso: AH=01h,AH=80h
--------N-6F8A-------------------------------
INT 6F - 10NET v5.0 - CHAT
AH = 8Ah
DS:BX -> chat parameters (see #3448)
DS:DX -> chat message (see #3449)
Return: CF clear if successful
CF set on error
AX = status (see #3411)
SeeAlso: AH=0Ah"10NET"
Format of 10NET chat parameters:
Offset Size Description (Table 3448)
00h 8 BYTEs sender's user name
08h 8 BYTEs destination user name
10h 15 BYTEs destination node (0 if broadcast-style chat)
Format of 10NET chat message:
Offset Size Description (Table 3449)
00h WORD message length
02h N BYTEs chat message contents
--------N-6F8D-------------------------------
INT 6F - 10NET v5.0 - "WHO" - ENUMERATE USERS ON NETWORK
AH = 8Dh
BX = service mask (see #3450)
CX = length of buffer
DS:DX -> buffer for array of Who data structures (see #3451)
Return: CF clear if successful
CX = number of nodes matching service mask
DS:DX buffer filled
CF set on error
AX = status (see #3411)
SeeAlso: AH=0Dh
Bitfields for 10NET service mask:
Bit(s) Description (Table 3450)
0 workstation
1 file server
2 print server
3 de-spool server
Format of 10NET Who data structure:
Offset Size Description (Table 3451)
00h 8 BYTEs user name
08h 15 BYTEs node ID
17h 3 BYTEs unique portion of Ethernet address
1Ah BYTE Who group number
1Bh WORD service mask (see #3450)
1Dh DWORD serial number
21h BYTE maximum concurrent users with same serial number allowed on net
22h BYTE chat mask (see #3452)
23h BYTE internal system bits (see #3453)
24h 9 BYTEs version number in format MM.mm.xxx
2Dh BYTE number of shared directories
2Eh BYTE number of shared printer queues
Bitfields for 10NET chat mask:
Bit(s) Description (Table 3452)
0 chat permitted
1 bell enabled
2 chat keyboard initiated
3 in INT 16 handler
4 in Get Input
5 display has timed out
6 chat is idle
Bitfields for 10NET internal system bits:
Bit(s) Description (Table 3453)
0 submit permitted
1 submit initiated
2 submit executing
3 internal client call/chat/spool/autospool
4 in spool termination
5 print permitted
6 waiting for keyboard input
--------N-6F9501-----------------------------
INT 6F - 10NET v5.0 - GET SHARED DEVICE ENTRY
AX = 9501h
BX = zero-based index
DS:SI -> server's node ID
ES:DI -> buffer for shared device structure (see #3454)
Return: CF clear if successful
CF set on error
AX = status (see #3411)
SeeAlso: AX=1501h,AX=9502h,AX=9503h,AX=9504h
Format of 10NET shared device structure:
Offset Size Description (Table 3454)
00h 8 BYTEs alias
08h BYTE type (02h modem, 03h print queue, 04h directory)
09h BYTE access rights
bit 0: read
bit 1: write
bit 2: create
0Ah 8 BYTEs password
12h 32 BYTEs comment
---directory---
32h 64 BYTEs pathname of shared directory
---print queue---
32h BYTE notification bit mask (see #3455)
33h BYTE job control bit mask (see #3456)
34h WORD number of days to retain file
36h WORD test print length
38h BYTE number of copies to print
39h BYTE compression algorithm
3Ah BYTE tab width (00h = don't expand)
3Bh BYTE priority
3Ch WORD time to open queue (FFFFh = always)
3Eh WORD time to close queue
40h WORD pause following queue switch, in clock ticks
42h WORD pause between print jobs, in clock ticks
44h BYTE associate queue file existence mask
bit 0: queue switch file exists
bit 1: initiate file exists
bit 2: abort file exists
45h 6 BYTEs character sequence for page eject
4Bh BYTE status of print queue
bit 0: queue is closed
4Ch WORD number of jobs on queue
4Eh WORD offset of next print job to be dispatched (FFFFh = none)
50h BYTE number of print devices in printer pool
51h WORD offset of first print device structure (FFFFh if empty)
Bitfields for notification flags:
Bit(s) Description (Table 3455)
0 user at print start
1 operator at start, with reply
2 user at print completion
3 operator at completion, with reply
4 user on queue switch
5 operator on queue switch, with reply
6 user on print error
Bitfields for 10NET job control mask:
Bit(s) Description (Table 3456)
0 print banner page
1 eject page at end of job
2 mark as "held" (queue but don't print)
3 rush job (queue at top)
4 overwrite file with zeros before deletion
5 hyperspool if possible
--------N-6F9502-----------------------------
INT 6F - 10NET v5.0 - SET SHARED DEVICE ENTRY
AX = 9502h
DS:SI -> server's node ID
ES:DI -> shared device structure (see #3454)
Return: CF clear if successful
CF set on error
AX = status (see #3411)
SeeAlso: AX=1502h,AX=9501h,AX=9503h,AX=9504h
--------N-6F9503-----------------------------
INT 6F - 10NET v5.0 - DELETE SHARED DEVICE
AX = 9503h
BX = zero-based index
DS:SI -> server's node ID
Return: CF clear if successful
CF set on error
AX = status (see #3411)
SeeAlso: AX=1503h,AX=9501h,AX=9502h,AX=9504h
--------N-6F9504-----------------------------
INT 6F - 10NET v5.0 - ENUMERATE USERS OF SHARED DEVICE
AX = 9504h
BX = zero-based shared device index
CX = zero-based user index
DS:SI -> server's node ID
Return: CF clear if successful
ES:DI -> node ID of the CX'th user of the BX'th device
CF set on error
AX = status (see #3411)
SeeAlso: AX=9501h,AX=9502h,AX=9503h
--------N-6F99-------------------------------
INT 6F - 10NET v5.0 - AUDIT
AH = 99h
DS:SI -> server's node ID
ES:DI -> data to be appended to audit trail file (max 106 bytes)
Return: CF clear if successful
CF set on error
AX = status (see #3411)
SeeAlso: AH=19h,AH=9Ch
--------N-6F9C-------------------------------
INT 6F - 10NET v5.0 - GET LOGIN LIST
AH = 9Ch
BX = zero-based index
Return: CF clear if successful
DS:DI -> BX'th node ID that caller's machine is logged into
CF set on error
AX = status (see #3411)
--------H-70---------------------------------
INT 70 C - IRQ8 - CMOS REAL-TIME CLOCK
Desc: this interrupt is called when the real-time clock chip generates an
alarm or periodic interrupt, among others. The periodic interrupt
occurs 1024 times per second.
Notes: many BIOSes turn off the periodic interrupt in the INT 70h handler
unless in an event wait (see INT 15/AH=83h,INT 15/AH=86h).
may be masked by setting bit 0 on I/O port A1h
SeeAlso: INT 08,INT 0F"HP 95LX",INT 15/AH=01h"Amstrad",INT 15/AH=83h
SeeAlso: INT 15/AH=86h,INT 1A/AH=02h,INT 58"DESQview",MEM FEE00320h
SeeAlso: MEM 0040h:006Bh
--------v-70---------------------------------
INT 70 - VIRUS - "Stupid" - ORIGINAL INT 21h VECTOR
Note: the virus sets this interrupt to be the same as INT 21, and then
performs only INT 70 calls; since INT 70 is also generated by the
real-time clock on the PC/AT and higher, this could cause random
actions on an infected system
SeeAlso: INT 6B"VIRUS",INT 9E"VIRUS",INT E0"VIRUS"
--------H-71---------------------------------
INT 71 C - IRQ9 - REDIRECTED TO INT 0A BY BIOS
Notes: may be masked by setting bit 1 on I/O port A1h
the default BIOS handler invokes INT 0A for compatibility, since the
pin for IRQ2 on the PC expansion bus became the pin for IRQ9 on the
AT expansion bus.
under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
SeeAlso: INT 0A"IRQ2",INT 59"IRQ9",MEM 0040h:006Bh
--------H-72---------------------------------
INT 72 C - IRQ10 - RESERVED
Note: may be masked by setting bit 2 on I/O port A1h
SeeAlso: INT 5A"IRQ10",MEM 0040h:006Bh
--------H-73---------------------------------
INT 73 C - IRQ11 - RESERVED
Note: may be masked by setting bit 3 on I/O port A1h
SeeAlso: INT 5B"IRQ11",MEM 0040h:006Bh
--------H-74---------------------------------
INT 74 C - IRQ12 - POINTING DEVICE (PS)
Notes: may be masked by setting bit 4 on I/O port A1h
under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
SeeAlso: INT 33/AX=0000h,INT 33/AX=0024h,INT 5C"NetBIOS",MEM 0040h:006Bh
--------H-75---------------------------------
INT 75 C - IRQ13 - MATH COPROCESSOR EXCEPTION (AT and up)
Desc: redirected to INT 02 by the BIOS, for compatibility with the PC
Notes: may be masked by setting bit 5 on I/O port A1h
not all clones wire the coprocessor to generate this IRQ; some systems
generate an NMI (see INT 02) or assert the -ERROR pin on the CPU
(see INT 10"COPROCESSOR")
under DESQview, only the INT 15h vector and BASIC segment address (the
word at 0000h:0510h) may be assumed to be valid for the handler's
process
SeeAlso: INT 10"COPROCESSOR",INT 5D"IRQ13",MEM 0040h:006Bh
--------H-76---------------------------------
INT 76 C - IRQ14 - HARD DISK CONTROLLER OPERATION COMPLETE (AT and later)
Notes: may be masked by setting bit 6 on I/O port A1h
on the PS/2, this interrupt is designed to be shared with other
devices that produce an operation-complete interrupt, though
the only current user is the hard disk
SeeAlso: INT 0E"IRQ6",INT 15/AH=91h,INT 5E"IRQ14",MEM 0040h:006Bh
--------H-77---------------------------------
INT 77 C - IRQ15 - RESERVED (AT,PS)
Note: may be masked by setting bit 7 on I/O port A1h
SeeAlso: INT 5F"IRQ15",MEM 0040h:006Bh
--------H-77---------------------------------
INT 77 C - IRQ15 - POWER CONSERVATION (Compaq SLT/286)
Note: may be masked by setting bit 7 on I/O port A1h
SeeAlso: INT 15/AX=4600h,INT 5F"IRQ15"
--------E-78---------------------------------
INT 78 - UofSalford DBOS DOS extender - API
AH = function
00h (PB) display 32-bit memory specified by command argument
01h (PT) display 32-bit instruction(s) specified by command arg
02h specify offset to subsequent PB and PT commands
03h switch to protected mode
DWORD following INT instruction point to map; protected-mode
entry point is immediately following the DWORD
Return: never
Note: if bit 31 of the map address is set, only a stub was
loaded by DOS and DBOS will load the entire program
04h specify that subsequent load (AH=03h) should leave program in
memory
05h release program from memory
06h set break point at address and option count from commandline
07h resume program execution
08h single-step program
09h set read/write breakpoint using 386 debug registers
0Ah set write breakpoint using 386 debug register
0Bh set memory byte to new value
0Ch display CPU registers
0Dh run until specified program address reached
0Fh print trace from program map
10h specify an offset using a map symbol
14h print memory without any offset
18h switch DBOS into/out of test mode (ON/OFF commandline args)
1Dh get address of real/protected-mode communication buffer
Return: ES:BP -> comm buffer
1Eh set real-mode memory size (specify how much real-mode memory
to leave free when running FTN77 programs)
22h uninstall DBOS
24h force DBOS to emulate coprocessor instructions
26h set named DBOS switches from commandline
27h reset named DBOS switched from commandline
2Ah set list of dynamic link libraries to contents of commandline
file
35h specify that subsequent load (AH=03h) should stop at first
instruction
Return: ???
Notes: DBOS supports functions 00h through 50h; many of these functions
provide a low-level debugging interface
command arguments are read from the calling program's PSP
SeeAlso: INT 79"DBOS"
Index: uninstall;DBOS DOS extender
--------E-78---------------------------------
INT 78 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ0
Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
Notes: this vector is overwritten when GO32 starts but is not restored by
early versions of the 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 08,INT 10/AH=FFh"GO32",INT 79"GO32"
--------A-78---------------------------------
INT 78 R - AutoCAD Device Interface - PLOTTER - SEND COMMAND
AX = function
0001h begin plot
BX = file level
0000h ASCII file
0001h binary file
0002h AutoCAD DXB file
0003h installed ADI driver
0002h end plot (close plotter)
0003h move (pen up)
BX = new X position
CX = new Y position
0004h move (pen down)
BX = new X position
CX = new Y position
0005h select pen
BX = pen number
0006h select drawing speed
BX = drawing speed N
0007h select line style
BX = line style N
0008h raise pen
0009h abort plot
Return: AX = 0000h (may be used for driver status in future releases)
SeeAlso: INT 79"AutoCAD",INT 7A/AX=0001h"AutoCAD",INT 7B/AX=8001h"AutoCAD"
--------d-78---------------------------------
INT 78 - ADP-60 IDE controller - ORIGINAL INT 13
SeeAlso: INT 79"ADP-60"
--------s-78-------------------------------
INT 78 - ULTRAMID - API
AX = function
--- digital functions ---
0000h start digital
ES:DI -> Sound Structure
Return: AX = voice used
0001h play next buffer
ES:DI -> Sound Structure
0002h set panning
BX = pan
CX = voice
0003h set volume
BX = volume
CX = voice
0004h set rate (not yet implemented)
0005h pause digital
CX = voice
0006h restart digital
CX = voice
0007h stop digital
CX = voice
0008h get digital position
CX = voice
Return: AX:DX -> position in PC buffer
0009h get voice status (not yet implemented)
--- MIDI functions ---
000Ah load MIDI patches
ES:DI -> MIDI track just after the Mtrk header
BX:DX = length of MIDI track
000Bh load XMIDI patches
ES:DI -> event buffer including the EVNT header
000Ch load patch
CX = MIDI number of patch
000Dh unload patch
CX = MIDI number of patch
000Eh start sequence
000Fh unload all patches
0010h MIDI out byte
CX = MIDI byte
0011h MIDI out string
CX = length
ES:DI -> string of MIDI data
0012h all notes off
--- resource functions ---
0013h allocate memory
BX:DX = size of GUS memory needed
Return: AX:DX = address of memory, or 0000:0000 if not avaiable
0014h free memory
BX:DX = address of memory to be freed
0015h uninstall
0016h sem enter
0017h sem leave
0018h add external semaphore
BX:DX -> external semaphore
0019h clear external semaphore
BX:DX -> external semaphore
001Ah application start
001Bh application end
--- v1.12 ---
001Ch ???
001Dh ???
001Eh ???
001Fh ???
Program: UltraMid is a TSR from Advanced Gravis to play MIDI and digital data
through the Gravis UltraSound (GUS)
Range: INT 78 to INT 7F
Notes: the installation check is testing for the signature "ULTRAMID" at
offset 0103h in the interrupt handler's segment
SeeAlso: INT 2F/AX=CD00h"ULTRAMID",INT 7E/AH=00h"SBOS",INT 7E/AX=00FEh"SBOS"
Index: uninstall;UltraMID
--------d-7800-------------------------------
INT 78 - TARGA.DEV - CMC International SCSI device driver - SET I/O PORT
AH = 00h
DX = interface board I/O port
Return: CF set on error
AL = error code (see #3457)
Note: if this routine is not called, the port is the driver's default
(usually 0280h or 0300h)
an installation check is performed by TARGA.DEV upon initialization
by checking for the string "SCSI" at offset 03h into the interrupt
handler
SeeAlso: AH=01h,AH=02h
Index: installation check;TARGA.DEV
(Table 3457)
Values for TARGA.DEV error code:
00h illegal command given to SCSI code
01h invalid I/O port specified (must be from 100H to 3F8H, and must be on
an 8-port boundary)
02h invalid DMA channel specified (must be from 1 to 3)
03h invalid SCSI board number specified (must be from 0 to 7)
04h error from data register test during self-test
05h SCSI input signals not all 0 when SCSI RST activated
06h SCSI input signals not all 0 before selecting a SCSI device
07h BSY signal is active; SCSI bus is busy
08h SCSI board not selected, BSY signal did not come on in response to
raising SEL
09h time-out waiting for status state, signifying end of DMA transfer
--------E-780000-----------------------------
INT 78 - HugeRealMode Driver - INSTALLATION CHECK
AX = 0000h
Return: AX = DBCAh if installed
Program: the HugeRealMode driver was published in the German DOS Extra Nr. 20
(1992), and makes a 4G flat address space (for both data and code)
available to real-mode DOS programs
SeeAlso: AX=0001h
--------E-780001-----------------------------
INT 78 - HugeRealMode Driver - GET ENTRY POINT
AX = 0001h
Return: ES:BX -> far call entry point (see #3459,#3474)
SeeAlso: AX=0000h
(Table 3458)
Values for HugeRealMode Server error code:
00h successful
01h unknown function
02h A20 disabled
03h A20 enabled
04h memory allocation error
05h memory not fixeable (LOCK)
06h memory not deallocaable
07h memory not moveable (UNLOCK)
08h change in memory allocation size not possible
09h file error (with .XMF-file)
0Ah memory error (with .XMF-file)
0Bh unknown procedure (currently Turbo Pascal unit only)
(Table 3459)
Call HugeRealMode Server "Enable A20" function with:
AL = 00h
Return: AX = error code (see #3458)
Note: The HugeRealMode Server requires an XMS-driver like HIMEM.SYS loaded
before HUGEREAL (for XMS-memory allocation and A20 control). It
utilizes some undocumented 386+ features to enable 4G code and data
segments (flat memory model) in the CPUs real-mode. It is not
compatible with V86-mode (as with most EMM386). For maximum speed
and compatibility with DOS it uses a two stage interrupt model
(see #3462)
SeeAlso: #3460,#3461,#3462
(Table 3460)
Call HugeRealMode Server "Disable A20" function with:
AL = 01h
Return: AX = error code (see #3458)
SeeAlso: #3459,#3461
(Table 3461)
Call HugeRealMode Server "Query A20 State" function with:
AL = 02h
Return: AX = A20 state (0000h disabled, 0001h enabled)
SeeAlso: #3459,#3460
(Table 3462)
Call HugeRealMode Server "Enable Two-Stage Interrupt Model" function with:
AL = 03h
Return: AX = error code (see #3458)
Notes: If the two stage interrupt model is disabled, the IP must stay below
1MB, because the high word of EIP is not saved correctly by the
standard interrupt management in real mode. Routines in extended
memory may only be called with interrupts disabled (only usable for
very short routines).
If the two stage interupt model is enabled, these conventions are not
required. The outer (transparent) ISRs save the higher word of EIP
in the high word of CR3 (possible modification: in memory, if this
is not safe) and then invoke the standard ISRs.
Because of this handling, one should use pseudo segmented code even in
extended memory (64K blocks located on 64K boundaries) to avoid the
misalignment of the saved EIP (in CR3). Another way is to track and
realign CR3 each time when jumping over a 64K boundary in extended
memory
SeeAlso: #3459,#3463
(Table 3463)
Call HugeRealMode Server "Disable Two-Stage Interrupt Model" function with:
AL = 04h
Return: AX = error code (see #3458)
SeeAlso: #3459,#3462
(Table 3464)
Call HugeRealMode Server "Get Segment Address Of Server-Management Range" with:
AL = 05h
Return: AX = error code (see #3458)
ES = segment address
SeeAlso: #3474
(Table 3465)
Call HugeRealMode Server "Allocate Memory" function with:
AL = 06h
DX = length in KB
Return: AX = error code (see #3458)
DX = handle
EBX = start address of allocated block
SeeAlso: #3466,#3467
(Table 3466)
Call HugeRealMode Server "Deallocate Memory" function with:
AL = 07h
DX = handle
Return: AX = error code (see #3458)
SeeAlso: #3465,#3467
(Table 3467)
Call HugeRealMode Server "Modify Allocated Memory Size" function with:
AL = 08h
DX = handle
BX = new size in KB
Return: AX = error code (see #3458)
EBX = new address
SeeAlso: #3465,#3466
(Table 3468)
Call HugeRealMode Server "Load .XMF-file" function with:
AL = 09h
ES:BX -> filename (see #3469)
Return: AX = error code (see #3458)
ECX = target address
Notes: memory must be allocated before loading
.XMF file format (eXtended Memory executable File format) is supported
by the HugeRealMode server for easier handling of XMS-code.
The utility CONFXMF converts .OBJ-files (.COM 'tiny' model) to
.XMF-format
SeeAlso: #3465
Format of .XMF program file header:
Offset Size Description (Table 3469)
00h DWORD signature "XMF_"
04h WORD length of programs code
06h WORD count of 32bit addresses to relocate
08h WORD offset to code start (releative to file start) (see #3470)
0Ah WORD relocation table
Note: each word contains a 16bit address, where a relocation has to be
performed
SeeAlso: #3468,#3470
Format of .XMF-file code header:
Offset Size Description (Table 3470)
00h WORD count of exported functions
02h N PWORDs 48bit pointers (16bit segment+32bit offset) to each function
(16bit segment is always zero)
var start of program's code
SeeAlso: #3468,#3469
(Table 3471)
Call HugeRealMode Server "Set Segment Limits" function with:
AL = 0Ah
BL = segment limits (see #3472)
Return: AX = error code (see #3458)
SeeAlso: #3464
Bitfields for HugeRealMode Server segment limits:
Bit(s) Description (Table 3472)
7 CS size: 1=4GB, 0=64KB
6-5 not used
4 SS size: 1=4GB, 0=64KB
3 GS size
2 FS size
1 ES size
0 DS size
SeeAlso: #3471
(Table 3473)
Call HugeRealMode Server "Transfer Memory From DOS To XMS" function with:
AL = 0Bh
ES:SI = source address
EDI = target address
ECX = length
Return: AX = error code
SeeAlso: #3474
(Table 3474)
Call HugeRealMode Server "Transfer Memory From XMS To DOS" function with:
AL = 0Ch
ESI = source address
ES:DI = target address
ECX = length
Return: AX = error code
SeeAlso: #3473
--------d-7801-------------------------------
INT 78 - TARGA.DEV - GET I/O PORT
AH = 01h
Return: DX = current interface board I/O port
SeeAlso: AH=00h,AH=03h"TARGA"
--------d-7802-------------------------------
INT 78 - TARGA.DEV - SET DMA CHANNEL
AH = 02h
AL = interface board DMA channel
Return: CF set on error
AL = error code (see #3457)
Note: if this routine is not called, the DMA channel is the driver's default
(usually 3)
SeeAlso: AH=00h,AH=03h"TARGA"
--------d-7803-------------------------------
INT 78 - TARGA.DEV - GET DMA CHANNEL
AH = 03h
Return: AL = current interface board DMA channel
SeeAlso: AH=01h,AH=02h
--------d-7804-------------------------------
INT 78 - TARGA.DEV - SET SCSI DEVICE NUMBER
AH = 04h
AL = SCSI device number
Return: CF set on error
AL = error code (see #3457)
Note: if this routine is not called, the device number used is the driver's
default (usually 0)
SeeAlso: AH=02h,AH=05h
--------d-7805-------------------------------
INT 78 - TARGA.DEV - GET SCSI DEVICE NUMBER
AH = 05h
Return: AL = current SCSI device number
SeeAlso: AH=03h"TARGA",AH=04h
--------d-7806-------------------------------
INT 78 - TARGA.DEV - SET/CLEAR EARLY RETURN MODE
AH = 06h
AL = new state
00h clear early return mode
01h set early return mode
Note: if early return mode is set then SCSI will return with no errors
when the last DMA transfer is started in a call with AH=13h or AH=14h
if this routine is not called, early return mode is cleared
SeeAlso: AH=13h,AH=14h,AH=15h
--------d-7808-------------------------------
INT 78 - TARGA.DEV - INTERFACE BOARD SELF-TEST
AH = 08h
Return: CF set on error
AL = error code (see #3457)
Note: the SCSI bus is also reset
SeeAlso: AH=09h
--------d-7809-------------------------------
INT 78 - TARGA.DEV - RESET SCSI BUS
AH = 09h
Return: AL = error code if carry set (see #3457)
SeeAlso: AH=08h
--------d-7810-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND
AH = 10h
DS:SI -> command bytes (see #3475)
Return: AH = SCSI status byte
CF clear if successful
AL = SCSI message byte
CF set on error
AL = error code (see #3457)
SeeAlso: AH=11h,INT 21/AX=4403h"ST-01"
Format of SCSI Command:
Offset Size Description (Table 3475)
00h BYTE length of command
01h ??? command bytes
--------d-7811-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (PROGRAMMED I/O)
AH = 11h
DS:SI -> command bytes (see #3476)
ES:BX -> data storage area
CX = number of data bytes to transfer
Return: AH = SCSI status byte
CF clear if successful
AL = SCSI message byte
CF set on error
AL = error code (see #3457)
Note: this command receives data internally one byte at a time
SeeAlso: AH=10h,AH=13h
Format of TARGA.DEV SCSI Command:
Offset Size Description (Table 3476)
00h BYTE length of command
01h ??? command bytes
--------d-7812-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (PROGRAMMED I/O)
AH = 12h
DS:SI -> command bytes (see #3477)
ES:BX -> data storage area
CX = number of data bytes to transfer
Return: AH = SCSI status byte
CF clear if successful
AL = SCSI message byte
CF set on error
AL = error code (see #3457)
Note: this command sends data internally one byte at a time
SeeAlso: AH=14h
Format of TARGA.DEV SCSI Command:
Offset Size Description (Table 3477)
00h BYTE length of command
01h ??? command bytes
--------d-7813-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND, RECEIVE DATA (DMA)
AH = 13h
DS:SI -> command bytes (see #3478)
ES:BX -> data storage area
DX:CX = number of data bytes to transfer
Return: AH = SCSI status byte (if early return mode is clear)
CF clear if successful
AL = SCSI message byte (if early return mode is clear)
CF set on error
AL = error code (see #3457)
Note: this command receives data using DMA
SeeAlso: AH=11h,AH=12h
Format of TARGA.DEV SCSI Command:
Offset Size Description (Table 3478)
00h BYTE length of command
01h ??? command bytes
--------d-7814-------------------------------
INT 78 - TARGA.DEV - SEND SCSI COMMAND AND DATA (DMA)
AH = 14h
DS:SI -> command bytes (see #3479)
ES:BX -> data storage area
DX:CX = number of data bytes to transfer
Return: AH = SCSI status byte (if early return mode is clear)
CF clear if successful
AL = SCSI message byte (if early return mode is clear)
CF set on error
AL = error code (see #3457)
Note: this command sends data using DMA
SeeAlso: AH=12h,AH=13h
Format of TARGA.DEV SCSI Command:
Offset Size Description (Table 3479)
00h BYTE length of command
01h ??? command bytes
--------d-7815-------------------------------
INT 78 - TARGA.DEV - FINISH DATA TRANSFER (DMA)
AH = 15h
Return: AH = SCSI status byte
CF clear if successful
AL = SCSI message byte
CF set on error
AL = error code (see #3457)
Note: if AH=06h was previously called to set the early return mode, this
function finishes a command AH=13h or AH=14h which returned before
the last DMA transfer was finished
SeeAlso: AH=06h,AH=13h,AH=14h
--------V-79---------------------------------
INT 79 - AVATAR.SYS - FAST GET KEYSTROKE
Return: CF set if no keystroke available
AX = FFFFh
CF clear if key pressed
AX = keystroke
Program: AVATAR.SYS is a CON driver by George Adam Stanislav which interprets
AVATAR command codes just as ANSI.SYS interprets ANSI commands
Note: if a keystroke is available, it is removed from the keyboard buffer
before being returned
SeeAlso: INT 29,INT 2F/AX=1A00h/BX=4156h
--------E-79---------------------------------
INT 79 - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ1
Notes: this vector is overwritten when GO32 starts but is not restored by
early versions of the 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 09,INT 78"GO32",INT 7A"GO32"
--------d-79---------------------------------
INT 79 U - ADP-60 IDE adapter - ???
SeeAlso: INT 78"ADP-60"
--------E-79---------------------------------
INT 79 - DBOS DOS Extender
details not available
Desc: this interrupt is used by an MS Windows virtual device driver with
which the DBOS extender communicates when run inside a Windows
Enhanced Mode DOS box
SeeAlso: INT 78"DBOS"
--------A-790001-----------------------------
INT 79 R - AutoCAD Device Interface - DIGITIZER - INITIALIZE
AX = 0001h
BX = interface level (0001h)
Return: AX = status (0000h initialization failed, 0001h init successful)
BX = digitizer type
0000h relative pointing device (mouse, etc.)
0001h digitizing tablet
CX = digitizer dataflow type
0000h continuous
0001h pauses between packets
SeeAlso: AX=0002h,AX=0003h,INT 7A/AX=0001h"AutoCAD"
--------A-790002-----------------------------
INT 79 R - AutoCAD Device Interface - DIGITIZER - TERMINATE
AX = 0002h
SeeAlso: AX=0001h,AX=0003h
--------A-790003-----------------------------
INT 79 R - AutoCAD Device Interface - DIGITIZER - GET DIGITIZER STATUS
AX = 0003h
Return: AX = status
0000h nothing
0002h tracking point (no button pressed)
BX = X coordinate
CX = Y coordinate
0003h picked point (button 0,A,B,C,D pressed)
BX = X coordinate
CX = Y coordinate
0004h button pick
BX = button number
0005h button and coordinates
BX = button number
CX = X coordinate
DX = Y coordinate
SeeAlso: AX=0001h,AX=0002h
--------N-7A---------------------------------
INT 7A U - Topware Network Operating System - ???
AL = ???
???
Return: ???
SeeAlso: INT 21/AX=FF00h"Topware",INT 2F/AX=FF00h
--------N-7A---------------------------------
INT 7A - X.PC Packet software interface
ES:BX -> parameter block
SeeAlso: INT 60/AX=01FFh
--------E-7A---------------------------------
INT 7A - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ2
Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
Notes: this vector is overwritten when GO32 starts but is not restored by
early versions of the 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 0A"IRQ2",INT 79"GO32",INT 7B"GO32"
--------P-7A---------------------------------
INT 7A O - PRINDIR - API (moved to INT 7C, then INT 2F/AX=7F00h)
SeeAlso: INT 7C"PRINDIR",INT 2F/AX=7F00h"PRINDIR"
--------N-7A---------------------------------
INT 7A - Novell NetWare - LOW-LEVEL API - Notes
Note: this interrupt is used for IPX/SPX access in NetWare versions through
2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
entry point even though INT 7A still exists. For both INT 7A and
the FAR entry point, BX contains the function number; IPX is
sometimes called internally with BX bit 15 set, which causes the
handler to bypass some initial checks and an optional call to the
IPX Windows support handler set with INT 2F/AX=7AFFh/BX=0000h
(see #2612)
SeeAlso: INT 2F/AX=7A00h,INT 64"Novell",INT 7A/BX=0000h
--------N-7A----BX0000-----------------------
INT 7A - Novell NetWare - IPX Driver - OPEN SOCKET
BX = 0000h
AL = socket longevity
00h open until close or terminate
FFh open until close
DX = socket number (high byte in DL)
0000h dynamic allocation
else socket to open (see #3480)
Return: AL = return code
00h success
DX = socket number
FEh socket table full
FFh socket already open
Notes: TSRs which need to use sockets should set AL to FFh, non-resident
programs should normally use AL=00h
IPX can be configured to support up to 150 open sockets on a
workstation, and defaults to 20
this function is supported by Advanced NetWare 1.02+
SeeAlso: INT 7A/BX=0001h,INT 7A/BX=0004h,INT 7A/BX=0023h
(Table 3480)
Values for IPX socket number:
0451h File Service (NetWare Core Protocol)
0452h Service Advertising Protocol (see #3488)
0453h Routing Information Packet (see #3491)
0455h NetBIOS Packet
0456h diagnostics
0457h server serial numbers (labeled "Copy Protection" by Lanalyzer)
2222h NetWare Core Protocol
4000h-7FFFh used for dynamic allocation
4444h Brightwork Development's SiteLock server
5555h Brightwork Development's SiteLock client (workstation)
8000h-FFFFh assigned by Novell
869Ch ID Software's DOOM
Note: SiteLock is an application metering product using IPX to communicate
between the application and the license server
--------N-7A----BX0001-----------------------
INT 7A - Novell NetWare - IPX Driver - CLOSE SOCKET
BX = 0001h
DX = socket number (high byte in DL) (see #3480)
Notes: also cancels events set by any Event Control Blocks for the socket
the program must close all open sockets before terminating
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0000h
--------N-7A----BX0002-----------------------
INT 7A - Novell NetWare - IPX Driver - GET LOCAL TARGET
BX = 0002h
ES:SI -> target internetwork address (see #3495 at INT 7A/BX=000Bh)
ES:DI -> 6-byte buffer for local target
Return: AL = return code
00h success
CX = expected one-way transfer time (clock ticks) for a 576-byte
packet
ES:DI -> local target
FAh unsuccessful (no path to destination)
Notes: the internetwork address consists of a 4-byte network address followed
by a 6-byte node address. The local target is only a 6-byte node
address. If the target is in the same network, the local target is
just the node address of target; otherwise, the local target is the
node address of the bridge that leads to the target.
this function may be called from inside IPX and AES Event Service
Routines, but not from other interrupt handlers
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0009h
--------N-7A----BX0003-----------------------
INT 7A - Novell NetWare - IPX Driver - SEND PACKET
BX = 0003h
ES:SI -> Event Control Block (see #3481,#3482)
Notes: returns immediately; IPX attempts to send the packet in the background
this function is supported by Advanced NetWare 1.02+
this function is nearly identical to BX=000Fh, except that it always
copies the source address into the IPX header assumed to be at the
beginning of the first fragment
SeeAlso: BX=0004h,BX=000Fh,INT 21/AH=EEh"Novell"
Format of IPX Event Control Block:
Offset Size Description (Table 3481)
00h DWORD Link
04h DWORD -> Event Service Routine (00000000h if none) (see #3485)
08h BYTE in use flag (see #3483)
09h BYTE completion code (see #3484)
0Ah WORD (big-endian) socket number (see #3480)
0Ch 4 BYTEs IPX workspace
10h 12 BYTEs driver workspace
1Ch 6 BYTEs immediate local node address
22h WORD fragment count
24h var fragment descriptors
Offset Size Description
00h DWORD -> fragment data
04h WORD size of fragment in bytes.
Notes: ESR is a far procedure that is called when the ECB has been handled.
On call, the in use flag is zero if the ECB has been handled,
non-zero otherwise. If the flag is zero, the completion code holds
the result of the event.
the first fragment should start with an IPX header (see #3486)
all fragments are concatenated and sent in one piece
node address FFh FFh FFh FFh FFh FFh broadcasts to all nodes
SeeAlso: #3482
Format of AES-ECB:
Offset Size Description (Table 3482)
00h DWORD Link
04h DWORD ESR (Event Service Routine) address (see #3485)
08h BYTE in use flag (see #3483)
09h 5 BYTEs AES workspace
SeeAlso: #3481
(Table 3483)
Values for ECB in use flag:
00h available
E0h AES temporary
F6h \ special IPX/SPX processing for v3.02+
F7h /
F8h IPX in critical section
F9h SPX listening
FAh processing
FBh holding
FCh AES waiting
FDh AES couting down delay time
FEh awaiting packet reception
FFh sending packet
SeeAlso: #3481,#3482,#3484
(Table 3484)
Values for ECB completion code:
00h success
ECh remote terminated connection without acknowledging packet
EDh abnormal connection termination
EEh invalid connection ID
EFh SPX connection table full
F9h event should not be cancelled
FAh cannot establish connection with specified destination
FCh cancelled
FDh malformed packet
FEh packet undeliverable
FFh physical error
SeeAlso: #3481,#3483
(Table 3485)
Values Event Service Routine is called with:
AL = caller's identity (00h = AES, FFh = IPX)
ES:SI -> event control block
interrupts disabled
Return: all registers preserved
SeeAlso: #3481,#3486
Format of IPX header:
Offset Size Description (Table 3486)
00h WORD (big-endian) checksum
02h WORD (big-endian) length in bytes of total packet
04h BYTE transport control
05h BYTE packet type (see #3487)
06h 10 BYTEs destination internetwork address
10h WORD (big-endian) destination socket
12h 10 BYTEs source internetwork address
1Ch WORD (big-endian) source socket
Notes: an IPX packet has the identical format as a Xerox Network Standard
(XNS) packet
the application must set packet type, destination address, and
destination socket; IPX/SPX set the remaining fields
SeeAlso: #3481,#3497
(Table 3487)
Values for IPX packet type:
00h unknown packet type
01h routing information packet
02h echo packet
03h error packet
04h packet exchange packet (always use this one for data)
05h SPX packet (see #3497)
11h NetWare Core Protocol (also used by Service Advertising Protocol)
14h Propagated Packet (for NetWare), NetBIOS name packet
15h-1Eh experimental protocols
Note: undocumented packet type 14h will cross up to 16 networks deep in
all directions; as Aaron Martin of Origin Systems discovered, the
first 64 bytes of the IPX data in such packets should be considered
reserved, as IPX places the traversed server nodes there.
Format of Service Advertising Protocol Service Query Packet:
Offset Size Description (Table 3488)
00h 30 BYTEs IPX header
1Eh WORD (big-endian) query type
0001h general find service
0003h find nearest server
20h WORD (big-endian) server type
(see #1578 at INT 21/AH=E3h"CONNECTION CONTROL")
SeeAlso: #3489
Format of Service Advertising Protocol Server Identification Packet:
Offset Size Description (Table 3489)
00h 30 BYTEs IPX header
1Eh WORD (big-endian) response type
0002h general service
0004h nearest service
20h 64N BYTEs server entries (1-7) (see #3490)
SeeAlso: #3488,#3491
Format of SAP server entry:
Offset Size Description (Table 3490)
00h WORD (big-endian) server type
(see #1578 at INT 21/AH=E3h"CONNECTION CONTROL")
02h 48 BYTEs ASCIZ server name
32h 2 WORDs (big-endian) network number
34h 3 WORDs (big-endian) node number
3Ch WORD (big-endian) socket number
3Eh WORD (big-endian) number of hops between caller and server
10h = Server Shutdown Advertising Packet
SeeAlso: #3489
Format of IPX Routing Information packet:
Offset Size Description (Table 3491)
00h 30 BYTEs IPX header
1Eh WORD operation (0001h request, 0002h response)
20h 8N BYTEs network entries (1-50) (see #3492)
SeeAlso: #3489
Format of RIP network entry:
Offset Size Description (Table 3492)
00h DWORD network number (FFFFFFFFh = general request)
04h WORD (response) number of hops
06h WORD (response) number of clock ticks to reach destination
--------N-7A----BX0004-----------------------
INT 7A - Novell NetWare - IPX Driver - LISTEN FOR PACKET
BX = 0004h
ES:SI -> Event Control Block (see BX=0003h)
Return: AL = status
00h successful
FFh no listening socket for packet
Desc: this function provides IPX with an ECB for receiving an IPX packet, but
does not wait for a packet to arrive
Notes: the application must open a socket and initialize the ECB's ESR
address, socket number, fragment count, and fragment descriptor
fields before invoking this function
there is no limit on the number of ECBs which may simultaneously be
listening on a socket
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0000h,BX=0003h
--------N-7A----BX0005-----------------------
INT 7A - Novell NetWare - IPX Driver - SCHEDULE IPX EVENT
BX = 0005h
AX = delay time in clock ticks
ES:SI -> Event Control Block (see BX=0003h)
Note: this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0006h,BX=0007h,BX=0008h
--------N-7A----BX0006-----------------------
INT 7A - Novell NetWare - IPX Driver - CANCEL EVENT
BX = 0006h
ES:SI -> Event Control Block (see BX=0003h)
Return: AL = return code (see #3493)
Notes: cannot cancel packets which the node's driver has already sent
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0005h
(Table 3493)
Values for IPX return code:
00h success
F9h event in use
FCh event cancelled
FFh unsuccessful, event not in use, or unrecognized ECB flag
--------N-7A----BX0007-----------------------
INT 7A - Novell NetWare - IPX Driver - SCHEDULE SPECIAL EVENT
BX = 0007h
AX = delay time
ES:SI -> Event Control Block (see BX=0003h)
Note: this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0006h
--------N-7A----BX0008-----------------------
INT 7A - Novell NetWare - IPX Driver - GET INTERVAL MARKER
BX = 0008h
Return: AX = interval marker in clock ticks (big-endian???)
Notes: may be used to measure the time elapsed between two events, up to one
hour
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0005h
--------N-7A----BX0009-----------------------
INT 7A - Novell NetWare - IPX Driver - GET INTERNETWORK ADDRESS
BX = 0009h
ES:SI -> buffer for own internetwork address (see #3494)
Return: ES:SI buffer filled
SI destroyed
Note: this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0002h,BX=000Bh
Format of IPX internetwork address:
Offset Size Description (Table 3494)
00h 4 BYTEs (big-endian) network number
04h 6 BYTEs (big-endian) node number within network
--------N-7A----BX000A-----------------------
INT 7A - Novell NetWare - IPX Driver - RELINQUISH CONTROL
BX = 000Ah
Desc: this call indicates that the application is idle and permits the IPX
driver to do some work
Note: this function is supported by Advanced NetWare 1.02+
SeeAlso: INT 15/AX=1000h,INT 21/AH=89h,INT 2F/AX=1680h
--------N-7A----BX000B-----------------------
INT 7A - Novell NetWare - IPX Driver - DISCONNECT FROM TARGET
BX = 000Bh
ES:SI -> internetwork address (see #3495)
Return: nothing
Notes: this function permits the network software on the remote machine to
remove any virtual connection with the calling machine
only use in point-to-point networks
should never be called from within an Event Service Routine
this function is supported by Advanced NetWare 1.02+
SeeAlso: BX=0002h,BX=0009h
Format of IPX internetwork address:
Offset Size Description (Table 3495)
00h 4 BYTEs (big-endian) destination network
04h 6 BYTEs (big-endian) destination node
0Ah 2 BYTEs (big-endian) destination socket
--------N-7A----BX000C-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - INITIALIZE NETWORK ADDRESS
BX = 000Ch
CX:DX = global network address (see INT 7A/BX=0002h)
ES:DI -> "OSINCRITICALSECTION" flag
DS:SI -> current mode for socket
Note: the address cannot be changed once it has been initialized
SeeAlso: INT 7A/BX=0024h
--------N-7A----BX000D-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - IPX GET PACKET SIZE
BX = 000Dh
Return: AX = maximum packet size
CX = retry count
SeeAlso: BX=001Ah
--------N-7A----BX000E-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - TERMINATE SOCKETS
BX = 000Eh
Return: nothing
Notes: this function terminates all sockets opened with the current mode; this
may be intended for future enhancements as the socket mode never
changes in v2.15
called by the NetWare shell if a program terminates
--------N-7A----BX000F-----------------------
INT 7A - Novell NetWare - IPX Driver - INTERNAL - SEND PACKET
BX = 000Fh
ES:SI -> Event Control Block (see BX=0003h)
Note: nearly identical to function 0003h, but does not copy address into
the first fragment, and bypasses normal error checking
SeeAlso: BX=0003h
--------N-7A----BX0010-----------------------
INT 7A - Novell NetWare - SPX Driver - INSTALLATION CHECK
BX = 0010h
AL = 00h
Return: AL = status
00h if SPX not installed
F0h if IPX not installed
FFh if SPX loaded
BH = SPX major version
BL = SPX minor version
CX = maximum SPX connections
DX = SPX connections available
Notes: this function is supported by Advanced NetWare 2.1+
this interrupt is used for IPX/SPX access in NetWare versions through
2.0a; in later versions, you should use INT 2F/AX=7A00h to get an
entry point even though INT 7A still exists. For both INT 7A and
the FAR entry point, BX contains the function number
IPX is sometimes called internally with BX bit 15 set, which causes the
entry point handler to bypass some checks and an optional call to
the IPX Windows support handler set with INT 2F/AX=7AFFh/BX=0000h
(see #2612)
SeeAlso: BX=0015h
--------N-7A----BX0011-----------------------
INT 7A - Novell NetWare - SPX Driver - ESTABLISH SPX CONNECTION
BX = 0011h
AL = retry count
AH = watchdog flag
ES:SI -> Event Control Block (see #3481 at BX=0003h)
Return: AL = status (00h,EFh,FDh,FFh) (see #3496)
DX = assigned connection ID number
Desc: attempt to establish a connection with a listening socket
Notes: there should always be at least two SPX ECB's listening to a socket, so
that NetWare can perform its internal packet exchanges
the first fragment should start with a SPX header (see #3497). Fill
in all destination addresses.
this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0000h,BX=0012h,BX=0013h,BX=0014h,BX=0015h
(Table 3496)
Values for SPX function status:
00h attempting to contact destination socket
EEh no such connection
EFh local connection table full
FDh buffer size not 42 or fragment count not 1
FFh sending socket not open
Format of SPX header:
Offset Size Description (Table 3497)
00h WORD (big-endian) checksum
02h WORD (big-endian) length in bytes of total packet
04h BYTE transport control
05h BYTE packet type (see #3487 at INT 7A/BX=0003h)
06h 10 BYTEs destination internet address
10h WORD (big-endian) destination socket
12h 10 BYTEs source internet address
1Ch WORD (big-endian) source socket
1Eh BYTE connection control (see #3498)
1Fh BYTE datastream type
FEh terminate connection request packet
FFh terminate connection acknowledgement packet
other user-defined, ignored by SPX
20h WORD (big-endian) source connection ID
22h WORD (big-endian) destination connection ID
24h WORD (big-endian) sequence number
26h WORD (big-endian) acknowledge number
28h WORD (big-endian) allocation number
SeeAlso: #3486
Bitfields for SPX connection control:
Bit(s) Description (Table 3498)
3-0 unused???
4 end of message
5 reserved
6 acknowledgement required
7 system packet
--------N-7A----BX0012-----------------------
INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX CONNECTION
BX = 0012h
AH = watchdog flag (00h disabled, 01h enabled)
AL = retry count (00h = default)
ES:SI -> Event Control Block (see #3481 at BX=0003h)
Return: nothing
Notes: there should always be at least two SPX ECB's listening to a socket, so
that NetWare can perform its internal packet exchanges
this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0011h,BX=0013h,BX=0014h
--------N-7A----BX0013-----------------------
INT 7A - Novell NetWare - SPX Driver - TERMINATE SPX CONNECTION
BX = 0013h
DX = connection ID to terminate
ES:SI -> Event Control Block (see #3481 at BX=0003h)
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0011h,BX=0012h,BX=0014h
--------N-7A----BX0014-----------------------
INT 7A - Novell NetWare - SPX Driver - ABORT SPX CONNECTION
BX = 0014h
DX = connection ID to terminate
Return: nothing
Notes: this function is supported by Advanced NetWare 2.1+
this function does not tell the other side that the connection has been
terminated
also aborts any outstanding Establish Connection, Terminate Connection,
and Send Sequenced Packet commands
SeeAlso: BX=0011h,BX=0013h
--------N-7A----BX0015-----------------------
INT 7A - Novell NetWare - SPX Driver - GET SPX CONNECTION STATUS
BX = 0015h
DX = connection ID
ES:SI -> status buffer (see #3499)
Return: AL = return code (00h,EEh) (see also #3496)
00h connection still valid
ES:SI -> status buffer filled
Note: this function is supported by Advanced NetWare 2.1+
SeeAlso: BX=0010h,BX=0011h
Format of SPX status buffer:
Offset Size Description (Table 3499)
00h BYTE connection state
01h waiting to establish connection
02h starting (attempting to create connection)
03h connection established
04h terminating
01h BYTE watchdog flag
bit 0: used internally by SPX
bit 1: SPX watchdog is monitoring connection
bits 2-7 used internally by SPX
02h WORD (big-endian) source connection ID
04h WORD (big-endian) destination connection ID
06h WORD (big-endian) sequence number of next packet sent
08h WORD (big-endian) acknowledge number, expected sequence number of
next received packet
0Ah WORD (big-endian) maximum sequence number remote SPX may send
without ACK from local SPX
0Ch WORD (big-endian) remote acknowledge number, next sequence number
remote SPX expects to receive
0Eh WORD (big-endian) remote allocation number, maximum sequence number
local SPX may send
10h WORD (big-endian) connection socket
12h 6 BYTEs immediate node address--bridge on local network to destination
18h 10 BYTEs destination internetwork address (see #3495 at INT 7A/BX=000Bh)
22h WORD (big-endian) retransmit count
24h WORD (big-endian) estimated roundtrip delay
26h WORD (big-endian) retransmitted packets
28h WORD (big-endian) suppressed packets
2Ah 12 BYTEs ??? (v2.15)
--------N-7A----BX0016-----------------------
INT 7A - Novell NetWare - SPX Driver - SEND SPX PACKET
BX = 0016h
DX = connection ID
ES:SI -> Event Control Block (see BX=0003h)
Notes: this function is supported by Advanced NetWare 2.1+
CX may need to be 0001h ???
SeeAlso: BX=0011h,BX=0017h
--------N-7A----BX0017-----------------------
INT 7A - Novell NetWare - SPX Driver - LISTEN FOR SPX PACKET
BX = 0017h
DX = connection ID (unused in v2.15)
ES:SI -> Event Control Block (see BX=0003h)
Notes: this function is supported by Advanced NetWare 2.1+
CX may need to be 0001h ???
SeeAlso: BX=0011h,BX=0016h
--------N-7A----BX0018-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - ADD DIAGNOSTIC ELEMENT
BX = 0018h
ES:SI -> diagnostic element (see #3500) to be added to Diagnostic Queue
Note: this function is supported on file servers only under v2.15; v3.02 also
supports it on workstations
SeeAlso: BX=0019h
Format of IPX diagnostic element:
Offset Size Description (Table 3500)
00h DWORD pointer to next diagnostic element
04h DWORD pointer to function for ???
08h DWORD pointer to function for ???
--------N-7A----BX0019-----------------------
INT 7A U - Novell NetWare - IPX Driver - internal - CANCEL DIAGNOSTIC ELEMENT
BX = 0019h
ES:SI -> diagnostic element (see BX=0018h) to be removed
Note: this function is supported on file servers only under v2.15; v3.02 also
supports it on workstations
SeeAlso: BX=0018h
--------N-7A----BX001A-----------------------
INT 7A - Novell NetWare - IPX Driver - GET DRIVER MAXIMUM PACKET SIZE
BX = 001Ah
Return: AX = maximum packet size with preamble (at least 576 bytes)
CX = IPX retry count
DS,FLAGS preserved
SeeAlso: BX=000Dh
--------N-7A----BX001B-----------------------
INT 7A U - Novell NetWare - IPX Driver - INTERNAL
BX = 001Bh
???
Return: ???
Notes: this function is supported on file servers only under v2.15; v3.02 also
supports it on workstations
used by NetWare Access Server, which may call INT 15/AX=1117h with
BX=0000h in some cases (it uses a modified DESQview)
--------N-7A----BX001C-----------------------
INT 7A U - Novell NetWare - NetWare Access Server - GET ???
BX = 001Ch
Return: AX = length of ???
ES:BX -> ???
Notes: these functions are NOPs for standard IPX drivers such as IPXODI v2.12
SeeAlso: INT 2F/AX=7AF1h,INT 7A/BX=001Dh,INT 7A/BX=001Eh
--------N-7A----BX001D-----------------------
INT 7A U - Novell NetWare - NetWare Access Server - GET ??? ECB AND SOCKET
BX = 001Dh
Return: DX = socket number chosen by IPX
ES:SI -> ECB in IPX's code segment (will be listening)
BX corrupted
Notes: these functions are NOPs for standard IPX drivers such as IPXODI v2.12
SeeAlso: INT 2F/AX=7AF1h,INT 7A/BX=001Ch,INT 7A/BX=001Eh
--------N-7A----BX001E-----------------------
INT 7A U - Novell NetWare - NetWare Access Server - GET ??? ECB
BX = 001Eh
Return: ES:SI -> ECB
BX corrupted
Notes: these functions are NOPs for standard IPX drivers such as IPXODI v2.12
SeeAlso: INT 2F/AX=7AF1h,INT 7A/BX=001Ch,INT 7A/BX=001Dh
--------N-7A----BX001F-----------------------
INT 7A - Novell NetWare - IPXODI v2.12+ - GET IPX INFORMATION
BX = 001Fh
DX = 0000h
Return: AX = ???
BX:CX -> ??? entry point (see #3501) (undocumented)
DX = feature flags
bit 0: IPXODI rather than dedicated IPX
bit 1: checksumming functions 0020h-0022h supported
ES:SI -> array of words containing used socket number (undocumented);
0000h ends array
all other registers except DS and FLAGS may be destroyed
Note: IPXODI v2.12 is distributed as part of the Personal NetWare system
bundled with Novell DOS 7
SeeAlso: BX=0020h,INT 2F/AX=7A2Fh
(Table 3501)
Call IPXODI entry point with:
ES:SI -> ECB??? (offset 24h is far pointer to ??? data)
--------N-7A----BX0020-----------------------
INT 7A - Novell NetWare - IPXODI v2.12+ - SEND WITH CHECKSUM
BX = 0020h
ES:SI -> ECB (see #3481 at INT 7A/BX=0003h)
Return: DS,FLAGS preserved
BX,BP corrupted (documented as potentially destroying all other regs)
Desc: generate a checksum for the packet data and store it in the IPX
checksum field before transmitting the packet
SeeAlso: BX=001Fh,BX=0021h,BX=0022h,INT 2F/AX=7A2Fh
--------N-7A----BX0021-----------------------
INT 7A - Novell NetWare - IPXODI v2.12+ - IPX GENERATE CHECKSUM
BX = 0021h
ES:SI -> ECB data (see #3481 at INT 7A/BX=0003h)
Return: ES,DS,SI preserved
BX,BP corrupted, all other registers potentially destroyed
Notes: the checksum and TransportControl fields of the IPX packet are updated
this function enables interrupts and is fully reentrant
SeeAlso: BX=001Fh,BX=0020h,BX=0022h,INT 2F/AX=7A2Fh
--------N-7A----BX0022-----------------------
INT 7A - Novell NetWare - IPXODI v2.12+ - IPX VERIFY CHECKSUM
BX = 0022h
ES:SI -> ECB data (see #3481 at INT 7A/BX=0003h)
Return: AX = status (0000h checksum matches)
DS,ES,SI preserved
BX,BP corrupted, all other registers potentially destroyed
Note: this function enables interrupts and is fully reentrant
SeeAlso: BX=001Fh,BX=0020h,BX=0021h,INT 2F/AX=7A2Fh
--------N-7A----BX0023-----------------------
INT 7A - Novell NetWare - IPXODI v2.12+ - OPEN LOOK-AHEAD SOCKET
BX = 0023h
DX = socket number (0000h for dynamic allocation)
ES:SI -> Look Ahead handler (see #3502)
BP = desired lookahead size (0000h-0080h)
Return: AL = status
00h successful
DX = assigned socket number (big-endian)
FEh maximum number of sockets already open
FFh specific socket already opened by another application
DS,FLAGS preserved
all other registers may be destroyed
Notes: the socket will always be long-lived, and must thus be explicitly
closed with INT 7A/BX=0001h before the Look Ahead handler code is
removed from memory (i.e. the program terminates)
this function is only supported if INT 2F/AX=7A00h returns ES:BX
pointing at an IPX version greater than 3.30
the desired lookahead size is the smallest-size packet (including IPX
header) that should be passed to the lookahead handler when it
arrives
SeeAlso: INT 7A/BX=0000h,INT 7A/BX=0001h
(Table 3502)
Call IPX Look-Ahead handler with:
AX = packet's destination socket
DS:SI -> look-ahead structure (see #2694 at INT 2F/AX=C000h"LSL")
DF clear
interrupt disabled (must remain disabled)
Return: AX = packet use
0000h application want packet
ES:SI -> ODI ECB (see #2695 at INT 2F/AX=C000h"LSL")
8001h application does not want packet
ZF set if AX=0000h
DS,DI,BP,SS,SP preserved
interrupts disabled
--------N-7A----BX0024-----------------------
INT 7A U - Novell NetWare - IPXODI v2.20+ - SET INTERNETWORK ADDRESS
BX = 0024h
ES:SI -> buffer containing internetwork address (see #3495)
Return: BX,CX,SI,DI,ES destroyed
Note: this function differs from INT 7A/BX=000Ch in that it unconditionally
sets the address
SeeAlso: INT 7A/BX=000Ch
--------A-7A0001-----------------------------
INT 7A R - AutoCAD Device Interface - DISPLAY - INITIALIZE (INIT1)
AX = 0001h
BX = configuration
CX = interface level (0001h)
Return: AX = status
0000h initialization failed
0001h pre-v4.0 driver initialized successfully
0003h post-v3.1 driver initialized successfully (driver truncates
excessivly long packets)
BX = width of graphics area in pixels, or 0000h if using packet
communication
DX:CX -> packet-mode entry point (see #3503)
SeeAlso: AX=0001h,AX=0200h,AX=07D0h,INT 61/AX=0007h"OPTIMA",INT 78"AutoCAD"
SeeAlso: INT 79/AX=0001h,INT 7B/AX=8001h"AutoCAD",INT 7C"AutoShade"
(Table 3503)
Call packet-mode entry point with:
STACK: DWORD pointer to request packet (see #3504)
WORD length of packet
Format of request packet:
Offset Size Description (Table 3504)
00h WORD function number (00h-45h for Compaq VGADI41.EXE)
--------A-7A0200BX0000-----------------------
INT 7A R - AutoCAD Device Interface - RENDERING DEVICE - INITIALIZE (RDLINKUP)
AX = 0200h
BX = 0000h
CX = interface level (0001h)
Return: BX = 0000h (driver uses packet communication)
DX:CX -> packet-mode entry point (see #3503)
SeeAlso: AX=0001h"AutoCAD",INT 79/AX=0001h,INT 7B/AX=8001h"AutoCAD"
--------I-7A04-------------------------------
INT 7A - IBM 3270 Workstation Program API - CREATE A QUEUE
AH = 04h
???
Return: ???
SeeAlso: AH=06h
--------I-7A06-------------------------------
INT 7A - IBM 3270 Workstation Program API - DELETE A QUEUE
AH = 06h
???
Return: ???
SeeAlso: AH=04h
----------7A07D0-----------------------------
INT 7A R - AutoCAD Device Interface - Compaq VGADI41.EXE - GET ENTRY POINT
AX = 07D0h
Return: AX = ??? (0003h)
BX = 0000h
DX:CX -> ADI entry point (see AX=0001h)
SeeAlso: AX=0001h
--------I-7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - SESSION SERVICES
AH = 09h
BX = 8020h (synchronous request)
CX = 0000h
DX = ID of session manager (SESSMGR)
AL = service (see #3505)
ES:DI -> control block
Return: ???
(Table 3505)
Values for service:
01h get session ID
02h get session info
04h dettach from session
05h attach to session
06h get list of windows available
07h get environment of window
08h get 'PIF' (program information file) info
0Ah get base window ID
0Bh get cursor info
--------I-7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - KEYBOARD SERVICES
AH = 09h
BX = 8020h (synchronous request)
CX = 0000h
DX = ID of keyboard manager
AL = service number (see #3506)
ES:DI -> control block
Return: ???
(Table 3506)
Values for 3270 Workstation Program keyboard service:
01h connect to keyboard
02h disconnect from keyboard
03h read from keyboard
04h send keystroke to session
05h disable input
06h enable input
07h update status code
--------I-7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - WINDOW SERVICES
AH = 09h
BX = 8020h (synchronous request)
CX = 00FFh
DX = ID of window service controller (WSCTRL)
AL = service number (see #3507)
ES:DI -> control block
Return: ???
(Table 3507)
Values for 3270 Workstation Program window service:
01h connect to WS control
02h disconnect from WS control
03h add a window
04h change window's position on screen
05h change window's size
06h change window's color
07h change window's position in the presentation space
08h hide/unhide toggle
09h enlarge/reduce toggle
0Ah change screen background color
0Bh get window's position on screen
0Ch get window's size
0Dh get window's color
0Eh get window's position in the presentation space
0Fh determine whether hidden
10h determine whether enlarged
11h get background color
12h get window names
13h delete all windows from profile
14h pick active window
15h redraw screen
16h redraw window
17h delete a window from profile
18h get active window
19h get active screen
1Ah get window data
1Bh change window data
1Ch select active screen
--------I-7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - PRESENTATION SPACE SERVICES
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of PCPSM
AL = service
01h define presentation space
02h delete presentation space
03h display presentation space
04h position cursor in presentation space
05h change default presentation space
ES:DI -> control block
Return: ???
--------I-7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - 3270 EMULATION
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of 3270EML
AL = service
01h connect
02h disconnect
ES:DI -> control block
Return: ???
--------I-7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - OPERATOR INFORMATION AREA
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of OIAM
AL = service
01h read Operator Information Area
02h read OIA subset
ES:DI -> control block
Return: ???
Note: the OIA is the 25th line on the Host session
--------I-7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - TRANSLATE DATA
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of XLATE
AL = service
01h translate from host characters to ASCII and vice versa
(determined by control block byte 11)
ES:DI -> control block
Return: ???
--------I-7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - COPY SERVICE
AH = 09h
BX = 8020h
CX = 00FFh
DX = ID of copy service
AL = service
01h copy string from one presentation space to another
02h copy block from one presentation space to another
03h connect to PC session for copy
04h disconnect PC session from copy
ES:DI -> control block
Return: ???
--------I-7A09--BX8020-----------------------
INT 7A - IBM 3270 Workstation Program API - Multi-DOS
AH = 09h
BX = 8020h
CX = 00FFh
ES:DI -> control block
DX = ID of INDJQRY
get environment size
= ID of INDJASY
request DOS functions from workstation
= ID of MEMORY
AL = function
01h allocate memory
02h deallocate memory
03h modify allocated size
Return: ???
--------I-7A09-------------------------------
INT 7A - IBM 3270 Workstation Program API - HOST SERVICES
AH = 09h
BX = request type (4000h async, 8028h synchronous)
CX = 0000h
DX = ID of MFIC
AL = service (see #3508)
ES:DI -> control block
(Table 3508)
Values for 3270 Workstation Program host service:
01h connect to host
02h disconnect from host
03h read DFT structured data from host
04h write DFT structured data to host
05h create a host buffer
--------I-7A13-------------------------------
INT 7A - IBM 3270 Workstation Program API - GET DATA FROM A QUEUE
AH = 13h
???
Return: ???
----------7A7A-------------------------------
INT 7A - Canon IX-30F Image Scanner SI3.SYS - INTERFACE
AH = 7Ah
???
Return: AX = status
0000h success
000Eh undefined function code
Range: unknown, selected by device driver commandline arguments
--------I-7A81-------------------------------
INT 7A - IBM 3270 Workstation Program API - RESOLVE A GATE NAME
AH = 81h
ES:DI -> 8-char blank-padded gate name (see #3509)
Return: DX = gate ID
(Table 3509)
Values for 3270 Workstation Program gate name:
"SESSMGR "
"KEYBOARD"
"WSCTRL "
"MFIC "
"PCPSM "
"3270EML "
"COPY "
"XLATE "
"OIAM "
"MEMORY "
"INDJQRY "
"INDJASY "
--------I-7A83-------------------------------
INT 7A - IBM 3270 Workstation Program API - GET COMPLETION RESULTS
AH = 83h
???
Return: ???
--------I-7AFDCB-----------------------------
INT 7A - IBM Personal Communications/3270 - INSTALLATION CHECK
AX = FDCBh
Return: DX:AX -> PCS/3270 signature block if loaded (see #3510)
Format of Personal Communications/3270 signature block:
Offset Size Description (Table 3510)
04h WORD PCS/3270 signature (5741h)
06h WORD version (0501h = PCS/3270 v1.0)
--------I-7AFE01-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
AX = FE01h
???
Return: ???
SeeAlso: AX=FE02h
--------I-7AFE02-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL SEND/RECEIVE FUNCTION
AX = FE02h
???
Return: ???
SeeAlso: AX=FE01h
--------I-7AFF01-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
AX = FF01h
ES:DI -> API function handler routine
Return: CX = 1200h
SeeAlso: AX=FF02h,AX=FF03h
--------I-7AFF02-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API TERMINATION
AX = FF02h
Return: CX = 1200h
SeeAlso: AX=FF01h
--------I-7AFF03-----------------------------
INT 7A - IBM PC3270 EMUL PROG v3 - INTERNAL API INITIALIZATION
AX = FF03h
ES:DI -> send/receive function handler routine
Return: CX = 1200h
SeeAlso: AX=FF01h
--------I-7AFF04-----------------------------
INT 7A U - IBM PC3270 EMUL PROG v3 - INTERNAL ???
AX = FF04h
ES:DI -> ???
Return: CX = 1200h
--------f-7B---------------------------------
INT 7B - Btrieve API (single user)
DS:DX -> 38-byte parameter record (see #3511)
Return: return code field set
Note: Btrieve sets low byte of vector to 33h; this serves as the installation
check
SeeAlso: INT 2F/AX=AB01h,INT 7F/AX=0200h
Format of Btrieve parameter record:
Offset Size Description (Table 3511)
00h DWORD pointer to data buffer
04h WORD data buffer length
06h DWORD pointer to 90-byte record containing positioning info
(should be same for all calls for same file)
0Ah DWORD pointer to 38-byte FCB info buffer
(should be same for all calls for same file)
0Eh WORD function code (see #3512)
10h DWORD pointer to file name/key buffer
14h BYTE key length
15h BYTE key number
16h DWORD pointer to status code (see #3513)
1Ah WORD interface code (version specific)
6176h version 5.10
(Table 3512)
Values for function code:
00h open
01h close
02h insert
03h update
04h delete
05h get_equal
06h get_next
07h get_prev
08h get_greater
09h get_gr_eql
0Ah get_less
0Bh get_less_eq
0Ch get_first
0Dh get_last
0Eh create
0Fh stat
10h extend
11h set_dir: set directory information
12h get_dir: get directory information
13h begin_trans
14h end_trans
15h abort_trans
16h get_pos: get record position number
17h get_direct: get data by sending record position
18h step_next
19h stop
1Ah version
1Bh unlock
1Ch reset
1Dh set owner
1Eh clear owner
1Fh create supplemental index
20h drop supplemental index
21h step first
22h step last
23h step previous
24h get next extended: get multiple records using a filter
25h get previous extended: get multiple records using a filter
26h step next extended: get multiple records using a filter
27h step previous extended: get multiple records using a filter
28h insert extended: insert one or more records
31h ???
Notes: add 50 (32h) to any "get" operation to just return the key data
add 100 (64h) for a single-record wait lock (automatically released
on next get)
add 200 (C8h) for a single-record nowait lock (nowait lock returns
error 54h or 55h if record already locked)
add 300 (12Ch) for a multiple-record wait lock (not released until
unlock called)
add 400 (190h) for a multiple-record nowait lock (nowait lock returns
error 54h or 55h if record already locked)
(Table 3513)
Values for Btrieve status code:
00h successful
01h invalid operation
02h I/O error
03h file not open
04h key value not found
05h duplicate key value
06h invalid key number
07h different key number
08h invalid positioning
09h end of file
0Ah modifiable key value error
0Bh invalid file name
0Ch file not found
0Dh extended file error
0Eh pre-image open error
0Fh pre-image I/O error
10h expansion error
11h close error
12h disk full
13h unrecoverable error
14h record manager inactive
15h key buffer too short
16h data buffer length overrun
17h position block length
18h page size error
19h create I/O error
1Ah number of keys
1Bh invalid key position
1Ch invalid record length
1Dh invalid key length
1Eh not a Btrieve file
1Fh file already extended
20h extended I/O error
22h invalid extension name
23h directory error
24h transaction error
25h transaction is active
26h transaction control file I/O error
27h end/abort transaction error
28h transaction max files
29h operation not allowed
2Ah incomplete accelerated access
2Bh invalid record address
2Ch null key path
2Dh inconsistent key flags
2Eh access to file denied
2Fh maximum open files
30h invalid alternate sequence definition
31h key type error
32h owner already set
33h invalid owner
34h error writing cache
35h invalid interface
36h variable page error
37h autoincrement error
38h incomplete index
39h expanded memory error
3Ah compression buffer too short
3Bh file already exists
3Ch reject count reached
3Dh work space too small
3Eh incorrect descriptor
3Fh invalid extended insert
40h filter limit reached
41h incorrect field offset
4Ah automatic transaction abort
4Dh Btrieve engine busy or resource locked by another user
4Eh deadlock detected
50h conflict
51h lock error
52h lost position
53h read outside transaction
54h record in use
55h file in use
56h file table full
57h handle table full
58h incompatible open mode
5Ah redirected device table full
5Bh server error
5Ch transaction table full
5Dh incompatible lock type
5Eh permission error
5Fh session no longer valid
60h communications environment error
61h data message too small
62h internal transaction error
--------I-7B---------------------------------
INT 7B - Eicon Access API (3270/5250 gateways)
SeeAlso: INT 5C"NetBIOS"
--------E-7B---------------------------------
INT 7B - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ3
Notes: this vector is overwritten when GO32 starts but is not restored by
early versions of the 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 0B,INT 10/AH=FFh"GO32",INT 7A"GO32",INT 7C"GO32"
--------A-7B---------------------------------
INT 7B CR - AutoCAD Device Interface - PRINTER/PLOTTER - SEND PLOTTING DATA
AX = data length (0000h-7FFFh)
CX:BX -> data to be plotted
DX = vertical position of line on page
Return: nothing
Notes: This interrupt is called by AutoCAD to perform its output
A data length of 0000h indicates that a blank line is to be output
SeeAlso: AX=8001h,AX=8002h,INT 78"AutoCAD",INT 7A/AX=0001h"AutoCAD"
--------e-7B---------------------------------
INT 7B U - MCI Express v2.11+ - DRIVER.EXE - ???
Program: MCI Express is a front end to MCI Mail; DRIVER.EXE is its
communication driver
----------7B---------------------------------
INT 7B - Novell XQL - XQL PRIMITIVES MANAGER API
DS:DX -> parameter block (see #3515)
Return: parameter block updated
(Table 3514)
Values for Novell XQL function number:
00h log in
01h log out
02h "tNewFcn"
03h "tFreeFcn"
04h "tMoveFldFcn"
05h "tFieldFcn"
06h "tDescribeFcn"
07h "tFetchFcn"
08h "tComputeFcn"
09h "tOrderFcn"
0Ah "tRestrictFcn"
0Bh "tJoinFcn"
0Ch "tInsertFcn"
0Dh "tUpdateFcn"
0Eh "tUpdallFcn"
0Fh "tRemoveFcn"
10h "tRemallFcn"
11h "tResetFcn"
12h "tTransFcn"
13h "tStatFcn"
14h "tDDCreFcn"
15h "tStoreFcn"
16h "tRecallFcn"
17h "tStopFcn"
18h "tDDFileFcn"
19h "tDDFieldFcn"
1Ah "tDDIndexFcn"
1Bh "tDDModFcn"
1Ch "tDDViewFcn"
1Dh "tDDDrpFcn"
1Eh "tDDPathFcn"
1Fh "tDDAttrFcn"
20h "tDDFcn"
21h "tSecurFcn"
22h "tUserFcn"
23h "tAccessFcn"
24h "tPswdFcn"
25h "tCharFcn"
26h "tVersionFcn"
27h "tCnvFcn"
28h "tValFcn"
29h "tMaskFcn"
SeeAlso: #3515
Format of XQL parameter block:
Offset Size Description (Table 3515)
00h 4 BYTEs signature "XQLP"
04h WORD function number (see #3514)
06h WORD handle
08h WORD status
0Ah WORD session ID
0Ch var data record (varies by function)
---function 00h---
0Ch DWORD -> user name
10h DWORD -> password
14h DWORD -> dictionary
18h DWORD -> filepath
1Ch DWORD -> machine name
20h WORD process ID
---function 01h---
no additional fields???
---function 02h---
0Ch DWORD -> filename
10h DWORD -> owner name
14h WORD open mode
---function 03h---
no additional fields???
---function 04h---
0Ch WORD "frompos"
0Eh WORD "topos"
---function 05h---
0Ch WORD subfunction
0Eh WORD position
10h WORD count
12h DWORD -> field list
---function 06h---
0Ch WORD subfunction
0Eh WORD length of description
10h WORD position
12h WORD count
14h DWORD pointer to description list
---function 07h---
0Ch WORD data length
0Eh WORD "op"
10h DWORD "select"
14h DWORD "reject"
18h DWORD pointer to data buffer
---function 08h---
0Ch DWORD -> field name
10h WORD field type
12h WORD field size
14h WORD "flddec"
16h WORD "explen"
18h DWORD pointer to "expbuf"
---function 09h---
0Ch WORD count
0Eh DWORD -> field list
---function 0Ah---
0Ch WORD "newexp"
0Eh WORD "explen"
10h DWORD -> "expbuf"
---function 0Bh---
0Ch DWORD -> filename
10h DWORD -> owner name
14h WORD type of join
16h WORD "pCount"
18h DWORD -> "pNames"
1Ch WORD "sCount"
1Eh DWORD -> "sNames"
---functions 0Ch, 0Dh, 0Fh---
0Ch WORD file count
0Eh DWORD -> file list
12h DWORD count
16h DWORD -> buffer
---function 0Eh---
0Ch WORD file count
0Eh DWORD -> file list
12h WORD "op"
14h DWORD "select"
18h DWORD "reject"
1Ch WORD count
1Eh DWORD -> "res"
22h DWORD -> "comp"
---function 10h---
0Ch WORD file count
0Eh DWORD -> file list
12h WORD "op"
14h DWORD "select"
18h DWORD "reject"
---function 11h---
0Ch DWORD machine name
---function 12h---
0Ch WORD option
---function 13h---
0Ch WORD subfunction
0Eh WORD length of buffer
10h DWORD -> buffer
---function 14h---
0Ch WORD subfunction
0Eh DWORD -> filename
12h WORD "create"
14h DWORD -> pathname
18h DWORD -> owner name
1Ch WORD owner access restrictions
1Eh WORD number of fields
20h DWORD -> field list
24h WORD number of keys
28h DWORD -> key list
2Ch WORD "buflen"
2Eh DWORD -> create parameters
---function 15h---
0Ch DWORD -> "StoreName"
10h WORD length of buffer
12h DWORD -> buffer
---function 16h---
0Ch DWORD -> "RecallName"
10h WORD owner number
12h DWORD -> owner list
16h WORD open mode
18h WORD length of buffer
1Ah DWORD -> buffer
---function 17h---
no additional fields???
---function 18h---
0Ch WORD "rtype"
0Eh WORD count
10h DWORD -> "filebuf"
14h WORD length of following buffer
16h DWORD -> output buffer
---functions 19h, 1Ah---
0Ch WORD "rtype"
0Eh WORD count
10h DWORD -> field buffer
14h WORD length of following buffer
16h DWORD -> output buffer
---function 1Bh---
0Ch WORD subfunction
0Eh DWORD -> filename
12h WORD "create"
14h DWORD -> pathname
18h DWORD -> owner name
1Ch WORD owner access restrictions
1Eh WORD field count
20h DWORD -> field list
24h WORD number of keys
26h DWORD -> list of keys
---function 1Ch---
0Ch WORD count
0Eh DWORD -> view name
12h WORD length of following buffer
14h DWORD -> output buffer
---function 1Dh---
0Ch DWORD -> filename
10h WORD file type
12h WORD "deletepath"
---function 1Eh---
0Ch WORD "dirtype"
0Eh DWORD -> pathname
---function 1Fh---
0Ch WORD function
0Eh DWORD -> field name
12h WORD attribute
14h WORD size of buffer
16h DWORD -> buffer for attributes
---function 20h---
0Ch DWORD -> directory path
10h WORD function
---function 21h---
0Ch DWORD -> master password
10h WORD "securityflag"
---function 22h---
0Ch DWORD -> master password
10h WORD function (add/modify/remove)
12h DWORD -> user name
16h DWORD -> password
1Ah WORD global rights
1Ch WORD count
1Eh WORD length of following buffer
20h DWORD -> "userbuf"
---function 23h---
0Ch DWORD -> master password
10h DWORD -> user name
14h WORD function (allow/deny/getrights)
16h WORD rights
18h DWORD -> filename
1Ch WORD number of field names in following buffer
1Eh DWORD -> field names
22h WORD maximum buffer length
24h DWORD -> output buffer
---function 24h---
0Ch DWORD -> user name
10h DWORD -> password
---function 25h---
0Ch WORD "charFcn"
0Eh WORD "charType"
10h WORD "charValue"
---function 26h---
0Ch DWORD -> buffer
---function 27h---
0Ch WORD option
0Eh WORD type
10h WORD size
12h WORD "dec"
14h WORD "dsize"
16h DWORD -> value
1Ah DWORD -> "retval"
1Eh DWORD -> mask
22h WORD "justify"
---function 28h---
0Ch DWORD -> field name
10h WORD length of buffer
12h DWORD -> buffer for data
---function 29h---
0Ch WORD option
0Eh WORD type
10h WORD size
12h WORD "dec"
14h WORD length of mask
16h DWORD -> mask
--------A-7B8001-----------------------------
INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - BEGIN PLOT
AX = 8001h
BX = file level
0000h binary file
0001h CAD/camera image file
0002h installed ADI driver
CX = horizontal size in pixels
DX = vertical size in pixels
Return: AX = status (0000h initialization failed, 0001h init successful)
BX = allowed output format
0000h monochrome
0001h color (4 bits per pixel)
SeeAlso: AX=8002h,AX=8003h,INT 7B"AutoCAD",INT 7C"AutoShade"
--------A-7B8002-----------------------------
INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - END PLOT
AX = 8002h
SeeAlso: AX=8001h,AX=8003h
--------A-7B8003-----------------------------
INT 7B R - AutoCAD Device Interface - PRINTER/PLOTTER - ABORT PLOT
AX = 8003h
SeeAlso: AX=8001h,AX=8002h
--------r-7C---------------------------------
INT 7C U - IBM REXX88PC command language
???
--------E-7C---------------------------------
INT 7C - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ4
Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
Notes: this vector is overwritten when GO32 starts but is not restored by
early versions of the 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 0C,INT 7B"GO32",INT 7D"GO32"
--------P-7C---------------------------------
INT 7C - PRINDIR v8.02-8.xx - API
AH = function
00h set output to Invisible mode
01h set output to LPT1
02h set output to LPT2
03h set output to LPT3
04h set output to COM1
05h set output to COM2
06h set output to COM3
07h set output to COM4
08h set output to screen
09h set output to file
0Ah change file path
ES:DI -> new path
CX = length of path (max 41, but not range-checked)
0Bh change file name
ES:DI -> new filename
CX = length of new name (max 41, but not range-checked)
0Ch set redirected device
(01h = LPT1 ... 03h = LPT3, 04h = COM1 ... 07h = COM4)
0Dh force buffer dump
0Eh set display color
AL = new color attribute (see #0013 at INT 10/AH=08h)
0Fh set popup hotkey
AL = hotkey scancode
10h toggle byte display
AL = new state (00h off, 01h on)
11h change buffer flush delay
AL = timer ticks before flush
Return: AX = status
0000h successful
0001h invalid function or nothing in buffer to be dumped
(documented as "nonzero = error")
Program: PRINDIR is a shareware printer-redirection program by J.M. Allen
Creations
Notes: the installation check consists of testing for the ASCIZ signature
"PRINDIR N.NN" (where N.NN is the version number) two bytes beyond
the start of the interrupt handler
prior versions of PRINDIR used INT 7A instead of INT 7C
SeeAlso: INT 7A"PRINDIR",INT 2F/AX=7F00h"PRINDIR"
Index: hotkeys;PRINDIR
--------A-7C---------------------------------
INT 7C - AutoShade v2 - RENDERING HARDCOPY DRIVER
Note: this is the default interrupt vector for rendering hardcopy drivers
instead of INT 7A used by AutoCAD drivers
SeeAlso: INT 7A/AX=0001h"AutoCAD"
--------N-7C---------------------------------
INT 7C - SK-UPPS/SK-PASSPORT Data Link Interface (DLI) API
Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
which provides an API on top of it Data Link Interface, allowing the
use of any of several network transport layers; this product is
called SK-PASSPORT in the USA.
Notes: The installation check consists of testing for the ASCII signature
string "UPPS_DLI" immediately preceding the interrupt handler.
To find the service interrupt being used by the driver, an application
should scan through the interrupt table until it finds an interrupt
vector with the "UPPS_DLI" string.
There may be more than one DLI loaded, each having its own service
interrupt.
SeeAlso: AX=0000h,AX=0002h,AX=000Fh
Index: installation check;SK-UPPS
--------N-7C0000-----------------------------
INT 7C - SK-UPPS Data Link Interface API - GET DRIVER VERSION
AX = 0000h
Return: AH = major DLI version
AL = minor DLI version
DX = OEM signature (see #3516)
CL = DLI 2.8+ topology: 1=Ethernet, 2=FDDI, 3=Token-Ring
SeeAlso: AX=0002h,AX=000Bh,AX=000Dh,AX=000Eh
(Table 3516)
Values for SK-UPPS Data Link Interface OEM signature (defined by SK):
0001h experimental
3343h ('3C') 3COM
4942h ('IB') IBM
4943h ('IC') Intellicom
494Eh ('IN') Intel
4B4Fh ('KO') Kodiak
4D41h ('MA') Madge
4E45h ('NE') Novell
4F43h ('OC') Olicom
5349h ('SI') Siemens
534Bh ('SK') Schneider & Koch (SysKonnect)
5744h ('WD') Western Digital
--------N-7C0001-----------------------------
INT 7C - SK-UPPS Data Link Interface API - DOWN DRIVER
AX = 0001h
Return: AX = completion code (see #3517)
Note: the DLI will refuse to unload if there are any protocols
(see AX=0007h) or clients (see AX=0010h) active.
Index: uninstall;SK-UPPS Data Link Interface
(Table 3517)
Values for SK-UPPS completion code:
0000h SUCCESS
0005h INVALID_MULTICAST
0006h BUFFER_TOO_SMALL
0007h NO_BUFFERS_LEFT
0008h NO_RESOURCES_LEFT
000Bh ILLEGAL_PROTOCOL_ID
000Ch PROTOCOL_IN_USE
000Dh NO_MULTICAST_ADDRESS
000Fh PROTOCOLS_ACTIVE
0010h CLIENTS_ACTIVE
001Bh INVALID_MODE
001Ch MODE_NOT_SUPPORTED
FFFFh UNKNOWN_SERVICE
--------N-7C0002-----------------------------
INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATUS
AX = 0002h
ES:DI -> Status Information Block (SIB) (see #3529)
Return: AX = completion code (see #3517)
Note: GET DRIVER INFO (AX=000Eh) should be used instead.
SeeAlso: AX=0000h,AX=000Bh,AX=000Dh,AX=000Eh
--------N-7C0003-----------------------------
INT 7C - SK-UPPS Data Link Interface API - CHANGE DRIVER ADDRESS
AX = 0003h
ES:DI -> new node address (6 bytes)
Return: AX = completion code (see #3517)
Note: the DLI will refuse to change the address if any protocols
(see AX=0007h) are active
SeeAlso: AX=0001h,AX=000Eh
--------N-7C0004-----------------------------
INT 7C - SK-UPPS Data Link Interface API - REQUEST BUFFER
AX = 0004h
DX = protocol ID (see AX=0007h,#3520)
Return: AX = completion code (see also #3517)
0000h successful
ES:BX -> Memory Buffer (Mbuf) (see #3518)
Note: if the DLI has no free Mbufs, it will set an internal flag for the
protocol and later call the protocol's Event Upcall with
EV_BUFFER_AVAILABLE (see #3524,#3525) as soon as an Mbuf becomes
available. There will only be one "buffer available" Upcall, even
if this function has been called several times before.
SeeAlso: AX=0005h,AX=0006h,AX=0012h,AX=0013h
Format of SK-UPPS Memory Buffer (Mbuf):
Offset Size Description (Table 3518)
00h DWORD -> NEXT Mbuf (linked list)
04h WORD OFFSET of actual data within DATA area
06h 2 BYTEs reserved (currently unused)
08h WORD LENGTH of actual data found in DATA area starting at OFFSET
0Ah 2 BYTEs reserved (currently unused)
0Ch DWORD -> DATA area (size can be obtained via AX=000Eh call)
10h WORD PROTOCOL ID of protocol currently "owning" the Mbuf
12h BYTE IN USE flag; nonzero if Mbuf still in use by DLI (see AX=0006h)
13h BYTE RECEIVE STATUS (bit 0-7 only; see AX=0007h - Receive Upcall)
--------N-7C0005-----------------------------
INT 7C - SK-UPPS Data Link Interface API - RELEASE BUFFER
AX = 0005h
ES:BX -> Mbuf (see #3518)
Return: nothing
SeeAlso: AX=0004h
--------N-7C0006-----------------------------
INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME
AX = 0006h
ES:BX -> Mbuf (see #3518)
Return: nothing
Notes: The DLI will send LENGTH bytes found in the Mbuf's DATA area starting
at OFFSET. A complete and valid frame must be stored there. The DLI
will only copy the current node address (see AX=0003h) to the
source node field of the frame's MAC header.
On Ethernet, the DLI will always send a minimum of 60 bytes, regardless
of the value found in the LENGTH field.
This function returns immediately; the DLI will call the protocol's
Transmit Upcall (see #3519) when the frame has been sent.
The Mbuf's IN USE field will be non-zero until the DLI calls the
Transmit Upcall.
SeeAlso: AX=0002h,AX=0004h,AX=0013h
(Table 3519)
Values SK-UPPS Transmit Upcall is called with:
ES:BX -> Mbuf (NEXT field destroyed)
interrupts disabled
Note: On FDDI the bytes of the source and destination node fields in the MAC
header have been bit-swapped to physical address format.
--------N-7C0007-----------------------------
INT 7C - SK-UPPS Data Link Interface API - REGISTER PROTOCOL
AX = 0007h
ES:BX -> Protocol Control Block (see #3520)
Return: AX = completion code (see #3517)
Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
which provides an API on top of its Data Link Interface, allowing the
use of any of several network transport layers
SeeAlso: AX=0008h,AX=000Bh
Format of SK-UPPS Protocol Control Block (PCB):
Offset Size Description (Table 3520)
00h WORD (big-endian) protocol type
02h WORD protocol mode (see #3521)
04h DWORD -> Receive Upcall routine (see #3522)
08h DWORD -> Transmit Upcall routine
0Ch DWORD -> Event Upcall routine (see #3524)
10h DWORD -> ASCIZ protocol name (zero if none)
14h WORD protocol ID will be returned here (always non-zero)
Bitfields for SK-UPPS protocol mode:
Bit(s) Description (Table 3521)
0 promiscuous mode; protocol receives all frames regardless of their
destination (PROTOCOL TYPE must be FFFFh)
1 if set, protocol's Event Upcall will be called on entry and exit of the
DLI's Interrupt Service Routine (see #3525)
2 DLI 2.2+ hook mode; protocol receives all directed frames destined for
this station (PROTOCOL TYPE must be FFFFh)
3 DLI 2.3+ receive error frames (only valid in promiscuous mode (0))
4-5 DLI 2.5+ frame type:
00 Ethernet II; specify type code in PROTOCOL TYPE field (high-low)
01 IEEE 802.2; specify Service Access Point (SAP) in MSB
(offset 0) of PROCOTOL TYPE field; LSB must be zero
10 IEEE 802.2 with SNAP header; specify type code in PROTOCOL TYPE
field (high-low)
11 reserved (currently unused)
6 DLI 2.5+ if set, protocol's Event Upcall will be called with event code
EV_BUFFER_WANTED, when DLI runs out of Mbufs
7 DLI 2.7+ chain mode; if set, client allows the specified frame type to
be shared with other clients
8 DLI 2.8+ receive non-LLC frames rather than LLC frames
9 DLI 2.8+ receive all multicast frames (see also AX=0009h)
10-15 reserved (currently unused; must be zero)
Notes: If PROTOCOL TYPE is FFFFh and neither the "promiscuous" nor the "hook"
mode is set, the protocol receives all frames that did not match
any registered frame type (demultiplexor mode).
Protocols using "promiscuous", "hook" or "chain" mode should always
return from the Receive Upcall with the received Mbuf in ES:BX and
the Carry Flag set. The DLI will then pass the Mbuf to the FEED BACK
BUFFER function (see AX=000Fh).
Some DLIs do not support all or even any of the "promiscuous",
"receive non-LLC" and "receive all multicasts" mode bits.
SeeAlso: #3520
(Table 3522)
Values SK-UPPS Receive Upcall is called with:
ES:BX -> Mbuf
AX = receive status (see #3523) (also stored in Mbuf's RECEIVE STATUS field)
interrupts disabled
Return: nothing
SeeAlso: #3524
Bitfields for SK-UPPS receive status:
Bit(s) Description (Table 3523)
0-2 reserved (0), currently unused
3 frame check sequence (FCS) error
4 overflow (frame too long)
5 framing error
6 reserved (0), currently unused
7 non-LLC frame (see #3521 [bit 8])
8-15 reserved (0), currently unused
Notes: The protocol's Receive Upcall routine will be called whenever a frame
matching the specified frame type is received. A received frame is
passed to the protocol in the Mbuf's DATA area at OFFSET and its size
is LENGTH bytes.
The receive status passed to the Receive Upcall in register AL is
always zero, except for protocols using "non-LLC" mode (8 of PCB's
protocol mode field) or "promiscuous" mode together with "receive
error frames" (0 & 3).
Upcalls are FAR routines and must return with a RET FAR. If the Carry
Flag is set on return from a Receive or Transmit Upcall, then ES:BX
must point to an Mbuf, which the DLI will then pass to the RELEASE
BUFFER function (see AX=0005h). See also notes for PROTOCOL MODE.
(Table 3524)
Values SK-UPPS Event Upcall is called with:
AX = event code (see #3525)
Return: nothing
Note: All Event Upcalls may be ignored by the protocol.
SeeAlso: #3522
(Table 3525)
Values for SK-UPPS Event Upcall event code:
00h EV_BUFFER_AVAILABLE client may now call REQUEST BUFFER (AX=0004h)
01h EV_ISR_START start of Interrupt Service Routine
02h EV_ISR_END end of ISR (see #3521 [bit 1])
03h EV_BUFFER_WANTED DLI temporarily out of Mbufs
04h EV_NETWORK_STATUS DLI 2.8+ network status -- DX=status (see #3526)
05h EV_IO_CONTROL DLI 2.8+ I/O control -- DX=subfunc (see AX=0016h)
SeeAlso: #3524
Bitfields for EV_NETWORK_STATUS in register DX:
Bit(s) Description (Table 3526)
Token-Ring FDDI
15 SIGNAL_LOSS SIGNAL_LOSS
14 HARD_ERROR HARD_ERROR
13 SOFT_ERROR SOFT_ERROR
12 TRANSMIT_BEACON TRANSMIT_BEACON
11 LOBE_WIRE_FAULT PATH_TEST_FAILED
10 AUTO_REMOVAL SELF_TEST_REQUIRED
9 reserved reserved
8 REMOVE_RECEIVED REMOTE_DISCONNECT
7 COUNTER_OVERFLOW reserved
6 SINGLE_STATION DUPLICATE_ADDRESS
5 RING_RECOVERY NO_RING_OP_STATUS
4 reserved VERSION_MISMATCH
3 reserved STUCK_BYPASS
2 reserved FDDI_EVENT
1 reserved RING_OP_CHANGE
0 reserved reserved
Note: EV_NETWORK_STATUS is not supported on Ethernet
--------N-7C0008-----------------------------
INT 7C - SK-UPPS Data Link Interface API - DISABLE PROTOCOL
AX = 0008h
BX = protocol ID (see #3520)
Return: AX = completion code (see #3517)
Note: the DLI will handle any Mbufs given to TRANSMIT FRAME (AX=0006h) as if
they had been given to TRANSMIT FRAME RELEASE (AX=0013h).
all multicast addresses registered for this protocol will be disabled.
after this function returns, the protocol's Upcall routines will no
longer be called.
SeeAlso: AX=0007h,AX=000Bh
--------N-7C0009-----------------------------
INT 7C - SK-UPPS Data Link Interface API - REGISTER MULTICAST
AX = 0009h
BX = protocol ID (see #3520)
ES:DI -> multicast address (6 bytes)
Return: AX = completion code (see #3517)
Notes: The broadcast address is always enabled.
Set bit 9 of PCB's protocol mode field in REGISTER PROTOCOL call
(AX=0007h) to receive all multicast frames.
SeeAlso: AX=000Ah,AX=0014h
--------N-7C000A-----------------------------
INT 7C - SK-UPPS Data Link Interface API - DISABLE MULTICAST
AX = 000Ah
BX = protocol ID (see #3520)
ES:DI -> multicast address (6 bytes)
Return: AX = completion code (see #3517)
SeeAlso: AX=0009h,AX=0014h
--------N-7C000B-----------------------------
INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL LIST
AX = 000Bh
ES:DI -> protocol ID buffer
CX = number of 2-byte protocol IDs that may be stored in buffer
Return: AX = completion code (see #3517)
CX = number of active protocols (regardless of value returned in AX)
protocol ID buffer filled with active protocol IDs
Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
which provides an API on top of its Data Link Interface, allowing the
use of any of several network transport layers
Note: If the buffer supplied is too small, CX still contains the total number
of active protocols and the buffer has been filled until full.
SeeAlso: AX=000Ch,AX=0014h
--------N-7C000C-----------------------------
INT 7C - SK-UPPS Data Link Interface API - GET PROTOCOL STATUS
AX = 000Ch
BX = protocol ID (see #3520,AX=000Bh)
ES:DI -> Protocol Status Block (see #3527)
Return: AX = completion code (see #3517)
SeeAlso: AX=000Bh,AX=0014h
Format of SK-UPPS Protocol Status Block (PSB):
Offset Size Description (Table 3527)
00h DWORD -> ASCIZ protocol name
04h WORD protocol mode (see #3521)
06h WORD protocol type (see AX=0007h)
08h WORD number of registered multicasts (see AX=0009h,AX=0014h)
--------N-7C000D-----------------------------
INT 7C - SK-UPPS Data Link Interface API - GET DRIVER STATISTICS
AX = 000Dh
BX = flag: 0=don't clear statistics, 1=clear statistics
ES:DI -> Statistics Data Block (see #3528)
Return: AX = completion code (see #3517)
SeeAlso: AX=0002h,AX=0015h
Format of SK-UPPS Statistics Data Block (SDB):
Offset Size Description (Table 3528)
00h DWORD node uptime in ticks (1/18.21 sec.)
04h DWORD bytes received
08h DWORD bytes transmitted
0Ch DWORD frames received
10h DWORD frames transmitted
14h DWORD multicast bytes received
18h DWORD multicast frames received
1Ch DWORD unrecognized frames
20h WORD missed frames
22h WORD frame check sequence (FCS) errors
24h WORD framing errors
26h WORD babbling errors
28h WORD late collision errors
2Ah WORD loss of carrier errors
2Ch WORD 16 retries failed errors
2Eh WORD overflow errors
Note: fields 26h through 2Ch are always zero, except in some very old
versions of the DLI. Use GET MEDIA STATISTICS (AX=0015h) to get
more detailed information.
--------N-7C000E-----------------------------
INT 7C - SK-UPPS Data Link Interface API - DLI 2.5+ - GET DRIVER INFO
AX = 000Eh
ES:DI -> Driver Information Block (see #3529)
BX = offset of 1st field within DIB to be returned
CX = number of bytes to be returned
Return: AX = completion code (see #3517)
CX = number of bytes copied (regardless of value returned in AX)
Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
which provides an API on top of its Data Link Interface, allowing the
use of any of several network transport layers
SeeAlso: AX=0000h,AX=0002h,AX=000Bh,AX=000Dh,AX=0015h
Format of SK-UPPS Driver Information Block (DIB):
Offset Size Description (Table 3529)
00h 6 BYTEs physical node address (from adapter's ROM)
06h 6 BYTEs current node address (see AX=0003h)
0Ch BYTE adapter id (defined by OEM)
0Dh BYTE IRQ line (FFh if none)
0Eh DWORD -> shared memory (zero if none)
12h DWORD size of shared memory (zero if none)
16h WORD base I/O port (zero if none)
18h BYTE DMA line (FFh if none)
19h BYTE DLI 2.4+ topology (see AX=0000h)
1Ah WORD size of an Mbuf's DATA area (see #3518)
1Ch 2 BYTEs reserved (currently unused)
1Eh WORD total number of Mbufs the DLI has
20h WORD maximum number of Mbufs that can be allocated via REQUEST
BUFFER (AX=0004h) and SYNC REQUEST BUFFER (AX=0012h)
---- end of Status Information Block returned by GET DRIVER STATUS (AX=0002h)
22h DWORD -> ASCIZ adapter name
26h WORD number of I/O ports used (zero if none)
28h DWORD line speed in bits/sec.
--------N-7C000F-----------------------------
INT 7C - SK-UPPS Data Link Interface API - FEED BACK BUFFER
AX = 000Fh
ES:BX -> Mbuf (see #3518)
Return: nothing
Notes: A protocol may call this function instead of returning the Mbuf
directly from the Receive Upcall if it is running in "promiscuous",
"hook" or "chain" mode.
SeeAlso: AX=0007h
--------N-7C0010-----------------------------
INT 7C - SK-UPPS Data Link Interface API - CLIENT HOOK
AX = 0010h
Return: nothing
Notes: An application having no active protocols may call this function to
prevent the DLI from unloading.
SeeAlso: AX=0001h,AX=0011h
--------N-7C0011-----------------------------
INT 7C - SK-UPPS Data Link Interface API - CLIENT UNHOOK
AX = 0011h
Return: nothing
Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
which provides an API on top of its Data Link Interface, allowing the
use of any of several network transport layers
SeeAlso: AX=0010h
--------N-7C0012-----------------------------
INT 7C - SK-UPPS Data Link Interface API - SYNC REQUEST BUFFER
AX = 0012h
DX = protocol ID (see #3520)
Return: AX = completion code (see #3517)
if AX=0000h: ES:BX -> Mbuf (see #3518)
Note: If the protocol wants to be informed when an Mbuf becomes available,
REQUEST BUFFER (AX=0004h) should be used instead.
SeeAlso: AX=0004h,AX=0005h,AX=0006h,AX=0013h
--------N-7C0013-----------------------------
INT 7C - SK-UPPS Data Link Interface API - TRANSMIT FRAME RELEASE
AX = 0013h
ES:BX -> Mbuf (see #3518)
Return: nothing
Notes: Returns immediately; The protocol's Transmit Upcall will NOT be called.
The Mbuf may no more be used by the protocol in any way (i.e. the
Mbuf's IN USE field may not be polled).
SeeAlso: AX=0004h,AX=0013h
--------N-7C0014-----------------------------
INT 7C - SK-UPPS Data Link Interface API - GET MULTICAST LIST
AX = 0014h
BX = protocol ID (see #3520,AX=000Bh)
ES:DI -> multicast address buffer
CX = number of 6-byte multicast addresses that may be stored in buffer
Return: AX = completion code (see #3517)
CX = number of registered multicast addresses for this protocol
(regardless of value returned in AX)
multicast address buffer filled with multicast addresses registered for
this protocol
Note: If the buffer supplied is too small, CX still contains the total number
of registered multicast addresses for this protocol and the buffer
has been completely filled
SeeAlso: AX=000Bh,AX=0009h,AX=000Ch
--------N-7C0015-----------------------------
INT 7C - SK-UPPS Data Link Interface API - DLI 2.6+ - GET MEDIA STATISTICS
AX = 0015h
ES:DI -> media-specific statistics buffer (see #3530,#3531,#3532)
BX = offset of 1st field within MSS to be returned
CX = number of bytes to be returned
Return: AX = completion code (see #3517)
CX = number of bytes copied (regardless of value returned in AX)
Note: not supported by all DLIs (will return AX=FFFFh if not supported).
SeeAlso: AX=0000h,AX=000Dh
Format of SK-UPPS media-specific statistics for Ethernet:
Offset Size Description (Table 3530)
00h DWORD alignment errors
04h DWORD frame check sequence (FCS) errors
08h DWORD single collision frames
0Ch DWORD multiple collision frames
10h DWORD signal quality error (SQE) test errors
14h DWORD deferred transmissions
18h DWORD late collisions
1Ch DWORD excessive collisions
20h DWORD internal MAC transmit errors
24h DWORD carrier sense errors
28h DWORD excessive deferrals
2Ch DWORD frame too longs
30h DWORD in range length errors
34h DWORD out of range length fields
38h DWORD internal MAC receive errors
Format of SK-UPPS media-specific statistics for FDDI:
Offset Size Description (Table 3531)
00h DWORD SMT operating version id (refer to ANSI 7.1.2.2)
04h DWORD SMT CF state: 1=Isolated, 2= Wrap_S, 3=Wrap_A, 4=Wrap_B,
5=Wrap_AB, 6=Thru (refer to ANSI SMT 9.7.4.3)
08h DWORD SMT frames sent
0Ch DWORD SMT frames received
10h DWORD SMT ring up count
14h 6 BYTEs MAC upstream neighbour
1Ah 6 BYTEs MAC downstream neighbour
20h DWORD MAC frame counter (refer to ANSI MAC 2.2.1)
24h DWORD MAC error counter ( " )
28h DWORD MAC lost counter ( " )
2Ch BYTE port 1 link error estimate (ranges from 10**-4 to 10**-15 and
is reported as the absolute value of the exponent)
2Dh BYTE port 2 link error estimate ( " )
2Eh 2 BYTEs reserved (currently unused)
30h DWORD attachment class: 1=single-attachment (S PORT),
2=dual-attachment (A/B PORT pairs), 3=concentrator (M PORTs)
34h DWORD attachment optical bypass present: 1=true, 2=false
Format of SK-UPPS media-specific statistics for Token-Ring:
Offset Size Description (Table 3532)
00h 6 BYTEs upstream neighbour
06h WORD local ring number
08h DWORD ring up count
0Ch DWORD signal loss errors
10h DWORD lobe wire faults
14h DWORD ring recovery count
18h DWORD line errors
1Ch DWORD burst errors
20h DWORD ARI/FCI errors
24h DWORD lost frame errors
28h DWORD receive congestion errors
2Ch DWORD frame copied errors
30h DWORD token errors
34h DWORD DMA bus errors
38h DWORD DMA parity errors
3Ch DWORD receive overflow errors
--------N-7C0016-----------------------------
INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - DRIVER I/O CONTROL
AX = 0016h
DX = subfunction; bits 14-15 specify direction of I/O:
00 no data at all (ES:BX undefined)
01 driver -> application (GET)
10 application -> driver (SET)
11 both directions (GET/SET)
ES:BX -> I/O buffer (optional)
CX = size of buffer (if ES:BX valid)
Return: AX = completion code; defined by OEM
Program: SK-UPPS is the Schneider & Koch Universal Portable Protocol Stack,
which provides an API on top of its Data Link Interface, allowing the
use of any of several network transport layers
Notes: not supported by all DLIs (will return AX=FFFFh if not supported)
subfunction codes are defined by OEMs
SeeAlso: AX=0001h
--------N-7C0017-----------------------------
INT 7C - SK-UPPS Data Link Interface API - DLI 2.8+ - INTERRUPT REQUEST
AX = 0017h
Return: AX = completion code (see #3517)
Notes: not supported by all DLIs (will return AX=FFFFh, if not supported).
must be called with interrupts disabled; when the client re-enables
interrupts, an interrupt will be generated and reported to the client
through an Event Upcall (see #3524 [EV_ISR_START/EV_ISR_END])
SeeAlso: AX=0007h
--------t-7D---------------------------------
INT 7D O - [obsoleted proposal] - ALTERNATE MULTIPLEX INTERRUPT
Note: this interface has been moved to INT 2D; there are no known
implementations on INT 7D
SeeAlso: INT 2D"AMIS",INT 2F"NOTES"
--------S-7D---------------------------------
INT 7D U - YTERM 1.4 - CLOCK SUPPORT
SeeAlso: INT 7E"YTERM"
--------E-7D---------------------------------
INT 7D - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ5
Notes: this vector is overwritten when GO32 starts but is not restored by
early versions of the 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 0D"IRQ5",INT 7C"GO32",INT 7E"GO32"
--------U-7D---------------------------------
INT 7D - HyperPAD v2.2 - API ACCESS
Note: this vector is hooked but immediately passed on (without checking
whether the previous handler was 0000h:0000h). The sole purpose of
this vector is to provide the address of the data area described
below (see #3533).
Format of HyperPAD data area:
Offset Size Description (Table 3533)
-16h DWORD pointer to ??? FAR function
-12h DWORD pointer to callback setting function
[C calling conventions, (*callback)(int (_loadds far *)()) ]
-0Eh 6 BYTEs signature "BRC001"
-08h DWORD pointer to previous INT 7D handler
-04h DWORD pointer to ??? data
00h HyperPAD INT 7D handler
----------7D---------------------------------
INT 7D - IBM DOS 6.1 E.EXE - ???
Note: E.EXE checks whether this interrupt is in use (not 0000h:0000h),
and if it is used, attempts to load E55VGA.EX instead of the
default E.EX overlay. However, E55VGA.EX is not included in
IBM DOS 6.1.
--------G-7D00-------------------------------
INT 7D - SCSILink - RESET SCSI BUS
AH = 00h
Program: SCSILink is a TSR by Cross Products Ltd which allows its PC-hosted
cross assemblers and similar products to communicate with Cross
Products hardware debuggers
Desc: reset all devices on the SCSI bus
Note: the installation check is the signature "SCSILINK" immediately prior
to the interrupt handler
Index: installation check;SCSILink
--------G-7D01-------------------------------
INT 7D - SCSILink - CONNECT TO TARGET
AH = 01h
AL = target ID
Return: CF clear if successful
CF set on error
AL = initiator error
AH = target error
Desc: arbitrate the use of the bus and select the specified target device
--------G-7D02-------------------------------
INT 7D - SCSILink - SEND COMMAND
AH = 02h
ES:BX -> parameter block (see #3534)
Return: CF clear if successful
CF set on error
AL = initiator error
AH = target error
Desc: send the specified command block to the target device and perform any
related I/O
Format of SCSILink parameter block:
Offset Size Description (Table 3534)
00h DWORD size of command block
04h DWORD address of command block (see #3535)
08h DWORD size of buffer
0Ch DWORD address of buffer
Format of SCSILink command block:
Offset Size Description (Table 3535)
00h info not yet available
--------G-7D03-------------------------------
INT 7D - SCSILink - SET TIMEOUT
AH = 03h
AL = timeout selector (see #3536)
BX = new value in 55ms ticks
Desc: change an internal timeout value to allow communication with very
slow targets
(Table 3536)
Values for SCSILink timeout selector:
00h time to wait for bus (default 18)
01h time to wait for new phase (default 5)
02h maximum time to send/receive block (default 18)
03h time to wait for reselect (default 180)
--------G-7D04-------------------------------
INT 7D - SCSILink - GET ERROR STRING
AH = 04h
AL = error number
Return: ES:BX -> ASCIZ error string for error number
--------G-7D05-------------------------------
INT 7D - SCSILink - GET ADDRESS
AH = 05h
Return: AL = DMA channel
AH = initiator ID
BX = card address
Desc: determine the current hardware configuration
--------G-7D06-------------------------------
INT 7D - SCSILink - PUT DATA
AH = 06h
CX = number of bytes to store (0001h-0100h)
ES:BX -> data to be saved
Return: CF clear if successful
CF set on error
AL = error code (01h = too much data)
Note: the specified data is stored in SCSILink's PSP
SeeAlso: AH=07h
--------G-7D07-------------------------------
INT 7D - SCSILink - GET DATA
AH = 07h
CX = number of bytes to retrieve (0001h-0100h)
ES:BX -> buffer for data
Return: CF clear if successful
CF set on error
AL = error code (01h = too much data)
Note: retrieve data previously stored with AH=06h
SeeAlso: AH=06h
--------G-7D08-------------------------------
INT 7D - SCSILink - TERMINATE SESSION
AH = 08h
Desc: indicate to any other programs that intercept INT 7D that the program
has finished with the link
Note: the program should call this function even if a SCSI error caused its
termination
--------G-7D09-------------------------------
INT 7D - SCSILink - POLL REQUEST
AH = 09h
AL = target ID
Return: AL = status
FEh resident driver experienced SCSI error
FFh resident driver handleded event
Desc: give any drivers chained onto INT 7D a chance to handle an exception
not specifically handled by the calling program
Notes: this service exists so that resident disk servers, etc. can continue
running even while debuggers and profilers are active
the resident driver assumes that a connection has been established and
attempts to leave the target connected
--------!---Section--------------------------
Interrupt List, part 16 of 16
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------*-7E---------------------------------
INT 7E - RESERVED FOR DIP, Ltd. ROM LIBRARY
--------S-7E---------------------------------
INT 7E U - YTERM 1.4 - ???
SeeAlso: INT 7D"YTERM",INT 7F"YTERM"
--------E-7E---------------------------------
INT 7E - DJGPP GO32.EXE DOS EXTENDER - RELOCATED IRQ6
Program: GO32.EXE is a DOS extender included as part of the 80386 port of the
GNU C/C++ compiler by DJ Delorie and distributed as DJGPP
Notes: this vector is overwritten when GO32 starts but is not restored by
early versions of the 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 0E"IRQ6",INT 7D"GO32",INT 7F"GO32"
--------s-7E00-------------------------------
INT 7E - MaxSBOS v0.21 - GET ???
AH = 00h
Return: DX:AX -> ???
SeeAlso: AH=01h,AH=02h,AH=03h
--------s-7E0001-----------------------------
INT 7E - IWSBSDRV v1.41 - SEND MIDI BYTE
AX = 0001h
DX = game device handle
BL = MIDI byte to send???
???
Return: EAX = status
00000000h if successful
FFFFFFFFh on error (function disabled)
Program: IWSBSDRV is the resident portion of the InterWave SBOS sound card
emulator for the Gravis UltraSound Plug-and-Play
Note: this function is only supported if the MIDISIMPLE device has been
opened via the InterWave Game API (see INT 2F/AX=CD21h)
SeeAlso: AX=0002h,INT 2F/AX=CD21h,#2746
--------s-7E0002-----------------------------
INT 7E - IWSBSDRV v1.41 - SEND MIDI STRING
AX = 0002h
DX = game device handle
ES:EDI -> buffer containing MIDI string to be sent
ECX = length of buffer in bytes
Return: EAX = status
00000000h if successful
FFFFFFFFh on error (function disabled)
Note: this function is only supported if the MIDISIMPLE device has been
opened via the InterWave Game API (see INT 2F/AX=CD21h)
SeeAlso: AX=0001h,INT 2F/AX=CD21h,#2746
--------s-7E00F6-----------------------------
INT 7E - SBOS v3.82 - SET ???
AX = 00F6h
BL = ??? (max. 20h, value will be set to 20h if BL greater)
Return: AX=00F9h,AX=00FEh
--------s-7E00F7-----------------------------
INT 7E - SBOS v3.82 - GET ???
AX = 00F7h
Return: AX = status
0000h failed
0001h successful
BX = ??? (if nonzero, ??? is hooked) (see AX=00FFh)
CH = ???
CL = ???
SeeAlso: AX=00F6h,AX=00FDh,AX=00FFh
--------s-7E00F9-----------------------------
INT 7E - SBOS v3.82 - SET ???
AX = 00F9h
BX = ???
SeeAlso: AX=00F6h,AX=00FBh,AX=00FDh
--------s-7E00FB-----------------------------
INT 7E - SBOS v3.82 - SET ???
AX = 00FBh
BL = ???
SeeAlso: AX=00F6h,AX=00FDh,AX=00FFh
--------s-7E00FD-----------------------------
INT 7E - SBOS v3.82 - SET ???
AX = 00FDh
BL = ??? (max. 20h, value will be set to 20h if BL greater)
SeeAlso: AX=00F9h,AX=00FEh
--------s-7E00FE-----------------------------
INT 7E - SBOS v3.82 - UNINSTALL
AX = 00FEh
Return: AX = status
0000h successful
00FCh unable to unhook INT 21
00FDh unable to unhook INT 09
00FEh unable to release memory
Program: SBOS is a SoundBlaster emulator for the Gravis UltraSound
Range: SBOS may use INT 78-INT 7F
Notes: the installation check for SBOS is to test for the ASCII signature
"SBOS" at offset 0Ah in the interrupt handler's segment (similar
to one of the possible EMS installation checks)
this function may not be called if any SBOS vectors have been hooked
SeeAlso: INT 21/AX=FD12h,INT 78"UltraMID"
--------s-7E00FF-----------------------------
INT 7E - SBOS v3.82 - SET INTERRUPT FOR ???
AX = 00FFh
BL = new interrupt vector to hook
Return: BX = 03CDh if supported
Desc: unhooks the current interrupt handler for ???, and reconnects it to the
specified new interrupt number
SeeAlso: AX=00F7h,AX=00F9h,AX=00FEh
--------s-7E01-------------------------------
INT 7E - MaxSBOS v0.21 - ???
AH = 01h
???
Return: ???
Program: MaxSBOS is a SoundBlaster FM synthesis emulator for the Gravis
UltraSound MAX
Range: INT 78-INT 7F, selected by commandline parameter
Note: the installation check is the same as for 'regular' SBOS (see AX=00FEh)
although the API in v0.21 does not provide the functions present in
the older SBOS
SeeAlso: AX=00FEh,AH=02h,AH=03h
--------s-7E02-------------------------------
INT 7E - MaxSBOS v0.21 - ???
AH = 02h
Return: AX = FFFFh
SeeAlso: AX=00FEh,AH=01h,AH=03h
--------s-7E03-------------------------------
INT 7E - MaxSBOS v0.21 - NOP
AH = 03h
Return: nothing
SeeAlso: AX=00FEh,AH=01h,AH=02h
--------m-7E5857BL57-------------------------
INT 7E - XLOAD - INSTALLATION CHECK
AX = 5857h
BL = 57h
Return: AX = 0000h if installed
Program: XLOAD is the LOADHIGH-equivalent from Helix Software's Netroom
SeeAlso: AX=5857h/BL=5Ah,AX=5857h/BL=5Bh
--------m-7E5857BL5A-------------------------
INT 7E - XLOAD - GET ???
AX = 5857h
BL = 5Ah
Return: AX = 0000h
CX = ???
DS:SI -> ???
SeeAlso: AX=5857h/BL=57h,AX=5857h/BL=5Bh
--------m-7E5857BL5B-------------------------
INT 7E - XLOAD - GET XLOAD MEMORY SIZE
AX = 5857h
BL = 5Bh
Return: AX = 0000h
CX = segment of XLOAD TSR
DX = size of memory block in which XLOAD TSR is located
SeeAlso: AX=5857h/BL=57h,AX=5857h/BL=5Ah
--------s-7E--80-----------------------------
INT 7E - IWSBSDRV v1.41 - GET ???
AL = 80h
Return: DX:AX -> ???
SeeAlso: AL=81h,AL=82h,AL=83h,AL=84h,AL=85h,AL=86h,AL=87h
--------s-7E--81-----------------------------
INT 7E - IWSBSDRV v1.41 - ???
AL = 81h
???
Return: ???
SeeAlso: AL=80h,AL=82h,AL=83h,AL=84h,AL=85h,AL=86h,AL=87h
--------s-7E--82-----------------------------
INT 7E - IWSBSDRV v1.41 - GET ???
AL = 82h
Return: AX = ??? (FFFFh)
SeeAlso: AL=80h,AL=81h,AL=83h,AL=84h,AL=85h,AL=86h,AL=87h
--------s-7E--83-----------------------------
INT 7E - IWSBSDRV v1.41 - ??? (CALLS VIWD.VXD)
AL = 83h
???
Return: ???
SeeAlso: AL=80h,AL=81h,AL=82h,AL=84h,AL=85h,AL=86h,AL=87h
SeeAlso: INT 2F/AX=1684h/BX=38DAh"VIWD"
--------s-7E--84-----------------------------
INT 7E - IWSBSDRV v1.41 - WAKE PROGRAM???
AL = 84h
Return: AL = status
00h successful
else failed
SeeAlso: AL=80h,AL=81h,AL=82h,AL=83h,AL=85h,AL=86h,AL=87h
SeeAlso: INT 2F/AX=CD04h"InterWave"
--------s-7E--85-----------------------------
INT 7E - IWSBSDRV v1.41 - SET ??? FLAG
AL = 85h
Return: nothing
SeeAlso: AL=80h,AL=81h,AL=82h,AL=83h,AL=84h,AL=86h,AL=87h
--------s-7E--86-----------------------------
INT 7E - IWSBSDRV v1.41 - HOOK INT 21
AL = 86h
Return: AX,BX,DX,ES destroyed
SeeAlso: AL=80h,AL=81h,AL=82h,AL=83h,AL=84h,AL=85h,AL=87h
--------s-7E--87-----------------------------
INT 7E - IWSBSDRV v1.41 - RESTORE INT 21
AL = 87h
Return: AX,DX destroyed
SeeAlso: AL=80h,AL=81h,AL=82h,AL=83h,AL=84h,AL=85h,AL=86h
--------V-7F---------------------------------
INT 7F - Halo88 - API
BX = function number (see #3537)
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 3537)
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 #3538)
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 3538)
00h BYTE command (see #3539)
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 #3540)
(Table 3539)
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 3540)
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"IRQ7",INT 7E"GO32"
----------7F---------------------------------
INT 7F - Canon IXHND2 Scanner Interface
--------U-7F---------------------------------
INT 7F - SBS WinRun 1.00 - TRANSMITTER ENTRY POINT
DS:SI -> WinRun control block (WCB) (see #3541)
Return: WinRun receiver status returned in WCB
Program: WinRun is a DOS/Windows utility written by Sven B. Schreiber to start
Windows applications from a virtual DOS machine under Windows
Note: The WinRun transmitter (WINRUN-T.COM) and receiver (WINRUN-R.EXE) need
to be up and running
Format of the WinRun control block (WCB):
Offset Size Description (Table 3541)
00h DWORD pointer to ASCIZ command string
04h WORD (ret) WinRun receiver status
0000h-001Fh WinExec() error
0020h-FFFEh WinExec() instance handle
FFFFh Windows not running or WinRun receiver not
installed
--------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 #3542)
AH = semaphore owner if status=02h
SeeAlso: AH=01h,AH=02h,AH=41h,INT 67/AH=00h
(Table 3542)
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)
--------T-7F00-------------------------------
INT 7F - MultiLink Advanced v1.0+ - ENQUEUE SYSTEM RESOURCE
AH = 00h
BX = resource identifier
AL = wait flag
Return: AL = status
00h successful
01h resource not available
02h user error
Notes: 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
function will not return until the resource is available if AL is
nonzero on entry
a maximum of 100 resources may be enqueued at once
SeeAlso: AH=01h"MultiLink"
--------N-7F00-------------------------------
INT 7F - G8BPQ v4.07+ - GET NODE/SWITCH VERSION AND DESCRIPTION
AH = 00h
ES:SI -> buffer for "USERS" text string
Return: AX = 4250h ('BP') if installed
BX = 5120h ('Q ') if installed
DX = version number (DH = major, DL = minor)
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 #3542)
AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=02h,AH=41h
--------T-7F01-------------------------------
INT 7F - MultiLink Advanced v1.0+ - DEQUEUE SYSTEM RESOURCE
AH = 01h
BX = resource identifier
Return: AL = status
00h successful
02h user error
Note: the indicated resource may be dequeued even if it was enqueued by
another task
SeeAlso: AH=00h"MultiLink",AH=02h"MultiLink"
--------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 #3543)
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 3543)
00h 3 BYTEs signature = 'PCB'
03h BYTE function number (see #3544,#3545)
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 #3547)
0Dh WORD maximum length of control string (IBM)
unused (Rabbit)
(Table 3544)
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 #3546)
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 3545)
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 3546)
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 3547)
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 #3548)
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 3548)
Values for HDILOAD function number: (do FAR call via entry_points+4*function)
08h HOPEN Open Adapter (see #3580)
09h HSMX Set Mix (see #3609)
10h HINT Interrupt (see #3576)
13h HLDPAL Load Palette (see #3577)
15h HBBW BitBLT Write Image Data (see #3563)
17h HBBR BitBLT Read Image Data (see #3564)
18h HBBCHN Chained Data Go (see #3562)
19h HBBC BitBLT Copy Data (see #3561)
1Dh HQMODE Get Current Mode (see #3586)
20h HRECT Fill Rectangle (see #3588)
22h HCLOSE Close Adapter and place in quiescent state (see #3569)
30h HINIT Initialize State (see #3575)
31h HSYNC Synchronize Adapter (see #3614)
39h HSPAL Save Palette (see #3611)
3Ah HRPAL Restore Palette (see #3591)
??? HSGQ Set Graphics Quality (see #3600)
??? HSCOORD Set Coordinate Type (see #3597)
??? HESC Escape, Terminate Processing (see #3574)
??? HSBCOL Set Background Color (see #3592)
??? HSBP Set Bit Plane Controls (see #3593)
??? HSCMP Set Color Comparison Register (see #3595)
??? HSCOL Set Color (see #3596)
??? HSHS Set Scissors (clipping rectangle) (see #3601)
??? HXLATE Assign Text Color (see #3615)
??? HQMODES Get Adapter Modes (see #3587)
??? HQDPS Get Drawing Process State Size (see #3585)
??? HQDFPAL Get Default Palette (see #3584)
??? HQCOORD Get Coordinate Type (see #3582)
??? HQCP Get Current Position (see #3583)
??? HSMODE Change Mode (see #3607)
??? HLINE Draw Line at Given Position (see #3578)
??? HCLINE Draw Line at Current Position (see #3568)
??? HRLINE Draw Line Relative from Given Position (see #3589)
??? HCRLINE Draw Line Relative at Current Position (see #3571)
??? HSLT Set Line Type (see #3604)
??? HSLW Set Line Width (see #3606)
??? HSLPC Save Line Pattern Count (see #3603)
??? HRLPC Restore Line Pattern Count (see #3590)
??? HCBBW BitBLT Write Image Data at Current Position (see #3565)
??? HBAR Begin Area (see #3560)
??? HEAR End Area (see #3572)
??? HSPATT Set Pattern (see #3612)
??? HSPATTO Set Pattern Reference Point (see #3613)
??? HEGS Erase Graphics Screen (see #3573)
??? HSCP Set Current Position (see #3598)
??? HMRK Set Marker (see #3579)
??? HCMRK Set Marker at Current Position (see #3570)
??? HSMARK Set Marker Shape (see #3608)
??? HSCS Set Character Set (see #3599)
??? HCHST Write Character String at Given Position (see #3567)
??? HCCHST Write Character String at Current Position (see #3566)
??? HSCELL Set Cell Size for Alphanumeric Text (see #3594)
??? ABLOCKMFI Write Character/Attribute Block MFI (see #3551)
??? ABLOCKCGA Write Character Block CGA (see #3549)
??? AERASE Erase Rectangle (see #3554)
??? ASCROLL Scroll Rectangle (see #3555)
??? ACURSOR Set Alphanumerics Cursor Position (see #3553)
??? ASCUR Set Alphanumeric Cursor Shape (see #3556)
??? ASFONT Set Font (see #3557)
??? AXLATE Assign Alphanumeric Color (see #3559)
Format of ABLOCKCGA parameter block:
Offset Size Description (Table 3549)
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 #3550)
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: #3551
Bitfields for one character in ABLOCKCGA character block:
Bit(s) Description (Table 3550)
3-0 foreground attribute
7-4 background attribute
15-8 character code
Format of ABLOCKMFI parameter block:
Offset Size Description (Table 3551)
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 #3552)
0Ah BYTE length of block in characters
SeeAlso: #3549
Bitfields for one character in ABLOCKMFI character block:
Bit(s) Description (Table 3552)
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 3553)
00h WORD 0002h (length of following data)
02h BYTE column (0-based)
03h BYTE row (0-based)
SeeAlso: #3556
Format of AERASE parameter block:
Offset Size Description (Table 3554)
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: #3555
Format of ASCROLL parameter block:
Offset Size Description (Table 3555)
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: #3554
Format of ASCUR parameter block:
Offset Size Description (Table 3556)
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: #3553,INT 10/AH=01h
Format of ASFONT parameter block:
Offset Size Description (Table 3557)
00h WORD 0005h (length of following data)
02h BYTE font number (0-3)
03h DWORD -> character set definition block (see #3558)
Format of 8514/A character set definition block:
Offset Size Description (Table 3558)
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 3559)
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 3560)
00h WORD 0000h (no data following)
SeeAlso: #3572
Format of HBBC parameter block:
Offset Size Description (Table 3561)
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: #3562
Format of HBBCHN parameter block:
Offset Size Description (Table 3562)
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: #3561,#3563,#3564,#3565
Format of HBBR parameter block:
Offset Size Description (Table 3563)
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: #3562,#3563,#3565
Format of HBBW parameter block:
Offset Size Description (Table 3564)
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: #3562,#3564,#3565
Format of HCBBW parameter block:
Offset Size Description (Table 3565)
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: #3562,#3563,#3564
Format of HCCHST parameter block:
Offset Size Description (Table 3566)
00h WORD length of following data
02h N BYTEs ASCII string to display (length given by 'length' field above)
SeeAlso: #3567
Format of HCHST parameter block:
Offset Size Description (Table 3567)
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: #3566
Format of HCLINE parameter block:
Offset Size Description (Table 3568)
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: #3578,#3589,#3571
Format of HCLOSE parameter block:
Offset Size Description (Table 3569)
00h WORD 0001h (length of following data)
01h BYTE (ret) return code
SeeAlso: #3580
Format of HCMRK parameter block:
Offset Size Description (Table 3570)
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: #3579
Format of HCRLINE parameter block:
Offset Size Description (Table 3571)
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: #3578,#3568,#3589
Format of HEAR parameter block:
Offset Size Description (Table 3572)
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: #3560
Format of HEGS parameter block:
Offset Size Description (Table 3573)
00h WORD 0000h (no data following)
Format of HESC parameter block:
Offset Size Description (Table 3574)
00h WORD 0000h (no data following)
Format of HINIT parameter block:
Offset Size Description (Table 3575)
00h WORD 0002h (length of following data)
02h WORD segment of task buffer
SeeAlso: #3614
Format of HINT parameter block:
Offset Size Description (Table 3576)
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 3577)
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: #3611
Format of HLINE parameter block:
Offset Size Description (Table 3578)
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: #3568,#3589,#3571
Format of HMRK parameter block:
Offset Size Description (Table 3579)
00h WORD length of following data (multiple of 4)
02h 2N WORDs X,Y for N points
SeeAlso: #3570
Format of HOPEN parameter block:
Offset Size Description (Table 3580)
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 #3581)
03h BYTE (ret) return code
bit 7: no adapter (hardware mismatch)
SeeAlso: #3569
(Table 3581)
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 3582)
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 3583)
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 3584)
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 3585)
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 3586)
00h WORD 0012h (length of following data)
02h BYTE current video mode (see #3581)
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: #3587
Format of HQMODES parameter block:
Offset Size Description (Table 3587)
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: #3586
Format of HRECT parameter block:
Offset Size Description (Table 3588)
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 3589)
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: #3578,#3568,#3571
Format of HRLPC parameter block:
Offset Size Description (Table 3590)
00h WORD 0000h (no data following)
Note: used for continuity of lines crossing scissors boundaries
SeeAlso: #3603
Format of HRPAL parameter block:
Offset Size Description (Table 3591)
00h WORD 0300h (length of following data)
02h 768 BYTEs buffer containing previously-saved palette table
SeeAlso: #3611
Format of HSBCOL parameter block:
Offset Size Description (Table 3592)
00h WORD 0004h (length of following data)
02h DWORD color index for new background color
SeeAlso: #3596
Format of HSBP parameter block:
Offset Size Description (Table 3593)
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 3594)
00h
Format of HSCMP parameter block:
Offset Size Description (Table 3595)
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 3596)
00h WORD 0004h (length of following data)
02h DWORD color index for new foreground color
SeeAlso: #3592
Format of HSCOORD parameter block:
Offset Size Description (Table 3597)
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 3598)
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 3599)
00h WORD 0004h (length of following data)
02h DWORD -> character set definition
Format of HSGQ parameter block:
Offset Size Description (Table 3600)
00h WORD 0002h (length of following data)
02h WORD quality settings (see #3602)
Format of HSHS parameter block:
Offset Size Description (Table 3601)
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 3602)
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 3603)
00h WORD 0000h (no data following)
Note: used for continuity of lines crossing scissors boundaries
SeeAlso: #3590
Format of HSLT parameter block:
Offset Size Description (Table 3604)
00h WORD 0006h (length of following data)
02h BYTE line type (see #3605)
03h BYTE reserved
04h DWORD -> user line-type definition (if user type)
SeeAlso: #3606
(Table 3605)
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: #3604
Format of HSLW parameter block:
Offset Size Description (Table 3606)
00h WORD 0001h (length of following data)
02h BYTE width of line in pixels
SeeAlso: #3604
Format of HSMODE parameter block:
Offset Size Description (Table 3607)
00h WORD 0001h (length of following data)
02h BYTE new display mode number (see #3581)
Format of HSMRK paramter block:
Offset Size Description (Table 3608)
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: #3612
Format of HSMX parameter block:
Offset Size Description (Table 3609)
00h WORD 0002h (length of following data)
02h BYTE foreground mix (see #3610)
03h BYTE background mix (see #3610)
(Table 3610)
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 HSPAL parameter block:
Offset Size Description (Table 3611)
00h WORD 0300h (length of following data)
02h 768 BYTEs buffer for palette table
SeeAlso: #3577,#3591
Format of HSPATT parameter block:
Offset Size Description (Table 3612)
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: #3608,#3613
Format of HSPATTO parameter block:
Offset Size Description (Table 3613)
00h WORD 0004h (length of following data)
02h 2 WORDs X,Y of pattern reference point (origin)
SeeAlso: #3612
Format of HSYNC parameter block:
Offset Size Description (Table 3614)
00h WORD 0002h (length of following data)
02h WORD segment of task state buffer
SeeAlso: #3575
Format of HXLATE parameter block:
Offset Size Description (Table 3615)
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 #3548)
Note: this API is a superset of the 8514/A Adapter Interface
(see AX=0105h"HDILOAD")
--------V-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 #3542)
AH = semaphore owner if status=02h
SeeAlso: AH=00h,AH=01h,AH=42h
--------T-7F02-------------------------------
INT 7F - MultiLink Advanced v1.0+ - RELEASE CPU
AH = 02h
Return: ???
Desc: yields CPU to other tasks
SeeAlso: AH=00h"MultiLink",AH=09h"MultiLink",INT 15/AX=1000h
--------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=00h"G8BPQ",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=00h"G8BPQ",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 #3616)
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 3616)
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=00h"G8BPQ",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 #3617)
Return: AX = status
0000h successful
ES:DI buffer filled
0001h not shared drive
Format of Alloy drive info record:
Offset Size Description (Table 3617)
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 #3618)
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 3618)
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 #3619)
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 3619)
0 L2LINK
1 SESSION
2 UPLINK
3 DOWNLIND
5 BPQHOST
--------T-7F09-------------------------------
INT 7F - MultiLink Advanced v1.0+ - 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
SeeAlso: AH=00h"MultiLink",AH=0Ah"MultiLink"
--------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 #3620)
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 3620)
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"
--------T-7F0A-------------------------------
INT 7F - MultiLink Advanced v1.0+ - SET KEYBOARD TEST STATUS
AH = 0Ah
AL = task-switch status
00h normal (disable task when it repeatedly polls keyboard)
01h disable task until keyboard input available
FFh never disable task
Return: ???
SeeAlso: AH=09h"MultiLink"
--------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 #3621)
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 3621)
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
0002h (v4.07+) initiate NODES broadcast
SeeAlso: AH=09h"G8BPQ"
--------N-7F0D00-----------------------------
INT 7F - G8BPQ v4.07+ - HOST MODE - GET AVAILABLE STREAM
AX = 0D00h
Return: AL = first available stream number, or FFh if none free
SeeAlso: AH=00h"G8BPQ",AH=0Dh
--------N-7F0D-------------------------------
INT 7F - G8BPQ v4.07+ - HOST MODE - ALLOCATE/DEALLOCATE STREAM
AH = 0Dh
AL = stream number (01h-FFh)
CL = function
01h allocate stream
Return: CX = status (0000h successful, else already in use)
02h deallocate stream
SeeAlso: AX=0D00h
--------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",AX=0D00h,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 #3622)
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 3622)
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 #3622)
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 #3622)
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 #3622)
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 #3622)
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 #3622)
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 #3622)
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 #3622)
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 #3622)
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 #3622)
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 #3624)
Return: AL = status (see #3623)
Note: if wildcard channel FFh used, actual channel number will be filled in
SeeAlso: AH=12h
(Table 3623)
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 3624)
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 #3625)
Note: also unlocks the channel, allowing the next datagram to be received
SeeAlso: AH=11h,AH=15h/CL=04h
(Table 3625)
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 #3626)
Return: AL = status (00h-03h) (see #3625)
SeeAlso: AH=14h/CL=01h,AH=14h/CL=03h
(Table 3626)
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 #3627)
Return: AL = status (00h-03h) (see #3625)
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 3627)
Values Alloy acknowledge service routine is called with:
DS:SI -> acknowledge structure (see #3631)
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 #3625)
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 #3628)
Return: DX:DI buffer filled
Format of Alloy busy structure:
Offset Size Description (Table 3628)
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 #3629)
Return: AL = status (00h-03h) (see #3625)
SeeAlso: AH=15h/CL=01h
Format of Alloy channel status structure:
Offset Size Description (Table 3629)
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 #3630)
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 3630)
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 #3631)
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 3631)
00h BYTE sender ID
01h BYTE channel number
02h 4 BYTEs receiver status (see #3625)
--------N-7F16-------------------------------
INT 7F - Alloy NTNX, MW386 - DIRECT MEMORY TRANSFER
AH = 16h
DX:SI -> transfer structure (see #3632)
Return: AL = status
00h successful
0Ah source or destination out of range
0Bh transfer kernel 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 3632)
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 #3633)
Note: messages or commands are ignored if disabled by the destination user
SeeAlso: AH=22h
Format of Alloy control packet:
Offset Size Description (Table 3633)
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 #3634)
Note: only drives on the current machine may be attached
(Table 3634)
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 #3634)
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 #3635)
SeeAlso: AH=25h/CL=00h
(Table 3635)
Values for Alloy network executive type:
00h RTNX
01h ATNX
02h NTNX
03h BTNX
04h MW386
05h ANSK
--------V-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 #3636)
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 3636)
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 #3637)
Note: requests exclusive read/write access to file
SeeAlso: AH=00h,AH=41h"MW386",AH=42h"NTNX"
(Table 3637)
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 #3637)
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 #3637)
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"
--------V-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 #3638)
SeeAlso: AX=0104h,AX=0105h
(Table 3638)
Values for 8516 Touch Screen function number:
00h check initialization and reset (see #3639)
14h set user-defined subroutine (see #3640)
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 3639)
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 3640)
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 #3641)
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 3641)
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"
--------E-80---------------------------------
INT 80 - Phar Lap 386|DOS-Extender - RELOCATED PRINT-SCREEN
Note: the extender relocates INT 05 to here by default, but can be told to
leave INT 05 alone with the commandline (or DOSX= environment
variable) flag -PRIVEC 5
SeeAlso: INT 05"PRINT SCREEN"
--------d-80---------------------------------
INT 80 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
Note: the factory-default location for the eight bytes of scratchpad RAM
needed by the SCSI adapter is 0000h:0200h, which is interrupt
vectors 80h and 81h
SeeAlso: INT 81"BusLogic"
--------b-80---------------------------------
INT 80 U - AMI BIOS v1.00.12.AX1T - internal - BIOS SUBSYSTEM SELECTION
AH = function
00h install and initialize BIOS subsystem
AL = ??? (00h,01h,03h)
CX:BX = subsystem ID (see #3642)
ESI = address from which to load, or 00000000h for default for
subsystem
EDI = physical address at which to install, or 0 for default
Note: if CX=0000h on entry, this call is applied to all
subsystems whose ID has low word BX
01h get BIOS subsystem information
CX:BX = subsystem ID (see #3642)
Return: AL = ???
AH = ???
EDX = uncompressed size of subsystem in bytes
SI = offset within subsystem of initialization
routine, or FFFFh if none
EDI = physical address of default location or 0
02h get matching subsystem identifier
AL = index into subsystem list (return ALth occurrence
matching BX)
BX = low word of subsystem identifier
(0001h,0002h,0004h,0005h,000Bh,FFFFh)
Return: CF clear if successful
CX = high word of ALth matching subsystem
CF set on error
Note: the system is halted if AL=00h on entry
03h set up "big real" mode (4G segment limits)
04h turn off "big real" mode (restore 64K segment limits)
05h remove BIOS subsystem
CX:BX = subsystem ID to leave out
Note: the system is halted if an invalid (not installed)
subsystem ID is specified
06h get installed subsystem info
CX:BX = subsystem ID (see #3642)
Return: CF clear
EDX = length of ???
EDI = linear address of start of ???
Note: the system is halted if an invalid (not installed)
subsystem ID is specified
Return: CF clear if successful
CF set on non-fatal error
Note: this interrupt vector is cleared to 0000h:0000h near the end of the
BIOS startup sequence
(Table 3642)
Values for AMI BIOS subsystem ID:
00010001h ROM BIOS @F000-FFFF
00010002h setup??? (loaded @6000-68FF)
00010005h APM code
0001000Bh language-specific error message set (English)
00020002h PnP/PCI ACFG code (loaded @F000-F1FF)
0001FFFFh
0002FFFFh recovery code
00030004h
0003FFFFh BIOS decompression code
0004000Bh
00060004h
0100FFFFh ACFG data
10000000h ROM @C000 (64K)
10000001h HMA (48K)
10000002h RAM @7A00 (24K)
10000003h RAM @8000-BFFF
10000004h
10000005h real-mode address space (0-1M)
1000000Bh installed language-specific message set???
--------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 #3643)
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 3643)
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 #3643)
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/ES=0000h
--------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 21/AX=4402h"CTMMSYS"
SeeAlso: 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 #3644)
SeeAlso: BX=0000h"SBSIM",BX=0002h"SBSIM",BX=0005h"SBSIM",INT 80/BL=00h"SBSIM"
Bitfields for SBSIM loaded drivers:
Bit(s) Description (Table 3644)
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 #3645)
Return: CF clear if successful
AX = volume
CF set on error
AX = error code (see #3643 at INT 80/BL=00h)
SeeAlso: BX=0401h"SBSIM"
(Table 3645)
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 #3645)
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"
--------d-81---------------------------------
INT 81 - BusLogic BT-946C PCI SCSI Adapter - SCRATCHPAD RAM (NOT A VECTOR!)
Note: the factory-default location for the eight bytes of scratchpad RAM
needed by the SCSI adapter is 0000h:0200h, which is interrupt
vectors 80h and 81h
SeeAlso: INT 80"BusLogic"
--------b-81---------------------------------
INT 81 - AMI WinBIOS - SECOND HARD DRIVE AUTODETECTION
Notes: used by WinBIOS with core version of July 1994 or later
QEMM 7.5 began using this interrupt internally after the QPAT3
maintenance release when searching for "ROM holes", causing a
lengthy delay during bootup. Adding the QEMM parameter RH:N will
avoid the QEMM call to INT 81 and speed up the boot process
--------s-810200---------------------------
INT 81 - Gravis UltraSound - MegaEm - PROCESS COMMAND LINE
AX = 0200h
BX = PSP segment
SI = ??? (data area)
Return: AX = status (see #3646)
BL = emulation state
bit 1 Emulation is on
bit 2 Emulation is off
Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
emulator for the Gravis UltraSound
Range: INT 81 to INT FF (see INT 21/AX=FD12h), selected by scanning for an
interrupt with vector 0000h:0000h
SeeAlso: AX=0202h,AX=0300h,AX=0400h,INT 21/AX=FD12h/BX=3457h
(Table 3646)
Values for MegaEm status:
0000h successful
0001h invalid command line optie
0002h display options
0003h ???
0004h invalid number of voices specified
0005h could not load enough patches to provide acceptable emulation
0006h to many warnings on patch loading
0007h ??? (not used anymore)
0008h /CO and SCSI don't work together
0009h invalid music volume
000Ah invalid master volume
000Bh /SC switch is no longer valid
0100h ??? (some error on patch loading)
--------s-810202---------------------------
INT 81 - Gravis UltraSound - MegaEm - ???
AX = 0202h
Return: AX = ???
SeeAlso: AX=0200h,AX=0300h,AX=0400h,INT 21/AX=FD12h/BX=3457h
--------s-810300---------------------------
INT 81 - Gravis UltraSound - MegaEm - LOAD SAMPLE ???
AX = 0300h
Return: AX = ???
SeeAlso: AX=0200h,AX=0202h,AX=0400h,INT 21/AX=FD12h/BX=3457h
--------s-810400---------------------------
INT 81 - Gravis UltraSound - MegaEm - ???
AX = 0400h
BX = ??? (segment)
Return: AX = ???
BX = ???
Program: MegaEm is a protected-mode SoundBlaster, SoundCanvas, and MT-32
emulator for the Gravis UltraSound
SeeAlso: AX=0200h,AX=0202h,AX=0300h,INT 21/AX=FD12h/BX=3457h
--------s-812010------------------------
INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - INT 78 REDIRECT
AX = 2010h
???
Return: ???
Note: MegaEm calls this function from its INT 78 handler, and then
immediately returns (via RETF in v3.10, thus leaving the flags on
the stack); this permits it to operate while hooking only one
interrupt through the memory manager in protected mode
SeeAlso: AX=2011h,AX=2012h
--------s-812011------------------------
INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - NMI REDIRECT
AX = 2011h
???
Return: ???
Note: MegaEm calls this function from its NMI (INT 02) handler, and then
immediately returns; this permits it to operate while hooking only
one interrupt through the memory manager in protected mode
SeeAlso: AX=2010h,AX=2012h
--------s-812012------------------------
INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - SOUNDCARD IRQ REDIRECT
AX = 2012h
???
Return: ???
Note: MegaEm calls this function from its GUS IRQ handler, and then
immediately returns; this permits it to operate while hooking only
one interrupt through the memory manager in protected mode
SeeAlso: AX=2010h,AX=2011h
--------s-812015------------------------
INT 81 - Gravis UltraSound - MEGA_EM v3.0+ - ???
AX = 2015h
???
Return: ???
--------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"
--------s-8300-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 00h
???
Return: CF clear (successful)
AX = ??? (0302h)
Program: JM Pro Tracker is a public-domain resident .MOD (digital music)
player by Josha Munnik
(Table 3647)
Values for JM Pro Tracker error code:
000Ah ???
000Bh ???
0014h ???
001Eh some required parameters have not yet been set
001Fh already playing???
FExxh busy (API call already in progress)
FFxxh invalid function number
--------s-8301-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 01h
DX = ??? or FFFFh
???
Return: CF clear if successful
CF set on error
AX = error code (see #3647)
--------s-8302-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 02h
BX = ???
???
Return: CF clear if successful
AX = ???
BX = ???
CX = ???
DX = ???
SI = ???
CF set on error
AX = error code (000Ah,000Bh,other) (see #3647)
--------s-8303-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 03h
BX = ??? (only low four bits, must be nonzero)
CX = ???
???
Return: CF clear if successful
CF set on error
AX = error code (0014h) (see #3647)
--------s-8304-------------------------------
INT 83 - JM Pro Tracker v5.0 - SET DMA BUFFER???
AH = 04h
CX = number of bytes in suggested buffer
ES:DI -> suggested buffer for DMA transfers???
Return: CF clear if successful
ES:AX -> actual buffer (filled with bytes of 80h)
CX = actual length (multiple of 4)
CF set on error
AX = error code (see #3647)
Note: the buffer must not cross a 64K DMA page boundary
--------s-8305-------------------------------
INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
AH = 05h
CX = length of buffer
ES:DI -> buffer for/containing ???
Return: CF clear (successful)
SeeAlso: AH=06h,AH=07h,AH=18h
--------s-8306-------------------------------
INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
AH = 06h
CX = length of buffer
ES:DI -> buffer for/containing ???
Return: CF clear (successful)
SeeAlso: AH=05h,AH=07h,AH=18h
--------s-8307-------------------------------
INT 83 - JM Pro Tracker v5.0 - SET ??? BUFFER
AH = 07h
BX = ???
CX = length of buffer
ES:DI -> buffer for/containing ???
Return: CF clear (successful)
SeeAlso: AH=05h,AH=06h,AH=18h
--------s-8308-------------------------------
INT 83 - JM Pro Tracker v5.0 - START PLAYING???
AH = 08h
???
Return: CF clear if successful
???
CF set on error
AX = error code (001Eh,001Fh) (see #3647)
SeeAlso: AH=09h,AH=0Ah
--------s-8309-------------------------------
INT 83 - JM Pro Tracker v5.0 - PAUSE???
AH = 09h
???
Return: CF clear if successful
CF set on error
AX = error code (see #3647)
SeeAlso: AH=08h,AH=0Ah
--------s-830A-------------------------------
INT 83 - JM Pro Tracker v5.0 - RESUME???
AH = 0Ah
???
Return: CF clear if successful
CF set on error
AX = error code (001Fh) (see #3647)
SeeAlso: AH=08h,AH=09h
--------s-830B-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 0Bh
BX = ???
???
Return: CF clear if successful
CF set on error
--------s-830C-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 0Ch
DX bit 5 = ???
???
Return: CF clear if successful
BX = ??? (FFFFh)
CX = ??? (0000h)
DX = ???
CF set on error
AX = error code (see #3647)
--------s-830D-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 0Dh
BX = ???
???
Return: CF clear (successful)
--------s-830E-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 0Eh
BX = ??? (ignored if ES:DI = 0000h:0000h)
ES:DI -> ??? or 0000h:0000h
Return: CF clear (successful)
--------s-830F-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 0Fh
???
Return: CF clear if successful
AX = ???
CF set on error
AX = error code (see #3647)
--------s-8310-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 10h
BL = subfunction???
CX = ???
DX = ???
???
Return: CF clear if successful
CX = DX = ???
CF set on error
AX = error code (see #3647)
SeeAlso: AH=18h
--------s-8311-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 11h
BL = ???
CX = ???
Return: CF clear (successful)
--------s-8312-------------------------------
INT 83 - JM Pro Tracker v5.0 - CLEAR ???
AH = 12h
Return: nothing
--------s-8313-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 13h
BX = ???
Return: CF clear (successful)
--------s-8314-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 14h
???
Return: CF clear (successful)
BX = ???
--------s-8315-------------------------------
INT 83 - JM Pro Tracker v5.0 - GET ???
AH = 15h
BX = what to get (zero/nonzero)
Return: CF clear if successful
BX = ???
DX = ???
CF set on error
AX = error code (see #3647)
--------s-8316-------------------------------
INT 83 - JM Pro Tracker v5.0 - ???
AH = 16h
AL = subfunction
00h ???
Return: BX = ???
CX = ???
DX = ???
ES:DI -> ???
CF indicates ???
01h ???
Return: BX = ???
CX = ???
DX = ???
Return: CF clear if successful
CF set on error
AX = error code (FFxxh) (see #3647)
--------s-8317-------------------------------
INT 83 - JM Pro Tracker v5.0 - UNHOOK API INTERRUPT
AH = 17h
Return: CF clear if successful
CF set on error (hooked by another program)
--------s-8318-------------------------------
INT 83 - JM Pro Tracker v5.0 - SET BUFFERS
AH = 18h
ES:DI -> buffer-pointer structure (see #3648)
Return: nothing
SeeAlso: AH=05h,AH=06h,AH=07h,AH=10h
Format of JM Pro Tracker buffer-pointer structure:
Offset Size Description (Table 3648)
00h WORD length of ??? buffer (see AH=05h)
02h DWORD -> ??? buffer (see AH=05h)
06h WORD length of ??? buffer (see AH=06h)
08h DWORD -> ??? buffer (see AH=06h)
0Ch WORD length of ??? buffer (see AH=07h)
0Eh DWORD -> ??? buffer (see AH=07h)
12h WORD ??? (see AH=07h)
14h WORD ??? (see AH=10h) (subfunction 01h)
16h WORD ??? (see AH=10h) (subfunction 01h)
18h WORD ??? (see AH=10h) (subfunction 00h)
1Ah WORD ??? (see AH=10h) (subfunction 01h)
--------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"BOOT HOOK"
--------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 #3649)
Return: ES:DI -> first data byte of object
DX:CX = number of elements in the object
SeeAlso: INT 88/AL=01h,INT 88/AL=08h,INT C8"APL"
Format of APL*PLUS/PC shape model:
Offset Size Description (Table 3649)
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=00h,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-89---------------------------------
INT 89 - APL*PLUS/PC - ???
Note: STSC moved its interrupts from 86h-8Ch to C6h-CCh, but did not delete
the older interrupts
SeeAlso: INT C9"APL"
--------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"PRINT SCREEN",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 #3650)
Note: preserves BP, DS, SI, DI; other registers may be destroyed
(Table 3650)
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 #3651)
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 3651)
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 #3650)
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 #3652)
Return: AX = status (see #3650)
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 3652)
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 #3653)
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 3653)
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 #3654)
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 3654)
00h WORD buffer count (see #3656)
02h WORD segment of command buffer (see #3655)
04h WORD offset of command buffer
06h WORD handle from NetOpen
Format of Da Vinci eMail command buffer:
Offset Size Description (Table 3655)
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 3656)
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 #3657)
5Ch WORD special types (0)
Bitfields for Da Vinci eMail mail types:
Bit(s) Description (Table 3657)
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 #3658)
Return: AX = FF97h (ERS_NOT_AVAILABLE)
SeeAlso: AX=E107h,AX=E180h
Format of Da Vinci eMail "NetErrorFix" parameter block:
Offset Size Description (Table 3658)
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 #3659)
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 3659)
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 #3660)
Return: AX = 0001h
SeeAlso: AX=E102h,AX=E10Ch
Format of Da Vinci eMail "NetCheckQueue" parameter block:
Offset Size Description (Table 3660)
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 #3661)
Return: AX = 0001h
SeeAlso: AX=E10Bh
Format of Da Vinci eMail "NetReadQueue" parameter block:
Offset Size Description (Table 3661)
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 #3662)
Return: AX = status (see #3650)
Desc: this function is used to verify username/password
SeeAlso: AX=E10Eh
Format of Da Vinci eMail "NetSubmitName" parameter block:
Offset Size Description (Table 3662)
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 #3663)
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 3663)
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 #3664)
Return: AX = 0001h
SeeAlso: AX=E111h,AX=E113h
Format of Da Vinci eMail "NetGetAltRoute" parameter block:
Offset Size Description (Table 3664)
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 #3665)
Return: AX = 0001h
SeeAlso: AX=E110h,AX=E113h
Format of Da Vinci eMail "NetDeleteAltRoutes" parameter block:
Offset Size Description (Table 3665)
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 #3666)
Return: AX = 0001h
SeeAlso: AX=E180h
Format of Da Vinci eMail "NetChangePassword" parameter block:
Offset Size Description (Table 3666)
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 #3667)
Return: AX = 0001h
SeeAlso: AX=E110h,AX=E111h
Format of Da Vinci eMail "NetSetAltRoute" parameter block:
Offset Size Description (Table 3667)
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 #3668)
Return: ???
SeeAlso: SI=0000h,SI=0001h,SI=0003h,SI=000Ah
Format of PCM driver function 0002h parameters:
Offset Size Description (Table 3668)
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 #3669)
Return: ???
SeeAlso: SI=0000h,SI=000Ah,SI=000Bh
Format of PCM driver function 0003h parameters:
Offset Size Description (Table 3669)
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 #3670)
Return: ???
SeeAlso: SI=0000h,SI=0001h
Format of PCM driver function 0004h parameters:
Offset Size Description (Table 3670)
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 #3671)
Return: ???
SeeAlso: SI=0003h
Format of PCM driver functio 000Bh parameters:
Offset Size Description (Table 3671)
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 #3672)
Bitfields for PCM.COM status:
Bit(s) Description (Table 3672)
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 #3673)
Return: ???
Format of PCM.COM DMA info structure:
Offset Size Description (Table 3673)
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 = timer options (see #3674)
DX:CX = delay if AH bit 7 set (one-shot if DX bit 15 set)
Return: ???
SeeAlso: AL=08h/SI=8017h
Bitfields for PCM.COM timer options:
Bit(s) Description (Table 3674)
7 set timer
6 timer active (timer turned off if clear)
5-0 timer number
--------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
--------U-96---------------------------------
INT 96 U - KILL.COM, QKILL.COM - POP UP
Program: KILL.COM is a TSR utility that allows you to terminate programs
by calling INT 21/AH=4Ch or reboot the computer (author unknown);
QKILL.COM is a modification of KILL.COM by Solar Designer that
supports QEMM's Quick Boot feature
Notes: This interrupt is intercepted but not chained by KILL.COM; it is never
called by KILL.COM itself. It points into the middle of KILL.COM's
INT 09 handler and assumes specific values have been placed on the
stack (thus it can't be called as an interrupt).
To invoke KILL, use the following code:
pushf
push cs
push offset $+0Dh
push ax
push es
push 0
pop es
jmp dword ptr es:[96h*4]
--------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",INT D3"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"GSS"
--------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"HARD DISK 0",INT 60"Adaptec",INT C1"AMI",INT C2"AMI"
SeeAlso: 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"HARD DISK 0",INT 60"Adaptec",INT C0"AMI",INT C2"AMI"
SeeAlso: 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"DISK 0",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"DISK 0",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"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C5"AMI"
SeeAlso: 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"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
SeeAlso: 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"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
SeeAlso: 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"HARD DISK 1",INT 64"Adaptec",INT C0"AMI",INT C4"AMI"
SeeAlso: 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/AL=00h"APL",INT 88/AL=08h"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
--------v-D3---------------------------------
INT D3 - VIRUS - "Antiexe" - RELOCATED INT 13
SeeAlso: INT 9F"VIRUS"
--------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 #3675)
ES:EBX -> System Control Block in native mode (see #3675)
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 3675)
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 #3676)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 3676)
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 #1351 at INT 21/AX=5700h)
08h WORD file creation date (see #1352 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 #3677)
CF set on error
AX = error code (see #1366 at INT 21/AH=59h/BX=0000h)
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 3677)
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 #3680)
5Ch WORD pointer to first Current Directory Block (see #3683)
5Eh WORD pointer to active Current Directory Block (see #3683)
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 #3678)
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 #3679)
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 3678)
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 3679)
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 3680)
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 #3682)
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 #3681)
26h 2 BYTEs ???
Bitfields for PC-MOS/386 IOCTL flags:
Bit(s) Description (Table 3681)
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 3682)
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 #3685) (0000h = none)
45h BYTE flag: nonzero if GFB refers to character device
46h WORD address of Block Device Block (see #3684)
48h WORD sector of file's directory entry (see #1041)
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 3683)
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 3684)
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 3685)
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 #3682)
14h WORD segment address of owner's Task File Block (see #3680)
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 #3686)
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 #3686)
CX = IRQ (if any) which awakened task
DX = port (if any) which awakened task
CF set on error
AX = error code (see #1366 at INT 21/AH=59h/BX=0000h)
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 3686)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 (see #1366 at INT 21/AH=59h/BX=0000h)
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 #3687)
Return: CF clear if successful
ES:DI buffer filled
CF set on error
AX = error code (see #1366 at INT 21/AH=59h/BX=0000h)
SeeAlso: AH=19h,AH=1Eh
Format of PC-MOS/386 program name buffer:
Offset Size Description (Table 3687)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #3689)
Return: CF clear if successful
ES = segment address of the new task's TCB data structure
CF set on error
AX = error code (see #3688)
SeeAlso: AH=21h
(Table 3688)
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 3689)
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 (ret) total extended memory
17h DWORD (ret) number of 4K extended memory pages allocated
1Bh WORD (ret) paragraphs of system memory pool allocated
1Dh WORD (ret) system memory pool size in paragraphs
1Fh WORD (ret) 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 #1366 at INT 21/AH=59h/BX=0000h)
--------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 #3675)
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 #3677)
CF set on error
AX = error code (see #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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 #1366 at INT 21/AH=59h/BX=0000h)
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)
Return: nothing
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/Sirius 1 - SuperBIOS
SeeAlso: INT 21/AH=EAh"NetWare"
--------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/AH=00h,INT 10/AH=0Eh
--------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"
----------E0---------------------------------
INT E0 - DeskMate (Tandy) - DESK EXECUTIVE API
AX = function code (numerous)
parameters passed in BX, DX, ES, DI, and/or BP
Return: AX = return from function
Program: DeskMate is a proprietary GUI from Tandy distributed with several
models of the Tandy 1000's, 2500's, 3000's, and laptops. Retail
and runtime versions also exist. Some Tandy's are designed to
boot directly into DeskMate.
SeeAlso: INT 15/AX=7002h,INT E1"DeskMate"
--------O-E0---------------------------------
INT E0 - CP/M-86, Concurrent CP/M, DR Multiuser DOS - FUNCTION CALLS
CL = function number (see #3690,#3691)
DS,DX contain parameter(s):
DL = byte parameter
DX = word parameter
DS:DX -> structure
Return: as appropriate for function:
AL = byte result
AX = word
ES:AX -> structure (and BX=ES)
CX is often the error code (see #3692)
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 3690)
Values for CP/M-86,DR Multiuser DOS function number:
00h terminate calling process (see INT E0/CL=00h,INT 21/AH=00h)
01h read a character (see INT E0/CL=01h,INT 21/AH=01h)
02h write character to default console (see INT E0/CL=02h,INT 21/AH=02h)
03h read character from default AUX (see INT E0/CL=03h,INT 21/AH=03h)
04h write character to default AUX (see INT E0/CL=04h,INT 21/AH=04h)
05h write character to default list device
(see INT E0/CL=05h,INT 21/AH=05h)
06h perform raw I/O on default console (see INT E0/CL=06h,INT 21/AH=06h)
07h return default AUX input status (see INT E0/CL=07h)
08h return default AUX output status (see INT E0/CL=08h)
09h write string to default console (see INT E0/CL=09h,INT 21/AH=09h)
0Ah read string from default console (see INT E0/CL=0Ah,INT 21/AH=0Ah)
0Bh return default console input status (see INT E0/CL=0Bh,INT 21/AH=0Bh)
0Ch get BDOS release ID (see INT E0/CL=0Ch)
0Dh reset all disk drives (see also INT 21/AH=0Dh)
0Eh set default drive (see also INT 21/AH=0Eh"DOS 1+")
0Fh open file via FCB (see also INT 21/AH=0Fh,#1034)
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 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 ("chain process")
(see INT E0/CL=2Fh,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 #3691)
33h set DMA address segment
34h get DMA buffer address
35h CP/M-86 allocate maximum memory (see INT E0/CL=35h)
36h allocate maximum memory at specified segment (see INT E0/CL=36h)
37h CP/M-86 allocate memory segment (see INT E0/CL=37h,INT 21/AH=48h)
38h allocate memory at specified segment (see INT E0/CL=38h)
39h CP/M-86 free specified memory segment (see INT E0/CL=39h,INT 21/AH=49h)
3Ah CP/M-86 free all memory (not in DOS Plus v2.1) (see INT E0/CL=3Ah)
3Bh load .CMD file into memory (see INT E0/CL=3Bh)
3Ch (DOS Plus v2.1) call RSX program
40h (DR-NET, REAL/32) log on a server (see INT E0/CL=40h)
41h (DR-NET, REAL/32) log off a server (see INT E0/CL=41h)
42h (DR-NET) send a message
43h (DR-NET) receive a message
44h (DR-NET, REAL/32) get network status (see INT E0/CL=44h)
45h (DR-NET, REAL/32) get requestor configuration table (see INT E0/CL=45h)
46h (DR-NET) set compatibility attributes
47h (DR-NET, REAL/32) get server configuration table (see INT E0/CL=47h)
48h (DR-NET, REAL/32) set network error mode (see INT E0/CL=48h)
49h (DR-NET, REAL/32) attach network
4Ah (DR-NET, REAL/32) detach network
4Bh (DR-NET, REAL/32) set default password
4Ch (DR-NET, REAL/32) get-set long timeout
4Dh (DR-NET, REAL/32) get parameter table
4Fh (REAL/32) get extended network error
50h (DR-NET, REAL/32) 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"DATE")
57h allocate system flag
58h deallocate system flag
59h reserve memory in global area (see INT E0/CL=59h)
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 (see INT E0/CL=71h)
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 (see INT E0/CL=86h)
87h open message queue (see INT E0/CL=87h)
88h delete message queue
89h read from message queue (see INT E0/CL=89h)
8Ah conditionally read from message queue (see INT E0/CL=8Ah)
8Bh write to message queue (see INT E0/CL=8Bh)
8Ch conditionally write to message queue (see INT E0/CL=8Ch)
8Dh delay calling process
8Eh call process dispatcher (yield CPU) (see INT E0/CL=8Eh)
8Fh terminate calling process (same as function 00h)
90h create a process
91h set calling process' priority (see INT E0/CL=91h)
92h attach to default console
93h detach from default console (see INT E0/CL=93h)
94h (REAL/32) set the process' 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 (see INT E0/CL=A5h)
A6h detach from default AUX (see INT E0/CL=A6h)
A7h conditionally attach to default AUX (see INT E0/CL=A7h)
A8h set default AUX (see INT E0/CL=A8h)
A9h return default AUX (see INT E0/CL=A9h)
ACh read block from default AUX (see INT E0/CL=ACh)
ADh (DOS Plus v2.1) write block to default AUX (see INT E0/CL=ADh)
B0h configure default AUX (see INT E0/CL=B0h)
B1h get/set device control parameters (see INT E0/CL=B1h)
B2h send Break through default AUX (see INT E0/CL=B2h)
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 (see INT E0/CL=BDh)
FFh return 80386 to native mode
SeeAlso: #3691,#3692
(Table 3691)
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 character 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
SeeAlso: #3690
(Table 3692)
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
SeeAlso: #3690
--------O-E0----CL00-------------------------
INT E0 - REAL/32 - "P_TERMCPM" - TERMINATE CALLING PROCESS
CL = 00h
Return: AX = error code
FFFFh on failure
may destroy SI,DI???
Program: REAL/32 is the descendant of IMS Multiuser DOS, which in turn is
derived from DR Multiuser DOS and its predecessors (Concurrent DOS,
etc.)
Note: sets the exit code (ERRORLEVEL) to 00h
SeeAlso: INT 21/AH=00h
--------O-E0----CL01-------------------------
INT E0 - REAL/32 - "C_READ" - FETCH CHARACTER FROM THE DEFAULT CONSOLE
CL = 01h
Return: AX = character
may destroy SI,DI???
Notes: this function echos the character to the screen, expanding Tab
characters to the next multiple of eight columns; Ctrl-C is
ignored if the calling process can not terminate
the calling process is suspended until a character is available; if
the caller does not own the console, it is suspended until it
can attach to the console
SeeAlso: INT E0/CL=02h,INT E0/CL=06h,INT 21/AH=01h
--------O-E0----CL02-------------------------
INT E0 - REAL/32 - "C_WRITE" - WRITE CHARACTER TO DEFAULT CONSOLE
CL = 02h
DX = character
Return: nothing
may destroy SI,DI???
Note: Tab characters are expanded to blanks up to the next multiple of
eight columns
SeeAlso: INT E0/CL=01h,INT E0/CL=06h,INT 21/AH=02h
--------O-E0----CL03-------------------------
INT E0 - DR Multiuser DOS - "A_READ" - READ CHARACTER FROM DEFAULT AUX DEVICE
CL = 03h
Return: AL = ASCII character
may destroy SI,DI???
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
this function is also supported by REAL/32
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 DEFAULT AUX DEVICE
CL = 04h
DL = BYTE to write
Return: nothing
may destroy SI,DI,DH???
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----CL05-------------------------
INT E0 - REAL/32 - "L_WRITE" - WRITE CHARACTER TO DEFAULT LIST DEVICE
CL = 05h
DL = char to write
Return: nothing
may destroy SI,DI???
Note: if another process owns the list device, this call blocks until the
device becomes available
SeeAlso: INT 21/AH=05h
--------O-E0----CL06-------------------------
INT E0 - REAL/32 - "C_RAWIO" - PERFORM RAW I/O WITH DEFAULT CONSOLE
CL = 06h
DL = mode describing the operation to be performed
FFh get console input/status
FEh get console status
FDh get console input (blocking)
else output DL to the console as a character
Return: AX = returned value
for DL = FFh, the character or 00h if none available
for DL = FEh, 00h if no characters available, FFh if any available
for DL = FDh, the character read from the console
else AX = 0000h
may destroy SI,DI???
Notes: during raw I/O, the special characters ^C, ^O, ^P, and ^S are not
interpreted, but are passed through
if the virtual console is in ^S mode and the owning process calls
this function, the ^S state is cleared
SeeAlso: INT E0/CL=01h,INT E0/CL=02h,INT 21/AH=06h
--------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----CL09-------------------------
INT E0 - REAL/32 - "C_WRITESTR" - WRITE STRING TO DEFAULT CONSOLE
CL = 09h
DS:DX -> string
Return: nothing
may destroy SI,DI,DS???
Note: the string terminated with a '$' character (24h) by default; the
terminator may be changed with C_DELIMIT
tabs are expanded to the next multiple of eight columns
--------O-E0----CL0A-------------------------
INT E0 - REAL/32 - "C_READSTR" - READ STRING FROM DEFAULT CONSOLE
CL = 0Ah
DS:DX -> buffer for string (see #3693)
Return: nothing
Format of REAL/32 "C_READSTR" buffer:
Offset Size Description (Table 3693)
00h BYTE maximum number of characters buffer can hold
01h BYTE actual number of buffers read
02h N BYTEs input line
--------O-E0----CL0B-------------------------
INT E0 - REAL/32 - "C_STAT" - RETURN DEFAULT CONSOLE INPUT STATUS
CL = 0Bh
Return: AX = status
0000h no characters ready
0001h character available
may destroy SI,DI???
Note: after setting bit 0 of the console mode word with C_MODE, this function
will only return AX=0001h when the user presses Ctrl-C.
--------O-E0----CL0C-------------------------
INT E0 - REAL/32 - "S_BDOSVER" - GET BDOS VERSION
CL = 0Ch
Return: AX = version (see #3694)
may destroy SI,DI???
(Table 3694)
Values for REAL/32 BDOS version:
1432h - DR Concurrent PC DOS Version 3.2
1441h - DR Concurrent DOS Version 4.1
1450h - DR Concurrent DOS/XM Version 5.0
1463h - DR Multiuser DOS Release 5.0
1465h - DR Multiuser DOS Release 5.01
1466h - DR Multiuser DOS Release 5.1, IMS Multiuser DOS Enhanced Release 5.1
1467h - IMS Multiuser DOS Version 7.0, 7.1
1468h - IMS REAL/32 Version 7.50, 7.51
1469h - IMS REAL/32 Version 7.52, 7.53
14??h - IMS REAL/32 Version 7.6
--------O-E0----CL2F-------------------------
INT E0 - REAL/32 - "P_CHAIN" - CHAIN PROCESS
CL = 2Fh
[DTA] = ASCIZ command line for process to start
Return: AX = return code
0000h successful
FFFFh failed
may destroy SI,DI???
--------O-E0----CL35-------------------------
INT E0 R - REAL/32 - "MC_MAX" - CP-M/86 ALLOCATE MAXIMUM MEMORY
CL = 35h
DS:DX -> MCB (see #3695)
Return: AX = status
may destroy SI,DI,DS???
SeeAlso: INT E0/CL=39h
Format of REAL/32 MCB (Memory Control Block):
Offset Size Description (Table 3695)
00h WORD segment address of memory block
02h WORD length of block in paragraphs
04h BYTE reserved (0)
--------O-E0----CL36-------------------------
INT E0 R - REAL/32 - "MC_ABSMAX" - ALLOCATE MAXIMUM MEMORY SEGMENT ABSOLUTE
CL = 36h
DS:DX -> MCB (see #3695)
Return: AX = status
may destroy SI,DI,DS???
SeeAlso: INT E0/CL=39h
--------O-E0----CL37-------------------------
INT E0 R - REAL/32 - "MC_ALLOC" - CP-M/86 ALLOCATE MEMORY SEGMENT
CL = 37h
DS:DX -> MCB (see #3695)
Return: AX = status
may destroy SI,DI,DS???
SeeAlso: INT E0/CL=39h
--------O-E0----CL38-------------------------
INT E0 R - REAL/32 - "MC_ABSALLOC" - ALLOCATE MEMORY SEGMENT ABSOLUTE
CL = 38h
DS:DX -> MCB (see #3695)
Return: AX = status
may destroy SI,DI,DS???
SeeAlso: INT E0/CL=39h
--------O-E0----CL39-------------------------
INT E0 R - REAL/32 - "MC_FREE" - CP-M/86 FREE SPECIFIED MEMORY SEGMENT
CL = 39h
DS:DX -> MCB (see #3695)
Return: AX = status
may destroy SI,DI,DS???
SeeAlso: INT E0/CL=3Ah
--------O-E0----CL3A-------------------------
INT E0 R - REAL/32 - "MC_ALLFREE" - CP-M/86 FREE ALL MEMORY
CL = 3Ah
Return: nothing???
Desc: release all of the calling process's memory except the User Data Area
SeeAlso: INT E0/CL=39h
--------O-E0----CL3B-------------------------
INT E0 u - REAL/32 - "P_LOAD" - LOAD .CMD FILE INTO MEMORY
CL = 3Bh
???
Return: ???
Note: IMS does not document the details of this call because .CMD files are
supported for backward compatibility only
--------O-E0----CL40-------------------------
INT E0 - REAL/32 - "N_LOGON" - LOG ONTO A SERVER
CL = 40h
DS:DX -> LPB !!!
Return: AX = status (0000h,00FFh,07FFh,0DFFh,0EFFh,FFFFh) (see #3696)
may destroy SI,DI,DS???
(Table 3696)
Values for REAL/32 "N_LOGON" status:
0000h successful
00FFh server could not create shadow process
07FFh incorrect password
0CFFh not logged into specified server
0DFFh process already logged onto 16 servers,
LPB process not attached to network
0EFFh physical transmission prevented message or response from getting thru
network error during logoff
FFFFh calling process not attached to network
--------O-E0----CL41-------------------------
INT E0 - REAL/32 - "N_LOGON" - LOG OFF A SERVER
CL = 41h
DS:DX -> LPB !!!
Return: AX = status (0000h,0CFFh,0DFFh,0EFFh,FFFFh) (see #3696)
may destroy SI,DI,DS???
--------O-E0----CL44-------------------------
INT E0 - REAL/32 - "N_STAT" - GET NETWORK STATUS
CL = 44h
Return: AX = network status or 0FFFh on error
bit 8: calling process is attached to network
may destroy SI,DI???
--------O-E0----CL45-------------------------
INT E0 - REAL/32 - "N_RCT" - GET REQUESTOR CONFIGURATION TABLE
CL = 45h
DS:DX -> RCT Control Block !!!
Return: AX = status or error code (see #3697,#3696)
may destroy SI,DI,DS???
SeeAlso: INT E0/CL=47h
(Table 3697)
Values for REAL/32 "N_RCT" status:
0000h successful
0001h invalid local device
0002h invalid remote device
0003h no queue entry space
--------O-E0----CL47-------------------------
INT E0 - REAL/32 - "N_SCT" - GET SERVER CONFIGURATION TABLE
CL = 47h
DS:DX -> 112-byte buffer for Server Configuration Table !!!
Return: AX = status (0000h successful, else error code)
may destroy SI,DI,DS???
Note: the first byte of the SCT buffer is set to the desired server number
prior to calling this function
SeeAlso: INT E0/CL=45h
--------O-E0----CL48-------------------------
INT E0 - REAL/32 - "N_ERRMODE" - SET NETWORK ERROR MODE
CL = 48h
DL = new error mode
FFh return error in registers AX,BX,CX
FEh display message and return error
FDh display message and abort (default)
Return: CX = error code (0000h successful, FFFFh failed)
may destroy SI,DI???
Desc: specify how the REAL/32 Net Server responds to error numbers 0CFFh,
0DFFh, and 0EFFh (see #3696)
--------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----CL71-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - EXECUTE DOS-COMPATIBLE FUNCTIONS
CL = 71h
DS:DX -> parameter block (see !!!)
Return: AX = status
--------O-E0----CL86-------------------------
INT E0 - ConcCP/M,DR Multiuser DOS - "Q_MAKE" - CREATE MESSAGE QUEUE
CL = 86h
DS:DX -> queue descriptor (see #3698)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #3692)
SeeAlso: INT E0/CL=87h
Format of DR Multiuser DOS queue descriptor:
Offset Size Description (Table 3698)
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 #3699)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #3692)
SeeAlso: INT E0/CL=86h,INT E0/CL=89h
Format of DR Multiuser DOS queue parameter block:
Offset Size Description (Table 3699)
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 #3699)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #3692)
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 #3699)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #3692)
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 #3699)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #3692)
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 #3699)
Return: AX = status (0000h success, FFFFh failure)
CX = error code (see #3692)
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,INT 15/AX=1000h,INT 2F/AX=1680h
--------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)
Return: nothing
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
Return: nothing
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 #3700)
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 3700)
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 #3700)
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 #3701)
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 3701)
00h BYTE function (00h get, 01h set)
01h BYTE baud rate (see #3703) FFh = don't change/unknown
02h BYTE parity (see #3702)
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 3702)
Values for DR Multiuser DOS AUX parity:
00h none
01h odd
02h none
03h even
04h stick parity bit
FFh don't change/unknown
SeeAlso: #3701,#3703
(Table 3703)
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
SeeAlso: #3701,#3702
--------O-E0----CLB1-------------------------
INT E0 - DR Multiuser DOS - "A_CONTROL" - GET/SET AUX CONTROL PARAMETERS
CL = B1h
DS:DX -> AUX device control block (see #3704)
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 3704)
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
Return: nothing
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)
Return: nothing
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
Return: nothing
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)
Return: nothing
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)
Return: nothing
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
Return: nothing
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 (see #3705)
Return: buffer filled with 9x9 area of map centered on robot's position
(Table 3705)
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)
Return: nothing
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
Return: nothing
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
Return: nothing
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 #3706)
CX = advanced configuration (see #3707)
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 3706)
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 3707)
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
--------O-E1---------------------------------
INT E1 - MP/M-86, - ALTERNATE CP/M-86 FUNCTION CALLS
CL = function number (see #3690,#3691)
DS,DX = parameters
Return: as appropriate for function
CX is often the error code (see #3692)
Desc: used by some applications which alter CP/M functions while running a
child program, to store the original INT E0 vector before
intercepting INT E0
SeeAlso: #3690 at INT E0"CP/M"
----------E1---------------------------------
INT E1 - DeskMate (Tandy) - TASK DATA SEGMENTS (NOT A VECTOR!)
Desc: used to store data; the low word of the vector is the data segment for
the first task; the high word is the data segment of the second task
(DeskMate supports 2-way task switching between small- or
medium-model applications)
Program: DeskMate is a proprietary GUI from Tandy distributed with several
models of the Tandy 1000's, 2500's, 3000's, and laptops. Retail
and runtime versions also exist. Some Tandy's are designed to
boot directly into DeskMate.
SeeAlso: INT E0"DeskMate"
--------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
Return: nothing
SeeAlso: AX=0006h
--------r-E40006-----------------------------
INT E4 - Logitech Modula v2.0 - MonitorExit
AX = 0006h
Return: nothing
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
--------O-E600-------------------------------
INT E6 - Linux DOSEMU - INSTALLATION CHECK
AH = 00h
Return: AX = AA55h if installed
BH = major version number
BL = minor version number
CX = patchlevel
Notes: check for the BIOS date string "02/25/93" at F000:FFF5 before
calling this function. In addition, the segment address of this
vector should be F000h (for existing versions of DOSemu, the
vector is F000h:0E60h)
SeeAlso: AH=FFh
--------O-E601-------------------------------
INT E6 - Linux DOSEMU - REGISTER DUMP
AH = 01h
Return: nothing
SeeAlso: AH=00h
--------O-E602-------------------------------
INT E6 - Linux DOSEMU - SET I/O PORT PERMISSIONS
AH = 02h
BX = base I/O port address
CX = number of consecutive I/O ports
CF set to allow DOS to use ports
CF clear if DOS should not be allowed to use ports
Return: nothing
SeeAlso: AH=00h
--------O-E605-------------------------------
INT E6 - Linux DOSEMU - STARTUP BANNER
AH = 05h
Return: nothing
SeeAlso: AH=00h
--------O-E612-------------------------------
INT E6 - Linux DOSEMU - SET "HOGTHRESHOLD"
AH = 12h
BX = new "hogthreshold" (00h-99h)
Return: nothing
Desc: specify how much CPU time DOSEMU may use
SeeAlso: AH=00h
--------O-E622-------------------------------
INT E6 - Linux DOSEMU - GET EMS STATUS
AH = 22h
Return: ???
SeeAlso: AH=00h
--------O-E630-------------------------------
INT E6 - Linux DOSEMU - SET BOOTDISK FLAG
AH = 30h
BX = new flag state (0 = false, 1 = true)
Return: nothing
SeeAlso: AH=00h
--------O-E650-------------------------------
INT E6 - Linux DOSEMU - EXECUTE UNIX COMMAND
AH = 50h
ES:DX -> ASCIZ Unix command
SeeAlso: AH=00h,AH=51h
--------O-E651-------------------------------
INT E6 - Linux DOSEMU - EXECUTE DOS COMMAND FROM UNIX
AH = 51h
ES:DX -> ASCIZ DOS command
SeeAlso: AH=00h,AH=50h
--------O-E680-------------------------------
INT E6 - Linux DOSEMU - GET CURRENT UNIX DIRECTORY
AH = 80h
Return: ES:DX -> current Unix directory
AX = length of current directory name
SeeAlso: AH=00h,AH=81h
--------O-E681-------------------------------
INT E6 - Linux DOSEMU - CHANGE CURRENT UNIX DIRECTORY
AH = 81h
ES:DX -> ASCIZ directory name
Return: nothing
SeeAlso: AH=00h,AH=80h
--------O-E6FF-------------------------------
INT E6 - Linux DOSEMU - TERMINATE
AH = FFh
SeeAlso: AH=00h
--------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
Return: nothing
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
SeeAlso: INT F2"NetWare",INT F3"NetWare",INT F4"NetWare"
--------v-F1---------------------------------
INT F1 - VIRUS - "Violetta" - ???
Note: used but not chained by virus
SeeAlso: INT E0"VIRUS",INT FF"VIRUS"
----------F101-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-REGISTER" - INITIALIZE CAPI
AH = 01h
ES:BX -> buffer for CAPI's use (refer to note below)
CX = minimum number of pending messages
DX = maximum simultaneous Level 3 connections
SI = maximum concurrent received B3 data blocks
DI = maximum B3 data block size
Return: AX = CAPI-assigned application ID
0000h on error
BX = error number
1001h registration error
Range: INT 00 to INT FF, selectable by program parameter
Notes: the caller is required to provide at least 512 bytes of stack space
the CAPI interrupt handler begins with a header which is nearly
identical to the IBM Interrupt Sharing Protocol header
(see #2256 at INT 2D"AMIS"), except that the short jump instruction
to a hardware reset handler at offset 09h is replaced by the
signature bytes "IA"
the maximum length of a message is fixed at 180 bytes; the standard
document suggests using CX=10, DI=1, SI=7, and DI=130 for
applications which use only a single connection and standard
protocols
the total size of the application-provided buffer must be at least
180*CX + DX*SI*DI bytes
SeeAlso: AH=02h,INT F1/AL=01h
Index: installation check;Common ISDN API
----------F1--01-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_REGISTER" - INITIALIZE CAPI
AL = 01h
AH = CAPI version number * 10 (14h for v2.0)
ES:BX -> buffer for CAPI's use (refer to note below)
CX = number of bytes for message buffer
DX = maximum simultaneous logical (Level 3) connections
SI = maximum concurrent received B3 data blocks (min. 2)
DI = maximum B3 data block size (up to 2048 bytes)
Return: AX = CAPI-assigned application ID
0000h on error
BX = error number
1001h registration error
Range: INT 00 to INT FF, selectable by program parameter
Notes: the caller is required to provide at least 512 bytes of stack space
the CAPI interrupt handler begins with a header (see #3708) which is
nearly identical to the IBM Interrupt Sharing Protocol header
(see #2256 at INT 2D"AMIS"), except that the short jump instruction
to a hardware reset handler at offset 09h is zeroed out and the
entire header is inexplicably shortened by one byte
the standard document suggests using 1024 + (1024*DX) bytes for the
message buffer for typical applications
the total size of the application-provided buffer must be at least
CX + DX*SI*DI bytes
SeeAlso: AH=01h,INT F1/AL=02h
Index: installation check;Common ISDN API
Format of CAPI v2.0 interrupt handler entry point:
Offset Size Description (Table 3708)
00h 2 BYTEs short jump to actual start of interrupt handler, immediately
following this data block (EBh 0Fh)
02h DWORD address of next handler in chain
06h WORD signature 424Bh
08h BYTE EOI flag (80h)
80h primary hardware interrupt handler (will issue EOI)
09h 2 BYTEs reserved (0)
(is short jump to hardware reset routine in ISP header)
0Bh 4 BYTEs signature "CAPI"
0Fh 2 BYTEs two-digit CAPI version number in ASCII ('20')
SeeAlso: #2256 at INT 2D
----------F102-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-RELEASE" - UNREGISTER FROM CAPI
AH = 02h
DX = application ID (see AH=01h)
Return: AX = status (0000h,1002h) (see #3709)
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=01h,INT F1/AL=02h
(Table 3709)
Values for CAPI v1.1 error code:
0000h successful
1001h registration error
1002h invalid application ID
1003h message too small or incorrectly coded message number
1004h invalid command or subcommand
1005h message queue full
1006h message queue empty
1007h message(s) lost due to queue overflow
1008h error uninstalling
SeeAlso: #3710
----------F1--02-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_RELEASE" - UNREGISTER FROM CAPI
AL = 02h
AH = CAPI version number * 10 (14h for v2.0)
DX = application ID (see INT F1/AL=01h)
Return: AX = status (0000h,11xxh) (see #3710)
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=02h,INT F1/AL=01h,INT F1/AL=03h
(Table 3710)
Values for CAPI v2.0 error code:
0000h successful
1001h too many applications
1002h logical block size too small (must be at least 128 bytes)
1003h buffer > 64K
1004h message buffer too small (minimum 1024 bytes)
1005h too many logical connections requested
1006h reserved
1007h could not register because CAPI busy, try again
1008h OS resource unavailable (out of memory, etc.)
1009h COMMON-ISDN-API not installed
100Ah controller does not support external equipment
100Bh controller supports only external equipment
1101h invalid application ID
1102h illegal command or subcommand, or message too short
1103h message queue full
1104h queue empty
1105h queue overflowed (message lost)
1106h unknown notification parameter
1107h could not accept message because CAPI busy, try again
1108h OS resource unavailable (out of memory, etc.)
1109h COMMON-ISDN-API not installed
110Ah controller does not support external equipment
110Bh controller supports only external equipment
2001h message not supported in current state
2002h illegal controller/PLCI/NCCI
2003h out of PLCI
2004h out of NCCI
2005h out of LISTEN
2006h out of FAX resources (T.30 protocol)
2007h illegal message parameter coding
3001h unsupported B1 protocol
3002h unsupported B2 protocol
3003h unsupported B3 protocol
3004h unsupported B1 protocol parameter
3005h unsupported B2 protocol parameter
3006h unsupported B3 protocol parameter
3007h unsupported B protocol combination
3008h NCPI not supported
3009h unknown CIP value
300Ah unsupported flags (reserved bits set)
300Bh unsupported facility
300Ch data length not supported by current protocol
300Dh reset procedure not supported by current protocol
SeeAlso: #3709
----------F103-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-PUT-MESSAGE"
AH = 03h
DX = application ID (see AH=01h)
ES:BX -> message to be sent (see #3711)
Return: AX = status (0000h,1002h,1003h,1004h,1005h) (see #3709)
Notes: the caller is required to provide at least 512 bytes of stack space
the message buffer may be reused as soon as this call returns
SeeAlso: AH=01h,AH=04h,INT F1/AL=03h
Format of CAPI message:
Offset Size Description (Table 3711)
00h WORD total message length, including header
02h WORD application ID (see AH=01h)
04h BYTE command (see #3712,#3713)
05h BYTE subcommand (see #3712,#3713)
06h WORD message sequence number
0000h-7FFFh messages from application to CAPI (and replies)
8000h-FFFFh messages from CAPI to application (and replies)
08h var message data (max 172 bytes for v1.1 only)
(Table 3712)
Values for CAPI v1.1 message command/subcommand:
Cmd/SubCmd Name Description
01h/00h RESET-B3-REQ request resetting of a Level 3 connection
01h/01h RESET-B3-CONF confirm Level 3 connection reset
01h/02h RESET-B3-IND indication from CAPI that Level 3 conn. reset
01h/03h RESET-B3-RESP confirm receipt of RESET-B3-IND
02h/00h CONNECT-REQ establish B-channel connection
02h/01h CONNECT-CONF confirm start of connection establishment
02h/02h CONNECT-IND indication from CAPI of incoming connection
02h/03h CONNECT-RESP accept incoming connection
03h/02h CONNECT-ACTIVE-IND indication that B-channel connection complete
03h/03h CONNECT-ACTIVE-RESP confirm connection-complete indication
04h/00h DISCONNECT-REQ request shutdown of B-channel connection
04h/01h DISCONNECT-CONF confirm shutdown of B-channel connection
04h/02h DISCONNECT-IND indication that B-channel is shutting down
04h/03h DISCONNECT-RESP confirm that application knows of shutdown
05h/00h LISTEN-REQ enable indication of incoming connections
05h/01h LISTEN-CONF confirm enabling of incoming conn. indication
06h/00h GET-PARAMS-REQ request B-channel parameters
06h/01h GET-PARAMS-CONF return B-channel parameters
07h/00h INFO-REQ set B-channel info to be signalled to app
07h/01h INFO-CONF confirm B-channel info signalling
07h/02h INFO-IND signal B-channel events to application
07h/03h INFO-CONF confirm receipt of INFO-IND
08h/00h DATA-REQ send D-channel data
08h/01h DATA-CONF confirm receipt of DATA-REQ
08h/02h DATA-IND receive D-channel data
08h/03h DATA-RESP confirm receipt fo DATA-IND
09h/00h CONNECT-INFO-REQ request connection information
09h/01h CONNECT-INFO-CONF return connection information
40h/00h SELECT-B2-PROTOCOL-REQ select Level 2 protocol
40h/01h SELECT-B2-PROTOCOL-CONF confirm receipt of SELECT-B2-PROTOCOL-REQ
80h/00h SELECT-B3-PROTOCOL-REQ select Level 3 protocol
80h/01h SELECT-B3-PROTOCOL-CONF confirm receipt of SELECT-B3-PROTOCOL-REQ
81h/00h LISTEN-B3-REQ enable notification of incoming Level 3 calls
81h/01h LISTEN-B3-CONF confirm receipt of LISTEN-B3-REQ
82h/00h CONNECT-B3-REQ establish Level 3 connection
82h/01h CONNECT-B3-CONF confirm start of connection establishment
82h/02h CONNECT-B3-IND indication of incoming Level 3 connection
82h/03h CONNECT-B3-RESP accept incoming connection
83h/02h CONNECT-B3-ACTIVE-IND indication that Level 3 connection complete
83h/03h CONNECT-B3-ACTIVE-RESP confirm connection-complete indication
84h/00h DISCONNECT-B3-REQ request shutdown of Level 3 connection
84h/01h DISCONNECT-B3-CONF confirm shutdown of Level 3 connection
84h/02h DISCONNECT-B3-IND indication that Level 3 is shutting down
84h/03h DISCONNECT-B3-RESP confirm that application knows of shutdown
85h/00h GET-B3-PARAMS-REQ request Level 3 parameters
85h/01h GET-B3-PARAMS-CONF return Level 3 parameters
86h/00h DATA-B3-REQ send data on Level 3
86h/01h DATA-B3-CONF confirm sending of Level 3 data
86h/02h DATA-B3-IND indication of incoming Level 3 data
86h/03h DATA-B3-RESP confirm receipt of Level 3 data
87h/02h HANDSET-IND indication of Handset events
87h/03h HANDSET-RESP confirm receipt of Handset event
FFh/00h MANUFACTURER-REQ vendor-specific request
FFh/01h MANUFACTURER-CONF vendor-specific request confirmation
FFh/02h MANUFACTURER-IND vendor-specific notification
FFh/03h MANUFACTURER-RESP vendor-specific notification confirmation
SeeAlso: #3711,#3713
----------F1--03-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_PUT_MESSAGE"
AL = 03h
AH = CAPI version number * 10 (14h for v2.0)
DX = application ID (see INT F1/AL=01h)
ES:BX -> message to be sent (see #3711)
Return: AX = status (0000h,11xxh) (see #3710)
Notes: the caller is required to provide at least 512 bytes of stack space
the message buffer may be reused as soon as this call returns
SeeAlso: AH=03h,INT F1/AL=01h,INT F1/AL=04h
(Table 3713)
Values for CAPI v2.0 message command/subcommand:
Cmd/SubCmd Name Description
01h/80h ALERT_REQ indicate compatibility with incoming calls
01h/81h ALERT_CONF confirm receipt of ALERT_REQ
02h/80h CONNECT_REQ establish B-channel connection
02h/81h CONNECT_CONF confirm start of connection establishment
02h/82h CONNECT_IND indication from CAPI of incoming connection
02h/83h CONNECT_RESP accept incoming connection
03h/82h CONNECT_ACTIVE_IND indication that B-channel connection complete
03h/83h CONNECT_ACTIVE_RESP confirm connection-complete indication
04h/80h DISCONNECT_REQ request shutdown of B-channel connection
04h/81h DISCONNECT_CONF confirm shutdown of B-channel connection
04h/82h DISCONNECT_IND indication that B-channel is shutting down
04h/83h DISCONNECT_RESP confirm that application knows of shutdown
05h/80h LISTEN_REQ enable signalling on incoming events
05h/81h LISTEN_CONF confirm enabling of incoming event signalling
08h/80h INFO_REQ send protocol information for physical connect
08h/81h INFO_CONF confirm INFO_REQ
08h/82h INFO_IND indicate event for physical connection
08h/83h INFO_CONF confirm receipt of INFO_IND
41h/80h SELECT_B_PROTOCOL_REQ change protocol on already-active connect
41h/81h SELECT_B_PROTOCOL_CONF confirm receipt of SELECT_B_PROTOCOL_REQ
80h/80h FACILITY_REQ control optional facilities
80h/81h FACILITY_CONF confirm acceptance of FACILITY_REQ
80h/82h FACILITY_IND indicate facility-dependent event
80h/83h FACILITY_RESP confirm receipt of FACILITY_IND
82h/80h CONNECT_B3_REQ establish Level 3 connection
82h/81h CONNECT_B3_CONF confirm start of connection establishment
82h/82h CONNECT_B3_IND indication of incoming Level 3 connection
82h/83h CONNECT_B3_RESP accept incoming connection
83h/82h CONNECT_B3_ACTIVE_IND indication that Level 3 connection complete
83h/83h CONNECT_B3_ACTIVE_RESP confirm connection-complete indication
84h/80h DISCONNECT_B3_REQ request shutdown of Level 3 connection
84h/81h DISCONNECT_B3_CONF confirm shutdown of Level 3 connection
84h/82h DISCONNECT_B3_IND indication that Level 3 is shutting down
84h/83h DISCONNECT_B3_RESP confirm that application knows of shutdown
85h/80h GET_B3_PARAMS_REQ request Level 3 parameters
85h/81h GET_B3_PARAMS_CONF return Level 3 parameters
86h/80h DATA_B3_REQ send data on Level 3
86h/81h DATA_B3_CONF confirm sending of Level 3 data
86h/82h DATA_B3_IND indication of incoming Level 3 data
86h/83h DATA_B3_RESP confirm receipt of Level 3 data
87h/80h RESET_B3_REQ request resetting of a logical connection
87h/81h RESET_B3_CONF confirm logical connection reset
87h/82h RESET_B3_IND indication from CAPI that logical conn. reset
87h/83h RESET_B3_RESP confirm receipt of RESET_B3_IND
88h/82h CONNECT_B3_T90_ACTIVE_IND indicate switch from T.70 to T.90
88h/83h CONNECT_B3_T90_ACTIVE_RESP confirm receipt of T90_ACTIVE_IND
FFh/80h MANUFACTURER_REQ vendor-specific request
FFh/81h MANUFACTURER_CONF vendor-specific request confirmation
FFh/82h MANUFACTURER_IND vendor-specific notification
FFh/83h MANUFACTURER_RESP vendor-specific notification confirmation
SeeAlso: #3711,#3712
----------F104-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MESSAGE"
AH = 04h
DX = application ID (see AH=01h)
Return: AX = status (0000h,1002h,1006h,1007h) (see #3709)
ES:BX -> message if successful (see #3711)
Range: INT 00 to INT FF, selectable by program parameter
Notes: the caller is required to provide at least 512 bytes of stack space
the returned message may be overwritten by the next call to this
function
SeeAlso: AH=03h
----------F1--04-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MESSAGE"
AL = 04h
AH = CAPI version number * 10 (14h for v2.0)
DX = application ID (see AH=01h)
Return: AX = status (0000h,11xxh) (see #3710)
ES:BX -> message if successful (see #3711)
Range: INT 00 to INT FF, selectable by program parameter
Notes: the caller is required to provide at least 512 bytes of stack space
the returned message may be overwritten by the next call to this
function
SeeAlso: AH=04h,INT F1/AL=03h
----------F105-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-SET-SIGNAL" - SIGNAL HANDLING
AH = 05h
DX = application ID (see AH=01h)
ES:BX -> signal handler or 0000h:0000h to disable
Return: AX = status (0000h,1002h) (see #3709)
Notes: the caller is required to provide at least 512 bytes of stack space
the signal handler is called as though it were an interrupt, with
interrupts disabled; the handler must preserve all registers and
return with an IRET
SeeAlso: AH=01h
----------F1--05-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_SET_SIGNAL" - SIGNAL HANDLING
AL = 05h
AH = CAPI version number * 10 (14h for v2.0)
DX = application ID (see AH=01h)
ES:BX -> signal handler or 0000h:0000h to disable
SI:DI = parameter to pass to signal handler
Return: AX = status (0000h,11xxh) (see #3710)
Notes: the caller is required to provide at least 512 bytes of stack space
the signal handler is called as though it were an interrupt, with
interrupts disabled and DX,SI,DI set as they were when this function
was called; the handler must preserve all registers and return with
an IRET
the signal handler may call CAPI_PUT_MESSAGE, CAPI_GET_MESSAGE, and
CAPI_SET_SIGNAL
SeeAlso: INT F1/AL=01h
----------F106-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-DEINSTALL" - UNINSTALL
AH = 06h
BX = force flag
0000h normal uninstall
0001h forced uninstall
Return: AX = status (0000h,1008h) (see #3709)
Desc: reset ISDN controller, close all ISDN Level 1 connections except for
telephone connections
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: INT F1/AL=01h,INT F1/AH=01h
----------F1F0-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-MANUFACTURER"
AH = F0h
ES:BX -> 64-byte buffer for manufacturer identification information
Return: ES:BX buffer filled with ASCIZ idnetification string
Range: INT 00 to INT FF, selectable by program parameter
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=01h,AH=F1h,AH=F2h,AH=FFh,INT F1/AL=F0h
----------F1--F0-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_MANUFACTURER"
AL = F0h
AH = CAPI version number * 10 (14h for v2.0)
ES:BX -> 64-byte buffer for manufacturer identification information
Return: ES:BX buffer filled with ASCIZ idnetification string
Range: INT 00 to INT FF, selectable by program parameter
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=F0h,INT F1/AL=01h,INT F1/AL=F1h,INT F1/AL=F2h,INT F1/AL=FFh
----------F1F1-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-VERSION"
AH = F1h
ES:BX -> 64-byte buffer for CAPI version number
Return: ES:BX buffer filled with ASCIZ version string
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=01h,AH=F0h,AH=F2h,AH=FFh
----------F1--F1-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_VERSION"
AL = F1h
AH = CAPI version number * 10 (14h for v2.0)
Return: AH = CAPI major version number
AL = CAPI minor version number
DH = vendor-specific major version
DL = vendor-specific minor version
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=F1h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AL=FFh
----------F1F2-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-GET-SERIAL-NUMBER"
AH = F2h
ES:BX -> 64-byte buffer for CAPI serial number
Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
string if no serial number
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=FFh
----------F1--F2-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_SERIAL_NUMBER"
AL = F2h
AH = CAPI version number * 10 (14h for v2.0)
ES:BX -> 64-byte buffer for CAPI serial number
Return: ES:BX buffer filled with ASCIZ serial number (seven digits), empty
string if no serial number
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=F2h,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AL=F3h
----------F1--F3-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_GET_PROFILE" - GET CAPABILITIES
AL = F3h
AH = CAPI version number * 10 (14h for v2.0)
ES:BX -> 64-byte buffer for CAPI capabilities (see #3714)
CX = controller number (01h-06h) or 0000h to get number of controllers
Return: AX = status (0000h,11xxh) (see #3710)
ES:BX buffer filled if successful
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F2h,INT F1/AH=FFh
Format of CAPI v2.0 capabilities:
Offset Size Description (Table 3714)
00h WORD number of installed controllers
02h WORD number of supported B channels
04h DWORD global options (see #3715)
08h DWORD B1 protocol support flags (see #3716)
0Ch DWORD B2 protocol support flags (see #3717)
10h DWORD B3 protocol support flags (see #3718)
14h 24 BYTEs reserved for CAPI use
2Ch 20 BYTEs vendor-specific information
Bitfields for CAPI v2.0 global options:
Bit(s) Description (Table 3715)
0 internal controller supported
1 external controller supported
2 handset supported (only if bit 1 also set)
3 DTMF supported
4-31 reserved (0)
SeeAlso: #3714
Bitfields for CAPI v2.0 B1 protocol support:
Bit(s) Description (Table 3716)
0 64k bps with HDLC framing (required, always set)
1 64k bps bit-transparent operation with network byte framing
2 V.110 asynchronous with start/stop byte framing
3 V.110 synchronous with HDLC framing
4 T.30 modem for group 3 FAX
5 64k bps inverted with HDLC framing
6 56k bps bit-transparent operation with network byte framing
7-31 reserved (0)
SeeAlso: #3714
Bitfields for CAPI v2.0 B2 protocol support:
Bit(s) Description (Table 3717)
0 ISO 7776 (X.75 SLP) (required, always set)
1 transparent
2 SDLC
3 Q.921 LAPD (D-channel X.25)
4 T.30 for group 3 FAX
5 point-to-point protocol (PPP)
6 transparent (ignoring B1 framing errors)
7-31 reserved (0)
SeeAlso: #3714
Bitfields for CAPI v2.0 B3 protocol support:
Bit(s) Description (Table 3718)
0 transparent (required, always set)
1 T.90NL with T.70NL compatibility
2 ISO 8208 (X.25 DTE-DTE)
3 X.25 DCE
4 T.30 for group 3 FAX
5-31 reserved (0)
SeeAlso: #3714
----------F1FF-------------------------------
INT F1 - Common ISDN API (CAPI) v1.1 - "API-MANUFACTURER" - VENDOR-SPECIFIC
AH = FFh
other registers vendor-specific
Return: registers vendor-specific
Range: INT 00 to INT FF, selectable by program parameter
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=01h,AH=F0h,AH=F1h,AH=F2h,INT F1/AH=FFh
----------F1--FF-----------------------------
INT F1 - Common ISDN API (CAPI) v2.0 - "CAPI_MANUFACTURER" - VENDOR-SPECIFIC
AL = FFh
AH = CAPI version number * 10 (14h for v2.0)
other registers vendor-specific
Return: registers vendor-specific
Range: INT 00 to INT FF, selectable by program parameter
Notes: the caller is required to provide at least 512 bytes of stack space
SeeAlso: AH=FFh,INT F1/AL=01h,INT F1/AL=F0h,INT F1/AL=F1h,INT F1/AL=F2h
--------*-F2---------------------------------
INT F2 - reserved for user interrupt
--------s-F2---------------------------------
INT F2 - Andy C. McGuire SPEECH.COM/SAY.COM
SeeAlso: INT F1"SPEECH"
--------N-F2---------------------------------
INT F2 - NetWare Remote Boot - ORIGINAL INT 13
SeeAlso: INT F1"NetWare",INT F3"NetWare",INT F4"NetWare"
----------F2---------------------------------
INT F2 - ICCTSR 1.0 - ImageCapture COLOR Developer's Kit - API
AH = function number (see #3719)
???
Return: ???
Program: ImageCapture is a product of International Computers
SeeAlso: INT F3"ICCTSR"
(Table 3719)
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
SeeAlso: INT F2"user",INT F4"user"
--------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/ES=0000h
----------F3---------------------------------
INT F3 - ICCTSR 1.0 - HANDSHAKE ID VECTOR
Program: ImageCapture is a product of International Computers
SeeAlso: INT F2"ICCTSR"
--------N-F3---------------------------------
INT F3 - NetWare Remote Boot - BOOT ROM'S INT 13 HANDLER
SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F4"NetWare"
--------*-F4---------------------------------
INT F4 - reserved for user interrupt
SeeAlso: INT F3"user",INT F5"user"
--------T-F4---------------------------------
INT F4 - DoubleDOS - GIVE UP REST OF CURRENT CLOCK TICK AND ALL OF NEXT TICK
SeeAlso: INT 21/AH=EEh"DoubleDOS",INT F5"DoubleDOS",INT FE"DoubleDOS"
--------N-F4---------------------------------
INT F4 - NetWare Remote Boot - ???
SeeAlso: INT F1"NetWare",INT F2"NetWare",INT F3"NetWare"
--------*-F5---------------------------------
INT F5 - reserved for user interrupt
SeeAlso: INT F4"user",INT F6"user"
--------T-F5---------------------------------
INT F5 - DoubleDOS - ???
SeeAlso: INT F4"DoubleDOS",INT F6"DoubleDOS"
--------*-F6---------------------------------
INT F6 - reserved for user interrupt
SeeAlso: INT F5"user",INT F7"user"
--------T-F6---------------------------------
INT F6 - DoubleDOS - ???
SeeAlso: INT F5"DoubleDOS",INT F7"DoubleDOS"
--------*-F7---------------------------------
INT F7 - reserved for user interrupt
SeeAlso: INT F6"user"
--------T-F7---------------------------------
INT F7 - DoubleDOS - ???
SeeAlso: INT F6"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
Return: nothing
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
Return: nothing
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
Return: nothing
----------F704-------------------------------
INT F7 - FSBBS 2.0 - PASSDATA BUFFER
AH = 04h
AL = function
00h get PassData buffer contents
DS:DX -> buffer for PassData contents
Return: DS:DX buffer filled
01h set PassData contents
DS:DX -> buffer containing new PassData
CH = length of data in buffer
Return: nothing
----------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
???
Return: nothing
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 - Sanyo MBC-550/555 - IRQ0 - 100 HZ INTERRUPT
Note: normally masked off at 8259 interrupt controller
SeeAlso: INT 08"IRQ0",INT F9"Sanyo",INT FA"Sanyo"
--------T-F8---------------------------------
INT F8 - DoubleDOS - ???
--------*-F9---------------------------------
INT F9 - reserved for user interrupt
--------T-F9---------------------------------
INT F9 - DoubleDOS - ???
--------h-F9---------------------------------
INT F9 - Sanyo MBC-550/555 - IRQ1 - ???
Note: documented as "for system use only"; normally enabled at the 8259
SeeAlso: INT 09"IRQ1",INT F8"Sanyo",INT FA"Sanyo"
--------*-FA---------------------------------
INT FA - reserved for user interrupt
--------h-FA---------------------------------
INT FA - Sanyo MBC-550/555 - IRQ2 - SERIAL PORT USART INTERRUPT
Note: this vector is not used on the Tandy 1000TL
SeeAlso: INT 0A"IRQ2",INT F9"Sanyo",INT FB"Sanyo"
--------T-FA---------------------------------
INT FA - DoubleDOS - TURN OFF TIMESHARING
SeeAlso: INT 21/AH=EAh"DoubleDOS",INT FB"DoubleDOS"
----------FA---------------------------------
INT FA P - ASM Edit - INSTALLATION CHECK
Program: ASM Edit is a shareware programmer's editor
Note: ASM Edit hooks this vector in protected mode to allow DPMI programs
to detect whether they were run while shelled to DOS from ASM Edit
Format of ASM Edit signature block:
Offset Size Description (Table 3720)
00h BYTE CFh (IRET)
01h 8 BYTEs signature "ASM Edit" (no trailing NUL)
--------*-FB---------------------------------
INT FB - reserved for user interrupt
--------h-FB---------------------------------
INT FB - Sanyo MBC-550/555 - IRQ3 - KEYBOARD USART RECEIVE INTERRUPT
SeeAlso: INT 0B"IRQ3",INT FA"Sanyo",INT FC"Sanyo"
--------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"
--------h-FC---------------------------------
INT FC - Sanyo MBC-550/555 - IRQ4 - PRINTER READY INTERRUPT
Note: normally masked off at the 8259 interrupt controller
SeeAlso: INT 0C"IRQ4",INT FB"Sanyo",INT FD"Sanyo"
--------*-FD---------------------------------
INT FD - reserved for user interrupt
--------T-FD---------------------------------
INT FD - DoubleDOS - ???
--------h-FD---------------------------------
INT FD - Sanyo MBC-550/555 - IRQ5 - FLOPPY DISK CONTROLLER
SeeAlso: INT 0D"IRQ5",INT FC"Sanyo",INT FE"Sanyo"
--------S-FD---------------------------------
INT FD - TFPCX - INSTALLATION CHECK
AH = function (also 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
Return: nothing
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
--------h-FE---------------------------------
INT FE - Sanyo MBC-550/555 - IRQ6 - 8087 COPROCESSOR INTERRUPT
Note: normally masked off at the 8259 interrupt controller
SeeAlso: INT 0E"IRQ6",INT FD"Sanyo",INT FF"Sanyo"
--------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"
--------h-FF---------------------------------
INT FF - Sanyo MBC-550/555 - IRQ7 - USER INTERRUPT FOR EXTERNAL INTERRUPT
Note: normally masked off at the 8259 interrupt controller
SeeAlso: INT 0F"IRQ7",INT FE"Sanyo"
--------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)
SeeAlso: #3721
(Table 3721)
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"XMS")
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"
--------V-FF----BX0000-----------------------
INT FF - PC/FORTH - GRAPHICS API - VIDEO STATUS CHANGE
BX = 0000h
DS:SI -> FORTH program counter
SS:BP -> FORTH parameter stack
SS:SP -> FORTH return stack
DS:DX -> FORTH video parameter area
Desc: called to inform graphics driver of any status changes such as video
mode changes, character color changes, graphics XOR mode turned on
or off, etc.; also used as an installation check
Index: installation check;PC/FORTH
--------V-FF---------------------------------
INT FF - PC/FORTH - GRAPHICS API
BX = function number
0001h function REDRAW
0002h function !PEL
0003h function @PEL
0004h function LINE
0005h function ARC
0006h function @BLOCK
0007h function !BLOCK
0008h function FLOOD
DS:SI -> FORTH program counter
SS:BP -> FORTH parameter stack
SS:SP -> FORTH return stack
details of parameters not available
Return: AX,BX,CX,DX,ES,DI may be destroyed
Note: these functions all display an error message if the graphics routines
are not resident
--------!---Admin----------------------------
Highest Table Number = 3723
--------!---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
quartet of archives named INTER55A through INTER55D (preferably the original
authenticated PKZIP archives), the utility programs in a fifth archive
called INTER55E.ZIP, the WinHelp-related programs in a sixth archive
named INTER55F.ZIP, and the non-WinHelp hypertext programs in a seventh archive
names INTER55G.ZIP.
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997 Ralf Brown
--------!---CONTACT_INFO---------------------
Internet: ralf@pobox.com (currently forwards to ralf@telerama.lm.com)
UUCP: {uunet,harvard}!pobox.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:ralf@pobox.com