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 [*] 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 , 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 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 + +) and K3PLUS' transparent mode (as with ++). 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 fr 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 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 [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=". 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 fr 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 (v1.60) saved monitor address (v1.70) 3Ah 12 WORDs saved register values on last popup entry (for 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 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 fr 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