home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-06-05 | 226.3 KB | 6,339 lines |
- Interrupt List, part 3 of 9
- This compilation is Copyright (c) 1989,1990,1991,1992,1993 Ralf Brown
- --------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.
- SeeAlso: AH=01h,AH=05h,AH=10h,AH=20h,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 in the process of checking whether a
- non-extended keystroke is available
- 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 below)
- SeeAlso: AH=12h,AH=22h,INT 17/AH=0Dh,INT 18/AH=02h
-
- Bitfields for shift flags:
- bit 7 Insert active
- bit 6 CapsLock active
- bit 5 NumLock active
- bit 4 ScrollLock active
- bit 3 Alt key pressed (either Alt on 101/102-key keyboards)
- bit 2 Ctrl key pressed (either Ctrl on 101/102-key keyboards)
- bit 1 left shift key pressed
- bit 0 right shift key pressed
- --------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 (see above)
- BH = delay (see above)
- Note: use INT 16/AH=09h to determine whether some of the subfunctions are
- supported
- SeeAlso: INT 16/AH=09h
- --------B-1604-------------------------------
- INT 16 - KEYBOARD - SET KEYCLICK (PCjr only)
- AH = 04h
- AL = keyclick state
- 00h off
- 01h on
- SeeAlso: AH=03h
- --------B-1605-------------------------------
- INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER (AT/PS w enh keybd only)
- AH = 05h
- CH = scan code
- CL = ASCII character
- Return: AL = 00h if successful
- 01h if keyboard buffer full
- Note: under DESQview, the following "keystrokes" invoke the following
- actions when they are read from the keyboard buffer:
- 38FBh or FB00h switch to next window (only if main menu
- 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
- SeeAlso: AH=00h,AH=71h,AH=FFh,INT 15/AX=DE10h
- --------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: ???
- Note: called by DOS 3.2 KEYBxx.COM
- SeeAlso: AH=92h,AH=A2h
- --------B-1609-------------------------------
- INT 16 - KEYBOARD - GET KEYBOARD FUNCTIONALITY
- AH = 09h
- Return: AL = supported keyboard functions (see below)
- Note: this function is only available if bit 6 of the second feature byte
- returned by INT 15/AH=C0h is set
- 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 7 reserved
- bit 6 INT 16/AH=20h-22h supported (122-key keyboard support)
- bit 5 INT 16/AH=10h-12h supported (enhanced keyboard support)
- bit 4 INT 16/AH=0Ah supported
- bit 3 INT 16/AX=0306h supported
- bit 2 INT 16/AX=0305h supported
- bit 1 INT 16/AX=0304h supported
- bit 0 INT 16/AX=0300h supported
- --------B-160A-------------------------------
- INT 16 - KEYBOARD - GET KEYBOARD ID
- AH = 0Ah
- Return: BX = keyboard ID or 0000h if no keyboard attached
- Note: check return value from AH=09h to determine whether this function is
- supported
- SeeAlso: AH=09h
- --------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
- --------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 below)
- AH = shift flags 2 (see below)
- 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
- SeeAlso: AH=02h,AH=09h,AH=22h,AH=51h,INT 17/AH=0Dh
-
- Bitfields for shift flags 1:
- bit 7 Insert active
- bit 6 CapsLock active
- bit 5 NumLock active
- bit 4 ScrollLock active
- bit 3 Alt key pressed (either Alt on 101/102-key keyboards)
- bit 2 Ctrl key pressed (either Ctrl on 101/102-key keyboards)
- bit 1 left shift key pressed
- bit 0 right shift key pressed
-
- Bitfields for shift flags 2:
- bit 7 SysRq key pressed
- bit 6 CapsLock pressed
- bit 5 NumLock pressed
- bit 4 ScrollLock pressed
- bit 3 right Alt key pressed
- bit 2 right Ctrl key pressed
- bit 1 left Alt key pressed
- bit 0 left Ctrl key pressed
- --------B-1620-------------------------------
- INT 16 - KEYBOARD - GET 122-KEY KEYSTROKE (122-key kbd support only)
- AH = 20h
- Return: AH = BIOS scan code (see AH=10h for details)
- 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-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
- SeeAlso: AH=01h,AH=09h,AH=11h,AH=20h,AH=21h
- --------B-1622-------------------------------
- INT 16 - KEYBOARD - GET 122-KEY SHIFT STATUS (122-key kbd support only)
- AH = 22h
- Return: AL = shift flags 1 (see AH=12h)
- AH = shift flags 2 (see AH=12h)
- Note: use AH=09h to determine whether this function is supported
- SeeAlso: AH=02h,AH=09h,AH=12h,AH=20h,AH=21h
- --------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
- bit 0: ISO code
- bit 1: pause
- bit 2: linefeed
- bit 3: ANSI sequences
- CX = selected country code (33 = France, 49 = Germany, etc)
- DX = baudrate divisor (115200/DX = baudrate)
- SeeAlso: AX=4500h
- --------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-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
- SeeAlso: AX=5001h,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
- 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 AH=12h)
- AH = Kana lock (00h off, 01h on)
- SeeAlso: AH=02h,AH=12h,AH=22h
- --------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: INT 1A/AX=3601h
- --------U-1655FF-----------------------------
- INT 16 - Swap Utilities - ???
- AX = 55FFh
- BX >= 0004h
- CX = function
- 0000h set ??? flag
- other clear ??? flag
- Note: present in SWAPSH and SWAPDT v1.77j, distributed with PC Tools 7
- --------U-166969BX6968-----------------------
- INT 16 - PC Tools v5.1+ BACKTALK - UNHOOK
- AX = 6969h
- BX = 6968h
- Return: resident code unhooked, but not removed from memory
- --------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"
- ----------166A6B-----------------------------
- INT 16 U - FastJuice - DISABLE/UNLOAD???
- AX = 6A6Bh
- Return: ???
- Program: FastJuice is a resident battery-power monitor by SeaSide Software
- SeeAlso: AX=7463h
- --------b-166F00BX0000-----------------------
- INT 16 - HP Vectra - ??? - INSTALLATION CHECK
- AX = 6F00h
- BX = 0000h
- Return: BX = 4850h if present
- Note: called by recent MS Mouse drivers
- --------b-166F0D-----------------------------
- INT 16 - HP Vectra - ???
- AX = 6F0Dh
- ???
- Return: ???
- Note: called by MS Windows HPSYSTEM.DRV and HPEBIOS.386
- SeeAlso: AX=6F0Eh
- --------b-166F0E-----------------------------
- INT 16 - HP Vectra - ???
- AX = 6F0Eh
- ???
- Return: ???
- Note: called by MS Windows HPSYSTEM.DRV and HPEBIOS.386
- SeeAlso: AX=6F0Dh
- --------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 below)
- Program: FAKEY is a keystroke faking utility by System Enhancement Associates
- SeeAlso: INT 15/AX=1019h
-
- Format of tone array entries:
- Offset Size Description
- 00h WORD divisor for timer channel 2
- 02h WORD duration in clock ticks
- ----------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
- 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
- --------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
- --------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
- --------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
- --------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
- Program: AT.COM is a resident scheduler by Bill Frolik
-
- Format of event record:
- Offset Size Description
- 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
- ----------1692-------------------------------
- INT 16 - ???
- AH = 92h
- Return: AH <= 80h if ???
- Note: called by DOS 3.2 KEYBxx.COM and DOS 5+ KEYB.COM
- SeeAlso: AH=05h"PCjr",AH=A2h
- --------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
- ----------16A2-------------------------------
- INT 16 - ???
- AH = A2h
- Return: AH <= 80h if ???
- Note: this function is called by DOS 5+ KEYB.COM
- SeeAlso: AH=92h
- --------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.
- ----------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: hotkey;JORJ
- --------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
- ----------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=D724h/CX=00CCh,AX=D724h/CX=00CDh
- ----------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
- ----------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
- --------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 AX=F0F0h)
- 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
- --------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 ???
- 02h get resident CS
- Return: AX = code segment of resident portion
- 03h get resident ???
- Return: AX = offset of some buffer in resident code seg
- 04h ???
- 05h set ???
- AL = 0 to 0Ch
- Return: AX = status
- 0000h if OK
- 0001h if out of range.
- 06h ???
- 07h ???
- 08h ???
- AL = char???
- CX = ???
- DX = ???
- Return: AX = 0, 1 or 2
- 09h ???
- 0Ah ???
- CX = ???
- DX = ???
- Return: AX = ???
- 0Bh ???
- DS:SI -> ???
- Return: AX = 0, 40h, 80h
- 0Ch ???
- DS:SI -> ???
- Return: AH = 0
- AL = ???
- 0Dh set ???
- (sets an internal flag)
- 0Eh ???
- DS:SI -> ???
- Return: AX = 0, 1 or 2.
- 0Fh ???
- 10h ???
- Notes: AX in general returns an error code from most functions.
- Index: installation check;Turbo Lightning
- ----------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 - SET CPU SPEED
- AH = F0h
- AL = speed
- 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
- CX = speed value, 1 (slowest) to 50 (full), 3 ~= 8088
- SeeAlso: AH=F1h,AH=F3h
- --------t-16F0F0-----------------------------
- INT 16 - TurboPower TSRs - INSTALLATION CHECK
- AX = F0F0h
- Return: AX = 0F0Fh if installed
- ES:DI -> last data block in TSR list
- 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 data block:
- Offset Size Description
- 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 - READ CURRENT CPU SPEED
- AH = F1h
- Return: AL = speed code (see AH=F0h)
- if AL = 09h, CX = speed code
- SeeAlso: AH=F0h,AH=F3h
- --------b-16F2-------------------------------
- INT 16 - Compaq 386 - 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
- --------b-16F3-------------------------------
- INT 16 - Compaq 80286s - SET CPU SPEED LIMIT (OVERRIDE JUMPER)
- AH = F3h
- AL = 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 = 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 - CACHE CONTROLLER STATUS
- AX = F400h
- Return: AH = E2h
- AL = status
- 00h not present
- 01h enabled
- 02h disabled
- SeeAlso: AX=F401h,AX=F402h
- --------b-16F401-----------------------------
- INT 16 - Compaq Systempro - ENABLE CACHE CONTROLLER
- AX = F401h
- Return: AX = E201h
- SeeAlso: AX=F400h,AX=F402h
- --------b-16F402-----------------------------
- INT 16 - Compaq Systempro - DISABLE CACHE CONTROLLER
- AX = F402h
- Return: AX = E202h
- 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 = ??? (2F00h or FFFFh) (VSAFE only)
- SeeAlso: 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 - ???
- AX = FA02h
- DX = 5945h
- BL = ???
- Return: CF clear
- DI = 4559h
- CL = old value of ???
- --------v-16FA03DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE, VWATCH - ???
- AX = FA03h
- DX = 5945h
- Return: CF clear
- DI = 4559h
- AX = 0002h
- --------v-16FA04DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE - GET ???
- AX = FA04h
- DX = 5945h
- Return: CF clear
- DI = 4559h
- BL = ???
- Note: this function is a NOP under VWATCH
- SeeAlso: AX=FA05h
- --------v-16FA05DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE - SET ???
- AX = FA05h
- DX = 5945h
- BL = ???
- Return: CF clear
- DI = 4559h
- Note: this function is a NOP under VWATCH
- SeeAlso: AX=FA04h
- --------v-16FA06DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE, VWATCH - GET ???
- AX = FA06h
- DX = 5945h
- Return: CF clear
- DI = 4559h
- BL = ???
- SeeAlso: AX=FA07h
- --------v-16FA07DX5945-----------------------
- INT 16 U - PC Tools v8+ VSAFE, VWATCH - SET ???
- AX = FA07h
- DX = 5945h
- BL = ???
- Return: CF clear
- DI = 4559h
- SeeAlso: AX=FA00h,AX=FA06h
- --------U-16FE55-----------------------------
- INT 16 U - PC Tools v8+ DATAMON, DRIVEMAP, CPSCHED, CPTASK - ???
- AX = FE55h
- CX = ???
- DX = ???
- ???
- Return: DX:AX -> ???
- --------U-16FEA4-----------------------------
- INT 16 U - PC Tools v7+ CPSCHED/DESKTOP - ???
- AX = FEA4h
- ???
- Return: ???
- Note: this function is identical to AX=FFD3h, and is implemented by the same
- code in DESKTOP
- SeeAlso: AX=FFA4h
- --------U-16FEC6-----------------------------
- INT 16 U - PC Tools v7+ CPSCHED - ???
- AX = FEC6h
- DL = ???
- ???
- Return: ???
- --------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 - ???
- AX = FEDCh
- ???
- Return: ???
- --------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
- 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 60"OPTIMA"
- --------d-16FF70-----------------------------
- INT 16 U - PC Tools v8+ DRIVEMAP - API???
- AX = FF70h
- BX = function (0000h-0002h)
- ???
- Return: ???
- BUG: this call will branch to random locations on BX=0003h-5CD6h under v8.0
- due to range-testing the wrong register
- SeeAlso: INT 2F/AH=92h"DRIVEMAP"
- --------T-16FF80-----------------------------
- INT 16 U - PC Tools v8+ CPTASK - API
- AX = FF80h
- BX = function (0000h-0009h or 4350h ['CP'])
- ???
- Return: ???
- --------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=FF92h
- --------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 below)
- Return: ???
-
- Format of buffer:
- Offset Size Description
- 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
- 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 overlay header:
- Offset Size Description
- 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 - ???
- AX = FF9Ch
- BL = ??? (00h,01h)
- ???
- Return: ???
- Note: sounds triple-length beep
- ----------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+ DATAMON - INSTALLATION CHECK
- AX = FFA3h
- BX = 0000h
- CX = 0000h
- Return: AX = segment of resident code
- BX = 5555h
- CX = 5555h
- --------y-16FFA3BX0001-----------------------
- INT 16 U - PC Tools v7+ DATAMON - GET ???
- AX = FFA3h
- BX = 0001h
- CX = 0001h
- Return: AX:BX -> ???
- CX = BX
- --------y-16FFA3BX0002-----------------------
- INT 16 U - PC Tools v7+ DATAMON - GET ???
- AX = FFA3h
- BX = 0002h
- CX = 0002h
- Return: AX = ??? (0 or 1)
- CX = BX = AX
- --------y-16FFA3BX0003-----------------------
- INT 16 U - PC Tools v7+ DATAMON - 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
- --------U-16FFA4-----------------------------
- INT 16 U - PC Tools v7+ 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 below)
- CL = cache state
- 01h enabled
- 02h disabled
- SeeAlso: INT 13/AH=A0h,INT 21/AH=2Bh/CX=4358h
-
- Format of internal data:
- Offset Size Description
- -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+ DESKTOP API - GET ???
- AX = FFA6h
- Return: DS:SI -> ???
- Note: available only when popped up
- --------U-16FFA7-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - GET ??? PATH
- AX = FFA7h
- Return: DS:SI -> ASCIZ path (directory from which PCTools was run???)
- --------U-16FFA8-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - ???
- 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+ DESKTOP API - GET VERSION STRING
- AX = FFA9h
- Return: DS:SI -> version string
- --------U-16FFAA-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - ???
- AX = FFAAh
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFAB-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - GET EDITOR SETTINGS???
- AX = FFABh
- Return: DS:SI -> editor setting strings???
- --------U-16FFAC-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
- AX = FFACh
- DL = ???
- Note: available only when popped up
- --------U-16FFAD-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
- AX = FFADh
- DL = ???
- --------U-16FFAE-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - GET ???
- AX = FFAEh
- Return: AL = ???
- --------U-16FFAF-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
- AX = FFAFh
- DL = ???
- --------U-16FFB0-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - SET ???
- AX = FFB0h
- BL = ???
- --------U-16FFB1-----------------------------
- INT 16 U - PC Tools v6.0+ DESKTOP API - ???
- AX = FFB1h
- ???
- Return: ???
- --------U-16FFB2-----------------------------
- INT 16 U - PC Tools v5.5+ DESKTOP API - GET ???
- AX = FFB2h
- Return: DS:SI -> ???
- --------U-16FFB3-----------------------------
- INT 16 U - PC Tools v5.5+ DESKTOP API - ???
- AX = FFB3h
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFB4-----------------------------
- INT 16 U - PC Tools v5.5+ DESKTOP API - SET ??? FLAG
- AX = FFB4h
- Note: available only when popped up
- SeeAlso: AX=FFBBh
- --------U-16FFB5-----------------------------
- INT 16 U - PC Tools v5.5+ DESKTOP API - GET/SET WINDOW PARAMETERS
- AX = FFB5h
- BX = window specifier (000Fh to 0019h) (see below)
- DX = 0000h get, nonzero = set
- ES:DI -> window parameter buffer (see below)
- SeeAlso: AX=FFCBh
-
- Values for window specifier:
- 000Fh comm/FAX
- 0014h hotkey selection
- 0015h ASCII table
- 0016h system colors menu
-
- Format of window parameters:
- Offset Size Description
- 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+ DESKTOP API - GET ???
- AX = FFB6h
- Return: AH = ???
- AL = ???
- --------U-16FFB7-----------------------------
- INT 16 U - PC Tools v5.5+ DESKTOP API - 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+ DESKTOP API - 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+ DESKTOP API - ???
- AX = FFB9h
- ???
- Return: AX = ???
- CX = ???
- DS:SI -> ???
- ES:DI -> ???
- --------U-16FFBA-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ???
- AX = FFBAh
- ???
- Return: AX = ???
- Note: available only when popped up
- --------U-16FFBB-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - CLEAR ??? FLAG
- AX = FFBBh
- Note: available only when popped up
- SeeAlso: AX=FFB4h
- --------U-16FFBC-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - RESTORE ORIGINAL SCREEN???
- AX = FFBCh
- --------U-16FFBD-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ??? DATABASE INDEXING MESSAGES
- AX = FFBDh
- ???
- Return: ???
- --------U-16FFBE-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ???
- AX = FFBEh
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFBF-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ???
- 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+ DESKTOP API - ???
- 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+ DESKTOP API - ???
- AX = FFC1h
- BL = ???
- ES:DI -> data structure (see below)
- ???
- Return: AX = ???
- Note: available only when popped up
- SeeAlso: AX=FFC2h,AX=FFC3h
-
- Format of data structure:
- Offset Size Description
- 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+ DESKTOP API - ???
- AX = FFC2h
- BL = ???
- ES:DI -> data structure (see AX=FFC1h)
- ???
- 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+ DESKTOP API - ???
- AX = FFC3h
- BL = ???
- ES:DI -> data structure (see AX=FFC1h)
- ???
- 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+ DESKTOP API - 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+ DESKTOP API - CHECK WHETHER DESKTOP LOADED RESIDENT
- AX = FFC5h
- Return: BL = nonzero if loaded resident
- = 00h if nonresident
- 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+ DESKTOP API - SET ???
- AX = FFC6h
- BL = new value for ???
- --------U-16FFC7-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - REMOVE WINDOW
- AX = FFC7h
- ???
- Return: ???
- --------U-16FFC8-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
- AX = FFC8h
- Return: DS:SI -> ???
- Note: valid only while popped up
- --------U-16FFC9-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - SET ???
- AX = FFCAh
- DX = ???
- Return: AX destroyed
- Note: available only when popped up
- --------U-16FFCB-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - 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+ DESKTOP API - ???
- AX = FFCDh
- DS:DX -> ???
- Return: ???
- Note: available only when popped up
- --------U-16FFCE-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - SET ??? DELAYS
- AX = FFCEh
- CX = ???
- Return: nothing???
- --------U-16FFCF-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - CLOSE PRINTER/PRINT FILE
- AX = FFCFh
- Note: available only when popped up
- --------U-16FFD0-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - PREPARE TO PRINT???
- AX = FFD0h
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFD1-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - ???
- AX = FFD2h
- BX = ???
- Return: BL = ???
- Note: available only when popped up
- --------U-16FFD3-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ???
- AX = FFD3h
- DS:SI -> 92-byte data record for ???
- Return: ???
- SeeAlso: AX=FED3h
- --------U-16FFD4BH3C-------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - ???
- AX = FFD5h
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFD6-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ???
- AX = FFD6h
- BX = ???
- CX = ???
- DX = offset in ???
- ???
- Return: ???
- Note: available only when popped up
- --------U-16FFD7-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ???
- AX = FFD7h
- ???
- Return: BL = ???
- Note: available only when popped up
- --------U-16FFD8-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - GET ???
- AX = FFD9h
- Return: AX = ???
- Note: available only when popped up
- --------U-16FFDA-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - SET ???
- AX = FFDBh
- BL = ???
- Note: available only when popped up
- --------U-16FFDC-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - UNHOOK
- AX = FFDCh
- Return: interrupt vectors 09h, 10h (v6.0+), 16h, 1Ch, and 21h restored to
- original values
- --------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 below)
-
- Format of returned pointer list:
- Offset Size Description
- 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+ DESKTOP API - 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+ DESKTOP API - ???
- AX = FFDFh
- ???
- Return: ???
- --------U-16FFE0-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ???
- AX = FFE0h
- CX = ???
- DX = ???
- Note: available only when popped up
- --------U-16FFE1-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - BEEP
- AX = FFE1h
- --------U-16FFE2-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ???
- AX = FFE2h
- DX = ???
- Return: ???
- Note: available only when popped up
- --------U-16FFE3-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - ???
- AX = FFE4h
- DX = segment of ???
- Return: ???
- Note: available only when popped up
- --------U-16FFE5-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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 cancelled by user
- Note: available only when popped up
- SeeAlso: AX=FFDAh
- --------U-16FFE6-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - ???
- AX = FFE7h
- BX = segment of ???
- Return: ???
- Note: available only when popped up
- --------U-16FFE8-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - 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+ DESKTOP API - 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+ DESKTOP API - ???
- AX = FFEBh
- ???
- Return: ???
- --------U-16FFEC-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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
- --------U-16FFED-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - GET ???
- AX = FFEDh
- Return: AX = ???
- Note: available only when popped up
- --------U-16FFEE-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - DEFINE PULLDOWN MENUS
- AX = FFEEh
- DS:SI -> pulldown menu system description (see below)
- 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 pulldown menu system description:
- Offset Size Description
- 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 below)
- 1Ah WORD offset of second menu definition
- ...
-
- Format of menu definition:
- Offset Size Description
- 00h WORD offset of menu contents (see below)
- 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 menu contents:
- Offset Size Description
- 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+ DESKTOP API - 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+ DESKTOP API - SET ???
- AX = FFF0h
- DX = ???
- Return: AX destroyed
- Note: available only when popped up
- --------U-16FFF1BX0000-----------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - 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+ DESKTOP API - 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
- --------U-16FFF4-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - ???
- AX = FFF4h
- ???
- Return: ???
- Note: available only when popped up
- SeeAlso: AX=FFF6h
- --------U-16FFF5-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - GET SCREEN ATTRIBUTE ARRAY
- AX = FFF5h
- Return: ES:BX -> screen attributes data structure (see below)
- AL = ??? (v6.0+)
-
- Format of attribute data structure:
- Offset Size Description
- -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+ DESKTOP API - INVOKE NOTEPAD EDITOR
- AX = FFF6h
- DS = segment of editor buffer structure (see below)
- BX = ???
- DX = segment of window parameters structure (see AX=FFB5h)
- Return: ???
- Note: available only when popped up
- SeeAlso: AX=FFF4h
-
- Format of editor buffer structure:
- Offset Size Description
- 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+ DESKTOP API - 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+ DESKTOP API - DRAW EMPTY WINDOW
- AX = FFF8h
- DS:0000h -> window parameters structure (see AX=FFB5h)
- DS:BX -> DWORD to store address of ??? on screen
- Return: ???
- --------U-16FFF9-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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+ DESKTOP API - 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+ DESKTOP API - 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+ DESKTOP API - GET HOTKEYS AND KEYBOARD VECTOR
- AX = FFFCh
- Return: ES:BX -> hotkey table (see below)
- DS:DX = original INT 9 vector
-
- Format of hotkey table:
- Offset Size Description
- 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+ DESKTOP API - 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+ DESKTOP API - SHOW MOUSE CURSOR
- AX = FFFEh
- SeeAlso: AX=FFFFh,INT 33/AX=0001h
- --------M-16FFFF-----------------------------
- INT 16 U - PC Tools v5.1+ DESKTOP API - 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 below)
- SeeAlso: AH=84h"AX",AH=F1h,INT 16/AX=FFE3h,INT 1A/AH=11h"NEC"
-
- Bitfields for printer status:
- bit 7 not busy
- bit 6 acknowledge
- bit 5 out of paper
- bit 4 selected
- bit 3 I/O error
- bits 2,1 unused
- bit 0 timeout
- --------B-1701-------------------------------
- INT 17 - PRINTER - INITIALIZE PORT
- AH = 01h
- DX = printer number (00h-02h)
- Return: AH = printer status (see AH=00h)
- 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,INT 1A/AH=10h"NEC"
- --------B-1702-------------------------------
- INT 17 - PRINTER - GET STATUS
- AH = 02h
- DX = printer number (00h-02h)
- Return: AH = printer status (see AH=00h)
- 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"
- --------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
- --------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,AH=0Eh,INT 1A/AH=E5h
- --------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,AX=0503h,INT 1A/AH=E5h
- --------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
- --------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
- --------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: AH=05h,INT 1A/AH=E5h
- --------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
- --------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
- --------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/AH=E401h,INT 1A/AH=E5h
- --------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
- --------P-170B-------------------------------
- INT 17 U - Emulaser ELTSR - GET ???
- AH = 0Bh
- Return: AX:BX -> ???
- SeeAlso: AH=0Ah,INT 1A/AH=E5h
- --------P-170C-------------------------------
- INT 17 U - Emulaser ELTSR - SET ??? FLAG
- AH = 0Ch
- ???
- Return: ???
- SeeAlso: AH=0Bh,INT 1A/AH=E5h
- --------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
- --------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
- --------P-1720-------------------------------
- INT 17 - PC Paint Plus 2.0 - PRINTER DRIVER
- AH = 20h
- AL = function number
- 00h installation check
- Return: BX = driver version number (BH=major,BL=minor)
- CH = ??? (00h)
- CL = ???
- DX = ??? (0100h)
- Note: also enables the remaining functions
- 01h set ??? flag
- 02h get information
- CL = subfunction
- 00h get printer type
- Return: ES:DI -> ASCIZ printer name
- 01h get paper size
- DX = size index
- Return: ES:DI -> ASCIZ paper size description
- 02h get ???
- Return: BX = ???
- 03h get printer information???
- DX = ???
- ES:BX -> buffer for ??? (min 134 bytes)
- 03h ???
- ES:BX -> ???
- 04h get ???
- Return: ES:DI -> ???
- 05h advance printer to next page
- Note: also clears flag set by function 01h
- 06h advance printer to next page and shut down
- Note: also clears flag set by function 01h and disables
- functions other than 00h
- 07h not implemented, AX returned unchanged
- BL = printer number???
- Return: AX = 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
- Index: installation check;PC Paint Plus
- --------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
- 00h successful
- 01h timeout
- 02h header error
- 03h data error
- 04h busy
- 05h invalid parameters
- SeeAlso: AX=2403h,INT 16/AX=4500h
- --------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 AX=2400h)
- 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 AX=2400h)
- 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 AX=2400h)
- 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 AX=2400h)
- 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 AX=2400h)
- 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 AX=2400h)
- 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 AX=2400h)
- 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 AX=2400h)
- 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 AX=2400h)
- 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 AX=2400h)
- 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 below)
- 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 settings:
- Offset Size Description
- 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 AH=63h)
- Return: ES:SI buffer filled
- SeeAlso: AH=62h,AH=63h,INT 05/AX=5053h
- --------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
- 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
- Note: cancels the last CL printouts for the current task
- SeeAlso: AH=82h
- --------N-1782-------------------------------
- INT 17 - Alloy NTNX, MW386 - CANCEL ALL JOBS FOR CURRENT USER
- AH = 82h
- AL = 00h (NTNX compatibility mode)
- Return: AL = status (see AH=81h)
- 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 AH=81h)
- 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 AH=00h)
- 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
- 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)
- 01h MW386
- DX = MW386 printer number
- Return: AH = status (see AH=81h)
- Note: removes specified printer from the spooler's list of printers
- SeeAlso: AH=89h,AH=8Bh
- --------N-1789-------------------------------
- INT 17 - Alloy NTNX, MW386 - ADD PRINTER TO SPOOLER
- AH = 89h
- AL = mode
- 00h NTNX compatibility
- DX = NTNX printer number (see AH=88h)
- 01h MW386
- DX = MW386 printer number
- Return: AL = status (see AH=81h)
- 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
- Notes: clears all buffers and resets spooler to boot-up values
- MW386 supports this function for compatibility only; it is a NOP
- Return: AL = status (see AH=81h)
- --------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 AH=81h)
- 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 AH=81h)
- 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 AH=81h)
- SeeAlso: AH=8Ah
- --------N-1794-------------------------------
- INT 17 - Alloy NTNX, MW386 - SELECT PRINTER
- AH = 94h
- AL = mode
- 00h NTNX compatibility
- DX = NTNX printer number (see AH=88h)
- 01h MW386
- DX = MW386 printer number
- 02h MW386 v2+
- BX = logical printer number
- DX = MW386 printer number
- Return: AL = status (see AH=81h)
- 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 AH=88h)
- (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 AH=81h)
- 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 AH=81h)
- 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 AH=88h)
- (FFh = task's current logical LPT1)
- DH = mode
- bit 0: get mode if 1, set mode if 0
- bit 1: private ("attached")
- bit 2: direct instead of spooled
- bits 3-7 reserved (0)
- 01h MW386
- DX = MW386 printer number
- CL = mode (as for DH above)
- Return: AL = status (see AH=81h)
- DH = mode (bits 1 and 2 set as above)
- DL = printer owner's user number if not spooled
- --------N-179A-------------------------------
- INT 17 - Alloy NTNX,MW386 - SET TAB EXPANSION
- AH = 9Ah
- AL = mode
- 00h NTNX compatibility
- DX = NTNX printer number (see AH=88h)
- (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 AH=81h)
- 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 AH=81h)
- 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 AH=81h)
- 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 AH=81h)
- 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 AH=81h)
- 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
- bit 0: banner page enabled (see AH=A4h)
- bit 1: form feed enabled (see AH=A6h)
- bits 2-6: reserved (0)
- bit 7: set flags if 1, get flags if 0
- BX = logical device number
- 00h-03h = LPT1-LPT4
- 04h-07h = COM1-COM4
- Return: AL = status (see AH=81h)
- Note: the documentation does not state which register contains the result of
- a GET
- SeeAlso: AH=A4h,AH=A6h
- --------N-17A8-------------------------------
- INT 17 - Alloy MW386 - DEFINE TEMPORARY FILENAME
- AH = A8h
- CX:SI -> ASCIZ filename without extension (max 8 chars)
- Return: AL = status (see AH=81h)
- 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 AH=81h)
- 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 AH=88h)
- 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 below)
- SeeAlso: AH=C1h
-
- Format of control block:
- Offset Size Description
- 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 -> ASCIIZ 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 = 0 printer not active or at pause
- = 1 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
- Return: CX = 07C2h
- Note: calling sequence for linked-mode routine
- AL = 00h send character in BL to printer
- = 01h send CX bytes from DS:DX to printer
- = 02h move print head to horizontal starting position of image
- return code for linked-mode routine:
- AX = 0000h success
- = 0001h failure
- SeeAlso: AX=CD02h,AX=CD08h
- --------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-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
- --------B-18---------------------------------
- INT 18 - START CASSETTE BASIC
- Note: only PCs produced by IBM contain BASIC in ROM, so the action is
- unpredicatable on compatibles; this interrupt often reboots the
- system, and often has no effect at all
- SeeAlso: 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: ZF set if no keystroke available
- ZF clear if 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
- ???
- Return: ???
- Notes: details are not available at this time
- text video RAM is located at segments A000h (characters) and A200h
- (attributes)
- --------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. After loading the master boot sector at 0000h:7C00h, the
- master bootstrap loader is given control. 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 below). 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
- SeeAlso: INT 14/AH=17h,INT 18
-
- Format of VDISK header block (at beginning of INT 19 handler's segment):
- Offset Size Description
- 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
- 00h 446 BYTEs Master bootstrap loader code
- 1BEh 16 BYTEs partition record for partition 1 (see below)
- 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
- 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 below)
- 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
-
- 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
- 05h DOS 3.3+ extended partition
- 06h DOS 3.31+ Large File System
- 07h QNX
- 07h OS/2 HPFS
- 07h Advanced Unix
- 08h AIX bootable partition, SplitDrive
- 09h AIX data partition
- 09h Coherent filesystem
- 0Ah OPUS
- 0Ah Coherent swap partition
- 10h OPUS
- 24h NEC MS-DOS 3.x
- 40h VENIX 80286
- 50h Disk Manager, read-only partition
- 51h Disk Manager, read/write partition
- 51h Novell???
- 52h CP/M
- 52h Microport System V/386
- 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
- 65h Novell NetWare (3.11)
- 75h PC/IX
- 80h Minix v1.1 - 1.4a
- 81h Minix v1.4b+
- 81h Linux
- 81h Mitac Advanced Disk Manager
- 82h Linux Swap partition (planned)
- 93h Amoeba file system
- 94h Amoeba bad block table
- B7h BSDI file system (secondarily swap)
- B8h BSDI swap partition (secondarily file system)
- C6h DR-DOS 6.0 LOGIN.EXE-secured partition
- DBh CP/M, Concurrent CP/M, Concurrent DOS
- DBh CTOS (Convergent Technologies OS)
- E1h SpeedStor 12-bit FAT extended partition
- E4h SpeedStor 16-bit FAT extended partition
- F2h DOS 3.3+ secondary
- FEh LANstep
- FFh Xenix bad block table
- --------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
- 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)
- SeeAlso: AH=01h,AH=02h,INT 21/AH=2Ch
- --------B-1A01-------------------------------
- INT 1A - TIME - SET SYSTEM TIME
- AH = 01h
- CX:DX = number of clock ticks since midnight
- 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)
- SeeAlso: AH=00h
- --------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)
- SeeAlso: AH=01h
- --------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=05h,INT 21/AH=2Ah
- --------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)
- SeeAlso: AH=04h,INT 21/AH=2Bh
- --------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
- Note: the alarm occurs every 24 hours until turned off, invoking INT 4A each
- time
- SeeAlso: AH=07h,INT 4A
- --------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,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
- --------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
- --------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
- --------J-1A10-------------------------------
- INT 1A - NEC PC-9800 series - PRINTER - INITIALIZE
- AH = 10h
- ???
- Return: ???
- SeeAlso: AH=11h,AH=12h,INT 17/AH=01h
- --------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 below)
- 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
-
- Values for 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 AX=6108h)
- 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 below)
- 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 Cparms structure:
- Offset Size Description
- 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 AX=6108h)
- 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 AX=6308h)
- 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: ???
- SeeAlso: AH=80h,AH=83h,AH=85h
- --------s-1A80-------------------------------
- INT 1A - PCjr - 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
- SeeAlso: AH=7Fh,AH=83h
- ----------1A80-------------------------------
- INT 1A - PCMCIA Socket Services - GET NUMBER OF ADAPTERS
- AH = 80h
- ???
- Return: ???
- SeeAlso: AH=83h"PCMCIA"
- ----------1A81-------------------------------
- INT 1A - PCMCIA Socket Services - REGISTER STATUS CHANGE CALLBACK
- AH = 81h
- ???
- Return: ???
- SeeAlso: AH=80h"PCMCIA",AH=82h"PCMCIA"
- --------s-1A8100-----------------------------
- INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND - INSTALLATION CHECK
- AX = 8100h
- Return: AH > 80h if supported
- ----------1A82-------------------------------
- INT 1A - PCMCIA Socket Services - REGISTER CARD TECHNOLOGY CALLBACK
- AH = 82h
- ???
- Return: ???
- SeeAlso: AH=81h"PCMCIA"
- --------s-1A83-------------------------------
- INT 1A - Tandy 2500, Tandy 1000L series - START PLAYING DIGITAL SOUND
- AH = 83h
- AL = volume (0=lowest, 7=highest)
- CX = number of bytes to play
- DX = time between sound samples (multiples of 273 nanoseconds)
- ES:BX -> sound data (array of 8-bit PCM samples)
- Return: ???
- Notes: this call returns immediately while the sound plays in the
- background
- The sound data pointed to by ES:BX probably shouldn't cross a 64k
- boundary. 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,INT 15/AH=91h
- ----------1A83-------------------------------
- INT 1A - PCMCIA Socket Services - GET SOCKET SERVICES VERSION NUMBER
- AH = 83h
- ???
- Return: ???
- SeeAlso: AH=80h"PCMCIA"
- --------s-1A84-------------------------------
- INT 1A - Tandy 2500, Tandy 1000L series - STOP PLAYING DIGITAL SOUND
- AH = 84h
- Return: ???
- SeeAlso: AH=83h,AH=85h
- ----------1A84-------------------------------
- INT 1A - PCMCIA Socket Services - INQUIRE ADAPTER
- AH = 84h
- ???
- Return: ???
- SeeAlso: AH=80h"PCMCIA",AH=85h"PCMCIA",AH=87h
- --------s-1A85-------------------------------
- INT 1A - Tandy 2500, Tandy 1000L series - DIGITAL SOUND???
- AH = 85h
- ???
- Return: ???
- SeeAlso: AH=7Fh,AH=83h
- ----------1A85-------------------------------
- INT 1A - PCMCIA Socket Services - GET ADAPTER
- AH = 85h
- ???
- Return: ???
- SeeAlso: AH=84h"PCMCIA",AH=86h
- ----------1A86-------------------------------
- INT 1A - PCMCIA Socket Services - SET ADAPTER
- AH = 86h
- ???
- Return: ???
- SeeAlso: AH=84h"PCMCIA",AH=85h"PCMCIA"
- ----------1A87-------------------------------
- INT 1A - PCMCIA Socket Services - INQUIRE WINDOW
- AH = 87h
- ???
- Return: ???
- SeeAlso: AH=84h"PCMCIA",AH=88h,AH=89h,AH=8Ch
- ----------1A88-------------------------------
- INT 1A - PCMCIA Socket Services - GET WINDOW
- AH = 88h
- ???
- Return: ???
- SeeAlso: AH=87h,AH=89h,AH=8Ah
- ----------1A89-------------------------------
- INT 1A - PCMCIA Socket Services - SET WINDOW
- AH = 89h
- ???
- Return: ???
- SeeAlso: AH=87h,AH=88h,AH=8Bh
- ----------1A8A-------------------------------
- INT 1A - PCMCIA Socket Services - GET PAGE
- AH = 8Ah
- ???
- Return: ???
- SeeAlso: AH=88h,AH=8Bh
- ----------1A8B-------------------------------
- INT 1A - PCMCIA Socket Services - SET PAGE
- AH = 8Bh
- ???
- Return: ???
- SeeAlso: AH=89h,AH=8Ah
- ----------1A8C-------------------------------
- INT 1A - PCMCIA Socket Services - INQUIRE SOCKET
- AH = 8Ch
- ???
- Return: ???
- SeeAlso: AH=87h,AH=8Dh,AH=8Eh
- ----------1A8D-------------------------------
- INT 1A - PCMCIA Socket Services - GET SOCKET
- AH = 8Dh
- ???
- Return: ???
- SeeAlso: AH=8Ch,AH=8Eh
- ----------1A8E-------------------------------
- INT 1A - PCMCIA Socket Services - SET SOCKET
- AH = 8Eh
- ???
- Return: ???
- SeeAlso: AH=8Ch,AH=8Dh
- ----------1A8F-------------------------------
- INT 1A - PCMCIA Socket Services - GET CARD
- AH = 8Fh
- ???
- Return: ???
- SeeAlso: AH=8Dh,AH=90h
- ----------1A90-------------------------------
- INT 1A - PCMCIA Socket Services - RESET CARD
- AH = 90h
- ???
- Return: ???
- ----------1A91-------------------------------
- INT 1A - PCMCIA Socket Services - READ ONE
- AH = 91h
- ???
- Return: ???
- SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
- ----------1A92-------------------------------
- INT 1A - PCMCIA Socket Services - WRITE ONE
- AH = 92h
- ???
- Return: ???
- SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
- ----------1A93-------------------------------
- INT 1A - PCMCIA Socket Services - READ MULTIPLE
- AH = 93h
- ???
- Return: ???
- SeeAlso: AH=91h,AH=94h,INT 21/AX=440Dh"IOCTL"
- ----------1A94-------------------------------
- INT 1A - PCMCIA Socket Services - WRITE MULTIPLE
- AH = 94h
- ???
- Return: ???
- SeeAlso: AH=92h,AH=93h,INT 21/AX=440Dh"IOCTL"
- ----------1A95-------------------------------
- INT 1A - PCMCIA Socket Services - INQUIRE ERROR DETECTION CODE
- AH = 95h
- ???
- Return: ???
- SeeAlso: AH=96h,AH=9Ch
- ----------1A96-------------------------------
- INT 1A - PCMCIA Socket Services - GET ERROR DETECTION CODE
- AH = 96h
- ???
- Return: ???
- SeeAlso: AH=95h,AH=97h,AH=9Ch
- ----------1A97-------------------------------
- INT 1A - PCMCIA Socket Services - SET ERROR DETECTION CODE
- AH = 97h
- ???
- Return: ???
- SeeAlso: AH=96h,AH=9Ch
- ----------1A98-------------------------------
- INT 1A - PCMCIA Socket Services - START ERROR DETECTION CODE
- AH = 98h
- ???
- Return: ???
- SeeAlso: AH=96h,AH=99h,AH=9Bh,AH=9Ch
- ----------1A99-------------------------------
- INT 1A - PCMCIA Socket Services - PAUSE ERROR DETECTION CODE
- AH = 99h
- ???
- Return: ???
- SeeAlso: AH=9Ah
- ----------1A9A-------------------------------
- INT 1A - PCMCIA Socket Services - RESUME ERROR DETECTION CODE
- AH = 9Ah
- ???
- Return: ???
- SeeAlso: AH=99h,AH=98h
- ----------1A9B-------------------------------
- INT 1A - PCMCIA Socket Services - STOP ERROR DETECTION CODE
- AH = 9Bh
- ???
- Return: ???
- SeeAlso: AH=98h,AH=99h,AH=9Ch
- ----------1A9C-------------------------------
- INT 1A - PCMCIA Socket Services - READ ERROR DETECTION CODE
- AH = 9Ch
- ???
- Return: ???
- SeeAlso: AH=95h,AH=96h,AH=98h,AH=99h,AH=9Bh
- --------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 = 00h despooler is currently active printing a file
- = 41h despooler is 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
- --------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 = 00h despooler is disabled
- = 41h despooler is enabled
- CH = 00h spooler is disabled
- = 41h spooler is enabled
- DL = 00h despooler is currently active printing a file
- = 41h despooler is 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
- 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 ???
- Return: AH = 00h if successful
- SeeAlso: AH=ABh
- --------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 below)
- 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
- 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
- 0Ch WORD bit flags: server capabilities (see below)
- 0Eh WORD bit flags: hardware assisted capabilities (see below)
- 10h WORD maximum block size supported by server (at least 8192 bytes)
-
- Bitfields for capabilities:
- bit 0 standard compress
- bit 1 standard decompress
- bit 2 update compress
- bit 3 MaxCompress
- bit 4 reserved
- bit 5 incremental decompress
- bits 6-14 reserved
- bit 15 this structure is in ROM and can't be modified
- (server capabilities only)
-
- Call MRCI entry point with:
- DS:SI -> MRCREQUEST structure (see below)
- 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
- 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
- Note: MRCI driver may chain to a previous driver
-
- Format of MRCREQUEST structure:
- Offset Size Description
- 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
- (return) 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
- (return) 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
- --------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
- ----------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
- --------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 below)
- 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 spool file status record:
- Offset Size Description
- 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 AX=E301h)
- 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,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
- --------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
- --------B-1D---------------------------------
- INT 1D - SYSTEM DATA - VIDEO PARAMETER TABLES
- Note: default parameter table at F000h:F0A4h for 100% compatible BIOSes
- SeeAlso: INT 10/AH=00h
-
- Format of video parameters:
- Offset Size Description
- 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
- 42h WORD bytes in video buffer for modes 02h and 03h
- 44h WORD bytes in video buffer for modes 04h and 05h
- 46h WORD bytes in video buffer for modes 06h and 07h
- 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
- --------B-1E---------------------------------
- INT 1E - SYSTEM DATA - DISKETTE PARAMETERS
- Note: default parameter table at F000h:EFC7h for 100% compatible BIOSes
- SeeAlso: INT 13/AH=0Fh,INT 41
-
- Format of diskette parameter table:
- Offset Size Description
- 00h BYTE first specify byte
- bits 7-4: step rate
- 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
- --------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
- --------O-20---------------------------------
- INT 20 - Minix - SEND/RECEIVE MESSAGE
- AX = process ID of other process
- BX -> message
- CX = 1 send
- 2 receive
- 3 send&receive
- 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
- Note: (see INT 21/AH=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 HOSTESS"
- --------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 HOSTESS",INT 22"COMTROL HOSTESS"
- --------D-2100-------------------------------
- INT 21 - DOS 1+ - TERMINATE PROGRAM
- AH = 00h
- CS = PSP segment
- Notes: Microsoft recomments using INT 21/AH=4Ch for DOS 2+
- execution continues at address stored in INT 22 after DOS performs
- whatever cleanup it needs to do
- 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
- 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
- --------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 3.3-5.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
- 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 3.3-5.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
- 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
- reads from standard input, which is always the keyboard under DOS 1.x,
- but may be redirected under DOS 2+
- 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
- --------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 3.3-5.0)
- 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 below)
- 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 below) is set to 00h, this call returns
- immediately without reading any input
- SeeAlso: AH=0Ch,INT 2F/AX=4810h
-
- Format of input buffer:
- Offset Size Description
- 00h BYTE maximum characters buffer can hold
- 01h BYTE (input) number of chars from last input which may be recalled
- (return) 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 = 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
- --------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
- Notes: writes all modified disk buffers to disk, but does not update 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,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+, 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
- SeeAlso: AH=19h,AH=3Bh,AH=DBh
- --------D-210F-------------------------------
- INT 21 - DOS 1+ - OPEN FILE USING FCB
- AH = 0Fh
- DS:DX -> unopened File Control Block (see below)
- 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
- SeeAlso: AH=10h,AH=16h,AH=3Dh,4303h
-
- Format of File Control Block:
- Offset Size Description
- -7 BYTE extended FCB if FFh
- -6 5 BYTEs reserved
- -1 BYTE file attribute if extended FCB
- 00h BYTE drive number (0 = default, 1 = A, etc)
- 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 AX=5700h)
- 16h WORD time of last write (see AX=5700h) (DOS 1.1+)
- 18h 8 BYTEs reserved (see below)
- 20h BYTE record within current block
- 21h DWORD random access record number (if record size is > 64 bytes, high
- byte is omitted)
- Note: to use an extended FCB, you must specify the address of the FFh flag at
- offset -7, rather than the address of the drive number field
-
- Format of reserved field for DOS 1.0:
- Offset Size Description
- 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 reserved field for DOS 1.10-1.25:
- Offset Size Description
- 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 reserved field for DOS 2.x:
- Offset Size Description
- 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 reserved field for DOS 3.x:
- Offset Size Description
- 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 AH=52h)
- 1Eh BYTE file attribute
- 1Fh BYTE ???
- ---SHARE.EXE loaded, remote file---
- 1Ah WORD number of sector containing directory entry
- 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
- 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.
-
- Format of reserved field for DOS 5.0:
- Offset Size Description
- 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
- 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
- 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 AH=0Fh)
- 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 AH=0Fh), 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 is actually the drive number (or extended
- FCB header and drive number) followed by the file's directory entry
- (see below); 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+ 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 directory entry:
- Offset Size Description
- 00h 8 BYTEs blank-padded filename
- 08h 3 BYTEs blank-padded file extension
- 0Bh BYTE attributes
- 0Ch 10 BYTEs reserved
- used by DR-DOS to store file password
- 16h WORD time of creation or last update (see AX=5700h)
- 18h WORD date of creation or last update (see AX=5700h)
- 1Ah WORD starting cluster number
- 1Ch DWORD file size
- --------D-2112-------------------------------
- INT 21 - DOS 1+ - FIND NEXT MATCHING FILE USING FCB
- AH = 12h
- DS:DX -> unopened FCB (see AH=0Fh)
- Return: AL = status
- 00h successful
- [DTA] = 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 AH=0Fh), 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 does not
- 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 AH=0Fh)
- Return: AL = status
- 00h successful
- 01h end of file (no data)
- 02h segment wrap in DTA
- 03h end of file, partial record read
- [DTA] = 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,INT 2F/AX=1108h
- --------D-2115-------------------------------
- INT 21 - DOS 1+ - SEQUENTIAL WRITE TO FCB FILE
- AH = 15h
- DS:DX -> opened FCB (see AH=0Fh)
- [DTA] = record to write
- 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 AH=0Fh), 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
- 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 AH=0Fh)
- the old filename ('?' wildcards OK) is in the standard location
- while the new filename ('?' wildcards OK) 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
- --------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 below)
- Note: 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
- SeeAlso: AH=1Ch,AH=36h
-
- 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)
- F9h floppy, double-sided, 15 sectors per track (1.2M)
- F8h hard disk
- F0h other
- --------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 AH=1Bh)
- 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
- 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 below 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+ version of the DPB has been documented
- SeeAlso: AH=32h
-
- Format of DOS 1.1 and MS-DOS 1.25 drive parameter block:
- Offset Size Description
- 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
- --------D-2121-------------------------------
- INT 21 - DOS 1+ - READ RANDOM RECORD FROM FCB FILE
- AH = 21h
- DS:DX -> opened FCB (see AH=0Fh)
- 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
- [DTA] = 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
- --------D-2122-------------------------------
- INT 21 - DOS 1+ - WRITE RANDOM RECORD TO FCB FILE
- AH = 22h
- DS:DX -> opened FCB (see AH=0Fh)
- [DTA] = record to write
- 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 AH=0Fh), 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 is 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
- SeeAlso: AH=42h
- --------D-2124-------------------------------
- INT 21 - DOS 1+ - SET RANDOM RECORD NUMBER FOR FCB
- AH = 24h
- DS:DX -> opened FCB (see AH=0Fh)
- 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 - 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 - 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 - 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 - 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 - Phar Lap 386/DOS-Extender - SET INT TO ALWAYS GAIN CONTRL IN PROT 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 - Phar Lap 386/DOS-Extender - SET REAL- & PROTECTED-MODE INT VECTORS
- AX = 2507h
- CL = interrupt numbern
- 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 - 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 - 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 - 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 - 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 - 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 - Phar Lap 386/DOS-Extender - GET REAL-MODE LINK INFORMATION
- AX = 250Dh
- Return: CF clear
- EAX = CS:IP of real-mode callback procedure 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
-
- Call real-mode callback with:
- STACK: DWORD offset to protected-mode code
- WORD placeholder for protected-mode CS
- DWORD pointer to selector structure (see below)
- or 0000h:0000h for defaults
- var parameters for protected-mode procedure
- Return: via FAR return
-
- Format of selector structure:
- Offset Size Description
- 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 - 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 - Phar Lap 386/DOS-Extender - CONVERT PROTECTED-MODE ADDRESS TO MS-DOS
- AX = 250Fh
- ES:EBX = 48-bit protected-mode address to convert
- Return: CF clear if successful (address < 1MB)
- ECX = 32-bit real-mode MS-DOS address
- CF set on error (address >= 1MB)
- ECX = linear address
- Note: this function is also supported by FlashTek X-32VM
- SeeAlso: AX=2510h
- --------E-212510-----------------------------
- INT 21 - 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 below)
- 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 parameter block:
- Offset Size Description
- 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 - Phar Lap 386/DOS-Extender - ISSUE REAL-MODE INTERRUPT
- AX = 2511h
- DS:EDX -> parameter block (see below)
- 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 parameter block:
- Offset Size Description
- 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 - Phar Lap 386/DOS-Extender - LOAD PROGRAM FOR DEBUGGING
- AX = 2512h
- DS:EDX -> pointer to ASCIIZ program name
- ES:EBX -> pointer to parameter block (see below)
- 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
- 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 parameter block:
- Offset Size Description
- 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 - 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 - 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 - 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 - Phar Lap 386/DOS-Extender - FREE ALL MEMORY OWNED BY LDT
- AX = 2516h
- ???
- Return: ???
- --------E-212517-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender - GET INFO ON DOS DATA BUFFER
- AX = 2517h
- ???
- Return: ???
- --------E-212518-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender - SPECIFY HANDLER FOR MOVED SEGMENTS
- AX = 2518h
- ???
- Return: ???
- --------E-212519-----------------------------
- INT 21 - 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 - 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 - 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-21251D-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender VMM - READ PAGE-TABLE ENTRY
- AX = 251Dh
- ???
- Return: ???
- SeeAlso: AX=251Eh,AX=EB00h,INT 31/AX=0506h
- --------E-21251E-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender VMM - WRITE PAGE-TABLE ENTRY
- AX = 251Eh
- ???
- Return: ???
- SeeAlso: AX=251Dh,INT 31/AX=0507h
- --------E-21251F-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender VMM - EXHANGE TWO PAGE-TABLE ENTRIES
- AX = 251Fh
- ???
- Return: ???
- SeeAlso: AX=251Dh,AX=251Eh
- --------E-212520-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender VMM - GET MEMORY STATISTICS
- AX = 2520h
- DS:EDX -> pointer to buffer at least 100 bytes in size (see below)
- BL = 0 (don't reset VM stats), 1 (reset VM stats)
- Return: carry flag clear
-
- Format of VM stats buffer:
- Offset Size Description
- 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 bytes to which swap file can be increased
- 50h DWORD "vmflags" bit 0 = 1 if page fault in progress
- 54h 16 BYTEs reserved for future expansion (set to zero)
- --------E-212521-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S EXTENDED MEMORY 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 - Phar Lap 386/DOS-Extender VMM - SPECIFY ALTERNATE PAGE-FAULT HANDLER
- AX = 2522h
- ???
- Return: ???
- SeeAlso: AX=2523h
- --------E-212523-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender VMM - SPECIFY OUT-OF-SWAP-SPACE HANDLER
- AX = 2523h
- ???
- Return: ???
- SeeAlso: AX=2522h
- --------E-212524-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender VMM - INSTALL PAGE-REPLACEMENT HANDLERS
- AX = 2524h
- ???
- Return: ???
- --------E-212525-----------------------------
- INT 21 - Phar Lap 386/DOS-Extender VMM - LIMIT PROGRAM'S CONVENTIONAL 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 - Phar Lap 386/DOS-Extender - GET CONFIGURATION INFORMATION
- AX = 2526h
- ???
- Return: ???
- --------E-21252B-----------------------------
- INT 21 - FlashTek X-32VM - 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: if X-32 is not using virtual memory, this function always succeeds
- --------E-212532-----------------------------
- INT 21 - FlashTek X-32VM - 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)
- SeeAlso: AX=2533h
- --------E-212533-----------------------------
- INT 21 - FlashTek X-32VM - 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)
- SeeAlso: AX=2532h
- --------E-2125C0-----------------------------
- INT 21 - 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 - 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 - 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 - Phar Lap 386/DOS-Extender - EXECUTE PROGRAM
- AX = 25C3h
- ES:EBX -> pointer to parameter block (see below)
- DS:EDX -> pointer to ASCIIZ program filename
- Return: CF clear if successful
- all registers unchanged
- CF set on error
- EAX = 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
- 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 below)
- Notes: new PSP is updated with memory size information; INTs 22h, 23h, 24h
- taken from interrupt vector table
- (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 PSP:
- Offset Size Description
- 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 unused filler
- 05h BYTE CP/M CALL 5 service request (FAR JMP to 000C0h)
- BUG: (DOS 2+) PSPs created by INT 21/AH=4Bh 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
- 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 apparently unused by DOS versions <= 6.00
- 3Dh BYTE apparently used by some versions of APPEND
- 3Eh BYTE (Novell NetWare) flag: next byte initialized if CEh
- 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 (MSWin3) selector of next PSP (PDB) in linked list
- Windows keeps a linked list of Windows programs only
- 44h 4 BYTEs unused by DOS versions <= 6.00
- 48h BYTE (MSWindows3) bit 0 set if non-Windows application (WINOLDAP)
- 49h 7 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).
- 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 reportedly also uses values of 80h-FEh
- 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
-
- Format of environment block:
- Offset Size Description
- 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+---
- 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 AH=0Fh)
- 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
- [DTA] = 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
- --------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 AH=0Fh)
- [DTA] = records to write
- 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
- --------D-2129-------------------------------
- INT 21 - DOS 1+ - PARSE FILENAME INTO FCB
- AH = 29h
- AL = parsing options (see below)
- 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 AH=0Fh)
- 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 0 skip leading separators
- bit 1 use existing drive number in FCB if no drive is specified, instead of
- setting field to zero
- bit 2 use existing filename in FCB if no base name is specified, instead of
- filling field with blanks
- bit 3 use existing extension in FCB if no extension is specified, instead of
- filling field with blanks
- bits 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,INT 1A/AH=04h,INT 2F/AX=120Dh
- --------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 - PC Tools v5.x PC-Cache - INSTALLATION CHECK
- AH = 2Bh
- CX = 4358h ('CX')
- Return: AL = FFh if PC-Cache not installed
- AL = 00h if installed
- CX = 6378h ('cx')
- BX = ???
- DX = ???
- SeeAlso: INT 16/AX=FFA5h/CX=1111h
- --------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.5x are part of DESQview/X v1.0x.
- 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 below)
- 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
- 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
- --------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 below)
- 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
- 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 below)
- 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 below)
- 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 0 INT 10h
- bit 1 INT 14h
- bit 2 INT 15h
- bit 3 INT 16h
- bit 4 INT 17h
- bit 5 INT 21h
- bit 6 INT 28h
-
- Values for multitasker type:
- 01h DESQview
- 02h DoubleDOS
- 03h TopView
- 04h OmniView
- 05h VM/386
-
- Bitfields for type of task switching selected:
- bit 0 DESQview
- bit 1 DoubleDOS
- bit 2 TopView
- bit 3 OmniView
- bit 4 KeySwitch
- bit 5 HLT instruction
-
- Format of TAME 2.30 data area:
- Offset Size Description
- 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 above)
- 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 above)
- 60h BYTE type of task switching selected (bit flags) (see above)
- 61h BYTE watch_DOS
- 62h BYTE bit flags
- bit 0: TAME enabled
- bit 1: /FREQ instead of /MAX (counts in 3Ch and 3Eh per tick)
- bit 2: /TIMEPOLL
- bit 3: /KEYPOLL
- bit 4: inhibit timer
- bit 5: enable status monitoring
- 63h BYTE old status
- 64h WORD signature DA34h
-
- Format of TAME 2.60 data area:
- Offset Size Description
- 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 above)
- 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 above)
- 6Ch BYTE type of task switching selected (bit flags) (see above)
- 6Dh BYTE watch_DOS
- 6Eh BYTE bit flags
- bit 0: TAME enabled
- bit 1: /FREQ instead of /MAX (counts in 50h and 52h per tick)
- bit 2: /TIMEPOLL
- bit 3: /KEYPOLL
- bit 4: inhibit timer
- bit 5: enable status monitoring
- 6Fh BYTE old status
- 70h WORD signature DA34h
- --------R-212B44BX4D41-----------------------
- INT 21 - pcANYWHERE IV/LAN - INSTALLATION CHECK
- AX = 2B44h ('D')
- BX = 4D41h ('MA')
- CX = 7063h ('pc')
- DX = 4157h ('AW')
- Return: AX = 4F4Bh ('OK') if large host resident
- = 6F6Bh ('ok') if small host resident
- CX:DX -> API entry point
- SeeAlso: INT 16/AH=79h
-
- Call 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 below)
- Return: AX = function status (see below)
- AX = 0002h get status
- Return: AH = current operating mode (see init req structure below)
- AL = current connection status
- bit 0: a physical connection is active
- bit 1: remove screen updating is active
- bit 2: connection checking is active
- bit 3: hot key detection is active
- bit 4: background file transfer is active
- AX = 0003h suspend remote screen updates
- Return: AX = function status (see below)
- AX = 0004h resume screen updates
- Return: AX = function status (see below)
- AX = 0005h end current remote access session
- DS:SI -> termination request structure (see below)
- Return: AX = function status (see below)
- AX = 0006h remove pcANYWHERE IV from memory
- Return: AX = status
- 0000h successful
- FFD2h unable to release allocated memory
- FFD1h unable to release interrupt vectors
- 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 initialization request structure:
- Offset Size Description
- 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 termination request structure:
- Offset Size Description
- 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
-
- Values for function status:
- 0000h function completed successfully
- 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 initially 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
- --------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,INT 1A/AH=00h,INT 1A/AH=02h,INT 1A/AH=FEh
- SeeAlso: INT 2F/AX=120Dh
- --------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 = MSDOS OEM number (see below)
- ---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)
- the Windows/NT 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
- 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 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=E002h
-
- Values for MSDOS OEM number:
- 00h IBM
- 01h Compaq
- 02h MS Packaged Product
- 04h AT&T
- 05h Zenith
- 06h Hewlett-Packard
- 16h DEC
- 23h Olivetti
- 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
- 99h STARLITE architecture (OEM DOS, NETWORK DOS, SMP DOS)
- 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,AX=30F1h
- --------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 Software Links, Inc.
- SeeAlso: AH=30h,INT 38/AH=02h,INT 38/AH=10h
- --------v-2130F1-----------------------------
- INT 21 - VIRUS - "Dutch-555"/"Quit 1992" - INSTALLATION CHECK
- AX = 30F1h
- Return: AL = 00h if resident
- SeeAlso: AH=30h/DX=ABCDh,AX=330Fh
- ----------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+
- most TSRs can save some memory by releasing their environment block
- before terminating (see AH=26h,AH=49h)
- 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) 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 AH=52h) if disk access is not
- desirable.
- undocumented prior to the release of DOS 5.0; only the DOS 4+ 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
- SeeAlso: AH=1Fh,AH=52h
-
- Format of DOS Drive Parameter Block:
- Offset Size Description
- 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
- 16h BYTE media ID byte
- 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
- 17h BYTE media ID byte
- 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
- --------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 = 00h off, check only on character I/O functions
- 01h on, check on all DOS functions
- Note: under DOS 3.1+ and DR-DOS, this function does not use any of the
- DOS-internal 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 or 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 at least version 6.0
- SeeAlso: AH=33h
- --------D-213305-----------------------------
- INT 21 - DOS 4+ - 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
- --------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 in in HMA
- 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 PowerLAN 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)
- 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
- --------N-213306-----------------------------
- INT 21 - CBIS POWERLAN - 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=33E0h
- --------v-2133E0-----------------------------
- INT 21 - VIRUS - "Oropax" - INSTALLATION CHECK
- AX = 33E0h
- Return: AL = E0h if resident (DOS returns AL=FFh)
- SeeAlso: AX=330Fh,AX=357Fh
- --------D-2134-------------------------------
- INT 21 - DOS 2+ - GET ADDRESS OF INDOS FLAG
- AH = 34h
- Return: ES:BX -> one-byte InDOS flag
- Notes: 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.
- the critical error flag is the byte immediately following InDOS in
- DOS 2.x, and the byte BEFORE the InDOS flag in DOS 3+ 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
- ---------------------------------------------
-