You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9514 lines
345 KiB
9514 lines
345 KiB
Interrupt List, part 14 of 18
|
|
Copyright (c) 1989-1999,2000 Ralf Brown
|
|
--------F-2FDA00-----------------------------
|
|
INT 2F - ZyXEL ZFAX v1.x - INSTALLATION CHECK
|
|
AX = DA00h
|
|
Return: AH = enabled state (00h = enabled, 01h = disabled)
|
|
AL = 5Ah installed
|
|
Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
|
|
fax modems.
|
|
Note: This function, and the other DAxxh functions, may apply only to version
|
|
1 of the software; see AX=DB00h for the version 2 installation check
|
|
SeeAlso: AX=CBDCh,AX=DA01h,AX=DA02h,AX=DA03h,AX=DB00h
|
|
--------F-2FDA01-----------------------------
|
|
INT 2F - ZyXEL ZFAX v1.x - UNINSTALL
|
|
AX = DA01h
|
|
Return: AL = 00h Success
|
|
01h Failure
|
|
SeeAlso: AX=DA00h,AX=DB01h
|
|
--------F-2FDA02-----------------------------
|
|
INT 2F - ZyXEL ZFAX v.1x - DISABLE
|
|
AX = DA02h
|
|
Return: AL = 00h
|
|
SeeAlso: AX=DA03h,AX=DB02h
|
|
--------F-2FDA03-----------------------------
|
|
INT 2F - ZyXEL ZFAX v1.x - ENABLE
|
|
AX = DA03h
|
|
Return: AL = 00h
|
|
SeeAlso: AX=DA02h,AX=DB03h
|
|
--------G-2FDA55-----------------------------
|
|
INT 2F U - TRAP.COM - INSTALLATION CHECK
|
|
AX = DA55h
|
|
DL = interrupt number
|
|
DH = ???
|
|
Return: if installed
|
|
AH = interrupt number
|
|
AL = ???
|
|
ES:BX -> ???
|
|
Program: TRAP is an interrupt call tracer by Patrick Phillipot/Udo Chrosziel
|
|
Note: a separate copy of TRAP is loaded for each interrupt to be traced; thus
|
|
the interrupt number is part of the installation check
|
|
--------N-2FDAB2-----------------------------
|
|
INT 2F U - Beame&Whiteside BWSNMP - INSTALLATION CHECK
|
|
AX = DAB2h
|
|
Return: AX = 00FFh if installed
|
|
BX:CX -> MIB table
|
|
Program: BWSNMP is part of the BW-NFS package
|
|
SeeAlso: INT 62/AH=00h"ETHDEV"
|
|
--------F-2FDB00-----------------------------
|
|
INT 2F - ZyXEL ZFAX v2+ - INSTALLATION CHECK
|
|
AX = DB00h
|
|
Return: AL = 5Bh if installed (v2.x)
|
|
ES:BX -> configuration table???
|
|
AX = 00DBh if installed (v3)
|
|
ES:BX -> ZFAX configuration table (see #03092)
|
|
Program: ZFAX is the bundled FAX software which comes with the ZyXEL model
|
|
Fax modems.
|
|
SeeAlso: AX=CBDCh,AX=DA00h,AX=DB01h,AX=DB02h,AX=DB03h
|
|
|
|
Format of ZFAX Configuration Table:
|
|
Offset Size Description (Table 03092)
|
|
00h WORD table version number (0300h for v3.0-v4.01)
|
|
02h BYTE reserved
|
|
03h 70 BYTEs ZFAX working path
|
|
49h 128 BYTEs path to external editor
|
|
C9h 128 BYTEs path to external terminal emulator
|
|
149h 128 BYTEs path to Ring Shell
|
|
1C9h 128 BYTEs path to DOS Shell
|
|
249h 128 BYTEs path to Data Shell
|
|
2C9h 70 BYTEs path to Chinese font
|
|
30Fh BYTE printer type (see #03093)
|
|
310h BYTE printer port (00h = LPT1, etc.)
|
|
311h BYTE type of graphics adapter
|
|
(00h auto-detect, 01h VGA, 02h EGA, 03h CGA, 04h Hercules)
|
|
312h BYTE display type
|
|
(00h auto-detect, 01h LCD, 02h color, 03h mono)
|
|
313h BYTE scan code for ZFAX hotkey (see #00006)
|
|
314h BYTE shift mask for ZFAX hotkey
|
|
315h BYTE tone/pulse dialing (00h tone, 01h pulse)
|
|
316h BYTE Caller ID (00h disabled, 01h enabled)
|
|
317h BYTE Distinctive Ring (00h disabled, 01h enabled)
|
|
318h BYTE normal ring answer type (see #03094)
|
|
319h BYTE Ring 1 answer type (see #03094)
|
|
31Ah BYTE Ring 2 answer type (see #03094)
|
|
31Bh BYTE Ring 3 answer type (see #03094)
|
|
31Ch BYTE COM port for modem
|
|
31Dh BYTE speaker volume (00h-07h)
|
|
31Eh BYTE modem dial timer, seconds
|
|
31Fh WORD user-defined COM port I/O address
|
|
321h BYTE user-defined COM port IRQ number
|
|
322h 81 BYTEs dial prefix string
|
|
373h 79 BYTEs dial postfix string
|
|
3C2h BYTE ring count until automatic answer
|
|
3C3h BYTE retry count on busy signal
|
|
3C4h BYTE redial delay in seconds
|
|
3C5h WORD system password
|
|
3C7h BYTE reserved
|
|
3C8h BYTE voice file compression format
|
|
00h CELP at 9600bps
|
|
01h two-bit ADPCM at 19200bps
|
|
02h three-bit ADPCM at 28800bps
|
|
3C9h BYTE voice system: DTMF 0 action (see #03095)
|
|
3CAh BYTE voice system: DTMF 1 action
|
|
3CBh BYTE voice system: DTMF 2 action
|
|
3CCh BYTE voice system: DTMF 3 action
|
|
3CDh BYTE voice system: DTMF 4 action
|
|
3CEh BYTE voice system: DTMF 5 action
|
|
3CFh BYTE voice system: DTMF 6 action
|
|
3D0h BYTE voice system: DTMF 7 action
|
|
3D1h BYTE voice system: DTMF 8 action
|
|
3D2h BYTE voice system: DTMF 9 action (see #03095)
|
|
3D3h WORD reserved
|
|
3D5h 25 BYTEs local FAX ID to display on page header
|
|
3EEh 20 BYTEs local FAX ID sent to remote FAX
|
|
402h BYTE FAX page size
|
|
00h A4 (210x297mm)
|
|
01h B4 (250x353mm)
|
|
02h A3 (297x420mm)
|
|
403h BYTE FAX resolution
|
|
00h normal (3.85 pixels/mm)
|
|
01h high (7.7 pixels/mm)
|
|
404h BYTE FAX coding scheme
|
|
00h 1-D, modified Huffman coding
|
|
01h 2-D, modified READ coding
|
|
405h BYTE left margin for text in millimeters
|
|
406h BYTE vertical insertion for text in mm (0-20)
|
|
407h BYTE horizontal insertion in mm (0-20)
|
|
408h BYTE maximum text lines per page
|
|
409h BYTE text type (00h ASCII, 01h WordStar-formatted)
|
|
40Ah BYTE PCX image resize (00h disabled, 01h enabled)
|
|
40Bh BYTE AutoPrint (00h disabled, 01h enabled)
|
|
40Ch BYTE cover page (00h disabled, 01h enabled)
|
|
40Dh 81 BYTEs cover page logo filename
|
|
45Eh 65 BYTEs cover page sender name
|
|
49Fh BYTE print capture (00h disabled, 01h enabled)
|
|
4A0h BYTE send immediately (00h disabled, 01h enabled)
|
|
4A1h BYTE print capture printer port
|
|
4A2h BYTE print capture timer in seconds
|
|
4A3h BYTE scan code for print capture hotkey (see #00006)
|
|
4A4h BYTE shift mask for print capture hotkey
|
|
4A5h BYTE DataShell type
|
|
00h internal Zmodem, 01h Data Shell, 02h disable
|
|
4A6h BYTE video I/O type
|
|
00h auto-detect, 01h use BIOS, 02h direct writes
|
|
4A7h BYTE call transfer digits (0-9)
|
|
4A8h WORD voice recorder maximum time in seconds (0-999)
|
|
|
|
(Table 03093)
|
|
Values for ZFAX printer type:
|
|
00h EPSON FX (9 pins)
|
|
01h EPSON LQ (24 pins)
|
|
02h HP Laser Jet II, letter size
|
|
03h HP Laser Jet II, legal size
|
|
04h HP Laser Jet II, A4 size
|
|
05h HP Laser Jet III, letter size
|
|
06h HP Laser Jet III, legal size
|
|
07h HP Laser Jet III, A4 size
|
|
SeeAlso: #03092
|
|
|
|
(Table 03094)
|
|
Values for Ring Answer Type:
|
|
00h voice system
|
|
01h FAX only
|
|
02h Data Shell
|
|
03h Ring Shell
|
|
04h DOS Shell
|
|
05h ignore
|
|
SeeAlso: #03092
|
|
|
|
(Table 03095)
|
|
Values for DTMF action:
|
|
00h none
|
|
01h page operator
|
|
02h FaxBack
|
|
03h announcement
|
|
04h call transfer
|
|
05h receive FAX
|
|
06h receive data
|
|
07h voice mailbox
|
|
08h DOS Shell Out
|
|
09h Data Shell Out
|
|
SeeAlso: #03092
|
|
--------U-2FDB00-----------------------------
|
|
INT 2F U - WINGO.COM - INSTALLATION CHECK
|
|
AX = DB00h
|
|
Return: AX = FFFFh if installed
|
|
CX = 5749h ('WI') if installed
|
|
DX = 4E47h ('NG') if installed
|
|
ES = segment of resident code
|
|
Program: WINGO.COM is TSR for starting Windows programs from DOS
|
|
prompt (together with companion Windows program
|
|
WINSTART.EXE) written by Douglas Boling, contributing editor of
|
|
PC Magazine
|
|
Range: AH=DBh to AH=FFh, selected by scanning for a free multiplex number
|
|
SeeAlso: AX=DB01h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
|
|
SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
|
|
--------F-2FDB01-----------------------------
|
|
INT 2F - ZyXEL ZFAX v2+ - UNINSTALL
|
|
AX = DB01h
|
|
Return: AX = status
|
|
0000h successful
|
|
0001h ZFAX is busy
|
|
0002h another program resident above ZFAX
|
|
Note: this function unhooks the vectors taken by the ZFAX TSR if they have
|
|
not been hooked by other TSRs and releases the TSR's memory
|
|
ZFAX v2.x crashes the contributor's machine when this function is
|
|
called
|
|
SeeAlso: AX=DA01h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
|
|
--------U-2FDB01-----------------------------
|
|
INT 2F U - WINGO.COM - SET CALLBACK FUNCTION POINTER
|
|
AX = DB01h
|
|
CX:DX -> new callback function
|
|
Return: AX = 0000h
|
|
CX:DX -> end of resident code (stack ???)
|
|
Desc: the callback function is used for WINGO <-> WINSTART communication
|
|
SeeAlso: AX=DB00h"WINGO",AX=DB02h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
|
|
SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
|
|
--------F-2FDB02-----------------------------
|
|
INT 2F - ZyXEL ZFAX v2.x - DISABLE
|
|
AX = DB02h
|
|
Return: AL = 00h
|
|
SeeAlso: AX=DA02h,AX=DB00h"ZFAX",AX=DB01h"ZFAX",AX=DB03h"ZFAX"
|
|
--------U-2FDB02-----------------------------
|
|
INT 2F U - WINGO.COM - RESET CALLBACK FUNCTION POINTER
|
|
AX = DB02h
|
|
Return: AX = 0000h
|
|
Desc: the callback function is used for WINGO <-> WINSTART communication
|
|
SeeAlso: AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
|
|
SeeAlso: AX=DB05h"WINGO",AX=DB06h"WINGO"
|
|
--------F-2FDB03-----------------------------
|
|
INT 2F - ZyXEL ZFAX v2.x - ENABLE
|
|
AX = DB03h
|
|
Return: AL = 00h
|
|
SeeAlso: AX=DA03h,AX=DB00h"ZFAX",AX=DB02h"ZFAX"
|
|
--------U-2FDB03-----------------------------
|
|
INT 2F U - WINGO.COM - SET ??? FLAG
|
|
AX = DB03h
|
|
Return: AX = 0000h
|
|
SeeAlso: AX=DB00h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
|
|
--------U-2FDB04-----------------------------
|
|
INT 2F U - WINGO.COM - RESET ??? FLAG
|
|
AX = DB04h
|
|
Return: AX = 0000h
|
|
SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB05h"WINGO",AX=DB06h"WINGO"
|
|
--------U-2FDB05-----------------------------
|
|
INT 2F U - WINGO.COM - GET ??? FLAG
|
|
AX = DB05h
|
|
Return: AX = 0000h
|
|
DX = unknown flag - 0 or 1
|
|
Program: WINGO.COM is TSR for starting Windows programs from DOS
|
|
prompt (together with companion Windows program
|
|
WINSTART.EXE) written by Douglas Boling, contributing editor of
|
|
PC Magazine
|
|
SeeAlso: AX=DB00h"WINGO",AX=DB03h"WINGO",AX=DB04h"WINGO"
|
|
--------U-2FDB06-----------------------------
|
|
INT 2F U - WINGO.COM - CALL CALLBACK FUNCTION
|
|
AX = DB06h
|
|
Return: AX = return value of INT 2F/AX=1685h
|
|
Note: uses Windows service INT 2F/AX=1685h (SWITCH VMs AND CALLBACK) to
|
|
call the callback function previously set by AX=DB01h
|
|
used for WINGO <-> WINSTART communication
|
|
SeeAlso: AX=1685h, AX=DB00h"WINGO",AX=DB01h"WINGO",AX=DB02h"WINGO",
|
|
SeeAlso: AX=DB03h"WINGO",AX=DB04h"WINGO",AX=DB05h"WINGO"
|
|
--------F-2FDB10-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - EXECUTE ZFAX MAIN MENU
|
|
AX = DB10h
|
|
SeeAlso: AX=DB00h"ZFAX",AX=DB11h"ZFAX"
|
|
--------F-2FDB11-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - SEND FAX
|
|
AX = DB11h
|
|
DS:SI -> filename including path (max 128 characters)
|
|
DS:BX -> remote FAX number
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB00h"ZFAX",AX=DB12h,AX=DB13h,AX=DB14h,AX=DB15h,AX=DB20h,AX=DB21h
|
|
|
|
(Table 03096)
|
|
Values for ZFAX status:
|
|
00h OK
|
|
01h invalid DOS function
|
|
02h file not found
|
|
03h path not found
|
|
04h no file handle available
|
|
05h access denied by DOS
|
|
06h invalid handle
|
|
07h disk full
|
|
10h printer error
|
|
11h no graphics font
|
|
12h no ZFAX font
|
|
20h DCD dropped while sending
|
|
21h not ZyXEL modem
|
|
22h busy
|
|
23h no response from COM port
|
|
24h no carrier
|
|
25h no dial tone
|
|
26h no answer
|
|
27h no response
|
|
28h failed to send FAX
|
|
30h user aborted
|
|
40h critical error on disk
|
|
50h parameter error
|
|
--------F-2FDB12-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - PRINT FAX
|
|
AX = DB12h
|
|
DS:SI -> filename, including path (max 128 characters)
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB11h,AX=DB13h,AX=DB14h
|
|
--------F-2FDB13-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - CONVERT FAX
|
|
AX = DB13h
|
|
DS:SI -> source filename, including path (max 128 characters)
|
|
DS:BX -> destination filename, including path (max 80 characters)
|
|
CX = destination file format
|
|
00h FAX, 01h PCX, 02h TIFF, 03h PRN
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h,AX=DB22h
|
|
--------F-2FDB14-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - VIEW FAX
|
|
AX = DB14h
|
|
DS:SI -> source filename, including path (max 128 characters)
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB11h,AX=DB12h,AX=DB14h
|
|
--------F-2FDB15-----------------------------
|
|
INT 2F - ZyXEL ZFAX v4.01 - SEND FAX WITH LOGO AND SIGNATURE
|
|
AX = DB15h
|
|
DS:SI -> source filename, including path (max 128 characters)
|
|
DS:BX -> remote FAX number
|
|
DS:CX -> Logo filename
|
|
DS:DX -> Signature filename
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB00h"ZFAX",AX=DB11h
|
|
--------F-2FDB16-----------------------------
|
|
INT 2F - ZyXEL ZFAX v4.01 - QUOTE PREVIOUS STATUS
|
|
AX = DB16h
|
|
Return: DX:AX -> previous receive state transaction log (see #03097)
|
|
BX = type (00h incoming FAX, 01h incoming data, 02h incoming voice)
|
|
SeeAlso: AX=DB00h"ZFAX",AX=DB11h,AX=DB17h
|
|
|
|
Format of ZFAX transaction log receive state:
|
|
Offset Size Description (Table 03097)
|
|
00h WORD year
|
|
02h WORD date
|
|
04h WORD time
|
|
06h WORD extension number
|
|
08h WORD type: 00h incoming FAX, 01h outgoing FAX, 02h voice message
|
|
0Ah WORD status: 00h normal, 01h remote delete
|
|
0Ch 125 BYTEs filename
|
|
89h 24 BYTEs caller ID
|
|
A1h 20 BYTEs FAX number
|
|
B5h 20 BYTEs remote FAX ID
|
|
C9h WORD error code
|
|
CBh WORD connection direction (00h transmit, 01h receive)
|
|
CDh BYTE connection time minutes
|
|
CEh BYTE connection time seconds
|
|
CFh BYTE ???
|
|
D0h WORD connection speed (24, 48, 72, 96, 12, 144)
|
|
D2h WORD connection page size (A4, B4, A3)
|
|
D4h WORD connection coding scheme (1-DN, 1-DH, 2-DN, 2-DH)
|
|
D6h WORD page count
|
|
--------F-2FDB17-----------------------------
|
|
INT 2F - ZyXEL ZFAX v4.01 - BEGIN RECEIVING INCOMING CALL
|
|
AX = DB17h
|
|
Return: AX = status (0000h successful, 0001h unable to start at this time)
|
|
SeeAlso: AX=DB00h"ZFAX"
|
|
--------F-2FDB18-----------------------------
|
|
INT 2F - ZyXEL ZFAX v4.01 - SCHEDULE CALL
|
|
AX = DB18h
|
|
DS:SI -> schedule data (see #03097)
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB00h"ZFAX"
|
|
--------F-2FDB20-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - POLL FAX
|
|
AX = DB20h
|
|
DS:SI -> remote FAX number
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB11h,AX=DB21h
|
|
--------F-2FDB21-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - SEND VOICE
|
|
AX = DB21h
|
|
DS:SI -> filename including path (max 128 characters)
|
|
DS:BX -> remote phone number
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB11h,AX=DB20h,AX=DB22h,AX=DB23h,AX=DB24h
|
|
--------F-2FDB22-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - CONVERT VOICE FILE
|
|
AX = DB22h
|
|
DS:SI -> source filename, including path (max 128 characters)
|
|
DS:BX -> destination filename, including path (max 80 characters)
|
|
CX = destination format
|
|
00h two-bit ADPCM, 01h three-bit ADPCM, 02h VOC
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB13h,AX=DB20h,AX=DB21h,AX=DB23h
|
|
--------F-2FDB23-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - RECORD VOICE FILE
|
|
AX = DB23h
|
|
DS:SI -> destination filename, including path (max 128 characters)
|
|
CX = recording channel (0 = telephone line, 1 = microphone/speaker)
|
|
DX = voice file format
|
|
00h CELP, 01h two-bit ADPCM, 02h three-bit ADPCM
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
|
|
--------F-2FDB24-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - PLAY VOICE FILE
|
|
AX = DB24h
|
|
DS:SI -> name of voice file, including path (max 128 characters)
|
|
CX = playback channel (0 = telephone line, 1 = microphone/speaker)
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB21h,AX=DB22h,AX=DB24h
|
|
--------F-2FDB25-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - ANSWER MODEM WITH VOICE SYSTEM
|
|
AX = DB25h
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB21h,AX=DB22h,AX=DB26h,AX=DB27h,AX=DB28h
|
|
--------F-2FDB26-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - DIAL PHONE
|
|
AX = DB26h
|
|
DS:SI -> remote phone number
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB25h
|
|
--------F-2FDB27-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX - ANSWER MODEM AND SET TO FAX MODE
|
|
AX = DB27h
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB25h,AX=DB28h
|
|
--------F-2FDB28-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - RECEIVE FAX DATA - ANSWER MODEM IN MULTI-AUDIO MODE
|
|
AX = DB28h
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB25h,AX=DB27h,AX=DB41h
|
|
--------F-2FDB40-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - INTERNAL TERMINAL
|
|
AX = DB40h
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB00h
|
|
--------F-2FDB41-----------------------------
|
|
INT 2F - ZyXEL ZFAX v3+ - SEND DATA - DIAL NUMBER AND UPLOAD FILE WITH ZMODEM
|
|
AX = DB41h
|
|
DS:SI -> source file name, including path (max 128 characters)
|
|
DS:BX -> remote data number
|
|
Return: AX = status (see #03096)
|
|
SeeAlso: AX=DB00h,AX=DB28h
|
|
--------K-2FDC00-----------------------------
|
|
INT 2F - GOLD.COM - INSTALLATION CHECK
|
|
AX = DC00h
|
|
Return: AL = state
|
|
00h not installed
|
|
FFh installed
|
|
Program: GOLD is a TSR by Bob Eager which makes the NumLock key return the
|
|
code for F1; the purpose is to improve Kermit's VTxxx emulation
|
|
--------K-2FDC01-----------------------------
|
|
INT 2F - GOLD.COM - GET STATE
|
|
AX = DC01h
|
|
Return: AL = status
|
|
00h off
|
|
01h on
|
|
SeeAlso: AX=DC00h,AX=DC02h
|
|
--------K-2FDC02-----------------------------
|
|
INT 2F - GOLD.COM - SET STATE
|
|
AX = DC02h
|
|
DL = new state
|
|
00h off
|
|
01h on
|
|
Return: AL = 00h (OK)
|
|
SeeAlso: AX=DC01h
|
|
--------t-2FDD-------------------------------
|
|
INT 2F - CappaCom programs - API
|
|
AH = DDh
|
|
AL = 00h general installation check
|
|
Return: AL = FFh if any CappaCom programs are resident
|
|
AL = FEh get info
|
|
Return: ES:BX -> TSR info list (see #03098)
|
|
AL = program identifier
|
|
BH = function
|
|
FDh get version
|
|
Return: BX = version
|
|
FFh installation check
|
|
Return: AL = FFh if installed
|
|
BX = version
|
|
ES = segment of resident code
|
|
others vary by program
|
|
Return: AL = status
|
|
bit 7 set on error
|
|
AL = 81h unknown function
|
|
Note: CappaCom was originally SoftCom but changed its name due to a trademark
|
|
conflict
|
|
Index: installation check;SoftCom programs
|
|
Index: installation check;CappaCom programs
|
|
|
|
Format of CappaCom TSR info list:
|
|
Offset Size Description (Table 03098)
|
|
00h 9 BYTEs blank-padded ASCIZ program name
|
|
09h BYTE program ID
|
|
0Ah WORD program's PSP segment
|
|
0Ch WORD program version (major in high byte)
|
|
0Eh DWORD pointer to next item in info list or 0000h:0000h
|
|
12h BYTE number of interrupts hooked
|
|
13h 5 BYTEs interrupt numbers hooked by program
|
|
18h 8 BYTEs reserved
|
|
----------2FDD-------------------------------
|
|
INT 2F - MIXFIX.EXE - API
|
|
AH = DDh
|
|
AL = function
|
|
00h installation check
|
|
Return: AX = 00DDh if installed
|
|
BX = version (BH = major, BL = minor)
|
|
41h/61h get From: address
|
|
Return: AX = 0001h
|
|
ES:BX -> ASCIZ 4d address of mail sender ("1:2/3.4")
|
|
49h/69h get To: address
|
|
Return: AX = 0001h
|
|
ES:BX -> ASCIZ 4d address of recipient ("1:2/3.4")
|
|
4Ah/6Ah get subject of mail
|
|
Return: AX = 0001h
|
|
ES:BX -> ASCIZ subject of handled mail
|
|
4Dh/6Dh get mail name
|
|
Return: AX = 0001h
|
|
ES:BX -> ASCIZ full name of current mail file
|
|
4Eh/6Eh get From: field
|
|
Return: AX = 0001h
|
|
ES:BX -> ASCIZ From: field of mail (mail sender's name)
|
|
Program: MIXFIX by "KIV without Co" is a FidoNet mail robot which may execute
|
|
other programs for mail handling. The called programs may use the
|
|
services described here to retrieve information about the mail being
|
|
handled.
|
|
Index: installation check;MIXFIX.EXE
|
|
--------d-2FDD--BX7844-----------------------
|
|
INT 2F - xDISK v3.32+ - INSTALLATION CHECK
|
|
AH = DDh
|
|
BX = 7844h ('xD')
|
|
CX = 4953h ('IS')
|
|
DX = 4B3Fh ('K?')
|
|
AL = desired drive (01h-1Ah) or 00h to check for xDISK on any drive
|
|
ES:DI -> 25-byte data buffer (see #03099)
|
|
Return: AX = DDFFh if installed (on specified drive if AL nonzero on entry)
|
|
BX = 87BBh
|
|
DX = B4C0h
|
|
ES:DI buffer filled
|
|
CX,CF destroyed
|
|
SeeAlso: INT 21/AX=4404h"xDISK",INT 21/AX=4405h"xDISK"
|
|
|
|
Format of xDISK data buffer:
|
|
Offset Size Description (Table 03099)
|
|
00h DWORD pointer to ASCIZ driver signature "xDISK unit: X"
|
|
04h BYTE flag: 01h if disk linked to DOS, 00h if unlinked
|
|
05h BYTE flag: 01h if write protected, 00h if not
|
|
06h BYTE flag: 01h if root directory full, 00h if not
|
|
07h BYTE flag: 01h if free space uncompacted, 00h if compacted
|
|
08h BYTE resizing state: 00h not resizable, 01h resized, 80h resizable
|
|
09h BYTE flag: 01h inelastic resizable disk, 00h elastic
|
|
0Ah 2 BYTEs reserved
|
|
0Ch BYTE flag: 01h collapsed disk, 00h not collapsed
|
|
0Dh BYTE flag: 01h using all EMS, 00h some EMS free
|
|
0Eh BYTE flag: 01h password enabled, 00h disabled
|
|
0Fh BYTE flag: 01h password audio feedback, 00h no feedback
|
|
10h BYTE flag: 01h password video feedback, 00h no feedback
|
|
11h BYTE flag: 01h confirm changes, 00h no confirmation
|
|
12h BYTE flag: 01h terse display, 00h verbose display
|
|
13h BYTE flag: 01h click speaker on disk access, 00h no click
|
|
14h BYTE flag: 01h flash icon on disk access, 00h no icon flash
|
|
15h BYTE FAT entry size: 00h 12-bit, FFh 16-bit
|
|
16h WORD count of open files in RAM disk
|
|
18h BYTE unused
|
|
--------N-2FDE00BL00-------------------------
|
|
INT 2F U - Novell Netware - RPRINTER, NPRINTER - INSTALLATION CHECK
|
|
AX = DE00h
|
|
BL = 00h
|
|
Return: AL = FFh If Rprinter/Nprinter Installed
|
|
BX -> Program Segment Prefix N/Rprinter.exe
|
|
--------Q-2FDE00BX4456-----------------------
|
|
INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK
|
|
AX = DE00h
|
|
BX = 4456h ("DV")
|
|
CX = 5844h ("XD")
|
|
DX = 4931h ("I1")
|
|
Return: AL = FFh if installed (even if other registers do not match)
|
|
if BX,CX, and DX were as specified on entry,
|
|
BX = 4845h ("HE")
|
|
CX = 5245h ("RE")
|
|
DX = 4456h ("DV")
|
|
Range: AH=C0h to AH=FFh, selected by scanning AH=DEh-FFh, then AH=C0h-DDh
|
|
Note: the XDI handler should not issue any DOS or BIOS calls, nor should it
|
|
issue DESQview API calls other than those allowed from hardware ints
|
|
SeeAlso: AX=DE02h,INT 15/AX=5400h
|
|
--------Q-2FDE01-----------------------------
|
|
INT 2F - DESQview v2.26+ External Device Interface - DRIVER CUSTOM SUBFUNCTION
|
|
AX = DE01h
|
|
BX = driver ID
|
|
other registers as needed by driver
|
|
Notes: XDI drivers should pass this call through to previous handler if ID
|
|
does not match
|
|
DESQview never calls this function
|
|
--------Q-2FDE01BX4450-----------------------
|
|
INT 2F U - Quarterdeck QDPMI.SYS v1.0 - INSTALLATION CHECK
|
|
AX = DE01h
|
|
BX = 4450h ("DP")
|
|
CX = 4D49h ("MI")
|
|
DX = 3039h ("09")
|
|
Return: AL = FFh if installed
|
|
BX = 4D42h ("MB")
|
|
CX = 4921h ("I!")
|
|
DX = 8F4Fh
|
|
ES:DI -> filename of DPMI host overlay
|
|
InstallCheck: test for the existence of the character device QDPMI$$$
|
|
SeeAlso: INT 2F/AX=1687h,INT 31/AX=0000h
|
|
Index: installation check;QDPMI
|
|
--------U-2FDE01BX5242-----------------------
|
|
INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, Ralf Brown's XDI drivers
|
|
AX = DE01h
|
|
BX = 5242h ("RB")
|
|
CX:DX = program identifier
|
|
656F7000h ("eop",0) for DVeop
|
|
Return: AX = 5242h ("RB") if installed
|
|
ES:BX -> data or entry point (see #03100)
|
|
CX = version number (CH = major, CL = minor)
|
|
|
|
(Table 03100)
|
|
Call DVeop entry point with:
|
|
ES:DI -> callback address or 0000h:0000h to remove callback
|
|
Return: AX = status
|
|
0000h failed (callback table full or attempted to remove non-
|
|
existent callback)
|
|
0001h successful
|
|
ES:DI -> chaining address
|
|
BX,CX,DX destroyed
|
|
Notes: the callback function is called with a simulated interrupt when the
|
|
DESQview window containing it is closed; it should perform all
|
|
necessary cleanup and then perform a FAR jump to the chaining address
|
|
or an IRET if the chaining address is 0000h:0000h
|
|
if the program wishes to remove itself before the window is closed, it
|
|
should call the DVeop entry point with the previously returned
|
|
chaining address and ignore the returned chaining address.
|
|
--------U-2FDE01BX7474-----------------------
|
|
INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVTXDI.COM
|
|
AX = DE01h
|
|
BX = 7474h
|
|
CL = function
|
|
00h installation check
|
|
Return: AL = FFh
|
|
01h get process handle
|
|
DX = keys on Open Window menu (DL = first, DH = second)
|
|
Return: AX = process handle or 0000h if not running
|
|
02h (v1.3+) set TMAN handle
|
|
DX = TMAN process handle
|
|
03h (v1.3+) set open keys to ignore on next CL=01h call
|
|
DX = keys on Open Window menu (DL = first, DH = second)
|
|
Return: BX = 4F4Bh ("OK")
|
|
DL destroyed
|
|
Note: DVTXDI is distributed as part of the shareware products DVTree (DOS
|
|
shell/DESQview process manager) and DVTMAN by Mike Weaver
|
|
Index: installation check;DVTXDI
|
|
--------U-2FDE01BX7575-----------------------
|
|
INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, DVSIXDI.COM
|
|
AX = DE01h
|
|
BX = 7575h
|
|
CX = function
|
|
0000h installation check
|
|
Return: AX = 00FFh if installed
|
|
0001h turn on notification (currently unused)
|
|
Return: AX = 0001h
|
|
0002h turn off notification (currently unused)
|
|
Return: AX = 0001h
|
|
0003h get process information
|
|
Return: AX = status
|
|
0000h failed
|
|
0001h successful
|
|
BX = last instantaneous time slice
|
|
in 1/100s (v1.10)
|
|
in 1/18s (v1.11+)
|
|
CX = number of processes
|
|
DX = number of "(starting)" records (v2.00+)
|
|
SI = number of records in process info array
|
|
(v2.00+) (always 15 for v1.x)
|
|
ES:DI -> process info array (see #03101,#03102)
|
|
0004h get version
|
|
Return: AH = major version
|
|
AL = minor version
|
|
0005h (v1.10+) get time since DESQview started
|
|
Return: DX:AX = 1/100s since DV start (v1.10)
|
|
DX:AX = 1/18s since DV start (v1.11+)
|
|
0006h (v1.10+) get number of task switches
|
|
Return: DX:AX = total task switches
|
|
CX = task switches in last instantaneous interval
|
|
Notes: DVSIXDI is part of the DVSI (DESQview System Information) package by
|
|
Daniel J. Bodoh
|
|
for v1.00, function 0003h allocates common memory, which the caller
|
|
must deallocate after reading the process information; only the
|
|
currently used records are placed in the buffer
|
|
for v1.10+, function 0003h merely returns a pointer to the internal
|
|
array of process information; the caller should make a copy of the
|
|
array while inside a critical section (see INT 15/AX=101Bh). Only
|
|
those records with bit 7 of the first byte set are valid.
|
|
Index: installation check;DVSIXDI
|
|
|
|
Format of DVSIXDI v1.00 information for one process:
|
|
Offset Size Description (Table 03101)
|
|
00h BYTE flags
|
|
bit 7: process slot is valid
|
|
01h WORD offset into DESQVIEW.DVO of program's record if started from
|
|
Open Windows menu, else undefined
|
|
03h WORD Switch Windows window number
|
|
05h WORD segment of process handle
|
|
07h WORD number of tasks owned by process
|
|
09h WORD mapping context of process (see #00416 at INT 15/AX=1016h)
|
|
0Bh DWORD hook for other programs
|
|
|
|
Format of DVSIXDI v1.10-v2.00 information for one process:
|
|
Offset Size Description (Table 03102)
|
|
00h BYTE process flags (see #03103)
|
|
01h WORD Open Window keys
|
|
03h WORD Switch Windows number
|
|
05h WORD segment of process handle
|
|
07h WORD number of tasks for process
|
|
09h WORD process mapping context
|
|
0Bh DWORD time process started (relative to start of DESQview)
|
|
0Fh DWORD time process last got CPU (relative to start of DESQview)
|
|
13h DWORD time process last gave up CPU (relative to start of DESQview)
|
|
17h DWORD total CPU time since process started
|
|
1Bh DWORD CPU time at start of current instantaneous interval
|
|
1Fh DWORD CPU time in current instantaneous interval
|
|
23h DWORD hook for other programs
|
|
Note: all times are in 1/100s for v1.10, in 1/18s for v1.11+
|
|
|
|
Bitfields for DVSIXDI process flags:
|
|
Bit(s) Description (Table 03103)
|
|
7 valid record
|
|
6 (v2.00+) record is allocated; if bit 7 clear, process is "(starting)"
|
|
and only offsets 01h and 09h are valid
|
|
5 (v2.00+) this app currently owns the CPU
|
|
4 reserved (0)
|
|
3 DESQview system task
|
|
2 reserved (0)
|
|
1 task has keyboard (currently unused)
|
|
0 task swapped out (currently unused)
|
|
--------Q-2FDE01BXFFFE-----------------------
|
|
INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ???
|
|
AX = DE01h
|
|
BX = FFFEh
|
|
CX = 4D47h ("MG")
|
|
DX = 0052h (0,"R")
|
|
Return: AL = FFh
|
|
DX = 584Dh
|
|
--------Q-2FDE02-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - DV INITIALIZATION COMPLETE
|
|
AX = DE02h
|
|
BX = mapping context of DESQview
|
|
DX = handle of DESQview system task
|
|
Note: driver should pass this call to previous handler after doing its work
|
|
SeeAlso: AX=DE03h,AX=DE0Fh,INT 15/AX=5400h
|
|
--------Q-2FDE03-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - DV TERMINATION
|
|
AX = DE03h
|
|
BX = mapping context of DESQview
|
|
DX = handle of DESQview system task
|
|
Notes: driver should pass this call to previous handler before doing its work
|
|
DESQview makes this call when it is exiting, but before unhooking any
|
|
interrupt vectors
|
|
SeeAlso: AX=DE02h,AX=DE0Fh,INT 15/AX=5407h
|
|
--------Q-2FDE04-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - ADD PROCESS
|
|
AX = DE04h
|
|
BX = mapping context of new process (see #00416 at INT 15/AX=1016h)
|
|
DX = handle of process
|
|
Return: nothing
|
|
Notes: XMS XDI handler (installed by default) allocates a 22-byte record
|
|
(see #03104) from "common" memory to control access to XMS memory
|
|
all DOS, BIOS, and DV API calls are valid in handler
|
|
driver should pass this call to previous handler after processing it
|
|
SeeAlso: AX=DE05h,AX=DE06h,INT 15/AX=5401h
|
|
|
|
Format of XMS XDI structure:
|
|
Offset Size Description (Table 03104)
|
|
00h DWORD pointer to 10-byte record???
|
|
04h DWORD pointer to next XMS XDI structure
|
|
08h WORD mapping context
|
|
0Ah BYTE ???
|
|
0Bh 5 BYTEs XMS entry point to return for INT 2F/AX=4310h"XMS"
|
|
(FAR jump to next field)
|
|
10h 6 BYTEs FAR handler for XMS driver entry point
|
|
(consists of a FAR CALL followed by RETF)
|
|
--------Q-2FDE05-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - REMOVE PROCESS
|
|
AX = DE05h
|
|
BX = mapping context of process (see #00416 at INT 15/AX=1016h)
|
|
DX = handle of last task in process
|
|
Return: nothing
|
|
Notes: XMS XDI handler releases the structure allocated by AX=DE04h
|
|
driver should pass this call to previous handler before processing it
|
|
all DOS, BIOS, and DV API calls except those generating a task switch
|
|
are valid in handler
|
|
SeeAlso: AX=DE04h,AX=DE07h,INT 15/AX=5402h
|
|
--------Q-2FDE06-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - CREATE TASK
|
|
AX = DE06h
|
|
BX = mapping context of process containing task
|
|
DX = handle of new task
|
|
Notes: driver should pass this call to previous handler after processing it
|
|
all DOS, BIOS, and DV API calls are valid in handler
|
|
--------Q-2FDE07-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - TERMINATE TASK
|
|
AX = DE07h
|
|
BX = mapping context of process containing task
|
|
DX = handle of task
|
|
Notes: driver should pass this call to previous handler before processing it
|
|
all DOS, BIOS, and DV API calls except those generating a task switch
|
|
are valid in handler
|
|
SeeAlso: AX=DE04h,AX=DE06h,AX=DE10h
|
|
--------Q-2FDE08-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - SAVE STATE
|
|
AX = DE08h
|
|
BX = mapping context of task being switched from
|
|
(see #00416 at INT 15/AX=1016h)
|
|
DX = handle of task being switched from
|
|
Notes: invoked prior to task swap, interrupts, etc
|
|
driver should pass this call to previous handler after processing it
|
|
SeeAlso: AX=DE09h,INT 15/AX=5403h,INT 15/AX=DE27h
|
|
--------Q-2FDE09-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - RESTORE STATE
|
|
AX = DE09h
|
|
BX = mapping context of task being switched to
|
|
(see #00416 at INT 15/AX=1016h)
|
|
DX = handle of task being switched to
|
|
Notes: state is restored except for interrupts
|
|
driver should pass this call to previous handler before processing it
|
|
SeeAlso: AX=DE08h,INT 15/AX=5404h,INT 15/AX=DE27h
|
|
--------Q-2FDE0A-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - CHANGE KEYBOARD FOCUS
|
|
AX = DE0Ah
|
|
BX = mapping context of task receiving focus
|
|
DX = handle of running task
|
|
Notes: driver should pass this call to previous handler before processing it
|
|
this call often occurs inside a keyboard interrupt
|
|
DV 2.42 does not provide this call to XDI handlers running inside a
|
|
window; instead, it directly calls the INT 2F handler which was
|
|
active at the time DV started
|
|
SeeAlso: INT 15/AX=DE26h,INT 15/AX=DE2Fh
|
|
--------Q-2FDE0B-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - DVP PROCESSING COMPLETE
|
|
AX = DE0Bh
|
|
BX = mapping context of DESQview system task
|
|
CX = number of system memory paragraphs required for the use of all
|
|
XDI drivers (DV will add this to system memory in DVP buffer)
|
|
DX = handle of DESQview system task
|
|
SI = mapping context of new process if it starts
|
|
ES:DI -> DVP buffer
|
|
Return: CX incremented as needed
|
|
Notes: once DV invokes this function, the DVP buffer contents may be changed
|
|
driver should pass this call to previous handler before processing it
|
|
--------Q-2FDE0C-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - SWAP OUT PROCESS
|
|
AX = DE0Ch
|
|
BX = mapping context of task being swapped out
|
|
(see #00416 at INT 15/AX=1016h)
|
|
DX = handle of DESQview system task
|
|
Note: driver should pass this call to previous handler after processing it
|
|
--------Q-2FDE0D-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - SWAP IN PROCESS
|
|
AX = DE0Dh
|
|
BX = mapping context of process just swapped in
|
|
(see #00416 at INT 15/AX=1016h)
|
|
DX = handle of DESQview system task
|
|
Note: driver should pass this call to previous handler before processing it
|
|
--------Q-2FDE0E-----------------------------
|
|
INT 2F C - DESQview v2.26+ External Dev Interface - DVP START FAILED
|
|
AX = DE0Eh
|
|
BX = mapping context of DESQview system task
|
|
DX = handle of DESQview system task
|
|
SI = mapping context of failed process (same as for call to AX=DE0Bh)
|
|
Note: driver should pass this call to previous handler after processing it
|
|
--------Q-2FDE0F-----------------------------
|
|
INT 2F C - DESQview v2.50+ External Dev Interface - INITIALIZE DV
|
|
AX = DE0Fh
|
|
Note: DESQview 2.50+ calls this function just before it completes its
|
|
initialization. At the time of the call, DESQview has not yet
|
|
changed any interrupt vectors
|
|
SeeAlso: AX=DE02h
|
|
--------Q-2FDE10-----------------------------
|
|
INT 2F C - DESQview v2.50+ External Dev Interface - FREE TASK
|
|
AX = DE10h
|
|
BX = mapping context of process (see #00416 at INT 15/AX=1016h)
|
|
DX = task handle of process
|
|
Note: DESQview 2.50+ calls this function before it frees the task; it is
|
|
similar to AX=DE07h but allows the XDI handler to make calls which
|
|
cause context switches
|
|
SeeAlso: AX=DE06h,AX=DE07h
|
|
--------c-2FDF00-----------------------------
|
|
INT 2F - HyperWare programs - INSTALLATION CHECK
|
|
AX = DF00h
|
|
BX = product code (see #03105)
|
|
CX = 0000h
|
|
DX = 0000h
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh multiplex number in use
|
|
CX = 5948h ('YH') if selected product installed
|
|
---HyperDisk---
|
|
BX = code segment of resident portion
|
|
DX = HyperDisk local data version
|
|
Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
|
|
Range: AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
|
|
SeeAlso: INT 13/AX=8EEDh
|
|
Index: installation check;HyperDisk|installation check;HyperStb
|
|
Index: installation check;HyperKey|installation check;HyperScreen
|
|
Index: HyperDisk;installation check|HyperStb;installation check
|
|
Index: HyperKey;installation check|HyperScreen;installation check
|
|
|
|
(Table 03105)
|
|
Values for HyperWare product code:
|
|
4248h ('BH') HyperStb
|
|
4448h ('DH') HyperDisk v4.20+
|
|
4B48h ('KH') HyperKey
|
|
5348h ('SH') HyperScreen
|
|
--------Q-2FDF00BX5445-----------------------
|
|
INT 2F U - Quarterdeck TELTSR.COM - INSTALLATION CHECK
|
|
AX = DF00h
|
|
BX = 5445h ('TE')
|
|
CX = 4C54h ('LT')
|
|
DX = 5352h ('SR')
|
|
Return: BX = 5454h ('TT') if installed
|
|
CX = 494Eh ('IN') if installed
|
|
DX = 5454h ('ST') if installed
|
|
Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
|
|
which provides an INT 14h interface to the network
|
|
Range: AH=DEh to AH=FFh and AH=C0h to AH=DDh, selected by scanning
|
|
SeeAlso: AX=DF01h"TELTSR",AX=DF02h"TELTSR",INT 14/AH=56h
|
|
--------N-2FDF01BX0000-----------------------
|
|
INT 2F U - MSG.COM - INSTALLATION CHECK
|
|
AX = DF01h
|
|
BX = 0000h
|
|
Return: AX = FDFFh if installed
|
|
BX = segment of resident code
|
|
Program: MSG.COM is a TSR for intercepting incoming Novell broadcast
|
|
messages written by Gary Dobbins (Dobbins@Arizona.Edu)
|
|
--------c-2FDF01BX4448-----------------------
|
|
INT 2F - HyperDisk v4.50+ - GET CURRENT CACHE STATE
|
|
AX = DF01h
|
|
BX = 4448h ('DH')
|
|
Return: AX = 0000h if function supported
|
|
BX = number of cache buffers in use
|
|
CX = number of cache buffers which have been modified
|
|
DL = caching flags (see #03106)
|
|
Range: AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
|
|
SeeAlso: AX=DF00h,AX=DF02h
|
|
|
|
Bitfields for HyperDisk caching flags:
|
|
Bit(s) Description (Table 03106)
|
|
0 staged writes enabled for floppy disks
|
|
1 staged writes enabled for hard disks
|
|
2 writes verified on floppy disks
|
|
3 writes verified on hard disks
|
|
4 reserved (0)
|
|
5 reserved (0)
|
|
6 floppy caching enabled
|
|
7 all caching functions enabled
|
|
--------Q-2FDF01-----------------------------
|
|
INT 2F U - Quarterdeck TELTSR.COM - CLOSE CONNECTION
|
|
AX = DF01h
|
|
Return: nothing???
|
|
Note: invokes the DESQview/X socket API (see INT 15/AX=DE2Eh) function 0006h
|
|
to close the socket corresponding to the file handle set with
|
|
AX=DF02h; NOP if no file handle was ever set
|
|
SeeAlso: AX=DF00h"TELTSR",AX=DF02h"TELTSR"
|
|
--------c-2FDF02BX4448-----------------------
|
|
INT 2F - HyperDisk v4.50+ - SET CACHE STATE
|
|
AX = DF02h
|
|
BX = 4448h ('DH')
|
|
DL = new caching flags (see #03106)
|
|
Return: AX = 0000h if supported
|
|
BX = number of cache buffers in use
|
|
CX = number of cache buffers which have been modified
|
|
DL = previous caching flags (see #03106)
|
|
Program: HyperDisk is a shareware disk cache by HyperWare (Roger Cross)
|
|
Range: AH=C0h to AH=FFh, selected by scanning AH=DFh, then AH=C0h-FFh
|
|
SeeAlso: AX=DF00h,AX=DF01h
|
|
--------Q-2FDF02-----------------------------
|
|
INT 2F U - Quarterdeck TELTSR.COM - OPEN CONNECTION
|
|
AX = DF02h
|
|
BX = file handle for connection's socket
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh no more room in TELTSR's JFT
|
|
Program: TELTSR is a Telnet TSR included with Quarterdeck's DESQview/X v2.00
|
|
Notes: the indicated file handle becomes owned by TELTSR, and is closed in
|
|
the caller's JFT
|
|
multiple calls to this function will override the previous assignment
|
|
without closing the previous file; use AX=DF01h before further calls
|
|
SeeAlso: AX=DF00h"TELTSR",AX=DF01h"TELTSR"
|
|
--------U-2FE000-----------------------------
|
|
INT 2F - SETDRVER.COM v2.10+ - INSTALLATION CHECK
|
|
AX = E000h
|
|
Return: AX = 4A52h ("JR") if present
|
|
Program: SETDRVER is a public domain TSR by Jacob Rieper which sets the
|
|
apparent DOS version analogously to MS-DOS SETVER
|
|
Notes: this installation check differs from the usual one of returning AL=FFh
|
|
the SETDRVER API is fully emulated by Matthias Paul's FREEVER
|
|
SeeAlso: AX=E000h/DX=4D50h,AX=E001h,INT 21/AH=52h
|
|
--------j-2FE000-----------------------------
|
|
INT 2F - KAOSHIDE - INSTALLATION CHECK
|
|
AX = E000h
|
|
Return: AL = FFh if installed
|
|
Program: KAOSHIDE ('Hidden Kaos') is a PD joke TSR which randomly capitalizes
|
|
alphabetic keys, written by Philip Maland. Although not a virus,
|
|
v2.0 uses some viral-like techniques to hide itself from
|
|
memory-reports by reducing DOS memory size.
|
|
--------U-2FE000DX4D50-----------------------
|
|
INT 2F - FREEVER v1.0+ - INSTALLATION CHECK
|
|
AX = E000h
|
|
DX = 4D50h ('MP')
|
|
Return: AL = FFh if installed
|
|
AH = AMIS INT 2Dh multiplex ID
|
|
CX = FREEVER version (CH=major, CL=minor)
|
|
DX:DI -> AMIS-compliant signature (see #02569)
|
|
(vendor ID is "M. Paul ", program name is "FREEVER ")
|
|
Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
|
|
to SETVER for any DOS-compatible OS, written by Matthias Paul
|
|
Note: FREEVER emulates INT 21/AH=30h, INT 21/AX=3306h, INT 21/AX=4412h,
|
|
INT 21/AX=4452h, and SETDRVER's API on INT 2F/AX=E00xh, as well as
|
|
providing an AMIS API on INT 2Dh
|
|
SeeAlso: AX=E000h"SETDRVER",INT 21/AH=30h,INT 21/AX=3306h,INT 21/AX=4452h
|
|
--------K-2FE000DX5354-----------------------
|
|
INT 2F - StuffIt v3.21+ - INSTALLATION CHECK
|
|
AX = E000h
|
|
DX = 5354h ("ST")
|
|
Return: AL = FFh if installed
|
|
BX = version (BH = major, BL = BCD minor)
|
|
DX = segment of resident code
|
|
Program: StuffIt is a freeware delayed keyboard stuffer by Terje Mathisen
|
|
--------U-2FE001-----------------------------
|
|
INT 2F - SETDRVER.COM v2.10+ - GET SETDRVER VERSION
|
|
AX = E001h
|
|
Return: AH = major version
|
|
AL = minor version
|
|
Note: the SETDRVER API is fully emulated by Matthias Paul's FREEVER, which
|
|
returns version 2.10 for this call; use AX=E000h/DX=45D0h to get
|
|
FREEVER's version number
|
|
SeeAlso: AX=E000h,AX=E000h/DX=45D0h
|
|
--------U-2FE002-----------------------------
|
|
INT 2F - SETDRVER.COM v2.10+ - GET ORIGINAL DOS VERSION INFO
|
|
AX = E002h
|
|
Return: AL = FFh if successful
|
|
BH = major DOS version
|
|
BL = minor DOS version
|
|
CH = DOS version flag
|
|
CL = OEM number
|
|
DH = major DR DOS version number (FFh if unknown)
|
|
DL = minor DR DOS version number (FFh if unknown)
|
|
SeeAlso: AX=E003h,AX=E007h,INT 21/AH=30h
|
|
--------U-2FE003-----------------------------
|
|
INT 2F - SETDRVER.COM v2.10+ - RESET INTERNAL VARIABLES
|
|
AX = E003h
|
|
BH = new major DOS version
|
|
BL = new minor DOS version
|
|
CH = new DOS version flag
|
|
CL = new DOS revision number
|
|
DH = new OEM number
|
|
SeeAlso: AX=E002h
|
|
--------U-2FE004-----------------------------
|
|
INT 2F - SETDRVER.COM v2.10+ - ENABLE TSR
|
|
AX = E004h
|
|
Return: AL = FFh if successful
|
|
SeeAlso: AX=E000h,AX=E005h,AX=E006h
|
|
--------U-2FE005-----------------------------
|
|
INT 2F - SETDRVER.COM v2.10+ - DISABLE TSR
|
|
AX = E005h
|
|
Return: AL = FFh if successful
|
|
SeeAlso: AX=E000h,AX=E004h,AX=E006h
|
|
--------U-2FE006-----------------------------
|
|
INT 2F - SETDRVER.COM v2.10+ - GET TSR STATUS
|
|
AX = E006h
|
|
Return: AL = FFh if successful
|
|
BL = status
|
|
01h resident and active
|
|
02h resident and inactive
|
|
--------U-2FE007-----------------------------
|
|
INT 2F - SETDRVER.COM v2.10+ - GET TaskMAX STATUS AT INSTALLATION
|
|
AX = E007h
|
|
Return: AL = FFh if successful
|
|
BL = status
|
|
00h if TaskMAX not loaded before SETDRVER
|
|
FFh if TaskMAX was loaded before SETDRVER
|
|
SeeAlso: AX=E003h
|
|
--------U-2FE0-------------------------------
|
|
INT 2F - SETDRVER.COM - RESERVED FOR FUTURE USE
|
|
AH = E0h
|
|
AL = 08h-10h
|
|
--------K-2FE100-----------------------------
|
|
INT 2F - Phantom2 v1.1+ - INSTALLATION CHECK
|
|
AX = E100h
|
|
Return: AX = 0001h if installed
|
|
DS:SI -> ASCIZ hotkey name
|
|
DS:DI -> ASCIZ recording filename
|
|
Program: Phantom of the Keyboard II is a shareware keystroke recorder/replayer
|
|
by P2 Enterprises
|
|
SeeAlso: AX=E101h,AX=E102h,AX=E103h,AX=E300h
|
|
Index: hotkeys;Phantom2
|
|
--------K-2FE101-----------------------------
|
|
INT 2F - Phantom2 v1.1+ - FUNCTION REQUEST
|
|
AX = E101h
|
|
BX = function mask (see #03107)
|
|
CX = code for hotkey (as returned by INT 16/AH=00h) if BX bit 6 set
|
|
DS:DX -> ASCIZ filespec if BX bit 7 set
|
|
SeeAlso: AX=E100h
|
|
Index: hotkeys;Phantom2
|
|
|
|
Bitfields for Phantom2 function mask:
|
|
Bit(s) Description (Table 03107)
|
|
0 record
|
|
1 play
|
|
2 QuickPlay
|
|
3 loop
|
|
4 mode display toggle
|
|
5 sound toggle
|
|
6 set hotkey
|
|
7 set filespec
|
|
--------K-2FE102-----------------------------
|
|
INT 2F - Phantom2 v1.1+ - UNINSTALL
|
|
AX = E102h
|
|
Return: AX = status
|
|
0001h removal successful
|
|
0002h not installed as TSR
|
|
FFFFh disabled but not removed
|
|
SeeAlso: AX=E100h
|
|
--------K-2FE103-----------------------------
|
|
INT 2F - Phantom2 v2.8 - SET ??? FLAG
|
|
AX = E103h
|
|
Return: AX = 0001h
|
|
SeeAlso: AX=E100h
|
|
--------y-2FE200-----------------------------
|
|
INT 2F - SecureDevice - LOGIN TO DRIVE
|
|
AX = E200h
|
|
DL = drive number (0 = A:)
|
|
DS:SI -> 104-byte key
|
|
Return: AL = status
|
|
00h unable to determine key's validity
|
|
01h key is valid
|
|
FFh key is invalid
|
|
Program: SecureDevice is a copylefted device driver by Max Loewenthal and
|
|
Arthur Helwig which turns one or more disk files into encrypted
|
|
logical drives
|
|
SeeAlso: AX=E201h,AX=E203h,AX=E209h
|
|
--------y-2FE201-----------------------------
|
|
INT 2F - SecureDevice - GET INFORMATION
|
|
AX = E201h
|
|
DX = driver index (0000h = first loaded)
|
|
Return: AL = number of volumes handled by driver
|
|
DL = drive number of first volume (00h = A:)
|
|
SeeAlso: AX=E200h,AX=E203h,AX=E209h
|
|
--------y-2FE203-----------------------------
|
|
INT 2F - SecureDevice - DESTROY PASSWORD (LOGOUT FROM DRIVE)
|
|
AX = E203h
|
|
DL = drive number (00h = A:) or FFh for all drives
|
|
Return: nothing
|
|
SeeAlso: AX=E200h,AX=E209h
|
|
--------y-2FE209DX0000-----------------------
|
|
INT 2F - SecureDevice - INSTALLATION CHECK
|
|
AX = E209h
|
|
DX = 0000h
|
|
Return: AX = 1DEAh if installed
|
|
DX = number of drivers installed
|
|
--------K-2FE300-----------------------------
|
|
INT 2F - ANARKEY.COM - INSTALLATION CHECK
|
|
AX = E300h
|
|
Return: AL = state
|
|
00h not installed
|
|
FEh if installed but suspended (v3.0+)
|
|
FFh installed
|
|
Program: ANARKEY.COM is a commandline recall program by Steven Calwas
|
|
Range: AH=C0h to AH=FFh, selected by commandline switch
|
|
SeeAlso: AX=E100h,AX=E301h,AX=E302h,AX=E303h,AX=E304h,AX=E305h,AX=E306h
|
|
SeeAlso: AX=E307h,INT 66"Newkey"
|
|
--------V-2FE300-----------------------------
|
|
INT 2F - Blank - INSTALLATION CHECK
|
|
AX = E300h
|
|
Return: AL = FFh if installed
|
|
ES = resident code segment
|
|
Program: Blank is a shareware screen blanker by Yonah Schmeidler
|
|
Note: AH=E3h is the default, which may be reconfigured by the installation
|
|
program in the registered version
|
|
SeeAlso: AH=93h,AX=C050h,INT 14/AX=AA01h
|
|
Index: screen saver;Blank
|
|
--------K-2FE301-----------------------------
|
|
INT 2F U - ANARKEY.COM v2+ - GET ???
|
|
AX = E301h
|
|
Return: DX:BX -> ??? (see #03108,#03109)
|
|
SeeAlso: AX=E300h
|
|
|
|
Format of returned data structure for ANARKEY v2.0:
|
|
Offset Size Description (Table 03108)
|
|
-7 7 BYTEs signature ('ANARKEY')
|
|
00h WORD ??? (I see 0001h in v2.0)
|
|
02h WORD ??? (I see 0001h in v2.0)
|
|
04h WORD ??? (I see 0 in v2.0)
|
|
06h WORD PSP segment of next program loaded
|
|
|
|
Format of returned data structure for ANARKEY v3+:
|
|
Offset Size Description (Table 03109)
|
|
-1 BYTE multiplex number
|
|
00h WORD ??? (I see 0001h in v3.0-4.0)
|
|
02h WORD ??? (I see 0001h in v3.0-4.0)
|
|
04h BYTE ??? (I see 0 in v3.0-4.0)
|
|
05h WORD PSP segment of next program loaded
|
|
--------K-2FE302-----------------------------
|
|
INT 2F U - ANARKEY.COM v3+ - ???
|
|
AX = E302h
|
|
BL = ???
|
|
Return: ???
|
|
SeeAlso: AX=E300h
|
|
--------K-2FE303-----------------------------
|
|
INT 2F U - ANARKEY.COM v3+ - ANARKMD API
|
|
AX = E303h
|
|
BL = function
|
|
01h toggle insert mode
|
|
02h display contents of history buffer
|
|
03h write history buffer to file
|
|
ES:DX -> file name
|
|
04h clear history buffer
|
|
05h undefine all aliases
|
|
06h show aliases
|
|
07h list programs using Unix switchar
|
|
08h jump to bottom of history buffer
|
|
09h (v4.0) add string to history buffer
|
|
ES:DX -> ASCIZ string
|
|
0Ah (v4.0) ???
|
|
ES:DX -> ???
|
|
0Bh (v4.0) copy string to edit buffer for use as next input line
|
|
ES:DX -> ASCIZ string
|
|
0Ch (v4.0) ???
|
|
0Dh (v4.0) copy ??? to ???
|
|
0Eh (v4.0) ???
|
|
0Fh (v4.0) ???
|
|
10h (v4.0) set ??? flag
|
|
11h (v4.0) display error message about running in EMS under Windows
|
|
Return: ???
|
|
SeeAlso: AX=E300h
|
|
--------K-2FE304-----------------------------
|
|
INT 2F U - ANARKEY.COM v2+ - ???
|
|
AX = E304h
|
|
BL = ???
|
|
Return: ???
|
|
SeeAlso: AX=E300h
|
|
--------K-2FE305-----------------------------
|
|
INT 2F U - ANARKEY.COM v3+ - ENABLE/SUSPEND ANARKEY
|
|
AX = E305h
|
|
BL = new state
|
|
01h suspended
|
|
00h enabled
|
|
SeeAlso: AX=E300h
|
|
--------K-2FE306-----------------------------
|
|
INT 2F U - ANARKEY.COM v4.0 - GET ???
|
|
AX = E306h
|
|
Return: AX = ???
|
|
SeeAlso: AX=E300h
|
|
--------K-2FE307-----------------------------
|
|
INT 2F U - ANARKEY.COM v4.0 - GET ???
|
|
AX = E307h
|
|
Return: AX = ???
|
|
BL = ???
|
|
SeeAlso: AX=E300h
|
|
--------K-2FE337-----------------------------
|
|
INT 2F - INT16.COM - INSTALLATION CHECK
|
|
AX = E337h
|
|
Return: AX = 0013h if installed
|
|
Program: INT16.COM is an INT16 keyboard BIOS replacement for
|
|
INT 16/AH=00h-02h,10h-12h (based on K3) written by Martin Gerdes
|
|
and published in c't 05/1990.
|
|
SeeAlso: AX=ED58h
|
|
--------l-2FE44D-----------------------------
|
|
INT 2F - NDOS - API
|
|
AX = E44Dh
|
|
Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
|
|
Norton Utilities
|
|
Note: as NDOS is a licensed version of 4DOS v3.03, the API is identical to
|
|
that for 4DOS, except that AH=E4h instead of D4h and the installation
|
|
check returns AX=44EEh instead of AX=44DDh
|
|
SeeAlso: AX=D44Dh,AX=E44Eh
|
|
--------l-2FE44E-----------------------------
|
|
INT 2F C - NDOS - AWAITING USER INPUT
|
|
AX = E44Eh
|
|
BX = condition
|
|
0000h NDOS is ready to display prompt
|
|
0001h NDOS has displayed the prompt, about to accept user input
|
|
Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS
|
|
SeeAlso: AX=E44Dh
|
|
--------K-2FE44FBX0000-----------------------
|
|
INT 2F - NDOS v4.0+ - KSTACK.COM - INSTALLATION CHECK
|
|
AX = E44Fh
|
|
BX = 0000h
|
|
Return: AX = 44EEh if installed
|
|
Program: NDOS is a version of 4DOS licensed to Symantec for inclusion in the
|
|
Norton Utilities
|
|
Note: this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
|
|
which emulate the 4DOS and NDOS keystack
|
|
SeeAlso: AX=D44Fh/BX=0000h,AX=E44Fh/BX=0001h
|
|
--------K-2FE44FBX0001-----------------------
|
|
INT 2F - NDOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK
|
|
AX = E44Fh
|
|
BX = 0001h
|
|
CX = number of keystrokes (01h-FFh)
|
|
DS:DX -> keystroke list (one word per keystroke)
|
|
Return: AX = status
|
|
0000h successful
|
|
nonzero failed
|
|
BX,CX,DX destroyed
|
|
Notes: the keystrokes are the exact values to return from subsequent calls to
|
|
INT 16 with AH=00h,01h,10h, or 11h, with the following exceptions:
|
|
0000h causes subfunctions 01h and 11h to indicate an empty
|
|
keyboard buffer
|
|
FFFFh is followed by a word indicating the number of clock
|
|
ticks to delay before the next faked keystroke
|
|
v4.00 KSTACK overwrites any unread keystrokes from the previous
|
|
invocation, and does not range-check CX; it will overwrite memory
|
|
following the resident portion if CX is greater than 100h.
|
|
this function is also supported by ANSIPLUS v3.01+ and K3PLUS v6.20+,
|
|
which emulate the 4DOS and NDOS keystack
|
|
SeeAlso: AX=E44Fh/BX=0000h,INT 16/AH=00h,INT 21/AX=4403h"DOS"
|
|
--------U-2FE600CL30-------------------------
|
|
INT 2F - Virtual 486 - INSTALLATION CHECK
|
|
AX = E600h
|
|
CL = 30h
|
|
BX = C0DEh
|
|
Return: BX = DEC0h if installed
|
|
Program: Virtual 486 is a 80486 CPU emulator for an 80386 by Solar Designer
|
|
----------2FE700BX4158-----------------------
|
|
INT 2F - Multiplex - ??? - INSTALLATION CHECK???
|
|
AX = E700h
|
|
BX = 4158h ("AX")
|
|
CX = 4953h ("IS")
|
|
DX = 4845h ("HE")
|
|
Return: AL = FFh if installed
|
|
BX = 4C4Fh ("LO") if ??? installed
|
|
CX = 4F4Bh ("OK")
|
|
DX = 4F55h ("OU")
|
|
ES:DI -> ???
|
|
Range: AH=C0h to AH=FFh, selected by scanning AH=E7-FFh, then AH=C0h-E6h
|
|
Note: called by QDPMI when its Real to Protected Mode Switch Entry Point
|
|
is called
|
|
--------f-2FE77EBX0000-----------------------
|
|
INT 2F - CTDEMN - INSTALLATION CHECK
|
|
AX = E77Eh
|
|
BX = 0000h
|
|
CX = 4F4Dh ('OM')
|
|
DX = 5453h ('TS')
|
|
Return: AX = 7EE7h if installed
|
|
BX = resident code segment
|
|
CX = 6F6Dh ('om')
|
|
DX = 7473h ('ts')
|
|
Program: CTDEMN is a file daemon TSR by Simultan AG
|
|
--------E-2FED00-----------------------------
|
|
INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK
|
|
AX = ED00h
|
|
BL = DOS extender ID (see #03110)
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
SI = 5048h ("PH")
|
|
DI = 4152h ("AR")
|
|
CH = major version number
|
|
CL = minor version number
|
|
DX = flags
|
|
bit 0: running under DPMI
|
|
bit 1: running under Phar Lap VMM
|
|
if running under DPMI:
|
|
BX = DPMI version (BH = major, BL = minor)
|
|
SeeAlso: AH=A1h,AX=F100h,AX=FBA1h
|
|
|
|
(Table 03110)
|
|
Values for Phar Lap DOS extender ID:
|
|
01h 286dosx v1.3+ (Software Development Kit)
|
|
02h 286dosx v1.3+ (Run-Time Kit)
|
|
03h 386dosx v4.0+ (SDK)
|
|
04h 386dosx v4.0+ (RTK)
|
|
--------E-2FED03-----------------------------
|
|
INT 2F R - Phar Lap 386/DOS-Extender v4.1 - GET EXTENDER ENTRY POINT
|
|
AX = ED03h
|
|
CX = real-mode code segment
|
|
DX = real-mode data segment
|
|
Return: CF clear if successful
|
|
CX = protected-mode code segment selector
|
|
DX = protected-mode data segment selector
|
|
ES:DI -> real-mode entry point for calling protected-mode functions
|
|
(see INT 21/AX=250Dh)
|
|
CF set on error
|
|
AX = error code
|
|
0008h unable to allocate LDT descriptors
|
|
--------E-2FED10BL05-------------------------
|
|
INT 2F - Pharlap DOS Extender - ???
|
|
AX = ED10h
|
|
BL = 05h
|
|
ES:SI -> ??? structure
|
|
Return: AX = ???
|
|
SI = ???
|
|
DI = ???
|
|
SeeAlso: AX=ED00h,AX=ED11h
|
|
--------E-2FED11BL05-------------------------
|
|
INT 2F - Pharlap DOS Extender - FATAL EXIT TO REAL MODE ???
|
|
AX = ED11h
|
|
BL = 05h
|
|
CX = ???
|
|
DX = ???
|
|
ES:SI -> ??? structure
|
|
SS:SP = new stack ???
|
|
Return: ???
|
|
Note: called immediately prior to terminating program with INT 21/AX=4CFFh
|
|
SeeAlso: AX=ED00h,AX=ED10h
|
|
--------K-2FED58-----------------------------
|
|
INT 2F U - K5.COM - INSTALLATION CHECK
|
|
AX = ED58h
|
|
Return: AX = 000Dh if installed
|
|
ES = resident code segment
|
|
BX = ??? (9999h)
|
|
???
|
|
Program: K5 is an extended keyboard driver by Martin Gerdes, based on his K3
|
|
SeeAlso: AX=E337h,INT 16/AX=AF20h
|
|
--------E-2FED80-----------------------------
|
|
INT 2F - Phar Lap 286|DOS Extender Lite v2.5 - ???
|
|
AX = ED80h
|
|
BL = DOS extender ID (see #03110)
|
|
SI = 5048h ("PH")
|
|
DI = 4152h ("AR")
|
|
???
|
|
Return: ???
|
|
--------O-2FEDC8BX0000-----------------------
|
|
INT 2F - Novell DOS 7+ - SECURITY.BIN - INSTALLATION CHECK
|
|
AX = EDC8h ('EDC' = Novell European Development Centre)
|
|
BX = 0000h
|
|
CX = 0000h
|
|
DX = 1234h
|
|
Return: ???
|
|
Note: called by Novell DOS 7 LOCK command during installation
|
|
|
|
(Table 04107)
|
|
Call Novell DOS SECURITY.BIN API with:
|
|
AX??? = function
|
|
0000h get status
|
|
0001h authenticate password hash
|
|
0002h get / change encrypted master key password???
|
|
0003h ??? Set encrypted master key password
|
|
0004h ??? Get logged-in user ID
|
|
0005h ??? Set logged-in user ID
|
|
0006h Get device restriction mask
|
|
0007h Set device restriction mask
|
|
0008h Disable PNW DB access
|
|
0009h Enable PNW DB access
|
|
000Ah Get user name
|
|
000Bh Set user name
|
|
000Ch Change user password hash
|
|
000Dh Get last function
|
|
000Eh Get Encoded ASCII password
|
|
000Fh Set Encoded ASCII password
|
|
0010h Get user seed
|
|
0011h Set user seed
|
|
!!! more info to follow
|
|
--------y-2FEE00-----------------------------
|
|
INT 2F - GRIDLOC.EXE - INSTALLATION CHECK
|
|
AX = EE00h
|
|
Return: AL = FFh if installed
|
|
Program: GRIDLOC is a PC security program by Intelligent Security Systems, Inc.
|
|
SeeAlso: INT 21/AH=40h"NB.SYS"
|
|
--------U-2FEE00-----------------------------
|
|
INT 2F - XVIEW - INSTALLATION CHECK
|
|
AX = EE00h
|
|
Return: AX = 00FFh if installed
|
|
Program: XVIEW is a hypertext viewer by Flambeaux Software, Inc.
|
|
--------N-2FEE00-----------------------------
|
|
INT 2F - WEB v4.02 - INSTALLATION CHECK
|
|
AX = EE00h
|
|
Return: AL = status
|
|
00h not installed
|
|
FFh installed
|
|
Program: WEB is an IPX-based peer-to-peer network by Webcorp.
|
|
SeeAlso: AH=EEh"WEB",AX=EEF0h
|
|
--------U-2FEE01-----------------------------
|
|
INT 2F - XVIEW - POP UP GIVING TOPIC SEARCH KEYWORD
|
|
AX = EE01h
|
|
DS:DX -> ASCIZ string containing case-insensitive keyword to look up
|
|
Return: AX = status (see #03111)
|
|
Note: the specified keyword should be a hyperlink in the _IndexPage of some
|
|
database; the current database is searched first
|
|
SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE03h,AX=EE04h,AX=EE06h
|
|
|
|
(Table 03111)
|
|
Values for XVIEW function status:
|
|
0000h successful
|
|
00F1h unknown subfunction
|
|
00F2h unable to pop up
|
|
--------U-2FEE02-----------------------------
|
|
INT 2F - XVIEW - POP UP GIVING A PAGE NUMBER
|
|
AX = EE02h
|
|
DX = physical page number or anchor page number (see #03112)
|
|
Return: AX = status (see #03111)
|
|
Note: physical page numbers are assigned by the hypertext compiler, and
|
|
will change if a page is inserted in the middle
|
|
SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE05h,AX=EE06h
|
|
|
|
(Table 03112)
|
|
Values for XVIEW anchor page number:
|
|
FFEAh _Credits
|
|
FFECh _SearchTopics
|
|
FFEDh _SearchText
|
|
FFF0h _ManualList
|
|
FFF5h _HelpOnHelp
|
|
FFF8h _HomePage
|
|
FFF9h _IndexPage
|
|
--------U-2FEE03-----------------------------
|
|
INT 2F - XVIEW - POP UP GIVING FILENAME AND SEARCH TOPIC OR PAGE NUMBER
|
|
AX = EE03h
|
|
DS:DX -> data packet (see #03113)
|
|
Return: AX = status (see #03111)
|
|
SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE06h
|
|
|
|
Format of XVIEW data packet:
|
|
Offset Size Description (Table 03113)
|
|
00h DWORD -> ASCIZ database filespec (0000h:0000h for current database)
|
|
04h DWORD -> ASCIZ text to look up or 0000h:0000h
|
|
08h WORD page number (0000h if keyword used)
|
|
0Ah 6 BYTEs reserved
|
|
--------U-2FEE04-----------------------------
|
|
INT 2F - XVIEW - POP UP AND READ SCREEN FOR SEARCH TOPIC KEYWORD
|
|
AX = EE04h
|
|
Return: AX = status (see #03111)
|
|
Note: equivalent to the action taken when the user presses the Alt-L hotkey
|
|
SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE03h,AX=EE06h
|
|
--------U-2FEE05-----------------------------
|
|
INT 2F - XVIEW - POP UP TO MOST-RECENTLY VIEWED PAGE
|
|
AX = EE05h
|
|
Return: AX = status (see #03111)
|
|
Note: equivalent to the action taken when the user presses the Alt-H hotkey
|
|
SeeAlso: AX=EE00h"XVIEW",AX=EE02h,AX=EE06h
|
|
--------U-2FEE06-----------------------------
|
|
INT 2F - XVIEW - WAIT FOR POP-DOWN AND GET EXIT CODE
|
|
AX = EE06h
|
|
Return: AX = status (see also AX=EE01h)
|
|
0001h specified filename is not an xText database
|
|
0002h no databases found
|
|
0003h bad data in file
|
|
0004h memory shortage
|
|
0005h unable to open the requested file
|
|
0007h invalid page number for file
|
|
Note: although this call is not required, the exit code can alert the
|
|
caller to problems; if the call is not made, the program should
|
|
enforce a delay of about 1/2 second to allow the viewer to pop up,
|
|
and should not get keyboard input or attempt disk accesses during
|
|
the delay
|
|
SeeAlso: AX=EE00h"XVIEW",AX=EE01h,AX=EE02h,AX=EE03h,AX=EE04h,AX=EE05h
|
|
--------N-2FEE-------------------------------
|
|
INT 2F - WEB v4.02 - WEB MODULE INSTALLATION CHECK
|
|
AH = EEh
|
|
AL = module ID (see #03114)
|
|
Return: AX = 0000h if installed
|
|
ES:DI -> far entry point for module-specific API calls
|
|
(see #03115,#03116,#03117,#03118,#03119)
|
|
Program: WEB is an IPX-based peer-to-peer network by Webcorp.
|
|
SeeAlso: AX=EE00h"WEB"
|
|
|
|
(Table 03114)
|
|
Values for WEB module ID:
|
|
10h server module (SERVER.EXE)
|
|
20h client module (CLIENT.EXE)
|
|
30h mail module (MAIL.EXE)
|
|
40h spooler (PCSPOOL.EXE)
|
|
50h kernel module (KERNEL.EXE)
|
|
60h SAP module (KERNEL.EXE)
|
|
70h resident station manager (SM.EXE)
|
|
90h router module (ROUTER.EXE)
|
|
|
|
(Table 03115)
|
|
Call server module entry point with:
|
|
BX = function
|
|
0000h remove server module
|
|
Return: AX = status (0000h if successful, else WEB error code)
|
|
0001h create SYSINFO file
|
|
Note: the SYSINFO file is used by the station manager when
|
|
displaying info for a particular station
|
|
0002h get server object table
|
|
Return: CX = number of server objects
|
|
ES:DI -> server object table
|
|
Note: server objects include drives and devices that the
|
|
server module controls
|
|
0003h get server variables
|
|
Return: ES:DI -> server variables
|
|
|
|
(Table 03116)
|
|
Call client module entry point with:
|
|
BX = function
|
|
0000h remove client module
|
|
Return: AX = status (0000h if successful, else WEB error code)
|
|
0001h decrement client-only flag
|
|
0002h increment client-only flag
|
|
0005h set device capture
|
|
Note: decrements DeviceOutput flag, telling the spooler that
|
|
it may trap device output again
|
|
0006h clear device capture
|
|
Note: increments DeviceOutput flag, telling the spooler that
|
|
it should not trap device output (this is used
|
|
internally by the spooler to prevent it from trapping
|
|
its own output)
|
|
0007h get client debug pointer
|
|
Return: ES:DI -> client debug data structure (see #03120)
|
|
0008h get root drive
|
|
Return: AL = WEB startup drive
|
|
0009h get maximum possible drive/device redirections
|
|
Return: AL = maximum drive redirections
|
|
CH = maximum LPTx redirections
|
|
CL = maximum COMx redirections
|
|
000Ah suspend client
|
|
Return: AX = previous value of Suspend flag
|
|
000Bh resume client
|
|
Return: AX = previous value of Suspend flag
|
|
000Ch get instance data
|
|
CX = maximum number of structures in array
|
|
ES:DI -> buffer for array of WIN_INSTANCE_DATA structures
|
|
(see #03121)
|
|
Return: CX = number of structures actually returned
|
|
Note: used internally by WEB4WIN
|
|
|
|
(Table 03117)
|
|
Call mail module entry point with:
|
|
BX = function
|
|
0000h remove mail module
|
|
Return: AX = status (0000h successful, else WEB error code)
|
|
0001h set mail poll
|
|
Note: schedules the WEB mail module
|
|
0002h set mail notify
|
|
Note: sets the Notify flag, which determines whether the
|
|
user will be notified when mail is received
|
|
0003h clear mail notify
|
|
Note: clears the Notify flag, which determines whether the
|
|
user will be notified when mail is received
|
|
0004h check whether new mail has arrived
|
|
Return: AL = new mail status
|
|
00h no new mail since last call
|
|
else new mail has arrived
|
|
Note: also clears the new-mail flag after retrieving it
|
|
0005h send notify
|
|
ES:DI -> name of WEB user to be notified
|
|
0006h get post office
|
|
Return: ES:DI -> full network path of Post Office subdirectory
|
|
|
|
(Table 03118)
|
|
Call spooler entry point with:
|
|
BX = function
|
|
0000h remove PCSpool module
|
|
Return: AX = status (0000h successful, else WEB error code)
|
|
0001h set spooler poll
|
|
Note: schedules the WEB spooler
|
|
0002h check spooler changed
|
|
Return: AX = 0000h
|
|
Note: this call is a NOP in current versions of WEB
|
|
|
|
(Table 03119)
|
|
Call kernel entry point with:
|
|
BX = function
|
|
0000h remove kernel module
|
|
Return: AX = status (0000h successful, else WEB error code)
|
|
0001h set kernel ^S filter
|
|
DL = new state (00h don't filter ^S, nonzero do filter)
|
|
0002h get kernel data area
|
|
Return: ES:DI -> kernel data area
|
|
0003h display dialog box
|
|
CL = dialog box type
|
|
00h password
|
|
01h E-Note received notification
|
|
02h Novell login
|
|
03h general notification
|
|
DL = number of rows to display
|
|
ES:SI -> array of far pointers to rows to be displayed
|
|
ES:DI -> Pascal-style input buffer
|
|
Return: AX = status (0000h successful, else error code)
|
|
0004h kernel service events
|
|
0005h get kernel's in-critical-section flag
|
|
Return: ES:DI -> kernel InCriticalSection flag
|
|
0006h schedule DOS event
|
|
AL = directive
|
|
00h do not ignore WEB ExtraBusy flag
|
|
01h ignore ExtraBusy flag
|
|
02h (WEB4WIN) check that current Windows VM is foregrnd VM
|
|
ES:SI -> WEB AES Event Control Block (ECB) (see #03122)
|
|
Notes: the WEB Asynchronous Event Scheduler is similar to the
|
|
one used by IPX; this call schedules a special ECB
|
|
to be executed at a later time. Unlike IPX ECBs,
|
|
the timeout must be set explicitly by the caller
|
|
this function also calls function 0004h
|
|
0007h check busy
|
|
AL = directive
|
|
00h do not ignore WEB ExtraBusy flag
|
|
01h ignore ExtraBusy flag
|
|
02h (WEB4WIN) check that current Windows VM is foregrnd VM
|
|
Return: AX = status (0000h not busy, else busy)
|
|
0008h set keyboard intercept
|
|
Note: currently a NOP which returns immediately
|
|
0009h get keyboard intercept
|
|
Note: currently a NOP which returns immediately
|
|
000Ah get dialog flags
|
|
Return: ES:DI -> kernel dialog flags (see #03123)
|
|
000Bh get network path
|
|
Return: ES:DI -> fully-qualified network path of file where
|
|
the screen is stored on Dialog calls
|
|
000Ch kernel alternate dialog
|
|
CL = dialog box type
|
|
00h password
|
|
01h E-Note received notification
|
|
02h Novell login
|
|
03h general notification
|
|
DL = number of rows to display
|
|
ES:SI -> array of far pointers to rows to be displayed
|
|
ES:DI -> Pascal-style input buffer
|
|
Return: AX = status (0000h successful, else error code)
|
|
Note: this function is identical to function 0003h except
|
|
that it does not notify WEB4WIN of the impending
|
|
dialog request
|
|
000Dh get machine/operating system type
|
|
Return: AX = machine/operating system type
|
|
01h IBM PC, MS-DOS
|
|
02h IBM PC, DOSV (Japanese)
|
|
03h NEC PC-9800, JDOS (Japanese)
|
|
04h IBM PC, Korean DBC DOS
|
|
|
|
Format of client debug data structure:
|
|
Offset Size Description (Table 03120)
|
|
00h WORD total files
|
|
02h WORD files free
|
|
04h WORD no files
|
|
06h WORD minimum files
|
|
08h WORD total FCBs
|
|
0Ah WORD total safe FCBs
|
|
0Ch WORD FCBs in use
|
|
0Eh WORD wrong FCB
|
|
10h WORD compressed
|
|
12h WORD retransmits
|
|
|
|
Format of WIN_INSTANCE_DATA structure:
|
|
Offset Size Description (Table 03121)
|
|
00h DWORD real-mode pointer to data to be instanced
|
|
04h WORD size of data to be instanced
|
|
|
|
Format of WEB AES Event Control Block:
|
|
Offset Size Description (Table 03122)
|
|
00h DWORD link address
|
|
04h WORD ESR address
|
|
08h BYTE InUse flag
|
|
09h BYTE completion code
|
|
0Ah 3 BYTEs reserved
|
|
0Dh WORD timeout
|
|
0Fh BYTE IgnoreExtra flag
|
|
10h WORD PSP
|
|
12h DWORD DTA
|
|
16h WORD AX value for DOS critical information
|
|
18h WORD BX value for DOS critical information
|
|
1Ah WORD CX value for DOS critical information
|
|
1Ch WORD DX value for DOS critical information
|
|
|
|
(Table 03123)
|
|
Values for kernel dialog flags:
|
|
01h dialog will timeout
|
|
02h display stars instead of entered keystrokes
|
|
--------N-2FEEF0-----------------------------
|
|
INT 2F - WEB v4.02 - WEB GENERAL NOTIFICATION
|
|
AX = EEF0h
|
|
BX = notification function ID (see #03124)
|
|
Return: varies by notification function
|
|
Program: WEB is an IPX-based peer-to-peer network by Webcorp.
|
|
Note: the notification functions are used internally by WEB modules to notify
|
|
other modules and external programs of actions or event, and should
|
|
never be called by an application
|
|
SeeAlso: AX=EE00h"WEB"
|
|
|
|
(Table 03124)
|
|
Values for WEB Notification Function ID:
|
|
00h node added
|
|
01h node deleted
|
|
02h dial attempt
|
|
03h dial failed
|
|
04h file close
|
|
05h close connection
|
|
07h check Windows mode
|
|
20h link up
|
|
21h link down
|
|
--------K-2FF000-----------------------------
|
|
INT 2F U - 4MAP - INSTALLATION CHECK
|
|
AX = F000h
|
|
Return: AX = 00FFh
|
|
Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
|
|
Note: returns AX=00FFh for any value of AL not listed here
|
|
SeeAlso: AX=D44Dh,AX=F001h,AX=F002h
|
|
--------K-2FF001-----------------------------
|
|
INT 2F U - 4MAP - GET KEY MAPPINGS
|
|
AX = F001h
|
|
Return: ES:BX -> key mappings
|
|
SeeAlso: AX=F000h
|
|
--------K-2FF002-----------------------------
|
|
INT 2F U - 4MAP - INSERT CHARACTER INTO ???
|
|
AX = F002h
|
|
BL = character to insert
|
|
Return: AX = status
|
|
0000h successful
|
|
0001h buffer full
|
|
SeeAlso: AX=F000h,AX=F003h
|
|
--------K-2FF003-----------------------------
|
|
INT 2F U - 4MAP - INSERT CHARACTER INTO ???
|
|
AX = F003h
|
|
BL = character to insert
|
|
Return: AX = status
|
|
0000h successful
|
|
0001h buffer full
|
|
Program: 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng
|
|
SeeAlso: AX=F000h,AX=F002h
|
|
--------m-2FF1-------------------------------
|
|
INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK
|
|
AH = F1h
|
|
AL <> F1h
|
|
Return: AL = F1h if installed
|
|
Program: MIN-MEM is a shareware TSR manager by Biologic which permits up to 24
|
|
popup TSRs to be loaded but swapped out to disk, EMS, or XMS. One
|
|
TSR at a time is brought back into memory at the user's request.
|
|
--------E-2FF100-----------------------------
|
|
INT 2F - DOS EXTENDER INSTALLATION CHECK
|
|
AX = F100h
|
|
Return: AL = FFh if DOS extender present
|
|
SI = 444Fh ("DO")
|
|
DI = 5358h ("SX")
|
|
Note: supported or soon to be supported by Phar Lap, Rational, Ergo, and IGC
|
|
SeeAlso: AH=A1h,AX=ED00h,AX=FBA1h/BX=0081h,INT 15/AX=BF02h
|
|
--------T-2FF1-------------------------------
|
|
INT 2F U - RTKernel v4.0 - INSTALLATION CHECK
|
|
AH = F1h
|
|
AL = 00h
|
|
Return: AX = FFFFh if present
|
|
CX = 00F1h
|
|
Program: RTKernel is a DOS preemptive multitasking library for C/Pascal by
|
|
On Time Informatik GmbH
|
|
--------W-2FF200-----------------------------
|
|
INT 2F - WINX - INSTALLATION CHECK
|
|
AX = F200h
|
|
Return: AX = 00FFh if installed
|
|
Program: WINX is a DOS/Windows utilities by Al Williams which can be used to
|
|
launch Windows applications from a DOS Box; it was published in
|
|
"DOS and Windows Protected Mode-Programming with DOS Extenders"
|
|
(Addison-Wesley) and should not be confused with the Windows driver
|
|
of the same name which is part of the DESQview/X package
|
|
--------W-2FF201-----------------------------
|
|
INT 2F - WINX - RETURN ADDRESS OF SERVER BUFFER
|
|
AX = F201h
|
|
Return: AX = status
|
|
FFFFh if WINX is busy processing a different request
|
|
0000h if successful
|
|
BX:CX = address of server buffer (see #03125)
|
|
|
|
Format of WINX server buffer:
|
|
Offset Size Description (Table 03125)
|
|
00h BYTE command/status
|
|
00h buffer available
|
|
01h buffer contains result
|
|
02h change directory
|
|
03h execute program
|
|
FFh terminate windows portion of WINX
|
|
01h ? BYTEs command (03h) or directory (02h)
|
|
or
|
|
01h DWORD result (01h)
|
|
--------W-2FF202-----------------------------
|
|
INT 2F - WINX - SET SERVER'S WORKING DIRECTORY
|
|
AX = F202h
|
|
BX:CX -> directory
|
|
Return: AX = status
|
|
FFFFh if WINX is busy processing a different request
|
|
0000h if successful
|
|
SeeAlso: AX=F200h,AX=F203h
|
|
--------W-2FF203-----------------------------
|
|
INT 2F - WINX - EXECUTE COMMAND
|
|
AX = F203h
|
|
BX:CX -> command
|
|
Return: AX = status
|
|
0000h if successful
|
|
FFFFh if WINX is busy processing a different request
|
|
SeeAlso: AX=F200h,AX=F202h
|
|
--------G-2FF400-----------------------------
|
|
INT 2F - FINDIRQ.COM - INSTALLATION CHECK
|
|
AX = F400h
|
|
Return: AL = 01h if installed
|
|
Program: FINDIRQ is a program by Rick Knoblaugh published in the 9/28/93 issue
|
|
of PC Magazine; when run as a TSR it can determine which IRQs are
|
|
used only when a device is active
|
|
SeeAlso: AX=F401h
|
|
--------N-2FF400-----------------------------
|
|
INT 2F - PowerLAN - INSTALLATION CHECK???
|
|
AX = F400h
|
|
???
|
|
Return: ???
|
|
Note: this function is called by PowerLAN's NET.EXE just prior to calling
|
|
AX=F401h (get version)
|
|
SeeAlso: AX=F401h"PowerLAN"
|
|
--------N-2FF401-----------------------------
|
|
INT 2F - PowerLAN - GET VERSION
|
|
AX = F401h
|
|
Return: ES:BX -> WORD containing 100*version (in decimal)
|
|
Program: PowerLAN is a networking product by Performance Technology
|
|
SeeAlso: AX=F400h"PowerLAN",AX=F483h"PowerLAN"
|
|
--------G-2FF401CX5121-----------------------
|
|
INT 2F - FINDIRQ.COM - GET HOOKED INTERRUPTS
|
|
AX = F401h
|
|
CX = 5121h ('Q!')
|
|
Return: AX:DX -> hooked interrupt table (see #03126)
|
|
SeeAlso: AX=F400h
|
|
|
|
Format of FINDIRQ hooked interrupt table:
|
|
Offset Size Description (Table 03126)
|
|
00h BYTE 1Ch
|
|
01h DWORD FINDIRQ's INT 1C handler
|
|
05h DWORD original INT 1C handler
|
|
09h BYTE 28h
|
|
0Ah DWORD FINDIRQ's INT 28 handler
|
|
0Eh DWORD original INT 28 handler
|
|
12h BYTE 2Fh
|
|
13h DWORD FINDIRQ's INT 2F handler
|
|
17h DWORD original INT 2F handler
|
|
--------N-2FF483-----------------------------
|
|
INT 2F - PowerLAN - ???
|
|
AX = F483h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=F400h"PowerLAN",AX=F401h"PowerLAN"
|
|
--------d-2FF700-----------------------------
|
|
INT 2F - AUTOPARK.COM - INSTALLATION CHECK
|
|
AX = F700h
|
|
Return: AL = state
|
|
00h not installed
|
|
FFh installed
|
|
Program: AUTOPARK.COM is a resident hard disk parker by Alan D. Jones
|
|
--------d-2FF701-----------------------------
|
|
INT 2F - AUTOPARK.COM - SET PARKING DELAY
|
|
AX = F701h
|
|
BX:CX = 32-bit count of 55ms timer ticks
|
|
--------d-2FF800CX4455-----------------------
|
|
INT 2F U - SuperStor PRO 2XON.COM - INSTALLATION CHECK
|
|
AX = F800h
|
|
CX = 4455h ("DU")
|
|
DL = 45h ("E")
|
|
Return: AL = FFh if installed
|
|
ES:BX -> ASCII signature "Universal Data Exchange"
|
|
Program: SuperStor is a disk-compression program by Addstor.
|
|
Note: returns AX=0001h if AL is not 00h or 01h
|
|
SeeAlso: AX=1001h,AX=F801h
|
|
--------d-2FF801CX4455-----------------------
|
|
INT 2F U - SuperStor PRO 2XON.COM - UNINSTALL
|
|
AX = F801h
|
|
CX = 4455h ("DU")
|
|
DL = 45h ("E")
|
|
ES:BX = return address if successful
|
|
Return: at specified address if successfully removed from memory
|
|
else
|
|
AL = error code
|
|
???
|
|
Program: SuperStor is a disk-compression program by Addstor.
|
|
Note: returns AX=0001h if AL is not 00h or 01h
|
|
SeeAlso: AX=1001h,AX=F800h
|
|
----------2FFA00-----------------------------
|
|
INT 2F - Multiplex - ??? - INSTALLATION CHECK???
|
|
AX = FA00h
|
|
BX = ??? (0408h)
|
|
CX = ??? (001Fh)
|
|
DX = ??? (0102h)
|
|
SI = ??? (5ACCh)
|
|
DI = ??? (0632h)
|
|
Return: ???
|
|
Note: called by WinEmacs at startup
|
|
----------2FFA00-----------------------------
|
|
INT 2F - Multiplex - ??? - INSTALLATION CHECK???
|
|
AX = FA00h
|
|
BX = ??? (03FCh)
|
|
CX = ??? (003Fh)
|
|
DX = ??? (00FFh)
|
|
SI = ??? (5AA6h)
|
|
DI = ??? (0620h)
|
|
Return: ???
|
|
Note: called by Matlab at startup
|
|
--------*-2FFB-------------------------------
|
|
INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL
|
|
AH = FBh
|
|
SeeAlso: AX=FB42h/BX=0001h
|
|
--------f-2FFB-------------------------------
|
|
INT 2F U - Conner Backup Exec AUTORES - API
|
|
AH = FBh
|
|
BL = function number (00h-07h)
|
|
???
|
|
Return: ???
|
|
Program: AUTORES is a resident program launcher for unattended backups
|
|
--------a-2FFB00-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK
|
|
AX = FB00h
|
|
Return: AX = 00FFh if installed
|
|
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
|
|
SeeAlso: INT 10/AX=3800h,INT 14/AX=F0F1h
|
|
--------U-2FFB00-----------------------------
|
|
INT 2F U - Jot-It! v1.50 - INSTALLATION CHECK
|
|
AX = FB00h
|
|
Return: AX = FFFFh if installed
|
|
BX = version (BCD, BH=major, BL=minor)
|
|
SeeAlso: AX=FB03h"Jot-It",AX=FB01h"Jot-It"
|
|
--------a-2FFB01-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - ???
|
|
AX = FB01h
|
|
???
|
|
Return: ???
|
|
--------U-2FFB01-----------------------------
|
|
INT 2F U - Jot-It! v1.50 - GET USER NAME
|
|
AX = FB01h
|
|
Return: DX:BX -> ASCIZ user name
|
|
SeeAlso: AX=FB02h"Jot-It"
|
|
--------a-2FFB02-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - ???
|
|
AX = FB02h
|
|
Return: AH = ???
|
|
AL = ???
|
|
--------U-2FFB02-----------------------------
|
|
INT 2F U - Jot-It! v1.50 - GET MESSAGE DIRECTORY
|
|
AX = FB02h
|
|
Return: DX:BX -> ASCIZ name of directory in which messages are stored
|
|
SeeAlso: AX=FB01h"Jot-It"
|
|
--------a-2FFB03-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - GET NEXT ???
|
|
AX = FB03h
|
|
Return: AX = ???
|
|
--------U-2FFB03-----------------------------
|
|
INT 2F U - Jot-It! v1.50 - UNINSTALL
|
|
AX = FB03h
|
|
Return: resident code removed from memory
|
|
Note: CAUTION: NO checks are performed to ensure that the interrupt vectors
|
|
being unhooked (08h,09h,28h,2Fh) actually point at the Jot-It! code
|
|
SeeAlso: AX=FB00h"Jot-It"
|
|
--------a-2FFB-------------------------------
|
|
INT 2F U - AutoBraille v1.1A - SET ???
|
|
AH = FBh
|
|
AL = 04h-08h
|
|
Return: AX = 0000h
|
|
--------a-2FFB-------------------------------
|
|
INT 2F U - AutoBraille v1.1A - SET ???
|
|
AH = FBh
|
|
AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2)
|
|
Return: ???
|
|
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
|
|
--------a-2FFB-------------------------------
|
|
INT 2F U - AutoBraille v1.1A - SET ???
|
|
AH = FBh
|
|
AL = 10h-1Fh
|
|
???
|
|
Return: ???
|
|
--------a-2FFB20-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - SET ??? FLAGS
|
|
AX = FB20h
|
|
BL = flags to set
|
|
SeeAlso: AX=FB21h"AutoBraille"
|
|
--------a-2FFB21-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS
|
|
AX = FB21h
|
|
BL = flags to clear
|
|
SeeAlso: AX=FB20h"AutoBraille"
|
|
--------a-2FFB22-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - SET ???
|
|
AX = FB22h
|
|
BL = ???
|
|
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
|
|
--------a-2FFB28-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - ???
|
|
AX = FB28h
|
|
BX = ???
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=FB29h"AutoBraille"
|
|
--------a-2FFB29-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - ???
|
|
AX = FB29h
|
|
BX = ???
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=FB28h"AutoBraille"
|
|
--------a-2FFB-------------------------------
|
|
INT 2F U - AutoBraille v1.1A - SET ???
|
|
AH = FBh
|
|
AL = 2Bh-34h
|
|
BX = ???
|
|
--------a-2FFB35-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - SET ???
|
|
AX = FB35h
|
|
BL = ???
|
|
--------a-2FFB36-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - SET ???
|
|
AX = FB36h
|
|
BL = ???
|
|
--------a-2FFB37-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - SET ???
|
|
AX = FB37h
|
|
BL = ???
|
|
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
|
|
--------E-2FFB42BX0001-----------------------
|
|
INT 2F PU - Borland C++ DPMILOAD.EXE - INSTALLATION CHECK???
|
|
AX = FB42h
|
|
BX = 0001h
|
|
Return: AX = version number??? (AL=major, AH=minor)
|
|
CX = next-selector increment
|
|
---BC2.0---
|
|
ES:BX -> 80-byte buffer for ???
|
|
DX = DPMI version
|
|
---BC3.0---
|
|
BX = ??? (0000h)
|
|
DX = ???
|
|
ES:SI -> list of valid selectors ???
|
|
Notes: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
|
|
as version 1.000, while the version distributed with BC++ 3.0
|
|
identifies itself as version 1.0; the former is 10864 bytes, the
|
|
latter 22180 bytes. The BC2.0 version is a DPMI loader, while
|
|
the BC3.0 version also adds a DPMI host and DOS extender
|
|
the BC++ 2.0 version displays an error message if called with BX
|
|
values other than 0001h-0008h
|
|
SeeAlso: AX=1687h,AX=FB42h/BX=1001h,AX=FB43h
|
|
--------E-2FFB42BX0002-----------------------
|
|
INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ALLOCATE MEMORY
|
|
AX = FB42h
|
|
BX = 0002h
|
|
CX = size in bytes
|
|
DX = bit flags
|
|
bit 2: set to allocate DOS memory, clear for DPMI memory
|
|
SI = selector of descriptor to be modified to access allocated memory
|
|
DI = selector of a second descriptor to be modified
|
|
Return: AX = ??? or 0000h on error
|
|
CX:DX = linear base address of DPMI memory block
|
|
SI:DI = handle for DPMI memory block or FFFFh:FFFFh
|
|
???
|
|
Note: two segment descriptors may be set if a code and an aliased data
|
|
segment are required; if only one descriptor is needed, SI should
|
|
equal DI on entry
|
|
BUG: when allocating DOS memory, the code computes the linear address by
|
|
multiplying the segment number by 4 rather than shifting by 4
|
|
SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
|
|
--------E-2FFB42BX0002-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY
|
|
AX = FB42h
|
|
BX = 0002h
|
|
ES:SI -> memory block info (see #03127)
|
|
Return: ???
|
|
Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
|
|
as version 1.000, while the version distributed with BC++ 3.0
|
|
identifies itself as version 1.0; the former is 10864 bytes, the
|
|
latter 22180 bytes.
|
|
SeeAlso: AX=FB42h/BX=0003h,AX=FB42h/BX=0008h,INT 31/AX=0501h
|
|
|
|
Format of DPMILOAD memory block info:
|
|
Offset Size Description (Table 03127)
|
|
00h WORD flags (see #03128)
|
|
02h DWORD block size in bytes
|
|
---DPMI memory block---
|
|
06h DWORD DPMI memory block handle
|
|
---DOS memory block---
|
|
06h WORD real-mode segment of memory block
|
|
08h WORD selector of memory block
|
|
---
|
|
0Ah DWORD linear address of memory
|
|
0Eh WORD memory operation error code
|
|
0008h no more free LDT descriptors
|
|
---if flags bit 0 clear---
|
|
10h WORD code segment selector for memory block or 0000h or FFFFh
|
|
12h WORD data alias selector for memory block or 0000h or FFFFh
|
|
---if flags bit 0 set---
|
|
10h WORD data segment selector for memory block or 0000h or FFFFh
|
|
12h WORD unused???
|
|
|
|
Bitfields for DPMILOAD memory block flags:
|
|
Bit(s) Description (Table 03128)
|
|
0 set if data segment rather than code segment
|
|
1 information valid
|
|
2 set if DOS memory block rather than DPMI memory block
|
|
4 ???
|
|
15 set if no LDT selectors for memory block???
|
|
SeeAlso: #03127
|
|
--------E-2FFB42BX0003-----------------------
|
|
INT 2F PU - Borland C++ DPMILOAD.EXE - GET AVAILABLE MEMORY
|
|
AX = FB42h
|
|
BX = 0003h
|
|
Return: DX:AX = size of largest free block in paragraphs
|
|
0000h:0000h on error (BC3.0 version only)
|
|
Note: AX and DX are destroyed on error, but no other error indicator is
|
|
returned, under the BC++ 2.0 version of DPMILOAD
|
|
SeeAlso: AX=FB42h/BX=0002h
|
|
--------E-2FFB42BX0004-----------------------
|
|
INT 2F PU - Borland C++ DPMILOAD.EXE - LOAD PROTECTED-MODE EXECUTABLE???
|
|
AX = FB42h
|
|
BX = 0004h
|
|
DS:DX -> ASCIZ filename of protected-mode executable
|
|
Return: CX = selector of ??? or 0000h
|
|
---BC3.0---
|
|
DX = status (0000h,FFF4h,others???) (see #03129)
|
|
Note: the filename may also be terminated by a CR rather than a NUL under the
|
|
BC++ 3.0 version of DPMILOAD
|
|
|
|
(Table 03129)
|
|
Values for DPMILOAD function status:
|
|
0000h successful
|
|
0001h ??? failure
|
|
0002h invalid selector
|
|
0004h unknown error
|
|
0008h no more LDT descriptors available???
|
|
FFDEh unable to set descriptor
|
|
FFDFh unable to get segment base address
|
|
FFE0h ???
|
|
FFF2h invalid parameter value
|
|
FFF4h component of filename too long (name not in 8.3 format)
|
|
FFF5h pathname too long (>79 chars)
|
|
FFF6h ???
|
|
FFF8h ???
|
|
FFF9h index out of range
|
|
FFFAh ???
|
|
FFFCh invalid access to code segment???
|
|
FFFEh ???
|
|
FFFFh general error
|
|
--------E-2FFB42BX0005-----------------------
|
|
INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME
|
|
AX = FB42h
|
|
BX = 0005h
|
|
CX = selector of DPMILOAD data (see #03130)
|
|
DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored)
|
|
Return: DX = status (see #03129)
|
|
0000h successful
|
|
AX:BX -> ??? FAR function (called with two words on top of stk)
|
|
else
|
|
BX destroyed
|
|
SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=000Eh
|
|
|
|
Format of DPMILOAD data:
|
|
Offset Size Description (Table 03130)
|
|
00h 12 BYTEs ???
|
|
0Ch WORD ??? bit flags
|
|
0Eh 14 BYTEs ???
|
|
1Ch WORD number of memory control records (see #03133)
|
|
1Eh 25 BYTEs ???
|
|
37h BYTE ??? bit flags
|
|
bit 4: data valid???
|
|
38h 4 BYTEs ???
|
|
3Ch WORD ???
|
|
3Eh 12 BYTEs ???
|
|
46h BYTE ??? counter
|
|
47h BYTE ???
|
|
48h BYTE ???
|
|
49h BYTE ???
|
|
4Ah WORD ???
|
|
4Ch 2 BYTEs ???
|
|
4Eh WORD offset of array of 64-byte memory control records
|
|
52h WORD offset of name list (see #03131)
|
|
54h 4 BYTEs ???
|
|
58h WORD offset of array of 6-byte objects (see #03132)
|
|
5Ah 8 BYTEs ???
|
|
62h 9 BYTEs ASCIZ name for ???
|
|
6Bh 9 BYTEs ASCIZ name for ???
|
|
???
|
|
|
|
Format of name list entry [array]:
|
|
Offset Size Description (Table 03131)
|
|
00h BYTE length of name (00h if end of array)
|
|
01h N BYTEs name
|
|
N+1 WORD 1-based index into array of unknown 6-byte objects
|
|
|
|
Format of 6-byte objects:
|
|
Offset Size Description (Table 03132)
|
|
00h BYTE ???
|
|
01h BYTE ???
|
|
02h BYTE ???
|
|
03h BYTE 1-based index of memory control record
|
|
04h WORD ???
|
|
|
|
Format of memory control record:
|
|
Offset Size Description (Table 03133)
|
|
00h 20 BYTEs memory block info (see #03127)
|
|
14h 6 BYTEs ???
|
|
1Ah BYTE ???
|
|
1Bh 2 BYTEs ???
|
|
1Dh BYTE ??? bit flags
|
|
1Eh 14 BYTEs ???
|
|
2Ch DWORD pointer to ??? memory control record or 0000h:0000h
|
|
30h DWORD pointer to ??? memory control record or 0000h:0000h
|
|
34h DWORD pointer to next??? memory control record or 0000h:0000h
|
|
38h DWORD pointer to prev??? memory control record or 0000h:0000h
|
|
3Ch 4 BYTEs ???
|
|
Note: the pointers at offsets 2Ch and 30h form a doubly-linked list, as do
|
|
the pointers at offsets 34h and 38h
|
|
--------E-2FFB42BX0006-----------------------
|
|
INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER
|
|
AX = FB42h
|
|
BX = 0006h
|
|
CX = selector of DPMILOAD data (see #03130)
|
|
DX = 1-based index into array of ??? 6-byte objects
|
|
Return: DX = status (see #03129)
|
|
0000h successful
|
|
AX:BX -> ??? FAR function (called with two words on top of stk)
|
|
else
|
|
BX destroyed
|
|
SeeAlso: AX=FB42h/BX=0005h,AX=FB42h/BX=000Eh
|
|
--------E-2FFB42BX0007-----------------------
|
|
INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 0007h
|
|
CX = selector of ???
|
|
Return: ???
|
|
Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
|
|
as version 1.000, while the version distributed with BC++ 3.0
|
|
identifies itself as version 1.0; the former is 10864 bytes, the
|
|
latter 22180 bytes.
|
|
--------E-2FFB42BX0007-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 0007h
|
|
CX = selector of DPMILOAD data (see #03130)
|
|
???
|
|
Return: DX = status (see #03129)
|
|
0000h successful
|
|
AX = ???
|
|
--------E-2FFB42BX0008-----------------------
|
|
INT 2F PU - Borland C++ 2.0 DPMILOAD.EXE - FREE MEMORY BLOCK
|
|
AX = FB42h
|
|
BX = 0008h
|
|
CX = bit flags
|
|
bit 2: set if DPMI memory, clear if DOS memory
|
|
DX = selector of DOS memory block
|
|
SI:DI = handle of DPMI memory block
|
|
Return: DX = 0000h on error, unchanged if succcessful
|
|
Note: The version of DPMILOAD distributed with BC++ v2.0 identifies itself
|
|
as version 1.000, while the version distributed with BC++ 3.0
|
|
identifies itself as version 1.0; the former is 10864 bytes, the
|
|
latter 22180 bytes.
|
|
SeeAlso: AX=FB42h/BX=0002h
|
|
--------E-2FFB42BX0008-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK
|
|
AX = FB42h
|
|
BX = 0008h
|
|
ES:SI -> memory block info (see #03127)
|
|
Return: ???
|
|
SeeAlso: AX=FB42h/BX=0009h
|
|
--------E-2FFB42BX0009-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK
|
|
AX = FB42h
|
|
BX = 0009h
|
|
ES:SI -> memory block info (see #03127)
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=FB42h/BX=0008h"3.0"
|
|
--------E-2FFB42BX000A-----------------------
|
|
INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INIT DPMI HOST AND SPAWN SUBSHELL
|
|
AX = FB42h
|
|
BX = 000Ah
|
|
CX = 0001h
|
|
DX = ???
|
|
SI = ???
|
|
Return: after user exits subshell
|
|
Notes: this call is used by DPMIRES; unlike most of the DPMILOAD calls, this
|
|
function is not available in protected mode.
|
|
the BC2.0 version of DPMILOAD is purely a DPMI loader, while the BC3.0
|
|
version also adds a DPMI host and DOS extender.
|
|
SeeAlso: AX=FB42h/BX=0004h,AX=FB42h/BX=0015h
|
|
--------E-2FFB42BX000B-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED
|
|
AX = FB42h
|
|
BX = 000Bh
|
|
--------E-2FFB42BX000C-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE DESCRIPTORS FOR MEMORY BLOCK???
|
|
AX = FB42h
|
|
BX = 000Ch
|
|
ES:SI -> memory block info ??? (see #03127)
|
|
Return: DX = status???
|
|
SeeAlso: AX=FB42h/BX=000Fh
|
|
--------E-2FFB42BX000D-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SIMULATE REAL MODE INTERRUPT
|
|
AX = FB42h
|
|
BX = 000Dh
|
|
CX = number of words to copy from protected-mode to real mode stack
|
|
DL = interrupt number
|
|
DH = flags
|
|
bit 0: reset the interrupt controller and A20 line
|
|
ES:DI -> real-mode call structure (see #03148 at INT 31/AX=0300h)
|
|
Return: CX = status
|
|
0000h successful
|
|
0001h failed
|
|
SeeAlso: INT 31/AX=0300h
|
|
--------E-2FFB42BX000E-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
|
|
AX = FB42h
|
|
BX = 000Eh
|
|
DS:DX -> ASCIZ or CR-terminated name of ???
|
|
Return: CX = selector of DPMILOAD data (see #03130) corresponding to name,
|
|
0000h on error
|
|
SeeAlso: AX=FB42h/BX=0006h,AX=FB42h/BX=001Fh
|
|
--------E-2FFB42BX000F-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - REALLOCATE LDT DESCRPS TO MEMBLK???
|
|
AX = FB42h
|
|
BX = 000Fh
|
|
ES:SI -> memory block info (see #03127)
|
|
Return: ???
|
|
SeeAlso: AX=FB42h/BX=000Ch
|
|
--------E-2FFB42BX0010-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR
|
|
AX = FB42h
|
|
BX = 0010h
|
|
DX = segment number
|
|
Return: CX = status (0000h,0008h) (see also AX=FB42h/BX=0004h)
|
|
0000h successful
|
|
DX = selector number for descriptor
|
|
0008h failed
|
|
SeeAlso: AX=FB42h/BX=0023h
|
|
--------E-2FFB42BX0011-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 0011h
|
|
CX = selector of DPMILOAD data (see #03130)
|
|
???
|
|
Return: DX = status (0000h,0002h,FFFEh) (see also #03129)
|
|
0000h successful
|
|
AX:BX -> ??? name
|
|
FFFEh ??? error
|
|
--------E-2FFB42BX0012-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 0012h
|
|
CX = selector for ???
|
|
Return: CX = selector for ???
|
|
--------E-2FFB42BX0013-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 0013h
|
|
CX = selector of DPMILOAD data (see #03130)
|
|
DX = 1-based index of ???
|
|
Return: CX = status (0000h,0002h,FFF9h) (see also #03129)
|
|
0000h successful
|
|
BX = ??? or 0000h
|
|
FFF9h ??? error
|
|
--------E-2FFB42BX0014-----------------------
|
|
INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - INSTALLATION CHECK
|
|
AX = FB42h
|
|
BX = 0014h
|
|
CX = 0001h
|
|
Return: BX = 0000h if installed
|
|
Note: unlike most of the DPMILOAD functions, this call is available only in
|
|
real or V86 mode
|
|
SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=000Ah
|
|
--------E-2FFB42BX0015-----------------------
|
|
INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - UNINSTALL
|
|
AX = FB42h
|
|
BX = 0015h
|
|
CX = 0001h
|
|
Return: ???
|
|
Note: unlike most of the DPMILOAD functions, this call is available only in
|
|
real or V86 mode
|
|
SeeAlso: AX=FB42h/BX=000Ah
|
|
--------E-2FFB42BX0016-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
|
|
AX = FB42h
|
|
BX = 0016h
|
|
CX = selector of DPMILOAD data (see #03130)
|
|
Return: DX = status (see also AX=FB42h/BX=0004h)
|
|
0000h successful
|
|
CX = ???
|
|
--------E-2FFB42BX0017-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 0017h
|
|
CX = ???
|
|
DX = ???
|
|
???
|
|
Return: DX = status (0000h,0001h) (see #03129)
|
|
--------E-2FFB42BX0018-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ???
|
|
AX = FB42h
|
|
BX = 0018h
|
|
CX = ???
|
|
--------E-2FFB42BX0019-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 0019h
|
|
CX = selector for ???
|
|
???
|
|
Return: DX = status (see also AX=FB42h/BX=0004h)
|
|
0000h successful
|
|
CX = selector for ???
|
|
--------E-2FFB42BX001A-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 001Ah
|
|
CX = selector for ???
|
|
???
|
|
Return: DX = status (see also AX=FB42h/BX=0004h)
|
|
0000h successful
|
|
0004h failed
|
|
CX:BX -> ???
|
|
--------E-2FFB42BX001B-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 001Bh
|
|
CX = selector of DPMILOAD data (see #03130)
|
|
DX = offset of ???
|
|
Return: DX = status (0000h,0002h) (see also #03129)
|
|
0000h successful
|
|
BX = selector for ???
|
|
CX = selector for ???
|
|
--------E-2FFB42BX001C-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 001Ch
|
|
ES = selector for DPMILOAD data (see #03130)
|
|
CX = 1-based index of ???
|
|
DX = 1-based index of ???
|
|
Return: DX = status (0000h,0002h,FFF9h) (see #03129)
|
|
--------E-2FFB42BX001D-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
|
|
AX = FB42h
|
|
BX = 001Dh
|
|
Return: CX:DX = ???
|
|
--------E-2FFB42BX001E-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 001Eh
|
|
CX = ???
|
|
???
|
|
Return: DX = status (see also AX=FB42h/BX=0004h)
|
|
0000h successful
|
|
FFF7h ??? error
|
|
CX:BX -> ???
|
|
--------E-2FFB42BX001F-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ADDRESS OF ???
|
|
AX = FB42h
|
|
BX = 001Fh
|
|
DS:DX -> 8-character name of ???
|
|
???
|
|
Return: CX = selector of DPMILOAD data (see #03130) for ???
|
|
0000h on error
|
|
SeeAlso: AX=FB42h/BX=000Eh
|
|
--------E-2FFB42BX0020-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION???
|
|
AX = FB42h
|
|
BX = 0020h
|
|
Return: DX = ??? (always 0000h)
|
|
--------E-2FFB42BX0021-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROCESSOR EXCEPTION HANDLER VECT
|
|
AX = FB42h
|
|
BX = 0021h
|
|
CL = exception number (00h-1Fh)
|
|
Return: DX = status (see also AX=FB42h/BX=0004h)
|
|
0000h successful
|
|
AX:BX = selector:offset of handler
|
|
FFF2h unable to get exception handler vector
|
|
SeeAlso: AX=FB42h/BX=0022h,AX=FB42h/BX=0024h,INT 31/AX=0202h
|
|
--------E-2FFB42BX0022-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROCESSOR EXCEPTION HANDLER VECT
|
|
AX = FB42h
|
|
BX = 0022h
|
|
CL = exception number (00h-1Fh)
|
|
SI:DX = selector:offset of new handler
|
|
Return: DX = status (0000h,0004h,FFF2h) (see #03129)
|
|
SeeAlso: AX=FB42h/BX=0021h,AX=FB42h/BX=0025h,INT 31/AX=0203h
|
|
--------E-2FFB42BX0023-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SELECTOR TO SEGMENT NUMBER
|
|
AX = FB42h
|
|
BX = 0023h
|
|
CX = selector
|
|
Return: DX = status (see also AX=FB42h/BX=0004h)
|
|
0000h successful
|
|
CX = real-mode segment number
|
|
FFF2h descriptor has invalid base address for real-mode segment
|
|
SeeAlso: AX=FB42h/BX=0010h
|
|
--------E-2FFB42BX0024-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET PROTECTED-MODE INTERRUPT VECTOR
|
|
AX = FB42h
|
|
BX = 0024h
|
|
CL = interrupt number
|
|
Return: DX = status (0000h) (see also AX=FB42h/BX=0004h)
|
|
AX:BX = selector:offset of handler
|
|
SeeAlso: AX=FB42h/BX=0025h,INT 31/AX=0204h
|
|
--------E-2FFB42BX0025-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET PROTECTED-MODE INTERRUPT VECTOR
|
|
AX = FB42h
|
|
BX = 0025h
|
|
CL = interrupt number
|
|
SI:DX = selector:offset of new handler
|
|
Return: DX = status (0000h,0004h,FFF2h) (see #03129)
|
|
SeeAlso: AX=FB42h/BX=0024h,INT 31/AX=0205h
|
|
--------E-2FFB42BX0026-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ???
|
|
AX = FB42h
|
|
BX = 0026h
|
|
CX = selector of DPMILOAD data (see #03130)
|
|
DX = 1-based index of ???
|
|
???
|
|
Return: DX = status (0000h,0002h,FFF9h) (see #03129)
|
|
0000h successful
|
|
BX = offset of ??? within data structure
|
|
--------E-2FFB42BX0027-----------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ???
|
|
AX = FB42h
|
|
BX = 0027h
|
|
CX = selector of DPMILOAD data (see #03130)
|
|
DX = offset of ???
|
|
Return: DX = status (see also AX=FB42h/BX=0004h)
|
|
0000h successful
|
|
BX = ???
|
|
--------E-2FFB42BX0080-----------------------
|
|
INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
|
|
AX = FB42h
|
|
BX = 0080h
|
|
???
|
|
Return: AX = ???
|
|
???
|
|
--------E-2FFB42BX0081-----------------------
|
|
INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE
|
|
AX = FB42h
|
|
BX = 0081h
|
|
???
|
|
Return: AX = ???
|
|
???
|
|
--------E-2FFB42BX1001-----------------------
|
|
INT 2F U - Borland RTM.EXE 1.0 - INSTALLATION CHECK???
|
|
AX = FB42h
|
|
BX = 1001h
|
|
Return: BX = 0000h
|
|
SeeAlso: AX=FB42h/BX=0001h,AX=FB42h/BX=1002h,AX=FB42h/BX=1003h
|
|
--------E-2FFB42BX1002-----------------------
|
|
INT 2F U - Borland RTM.EXE 1.0 - EXECUTE COMPILED PROGRAM
|
|
AX = FB42h
|
|
BX = 1002h
|
|
DX = 0014h ???
|
|
???
|
|
Return: AX = nonzero if successful
|
|
AH = child program exit method??? (usually 4Ch)
|
|
AL = child program exit code (Errorlevel)
|
|
AX = 0000h on load error
|
|
DX = error code (0000h-0027h) (see #03134)
|
|
SeeAlso: AX=FB42h/BX=1001h
|
|
|
|
(Table 03134)
|
|
Values for RTM.EXE error code:
|
|
01h out of memory
|
|
02h out of selectors
|
|
03h out of internal tables
|
|
10h internal error
|
|
18h internal error
|
|
1Ah internal error
|
|
1Bh internal error
|
|
1Ch internal error
|
|
20h invalid dynamic link
|
|
21h internal error
|
|
22h unable to open file
|
|
23h invalid .EXE format
|
|
24h wrong version
|
|
25h unable to initialize
|
|
26h DLL initialization error
|
|
other unrecognized error
|
|
--------E-2FFB42BX1003-----------------------
|
|
INT 2F U - Borland RTM.EXE 1.0 - ???
|
|
AX = FB42h
|
|
BX = 1003h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=FB42h/BX=1001h
|
|
--------E-2FFB43-----------------------------
|
|
INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION
|
|
AX = FB43h
|
|
BX = subfunction (at least 0000h-000Eh)
|
|
Notes: this function is only present in protected mode; it does nothing but
|
|
an immediate IRET
|
|
DPMILOAD.EXE itself calls various subfunctions:
|
|
subfunction 0004h is called with CX=selector of ???, DI=selector
|
|
of DPMILOAD data
|
|
subfunction 0008h is called with CX=selector of DPMILOAD data
|
|
SeeAlso: AX=FB42h/BX=0001h
|
|
--------G-2FFB43BX0100-----------------------
|
|
INT 2F PU - Borland TDX - INSTALLATION CHECK
|
|
AX = FB43h
|
|
BX = 0100h
|
|
Return: BX = FB43h if loaded
|
|
Program: TDX is Borland's Turbo Debugger variant for DPMI programs
|
|
Note: Borland Pascal 7 DPMI programs use this call to check whether they
|
|
should install their own stack and general protection exception
|
|
handlers, or allow TDX to handle those exceptions
|
|
--------a-2FFB64-----------------------------
|
|
INT 2F U - AutoBraille v1.1A - GET ???
|
|
AX = FB64h
|
|
Return: AX = ??? (0006h seen)
|
|
Program: AutoBraille is a shareware text-to-braille converter by KANSYS, Inc.
|
|
--------E-2FFBA1BX0081-----------------------
|
|
INT 2F U - TKERNEL (Borland DOS extender) - INSTALLATION CHECK
|
|
AX = FBA1h
|
|
BX = 0081h
|
|
ES:DI -> 16-byte buffer
|
|
Return: if installed, first four bytes of ES:DI buffer are "IABH"
|
|
Program: TKERNEL is a licensed version of AI Architects/Ergo's OS/x86.
|
|
Note: TKERNEL was present only in Borland C++ 2.0; with version 3.0, the DOS
|
|
extender was moved into DPMILOAD.
|
|
SeeAlso: AH=A1h,AX=F100h,AX=FBA1h/BX=0082h,AX=FBA1h/BX=0084h,INT 15/AX=BF02h
|
|
SeeAlso: INT 21/AX=4403h"AI Architects"
|
|
--------E-2FFBA1BX0082-----------------------
|
|
INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT
|
|
AX = FBA1h
|
|
BX = 0082h
|
|
ES:DI -> response buffer (see #03135)
|
|
Return: ES:DI buffer filled
|
|
SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
|
|
|
|
Format of TKERNEL response buffer:
|
|
Offset Size Description (Table 03135)
|
|
00h 4 BYTEs signature "IABH"
|
|
04h DWORD pointer to FAR extender entry point (see #03136)
|
|
|
|
(Table 03136)
|
|
Call TKERNEL entry point with:
|
|
AX = function number
|
|
0000h initialize???
|
|
STACK: WORD ???
|
|
Return: AX = status???
|
|
STACK unchanged
|
|
0001h get version???
|
|
Return: AX = 0200h for v2.0.34
|
|
0002h get ???
|
|
Return: AX = ??? (011Eh or 0182h seen)
|
|
0003h load protected-mode executable
|
|
STACK: DWORD -> ASCIZ filename of executable
|
|
DWORD ???
|
|
DWORD -> program arguments (counted string plus CR)
|
|
DWORD -> environment for protected-mode executable
|
|
(terminated with two consecutive NULs)
|
|
DWORD -> WORD buffer for ???
|
|
Return: AX = status???
|
|
STACK unchanged
|
|
0004h get descriptor
|
|
STACK: WORD selector for which to get descriptor
|
|
WORD segment number (when running in real mode)
|
|
DWORD -> buffer for descriptor
|
|
Return: CF clear if successful
|
|
buffer filled
|
|
CF set on error
|
|
AX destroyed???
|
|
STACK unchanged
|
|
0005h ???
|
|
STACK: WORD selector for ???
|
|
WORD subfunction number???
|
|
0000h run previously-loaded program???
|
|
0001h ??? (similar to 0000h)
|
|
0002h
|
|
0003h
|
|
0005h ??? (similar to 0000h and 0001h)
|
|
Return: AX = status???
|
|
STACK unchanged
|
|
0006h ???
|
|
STACK: WORD ???
|
|
DWORD -> WORD (call) max iterations of ???
|
|
(ret) remaining iterations
|
|
Return: AX = ???
|
|
STACK unchanged
|
|
0007h unused
|
|
Return: AX = 0001h
|
|
0008h unused
|
|
Return: AX = 0001h
|
|
0009h copy protected-mode memory into conventional memory
|
|
STACK: WORD selector for source segment
|
|
WORD segment of source if in real mode???
|
|
DWORD offset of source
|
|
WORD number of bytes to copy
|
|
DWORD -> low-memory destination
|
|
Return: AX = status
|
|
STACK unchanged
|
|
000Ah copy conventional memory into protected-mode memory
|
|
STACK: WORD selector for destination segment
|
|
WORD segment of destination if in real mode???
|
|
DWORD offset of destination
|
|
WORD number of bytes to copy
|
|
DWORD -> low-memory source
|
|
Return: AX = status
|
|
STACK unchanged
|
|
000Bh get ??? pointers
|
|
STACK: WORD desired pointer
|
|
0000h get ???
|
|
0002h get protected-mode CR3
|
|
0003h get 4K page table buffer pointer
|
|
else Return: DX:AX = FFFFh:FFFFh
|
|
Return: DX:AX = requested pointer
|
|
STACK unchanged
|
|
000Ch set ??? pointers
|
|
STACK: WORD desired pointer
|
|
0000h set ???
|
|
0002h set protected-mode CR3
|
|
0003h set 4K page table buffer pointer
|
|
else ignore
|
|
DWORD new value for pointer
|
|
Return: STACK unchanged
|
|
000Dh get ??? pointers
|
|
STACK: WORD desired pointer
|
|
0000h get ???
|
|
0001h get ???
|
|
0002h get ???
|
|
0003h get ???
|
|
0004h get ???
|
|
0005h get ???
|
|
0006h get ???
|
|
0007h get ???
|
|
else Return: DX:AX = FFFFh:FFFFh
|
|
Return: DX:AX = desired pointer
|
|
STACK unchanged
|
|
000Eh set ??? pointer
|
|
STACK: WORD desired pointer
|
|
0000h set ???
|
|
0001h set ???
|
|
0002h set ???
|
|
0003h set ???
|
|
0004h set ???
|
|
0005h set ???
|
|
0006h set ???
|
|
0007h set ???
|
|
else Return: DX:AX = FFFFh:FFFFh
|
|
Return: STACK unchanged
|
|
000Fh get ???
|
|
Return: AX = ??? (seen 0008h)
|
|
0010h get ???
|
|
Return: AX = ???
|
|
0011h determine whether selector is valid
|
|
STACK: WORD possible selector
|
|
Return: AX = selector or 0000h if invalid
|
|
STACK unchanged
|
|
0012h get physical address
|
|
STACK: WORD selector for desired segment
|
|
WORD segment number if in real mode
|
|
DWORD offset within segment
|
|
Return: DX:AX = 32-bit physical address or 00000000h on error
|
|
BX destroyed
|
|
STACK unchanged
|
|
0013h ???
|
|
Note: normally jumps to code for function 0012h
|
|
0014h copy protected-mode memory to conventional memory, with ???
|
|
STACK: WORD selector for source segment
|
|
WORD segment of source if in real mode???
|
|
DWORD offset of source
|
|
WORD number of bytes to copy
|
|
DWORD -> low-memory destination
|
|
Return: AX = status???
|
|
STACK unchanged
|
|
0015h copy conventional memory to protected-mode memory, with ???
|
|
STACK: WORD selector for destination segment
|
|
WORD segment of destination if in real mode???
|
|
DWORD offset of destination
|
|
WORD number of bytes to copy
|
|
DWORD -> low-memory source
|
|
Return: AX = status???
|
|
STACK unchanged
|
|
0016h set ??? pointer
|
|
STACK: WORD unused
|
|
DWORD -> ??? or 0000h:0000h
|
|
Return: AX = 0000h
|
|
STACK unchanged
|
|
0017h allocate real-mode procedure???
|
|
STACK: DWORD ASCIZ name of procedure
|
|
DWORD ???
|
|
DWORD address of subroutine to invoke
|
|
Return: AX = status
|
|
0032h procedure by that name exists
|
|
0033h no more real-mode procedures available
|
|
DX destroyed
|
|
STACK unchanged
|
|
0018h unused
|
|
Return: AX = 0001h
|
|
0019h get parameter block
|
|
Return: DX:AX -> parameter block (format unknown at this time,
|
|
but 92h bytes)
|
|
(preceded by signature "!!PARAM-BLOCK!!")
|
|
001Ah get ???
|
|
Return: AX = ??? (0148h seen)
|
|
001Bh free real-mode procedure???
|
|
STACK: DWORD -> ASCIZ name of procedure
|
|
Return: ???
|
|
STACK unchanged
|
|
001Ch check whether packets from protected mode task pending
|
|
Return: AX = 0001h if packets pending, 0000h if not
|
|
001Dh set ???
|
|
STACK: DWORD ??? or 0000h:0000h
|
|
Return: AX,BX destroyed
|
|
STACK unchanged
|
|
001Eh ???
|
|
STACK: WORD ??? (high byte ignored)
|
|
DWORD -> data structure (below)
|
|
Return: AX,BX,CX,DX destroyed
|
|
data structure updated
|
|
STACK unchanged
|
|
Format of data structure:
|
|
Offset Size Description
|
|
00h 2 BYTEs unused
|
|
02h WORD ???
|
|
04h WORD ???
|
|
06h WORD ???
|
|
08h 2 BYTEs unused
|
|
0Ah WORD ???
|
|
0Ch WORD (call) ???
|
|
(ret) offset of this data structure (BUG?)
|
|
001Fh set ???
|
|
STACK: WORD ??? (set to 0001h if zero)
|
|
Return: AX destroyed
|
|
STACK unchanged
|
|
0020h ???
|
|
STACK: DWORD -> ??? (8 bytes of data)
|
|
Return: AX = ???
|
|
STACK unchanged
|
|
0021h ???
|
|
STACK: DWORD -> ??? (8 bytes of data)
|
|
WORD ???
|
|
WORD ???
|
|
Return: AX = ???
|
|
STACK unchanged
|
|
0022h ???
|
|
STACK: DWORD -> ??? (8 bytes of data)
|
|
DWORD -> 4-byte buffer for results
|
|
Return: AX = ???
|
|
STACK unchanged
|
|
0023h ???
|
|
STACK: DWORD -> ??? (8 bytes of data)
|
|
Return: AX = ???
|
|
STACK unchanged
|
|
0024h set ???
|
|
STACK: WORD ???
|
|
Return: AX destroyed
|
|
STACK unchanged
|
|
0025h get ???
|
|
Return: AX = ??? (value set with func 0024h)
|
|
0026h BUG: jumps to hyperspace due to fencepost error
|
|
FFFFh set DOS memory management functions
|
|
BX:SI -> FAR routine for allocating DOS memory
|
|
(called with AH=48h,BX=number of paragraphs to alloc;
|
|
returns CF clear, AX=segment of allocated memory, or
|
|
CF set on error)
|
|
CX:DI -> FAR routine for freeing DOS memory
|
|
(called with AH=49h,ES=segment of block to free;
|
|
returns CF set on error, AX=error code)
|
|
Note: each of these pointers normally points at INT 21/RETF
|
|
other Return: AX = 0001h
|
|
Note: BX may be destroyed by any of the API calls
|
|
--------E-2FFBA1BX0084-----------------------
|
|
INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL
|
|
AX = FBA1h
|
|
BX = 0084h
|
|
ES:DI -> response buffer (see #03137)
|
|
Return: ES:DI buffer filled
|
|
SeeAlso: AX=FBA1h/BX=0081h,AX=FBA1h/BX=0084h
|
|
|
|
Format of TKERNEL response buffer:
|
|
Offset Size Description (Table 03137)
|
|
00h 4 BYTEs signature "IABH"
|
|
04h WORD success indicator
|
|
0001h failed (INT 2F hooked by another program)
|
|
unchanged if successful
|
|
06h WORD segment of ???
|
|
08h WORD segment of ??? memory block to free if nonzero
|
|
0Ah WORD segment of ??? memory block to free if nonzero
|
|
--------s-2FFBFBES0000-----------------------
|
|
INT 2F U - SoundBlaster speech driver - INSTALLATION CHECK
|
|
AX = FBFBh
|
|
ES = 0000h
|
|
Return: ES nonzero if installed
|
|
ES:BX -> entry point data structure (see #03138)
|
|
SeeAlso: INT 80/BX=0000h,INT F3"SoundBlaster"
|
|
|
|
Format of SoundBlaster entry point data structure:
|
|
Offset Size Description (Table 03138)
|
|
00h 3 BYTEs signature "FB "
|
|
03h BYTE driver major version number???
|
|
04h DWORD speech driver entry point (see #03139)
|
|
08h 24 BYTEs ???
|
|
20h ? BYTEs data buffer for calling speech driver
|
|
(can be 117 bytes or more)
|
|
|
|
(Table 03139)
|
|
Call SoundBlaster speech driver entry point with:
|
|
AL = function
|
|
07h speak a string
|
|
data buffer (see #03138) contains:
|
|
BYTE length of string
|
|
N BYTEs string to speak
|
|
--------K-2FFD12-----------------------------
|
|
INT 2F - KS/KEYSTKCT.EXE - INSTALLATION CHECK
|
|
AX = FD12h
|
|
Return: AX = 0093h if installed
|
|
ES = resident code segment
|
|
ES:CX -> internal "putbuf" routine
|
|
Program: KS/KEYSTKCT.EXE is a key stacking utility (4DOS KEYSTACK.SYS
|
|
look-alike) by Martin Gerdes, published in c't 11/1991, which can be
|
|
loaded as a device driver or as a TSR. It does not emulate 4DOS
|
|
KSTACK API
|
|
Note: the default buffer size is 128 keys
|
|
--------N-2FFE00BX4454-----------------------
|
|
INT 2F - PC-NFS ??? - INSTALLATION CHECK
|
|
AX = FE00h
|
|
BX = 4454h ("DT")
|
|
CX = 4B52h ("KR")
|
|
DX = 4E4Dh ("NM")
|
|
Return: AL = FFh if installed
|
|
BX = 524Eh ("RM")
|
|
CX = 4D44h ("MD")
|
|
DX = 544Bh ("TK")
|
|
Note: DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
|
|
SeeAlso: AX=FE08h
|
|
--------N-2FFE00BX4454-----------------------
|
|
INT 2F - PC-NFS ??? - INSTALLATION CHECK
|
|
AX = FE00h
|
|
BX = 4454h ("DT")
|
|
CX = 4B52h ("KR")
|
|
DX = 544Dh ("TM")
|
|
Return: AL = FFh if installed
|
|
BX = 5254h ("RT")
|
|
CX = 4D44h ("MD")
|
|
DX = 544Bh ("TK")
|
|
Note: DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
|
|
SeeAlso: AX=FE08h
|
|
--------U-2FFE00DI4E55-----------------------
|
|
INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/STATUS REPORT
|
|
AX = FE00h
|
|
DI = 4E55h ("NU")
|
|
SI = TSR identifier (see #03140)
|
|
Return: SI = TSR reply
|
|
lowercase version of SI on entry (i.e. SI ORed with 2020h)
|
|
execpt SMARTCAN v8.0, which returns SI=6673h ('fs')
|
|
AH = status
|
|
00h installed but disabled internally
|
|
01h installed and enabled
|
|
AL = installed product
|
|
00h NCACHE-x or DISKREET
|
|
01h SPEEDRV / FILESAVE / EP / DISKMON v6+ installed
|
|
02h NCACHE2 / SMARTCAN
|
|
45h DISKMON v5 installed
|
|
BX = length of *.INI file (DISKMON and FILESAVE/EP/SMARTCAN only)
|
|
(see #03141,#03142)
|
|
CX = segment of resident portion
|
|
FFFFh if completely loaded high (NCACHE)
|
|
DI may be destroyed
|
|
---FILESAVE/EP---
|
|
DL = ??? (apparently always 00h)
|
|
---DISKMON---
|
|
DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6] / 1C26h [v7])
|
|
Notes: the value returned in CX is incorrect for NCACHE 6.00
|
|
all Norton Caches install as SMARTAAR drivers like SMARTDRV v3
|
|
NCACHE2 and SPEEDRV both support the SMARTDRV v4+ installation check
|
|
to detect Diskreet NDisk drives use CDS/DPB (see INT 21/AH=52h)
|
|
SeeAlso: AX=4A10h/BX=0000h,AX=FE01h,AX=FE02h,AX=FE03h,AX=FE04h,AX=FE05h
|
|
SeeAlso: INT 21/AX=4402h"SMARTDRV"
|
|
|
|
(Table 03140)
|
|
Values for Norton Utilities TSR identifier:
|
|
4346h ("CF") NCACHE-F (v5) / NCACHE (v6) / NCACHE2 (v7+) / SPEEDRV
|
|
4353h ("CS") NCACHE-S (v5 only)
|
|
4443h ("DC") DISKREET
|
|
444Dh ("DM") DISKMON
|
|
4653h ("FS") FILESAVE (v5) / EP (v6) / SMARTCAN (v7+)
|
|
|
|
Format of DISKMON.INI file:
|
|
Offset Size Description (Table 03141)
|
|
-6Ch 108 BYTEs (in memory copy only)
|
|
list of filenames which are always protected:
|
|
IBMBIO.COM/IBMDOS.COM, IO.SYS/MSDOS.SYS, TBIOS.SYS/TDOS.SYS,
|
|
MIO.SYS/IO.BIN, COMMAND.COM
|
|
00h BYTE ??? always 01h
|
|
01h BYTE disk light (00h off, 01h on)
|
|
02h BYTE disk protection (00h off, 01h on)
|
|
03h BYTE protected areas
|
|
01h system area
|
|
02h files
|
|
03h system area and files
|
|
04h entire disk
|
|
04h BYTE floppy access (00h not allowed, 01h allowed)
|
|
05h 27 BYTEs filename extension list (9 entries)
|
|
(lowercase, blank padded or = 000000h)
|
|
20h 240 BYTEs filename list (20 entries)
|
|
(lowercase, name and extension blank padded, with '.')
|
|
Note: CX:0508h -> copy in installed TSR (v5)
|
|
CX:052Fh -> copy in installed TSR (v6)
|
|
CX:04E0h -> copy in installed TSR (v7-v8)
|
|
|
|
Format of FILESAVE.INI / EP.INI / SMARTCAN.INI file:
|
|
Offset Size Description (Table 03142)
|
|
00h 26 BITs drive list (bit set: file protection on, cleared: off):
|
|
00h BYTE drives A: - H:
|
|
01h BYTE drives I: - P:
|
|
02h BYTE drives Q: - X:
|
|
03h BYTE drives Y: - Z:
|
|
04h BYTE which files to protect
|
|
00h all files
|
|
01h all files with extension in list
|
|
02h all files except those with extension in list
|
|
05h 27 BYTEs filename extension list (9 entries, uppercase, ASCIZ)
|
|
20h BYTE include files with archive bit clear (00h no, 01h yes)
|
|
21h WORD number of days after which files are purged (0 = never)
|
|
23h WORD max kilobytes of erased file space to hold (0 = all)
|
|
Note: CX:03D2h -> copy in installed TSR (v5)
|
|
CX:03F5h -> copy in installed TSR (v6)
|
|
CX:0434h -> copy in installed TSR (v7-v8)
|
|
--------U-2FFE00DX474F-----------------------
|
|
INT 2F - GO! v3.22+ - API
|
|
AX = FE00h
|
|
DX = 474Fh ('GO')
|
|
SI = function number
|
|
0063h (BCD for '?') installation check
|
|
0078h (BCD for 'N') non-registered search (two levels only)
|
|
0082h (BCD for 'R') reserved for registered version
|
|
0083h (BCD for 'S') reserved for registered version
|
|
0085h (BCD for 'U') uninstall
|
|
BX:CX -> buffer (for search functions)
|
|
buffer filled with search spec, i.e. "APL" to get first
|
|
directory containing the substring APL, ":\APL" to find
|
|
the first top-level directory beginning with the letters
|
|
APL
|
|
Return: BX:CX buffer filled with result (search functions only)
|
|
result is counted ASCIZ directory name, empty string if
|
|
no matches (i.e. first byte is length of name, followed by
|
|
name)
|
|
Program: GO! is a shareware directory locator TSR by Steve Ryckman
|
|
Note: the application-supplied buffer for the requests and results which
|
|
BX:CX points at must lie outside the conventional (low-640K)
|
|
memory, since the TSR swaps memory on pop-up; a common location is
|
|
the last 96 bytes of the video memory or a UMB
|
|
--------U-2FFE01DI4E55-----------------------
|
|
INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE
|
|
AX = FE01h
|
|
DI = 4E55h ("NU")
|
|
SI = TSR identifier (see #03140)
|
|
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
|
|
AX = status
|
|
0002h successful (DISKMON, FILESAVE, EP)
|
|
FE00h successful (NCACHE-x, DISKREET)
|
|
Notes: if the enable/disable calls are used on DISKMON or NCACHE-x, the status
|
|
report generated by the programs still indicates the previous state,
|
|
and DISKMON.INI is not updated
|
|
apparently has no effect on DISKREET
|
|
SeeAlso: AX=FE00h,AX=FE02h
|
|
--------U-2FFE02DI4E55-----------------------
|
|
INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE
|
|
AX = FE02h
|
|
DI = 4E55h ("NU")
|
|
SI = TSR identifier (see #03140)
|
|
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
|
|
AX = status
|
|
0004h successful (DISKMON, FILESAVE)
|
|
FE00h successful (NCACHE-x, DISKREET)
|
|
Notes: (see also AX=FE01h)
|
|
this function appears to be unsafe, as the cache buffers are not
|
|
flushed
|
|
SeeAlso: AX=FE00h,AX=FE01h
|
|
--------U-2FFE03DI4E55-----------------------
|
|
INT 2F U - NORTON UTILITIES 5.0+ TSRs - FLUSH BUFFERS
|
|
AX = FE03h
|
|
DI = 4E55h ("NU")
|
|
SI = TSR identifier (see #03140)
|
|
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI OR 2020h)
|
|
AX = status
|
|
0006h successful???
|
|
Notes: only supported by DISKMON, FILESAVE, and NCACHE-x
|
|
useful for flushing NCACHE before rebooting
|
|
SeeAlso: AX=FE00h,AX=FE10h
|
|
--------U-2FFE04DI4E55-----------------------
|
|
INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
|
|
AX = FE04h
|
|
DI = 4E55h ("NU")
|
|
SI = TSR identifier (see #03140)
|
|
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
|
|
AX = status
|
|
0008h successful???
|
|
SeeAlso: AX=FE00h
|
|
--------U-2FFE05DI4E55-----------------------
|
|
INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ???
|
|
AX = FE05h
|
|
DI = 4E55h ("NU")
|
|
SI = TSR identifier (see #03140)
|
|
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
|
|
AX = status
|
|
000Ah successful???
|
|
Note: reportedly dangerous
|
|
SeeAlso: AX=FE00h
|
|
--------N-2FFE08-----------------------------
|
|
INT 2F - PC-NFS ??? - GET ???
|
|
AX = FE08h
|
|
Return: ES:BX -> ???
|
|
Notes: DV/X 1.10 DVPCNFS.DVR searches AH=FEh,FFh,C0h-FDh for a valid response
|
|
both the driver responding to AX=FE00h/DX=4E4Dh and the one responding
|
|
to AX=FE00h/DX=544Dh support this function
|
|
SeeAlso: AX=FE00h/BX=4454h
|
|
--------U-2FFE10DI4E55-----------------------
|
|
INT 2F U - NORTON UTILITIES 6.0 NCACHE - REBOOT
|
|
AX = FE10h
|
|
DI = 4E55h ("NU")
|
|
SI = TSR identifier (see #03140)
|
|
Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h)
|
|
AX = status
|
|
Note: probably used to flush NCACHE buffers and reboot when Ctrl-Alt-Del is
|
|
detected
|
|
SeeAlso: AX=FE03h
|
|
--------S-2FFEEF-----------------------------
|
|
INT 2F - RTS Control TSR - INSTALLATION CHECK
|
|
AX = FEEFh
|
|
Return: AX = EFFEh if installed
|
|
BX = port address
|
|
Program: RTS Control TSR is a utility by Michal Szokolo to lower the RTS
|
|
signal on a COM port during disk accesses to avoid losing incoming
|
|
data
|
|
--------N-2FFF00-----------------------------
|
|
INT 2F - Topware Network Operating System - INSTALLATION CHECK
|
|
AX = FF00h
|
|
Return: AL = status
|
|
00h not installed, OK to install
|
|
01h not installed, not OK to install
|
|
FFh installed
|
|
SeeAlso: AX=FF01h,AX=FF02h,AX=FF10h,INT 21/AX=FF00h"Topware",INT 7A"Topware"
|
|
--------N-2FFF01-----------------------------
|
|
INT 2F - Topware Network Operating System - GET VERSION
|
|
AX = FF01h
|
|
Return: AX = version
|
|
SeeAlso: AX=FF00h,AX=FF02h
|
|
--------N-2FFF02-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - GET TopNet VERSION STRING
|
|
AX = FF02h
|
|
Return: ES:BX -> version string
|
|
SeeAlso: AX=FF00h,AX=FF01h
|
|
--------N-2FFF10-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - TopTerm - INSTALLATION CHECK
|
|
AX = FF10h
|
|
Return: AL = status (00h not installed, 01h installed)
|
|
SeeAlso: AX=FF00h,AX=FF11h,AX=FF12h,AX=FF13h
|
|
--------N-2FFF11-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - TopTerm - ENABLE KEYBOARD SERVICE
|
|
AX = FF11h
|
|
Note: this function is only available on workstations, not on the server
|
|
SeeAlso: AX=FF10h,AX=FF12h
|
|
--------N-2FFF12-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - TopTerm - DISABLE KEYBOARD SERVICE
|
|
AX = FF12h
|
|
Note: this function is only available on workstations, not on the server
|
|
SeeAlso: AX=FF10h,AX=FF11h
|
|
--------N-2FFF13-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - TopTerm - SET INSTALLATION FLAG
|
|
AX = FF13h
|
|
CL = new state (00h off, 01h on)
|
|
SeeAlso: AX=FF10h
|
|
--------N-2FFF14-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - START BACKGROUND RECEIVE VIDEO DATA
|
|
AX = FF14h
|
|
Note: this function is only available on workstations, not on the server
|
|
SeeAlso: AX=FF10h,AX=FF15h
|
|
--------N-2FFF15-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - END BACKGROUND RECEIVE VIDEO DATA
|
|
AX = FF15h
|
|
Note: this function is only available on workstations, not on the server
|
|
SeeAlso: AX=FF10h,AX=FF14h
|
|
--------N-2FFF16-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - SET CONTROL NUMBER OF "SHOW" SCREEN
|
|
AX = FF16h
|
|
BL = which to set (00h TopShow, FFh TopTerm)
|
|
CX = destination screen
|
|
0000h all stations
|
|
0000h-00FFh (TopTerm only) send to group CL
|
|
8001h-80FEh send to station CL
|
|
SeeAlso: AX=FF18h
|
|
--------N-2FFF18-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - SEND FULL SCREEN OF DATA FOR TopShow
|
|
AX = FF18h
|
|
SeeAlso: AX=FF00h,AX=FF16h,AX=FF27h
|
|
--------N-2FFF23-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - CLOSE SPOOL FILES AND START PRINTING
|
|
AX = FF23h
|
|
SeeAlso: AX=FF00h
|
|
--------N-2FFF27-----------------------------
|
|
INT 2F - TopWare Network OS v5.10+ - GET "SHOW" TYPE
|
|
AX = FF27h
|
|
Return: AL = type (00h complete version, 01h simple version)
|
|
BL = "show" functions flag (00h disabled, 01h enabled)
|
|
SeeAlso: AX=FF16h,AX=FF18h
|
|
--------D-30---------------------------------
|
|
INT 30 - (NOT A VECTOR!) - DOS 1+ - FAR JMP instruction for CP/M-style calls
|
|
the CALL 5 entry point does a FAR jump to here
|
|
Note: under DOS 2+, the instruction at PSP:0005 points two bytes too low in
|
|
memory
|
|
SeeAlso: INT 21/AH=26h
|
|
--------V-30---------------------------------
|
|
INT 30 - QRIP/TSR - USED BY GRAPHICS LIBRARY
|
|
Program: QRIP/TSR is a shareware TSR by Shane Hathaway implementing the Remote
|
|
Imaging Protocol (RIP, RIPscrip) used by several BBS systems to
|
|
provide a graphical user interface
|
|
SeeAlso: INT 2F/AX=ACF0h
|
|
--------W-30---------------------------------
|
|
INT 30 P - MS Windows 3.1+ - PROTECTED-MODE CALLBACK
|
|
SeeAlso: INT 20"Windows"
|
|
--------D-31---------------------------------
|
|
INT 31 - overwritten by CP/M jump instruction in INT 30
|
|
--------v-31---------------------------------
|
|
INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
|
|
Note: if one of the Vacsina viruses is resident, the low byte of this
|
|
interrupt still contains the last byte of the INT 30 CP/M JMP
|
|
instruction, but the remaining three bytes are 7Fh 39h followed
|
|
by the Vacsina version number
|
|
SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
|
|
--------E-310000-----------------------------
|
|
INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS
|
|
AX = 0000h
|
|
CX = number of descriptors to allocate
|
|
Return: CF clear if successful
|
|
AX = base selector
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (see #03143)
|
|
Notes: DPMI is the DOS Protected-Mode Interface
|
|
the base and limit of the returned descriptors will be 0, and the type
|
|
will be "data"
|
|
add the value returned by INT 31/AX=0003h to move to subsequent
|
|
descriptors if multiple descriptors were allocated
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0001h,AX=000Dh,INT 21/AX=3501h
|
|
|
|
(Table 03143)
|
|
Values for DPMI 1.0 error code:
|
|
0000h-7FFFh DOS error passed through by DPMI
|
|
8001h unsupported function
|
|
8002h object in wrong state for function
|
|
8003h system integrity would be endangered
|
|
8004h deadlock detected
|
|
8005h pending serialization request cancelled
|
|
8010h out of DPMI internal resources
|
|
8011h descriptor unavailable
|
|
8012h linear memory unavailable
|
|
8013h physical memory unavailable
|
|
8014h backing store unavailable
|
|
8015h callback unavailable
|
|
8016h handle unavailable
|
|
8017h maximum lock count exceeded
|
|
8018h shared memory already serialized exclusively by another
|
|
8019h shared memory already serialized shared by another client
|
|
8021h invalid value for numeric or flag parameter
|
|
8022h invalid segment selector
|
|
8023h invalid handle
|
|
8024h invalid callback
|
|
8025h invalid linear address
|
|
8026h request not supported by hardware
|
|
--------E-310001-----------------------------
|
|
INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR
|
|
AX = 0001h
|
|
BX = selector to free
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8022h) (see #03143)
|
|
Notes: only one descriptor is freed per call
|
|
the program's initial CS, DS, and SS descriptors may be freed
|
|
(DPMI 1.0+) any segment registers containing the freed selector are
|
|
set to 0000h
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0000h,AX=000Ah,AX=000Dh,INT 21/AX=3502h
|
|
--------E-310002-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR
|
|
AX = 0002h
|
|
BX = real mode segment
|
|
Return: CF clear if successful
|
|
AX = selector corresponding to real mode segment (64K limit)
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8011h) (see #03143)
|
|
Notes: multiple calls for the same real mode segment return the same selector
|
|
the returned descriptor can never be modified or freed
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
--------E-310003-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE
|
|
AX = 0003h
|
|
Return: CF clear
|
|
AX = value to add to get next sequential selector
|
|
Notes: the increment will be a power of two
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0000h
|
|
--------E-310004-----------------------------
|
|
INT 31 P - DPMI 0.9+ - LOCK SELECTOR
|
|
AX = 0004h
|
|
BX = selector to lock (prevent paging)
|
|
Return: ???
|
|
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
|
|
specification, this function is called by MS Windows TASKMAN,
|
|
PROGMAN, and KERNEL
|
|
SeeAlso: AX=0005h,AX=0600h
|
|
--------E-310005-----------------------------
|
|
INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
|
|
AX = 0005h
|
|
BX = selector to unlock (permit paging)
|
|
Return: ???
|
|
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
|
|
specification, this function is called by MS Windows TASKMAN,
|
|
PROGMAN, and KERNEL
|
|
SeeAlso: AX=0004h,AX=0601h
|
|
--------E-310006-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS
|
|
AX = 0006h
|
|
BX = selector
|
|
Return: CF clear if successful
|
|
CX:DX = linear base address of segment
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8022h) (see #03143)
|
|
Note: not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0007h,INT 21/AX=3504h
|
|
--------E-310007-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS
|
|
AX = 0007h
|
|
BX = selector
|
|
CX:DX = linear base address
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8022h,8025h) (see #03143)
|
|
Notes: only modify descriptors allocated with INT 31/AX=0000h
|
|
only the low 24 bits of the address will be used by 16-bit DPMI
|
|
implementations even on a 386 or higher
|
|
DPMI 1.0+ automatically reloads any segment registers containing the
|
|
selector being modified
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0006h,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
|
|
SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
|
|
--------E-310008-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT
|
|
AX = 0008h
|
|
BX = selector
|
|
CX:DX = segment limit
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
|
|
Notes: CX must be zero for 16-bit DPMI implementations
|
|
limits greater than 1MB must be page aligned (low 12 bits set)
|
|
only modify descriptors allocated with INT 31/AX=0000h
|
|
DPMI 1.0+ automatically reloads any segment registers containing the
|
|
selector being modified
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0007h,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
|
|
SeeAlso: INT 2C/AX=0003h,#00501 at INT 15/AH=89h
|
|
--------E-310009-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
|
|
AX = 0009h
|
|
BX = selector
|
|
CL = access rights/type byte (see #00502 at INT 15/AH=89h)
|
|
CH = 80386 extended rights/type byte (see #00505 at INT 15/AH=89h)
|
|
(32-bit DPMI implementations only)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
|
|
Notes: if the Present bit is clear, CL bits 0-3 may have any value
|
|
DPMI 1.0+ automatically reloads any segment registers containing the
|
|
selector being modified
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0007h,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
|
|
SeeAlso: INT 2C/AX=0005h
|
|
--------E-31000A-----------------------------
|
|
INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR
|
|
AX = 000Ah
|
|
BX = selector
|
|
Return: CF clear if successful
|
|
AX = new data selector
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8011h,8022h) (see #03143)
|
|
Notes: fails if selector in BX is not a code segment or is invalid
|
|
use INT 31/AX=0001h to free new selector
|
|
future changes to the original selector will not be reflected in the
|
|
returned alias selector
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0001h
|
|
--------E-31000B-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET DESCRIPTOR
|
|
AX = 000Bh
|
|
BX = LDT selector
|
|
ES:(E)DI -> 8-byte buffer for copy of descriptor
|
|
Return: CF clear if successful
|
|
buffer filled
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8022h) (see #03143)
|
|
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=000Ch
|
|
--------E-31000C-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SET DESCRIPTOR
|
|
AX = 000Ch
|
|
BX = LDT selector
|
|
ES:(E)DI -> 8-byte buffer containing descriptor
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
|
|
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
|
|
only modify descriptors allocated with INT 31/AX=0000h
|
|
DPMI 1.0+ automatically reloads any segment registers containing the
|
|
selector being modified
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=000Bh
|
|
--------E-31000D-----------------------------
|
|
INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR
|
|
AX = 000Dh
|
|
BX = LDT selector
|
|
Return: CF clear if successful
|
|
descriptor allocated
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8011h,8022h) (see #03143)
|
|
Notes: free descriptor with INT 31/AX=0001h
|
|
the first 16 descriptors (04h-7Ch) are reserved for this function, but
|
|
some may already be in use by other applications under DPMI 0.9;
|
|
DPMI 1.0 guarantees 16 descriptors per client
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0000h,AX=0001h
|
|
--------E-31000E-----------------------------
|
|
INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
|
|
AX = 000Eh
|
|
CX = number of descriptors to copy
|
|
ES:(E)DI -> descriptor buffer (see #03144)
|
|
Return: CF clear if successful
|
|
descriptors copied
|
|
CF set on error
|
|
AX = error code (8022h) (see #03143)
|
|
CX = number of descriptors successfully copied
|
|
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
|
|
if the function fails, the first CX descriptors are valid; the
|
|
remainder are not modified
|
|
SeeAlso: AX=000Bh,AX=000Fh
|
|
|
|
Format of DPMI descriptor buffer entry (one per descriptor to get):
|
|
Offset Size Description (Table 03144)
|
|
00h WORD selector (set by client)
|
|
02h QWORD descriptor (set by host)
|
|
--------E-31000F-----------------------------
|
|
INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
|
|
AX = 000Fh
|
|
CX = number of descriptors to copy
|
|
ES:(E)DI -> descriptor buffer (see #03145)
|
|
Return: CF clear if successful
|
|
descriptors copied
|
|
CF set on error
|
|
AX = error code (8021h,8022h,8025h) (see #03143)
|
|
CX = number of descriptors successfully copied
|
|
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
|
|
if the function fails, the first CX descriptors are valid; the
|
|
remainder are not modified
|
|
DPMI 1.0+ automatically reloads any segment registers containing a
|
|
selector being modified
|
|
SeeAlso: AX=000Ch,AX=000Eh
|
|
|
|
Format of DPMI descriptor buffer entry (one per descriptor to set):
|
|
Offset Size Description (Table 03145)
|
|
00h WORD selector
|
|
02h QWORD descriptor
|
|
--------E-310100-----------------------------
|
|
INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK
|
|
AX = 0100h
|
|
BX = number of paragraphs to allocate
|
|
Return: CF clear if successful
|
|
AX = real mode segment of allocated block
|
|
DX = first selector for allocated block
|
|
CF set on error
|
|
AX = DOS error code (07h,08h) (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
(DPMI 1.0+) DPMI error code (8011h) (see #03143)
|
|
BX = size (in paragraphs) of largest available block
|
|
Notes: multiple contiguous selectors are allocated for blocks of more than 64K
|
|
if the caller is a 16-bit program
|
|
never modify or deallocate returned descriptors
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0101h,AX=0501h
|
|
--------E-310101-----------------------------
|
|
INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK
|
|
AX = 0101h
|
|
DX = selector of block
|
|
Return: CF set if successful
|
|
CF set on error
|
|
AX = DOS error code (07h,09h) (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
Notes: all descriptors allocated for the block are automatically freed
|
|
DPMI 1.0+ automatically zeros any segment registers containing a
|
|
selector freed by this function
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0100h,AX=0102h,AX=0502h
|
|
--------E-310102-----------------------------
|
|
INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK
|
|
AX = 0102h
|
|
BX = new block size in paragraphs
|
|
DX = selector of block
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = DOS error code (07h,08h,09h)
|
|
(see #01680 at INT 21/AH=59h/BX=0000h)
|
|
(DPMI 1.0+) DPMI error code (8011h,8022h) (see #03143)
|
|
BX = maximum block size (in paragraphs) possible
|
|
Notes: increasing the size of a block past a 64K boundary will fail if the
|
|
next descriptor in the LDT is already in use
|
|
shrinking a block past a 64K boundary will cause some selectors to be
|
|
freed; DPMI 1.0+ automatically zeros any segment registers containing
|
|
a selector freed by this function
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0100h
|
|
--------E-310200-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
|
|
AX = 0200h
|
|
BL = interrupt number
|
|
Return: CF clear
|
|
CX:DX = segment:offset of real mode interrupt handler
|
|
Note: the DPMI implementation is required to support all 256 vectors
|
|
SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
|
|
--------E-310201-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
|
|
AX = 0201h
|
|
BL = interrupt number
|
|
CX:DX = segment:offset of real mode handler
|
|
Return: CF clear
|
|
Note: all memory that may be touched by a hardware interrupt handler must be
|
|
locked down with INT 31/AX=0600h
|
|
SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
|
|
--------E-310202-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
|
|
AX = 0202h
|
|
BL = exception number (00h-1Fh)
|
|
Return: CF clear if successful
|
|
CX:(E)DX = selector:offset of handler
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8021h) (see #03143)
|
|
Notes: 16-bit programs receive the pointer in CX:DX, 32-bit programs in CX:EDX
|
|
DPMI 1.0+ supports this function only for backward compatibility; use
|
|
AX=0210h or AX=0211h instead
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0203h,AX=0210h,AX=0211h,INT 2F/AX=FB42h/BX=0021h
|
|
--------E-310203-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR
|
|
AX = 0203h
|
|
BL = exception number (00h-1Fh)
|
|
CX:(E)DX = selector:offset of handler
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8021h,8022h) (see #03143)
|
|
Notes: 32-bit programs must supply an offset in EDX and use a 32-bit interrupt
|
|
stack frame on chaining to the next exception handler
|
|
the handler should return using a FAR return
|
|
all fault stack frames contain an error code, but it is only valid for
|
|
exceptions 08h and 0Ah-0Eh
|
|
handlers will only be called if the exception occurs in protected mode,
|
|
and the DPMI host does not transparently handle the exception
|
|
the handler may change certain values on the stack frame
|
|
(see #03146,#03147)
|
|
DPMI 1.0+ supports this function only for backward compatibility; use
|
|
AX=0212h or AX=0213h instead
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0202h,AX=0212h,AX=0213h,INT 2F/AX=FB42h/BX=0022h
|
|
|
|
Format of stack frame for 16-bit programs: (offset from SS:SP)
|
|
Offset Size Description (Table 03146)
|
|
00h DWORD return CS:IP (do not change)
|
|
04h WORD error code
|
|
06h DWORD CS:IP of exception
|
|
0Ah WORD flags
|
|
0Ch DWORD SS:SP
|
|
|
|
Format of stack frame for 32-bit programs: (offset from SS:ESP)
|
|
Offset Size Description (Table 03147)
|
|
00h DWORD return EIP (do not change)
|
|
04h WORD return CS selector (do not change)
|
|
06h WORD reserved (do not change)
|
|
08h DWORD error code
|
|
0Ch DWORD EIP of exception
|
|
10h WORD CS selector of exception
|
|
12h WORD reserved (do not change)
|
|
14h DWORD EFLAGS
|
|
18h DWORD ESP
|
|
1Ch WORD SS
|
|
1Eh WORD reserved (do not change)
|
|
--------E-310204-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR
|
|
AX = 0204h
|
|
BL = interrupt number
|
|
Return: CF clear
|
|
CX:(E)DX = selector:offset of handler
|
|
Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
|
|
DPMI implementations are required to support all 256 vectors
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0200h,AX=0205h,INT 21/AX=2502h,INT 2C/AX=0006h
|
|
SeeAlso: INT 2F/AX=FB42h/BX=0024h
|
|
--------E-310205-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR
|
|
AX = 0205h
|
|
BL = interrupt number
|
|
CX:(E)DX = selector:offset of handler
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8022h) (see #03143)
|
|
Notes: 16-bit programs use CX:DX, 32-bit programs use CX:EDX
|
|
32-bit programs must use a 32-bit interrupt stack frame when chaining
|
|
to the next handler
|
|
DPMI implementations are required to support all 256 vectors
|
|
hardware interrupts are reflected to the virtual machine's primary
|
|
client, software interrupts to the current client
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2504h,INT 2C/AX=0007h
|
|
SeeAlso: INT 2F/AX=FB42h/BX=0025h
|
|
--------E-310210-----------------------------
|
|
INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
|
|
AX = 0210h
|
|
BL = exception number (00h-1Fh)
|
|
Return: CF clear if successful
|
|
CX:(E)DX = selector:offset of exception handler
|
|
CF set on error
|
|
AX = error code (8021h) (see #03143)
|
|
Note: DPMI host reflects exception to current client's handler
|
|
SeeAlso: AX=0202h,AX=0211h,AX=0212h
|
|
--------E-310211-----------------------------
|
|
INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
|
|
AX = 0211h
|
|
BL = exception number (00h-1Fh)
|
|
Return: CF clear if successful
|
|
CX:(E)DX = selector:offset of exception handler
|
|
CF set on error
|
|
AX = error code (8021h) (see #03143)
|
|
Notes: returns address of protected-mode handler for real-mode exception
|
|
DPMI host performs a switch to protected mode, reflects the exception
|
|
to the virtual machine's primary client, and returns to real mode
|
|
on the handler's completion
|
|
SeeAlso: AX=0202h,AX=0210h,AX=0213h
|
|
--------E-310212-----------------------------
|
|
INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER
|
|
AX = 0212h
|
|
BL = exception or fault number (00h-1Fh)
|
|
CX:(E)DX = exception handler selector:offset
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8021h,8022h) (see #03143)
|
|
Note: DPMI host sends exception to current client's handler
|
|
SeeAlso: AX=0203h,AX=0210h,AX=0213h
|
|
--------E-310213-----------------------------
|
|
INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER
|
|
AX = 0213h
|
|
BL = exception or fault number (00h-1Fh)
|
|
CX:(E)DX = exception handler selector:offset
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8021h,8022h) (see #03143)
|
|
Notes: specifies address of protected-mode handler for real-mode exception
|
|
DPMI host performs a switch to protected mode, reflects the exception
|
|
to the virtual machine's primary client, and returns to real mode
|
|
on the handler's completion
|
|
SeeAlso: AX=0203h,AX=0211h,AX=0212h
|
|
--------E-310300-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT
|
|
AX = 0300h
|
|
BL = interrupt number
|
|
BH = flags
|
|
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
|
|
reserved, must be 0 (DPMI 1.0+)
|
|
others: reserved, must be 0
|
|
CX = number of words to copy from protected mode to real mode stack
|
|
ES:(E)DI = selector:offset of real mode call structure (see #03148)
|
|
Return: CF clear if successful
|
|
real mode call structure modified (all fields except SS:SP, CS:IP
|
|
filled with return values from real mode interrupt)
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #03143)
|
|
protected mode stack unchanged
|
|
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
|
|
CS:IP in the real mode call structure is ignored for this call,
|
|
instead, the indicated interrupt vector is used for the address
|
|
the flags in the call structure are pushed on the real mode stack to
|
|
form an interrupt stack frame, and the trace and interrupt flags are
|
|
clear on entry to the handler
|
|
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
|
|
the real mode handler must return with the stack in the same state as
|
|
it was on being called
|
|
SeeAlso: AX=0302h,AX=FF01h,INT 21/AX=2511h,INT 21/AH=E3h"OS/286"
|
|
SeeAlso: INT 2C/AX=0026h,INT 2F/AX=FB42h/BX=000Dh
|
|
|
|
Format of DPMI real mode call structure:
|
|
Offset Size Description (Table 03148)
|
|
00h DWORD EDI
|
|
04h DWORD ESI
|
|
08h DWORD EBP
|
|
0Ch DWORD reserved (00h)
|
|
10h DWORD EBX
|
|
14h DWORD EDX
|
|
18h DWORD ECX
|
|
1Ch DWORD EAX
|
|
20h WORD flags
|
|
22h WORD ES
|
|
24h WORD DS
|
|
26h WORD FS
|
|
28h WORD GS
|
|
2Ah WORD IP
|
|
2Ch WORD CS
|
|
2Eh WORD SP
|
|
30h WORD SS
|
|
--------E-310301-----------------------------
|
|
INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME
|
|
AX = 0301h
|
|
BH = flags
|
|
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
|
|
reserved, must be 0 (DPMI 1.0+)
|
|
others: reserved must be 0
|
|
CX = number of words to copy from protected mode to real mode stack
|
|
ES:(E)DI = selector:offset of real mode call structure
|
|
(see #03148 at INT 31/AX=0300h)
|
|
Return: CF clear if successful
|
|
real mode call structure modified (all fields except SS:SP, CS:IP
|
|
filled with return values from real mode interrupt)
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #03143)
|
|
protected mode stack unchanged
|
|
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
|
|
the real mode procedure must exit with a FAR return
|
|
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
|
|
the real mode handler must return with the stack in the same state as
|
|
it was on being called
|
|
SeeAlso: AX=0300h,AX=0302h,AX=FF02h,INT 21/AX=250Eh,INT 21/AH=E1h"OS/286"
|
|
SeeAlso: INT 2C/AX=0025h
|
|
--------E-310302-----------------------------
|
|
INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME
|
|
AX = 0302h
|
|
BH = flags
|
|
bit 0: reset the interrupt controller and A20 line (DPMI 0.9)
|
|
reserved, must be 0 (DPMI 1.0+)
|
|
others: reserved, must be 0
|
|
CX = number of words to copy from protected mode to real mode stack
|
|
ES:(E)DI = selector:offset of real mode call structure
|
|
(see #03148 at INT 31/AX=0300h)
|
|
Return: CF clear if successful
|
|
real mode call structure modified (all fields except SS:SP, CS:IP
|
|
filled with return values from real mode interrupt)
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8012h,8013h,8014h,8021h)(see #03143)
|
|
protected mode stack unchanged
|
|
Notes: 16-bit programs use ES:DI as pointer, 32-bit programs use ES:EDI
|
|
the flags in the call structure are pushed on the real mode stack to
|
|
form an interrupt stack frame, and the trace and interrupt flags are
|
|
clear on entry to the handler
|
|
the real mode procedure must exit with an IRET
|
|
DPMI will provide a small (30 words) real mode stack if SS:SP is zero
|
|
the real mode handler must return with the stack in the same state as
|
|
it was on being called
|
|
SeeAlso: AX=0300h
|
|
--------E-310303-----------------------------
|
|
INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS
|
|
AX = 0303h
|
|
DS:(E)SI = selector:offset of procedure to call
|
|
ES:(E)DI = selector:offset of real mode call structure (see #03148)
|
|
Return: CF clear if successful
|
|
CX:DX = segment:offset of real mode call address (see #03149)
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8015h) (see #03143)
|
|
Notes: the real mode call structure is static, causing reentrancy problems;
|
|
its contents are only valid at the time of a callback
|
|
the called procedure must modify the real mode CS:IP before returning
|
|
values are returned to real mode by modifying the real mode call struc
|
|
DPMI hosts must provide at least 16 callbacks per client
|
|
the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
|
|
not support this function
|
|
BUG: Windows NT 4.0 either ignores or clears the high 16 bits of EDI,
|
|
causing an illegal instruction error if the real mode call
|
|
structure's offset in ES is greater than 64K
|
|
SeeAlso: AX=0304h,AX=0C00h
|
|
|
|
(Table 03149)
|
|
Values DPMI real-mode callback procedure is called with:
|
|
DS:(E)SI = selector:offset of real mode SS:SP
|
|
ES:(E)DI = selector:offset of real mode call structure
|
|
SS:(E)SP = locked protected mode API stack
|
|
interrupts disabled
|
|
Return: (with IRET)
|
|
ES:(E)DI = selector:offset of real mode call structure to restore
|
|
--------E-310304-----------------------------
|
|
INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS
|
|
AX = 0304h
|
|
CX:DX = real mode callback address
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8024h) (see #03143)
|
|
Note: the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 does
|
|
not support this function
|
|
SeeAlso: AX=0303h
|
|
--------E-310305-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET STATE SAVE/RESTORE ADDRESSES
|
|
AX = 0305h
|
|
Return: CF clear
|
|
AX = size in bytes of state buffer
|
|
BX:CX = real mode address of procedure to save/restore state
|
|
SI:(E)DI = protected mode procedure to save/restore state (see #03150)
|
|
Notes: the buffer size will be zero if it is not necessary to preserve state
|
|
16-bit programs should call SI:DI, 32-bit programs should call SI:EDI
|
|
this function is only needed if using the raw mode switch service
|
|
SeeAlso: AX=0306h
|
|
|
|
(Table 03150)
|
|
Call DPMI state-save procedures with:
|
|
AL = direction
|
|
00h save state
|
|
01h restore state
|
|
ES:(E)DI -> state buffer
|
|
Return: all registers preserved
|
|
--------E-310306-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES
|
|
AX = 0306h
|
|
Return: CF clear
|
|
BX:CX -> procedure to switch from real to protected mode (see #03151)
|
|
SI:(E)DI -> procedure to switch from protected to real mode
|
|
Notes: 16-bit programs should jump to SI:DI, 32-bit programs should use SI:EDI
|
|
the caller must save and restore the state of the task with AX=0305h
|
|
not supported by MS Windows 3.0 in Standard mode
|
|
SeeAlso: AX=0305h
|
|
|
|
(Table 03151)
|
|
Values to JUMP at mode-switch procedures with:
|
|
AX = new DS
|
|
CX = new ES
|
|
DX = new SS
|
|
(E)BX = new (E)SP
|
|
SI:(E)DI = new CS:(E)IP
|
|
Notes: BP/EBP is preserved across the call, but AX/EAX, BX/EBX, CX/ECX,
|
|
DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h
|
|
interrupts will stay disabled during the entire mode switch if they
|
|
are disabled on entry to the mode-switch procedure
|
|
--------E-310400-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET DPMI VERSION
|
|
AX = 0400h
|
|
Return: CF clear
|
|
AH = major version of DPMI spec supported
|
|
AL = two-digit minor version of DPMI spec supported
|
|
BX = DPMI host flags (see #03152)
|
|
CL = processor type (02h=80286, 03h=80386, 04h=80486)
|
|
DH = curr value of virtual master interrupt controller base interrupt
|
|
DL = curr value of virtual slave interrupt controller base interrupt
|
|
BUG: Windows NT versions from the March 1993 beta to at least the Final
|
|
release with fixes to CSD002 report version 0090h (0.144); this has
|
|
reportedly been corrected in the Windows NT 3.5 beta
|
|
SeeAlso: AX=0401h,INT 21/AX=250Ch,INT 2F/AX=1687h,INT 4B/AX=8102h/DX=0000h
|
|
SeeAlso: INT 67/AX=DE0Ah
|
|
|
|
Bitfields for DPMI host flags:
|
|
Bit(s) Description (Table 03152)
|
|
0 running under an 80386 (32-bit) implementation
|
|
1 processor returns to real mode for reflected interrupts instead of V86
|
|
mode
|
|
2 virtual memory supported
|
|
3 reserved (undefined)
|
|
4-15 reserved (zero)
|
|
--------E-310401-----------------------------
|
|
INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES
|
|
AX = 0401h
|
|
ES:(E)DI -> 128-byte buffer for host description (see #03153)
|
|
Return: CF clear if successful
|
|
AX = capabilities (see #03154)
|
|
CX = reserved (00h)
|
|
DX = reserved (00h)
|
|
buffer filled
|
|
CF set on error (DPMI 0.9 only)
|
|
SeeAlso: AX=0400h
|
|
|
|
Format of DPMI host description:
|
|
Offset Size Description (Table 03153)
|
|
00h BYTE host major version number
|
|
01h BYTE host minor version number
|
|
02h 126 BYTEs ASCIZ host vendor name
|
|
|
|
Bitfields for DPMI capabilities:
|
|
Bit(s) Description (Table 03154)
|
|
0 paged accessed/dirty supported (see AX=0506h,AX=0507h)
|
|
1 exceptions restartability supported
|
|
2 device mapping supported (see AX=0508h)
|
|
3 conventional memory mapping supported (see AX=0509h)
|
|
4 demand zero-fill supported
|
|
5 write-protect client capability supported
|
|
6 write-protect host capability supported
|
|
7-15 reserved
|
|
--------E-310500-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION
|
|
AX = 0500h
|
|
ES:(E)DI -> buffer for memory information (see #03155)
|
|
Return: CF clear
|
|
Notes: 16-bit programs use ES:DI, 32-bit programs use ES:EDI
|
|
this function must be considered advisory because other applications
|
|
may affect the results at any time after the call
|
|
fields not supported by the DPMI implementation are filled with
|
|
FFFFFFFFh
|
|
DPMI 1.0+ supports this function solely for backward compatibility; use
|
|
AX=050Bh instead
|
|
the limited DPMI host built into Phar Lap's 286|DOS-Extender v2.5 only
|
|
returns the first field in the memory information record
|
|
SeeAlso: AX=0501h,AX=050Bh,AX=0604h
|
|
|
|
Format of DPMI memory information:
|
|
Offset Size Description (Table 03155)
|
|
00h DWORD largest available block in bytes
|
|
04h DWORD maximum unlocked page allocation
|
|
08h DWORD maximum locked page allocation
|
|
0Ch DWORD total linear address space in pages
|
|
10h DWORD total unlocked pages
|
|
14h DWORD free pages
|
|
18h DWORD total physical pages
|
|
1Ch DWORD free linear address space in pages
|
|
20h DWORD size of paging file/partition in pages
|
|
24h 12 BYTEs reserved
|
|
--------E-310501-----------------------------
|
|
INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK
|
|
AX = 0501h
|
|
BX:CX = size in bytes
|
|
Return: CF clear if successful
|
|
BX:CX = linear address of block
|
|
SI:DI = memory block handle for resizing and freeing block
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h)(see #03143)
|
|
Notes: no selectors are allocated
|
|
the memory block is allocated unlocked (can be locked with AX=0600h)
|
|
allocations are often page granular (see AX=0604h)
|
|
under MS Windows 3.10 Enhanced mode with paging enabled, it is possible
|
|
for this function to fail even if AX=0500h indicates that enough
|
|
memory is available
|
|
SeeAlso: AX=0000h,AX=0100h,AX=0500h,AX=0502h,AX=0503h,AX=0504h,AX=0D00h
|
|
SeeAlso: INT 2F/AX=FB42h/BX=0002h
|
|
--------E-310502-----------------------------
|
|
INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK
|
|
AX = 0502h
|
|
SI:DI = handle of memory block
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8023h) (see #03143)
|
|
Note: any selectors allocated for the memory block must also be freed,
|
|
preferably before freeing the memory block
|
|
SeeAlso: AX=0001h,AX=0101h,AX=0501h,AX=0D01h
|
|
--------E-310503-----------------------------
|
|
INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK
|
|
AX = 0503h
|
|
BX:CX = new size in bytes (nonzero)
|
|
SI:DI = handle of memory block
|
|
Return: CF clear if successful
|
|
BX:CX = new linear address
|
|
SI:DI = new handle of memory block
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8012h-8014h,8016h,8021h,8023h)
|
|
(see #03143)
|
|
Notes: any selectors pointing at the block must be updated
|
|
the previous memory block handle becomes invalid
|
|
an error is returned if the new size is 0
|
|
SeeAlso: AX=0102h,AX=0501h,AX=0505h
|
|
--------E-310504-----------------------------
|
|
INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK
|
|
AX = 0504h
|
|
EBX = page-aligned linear address of memory block (00000000h if any
|
|
address is acceptable)
|
|
ECX = size in bytes (nonzero)
|
|
EDX = flags
|
|
bit 0: set to create committed pages instead of uncommitted pages
|
|
bits 1-31 reserved (0)
|
|
Return: CF clear if successful
|
|
EBX = linear address of memory block
|
|
ESI = memory block handle
|
|
CF set on error
|
|
AX = error code (8001h,8012h-8014h,8016h,8021h,8025h)(see #03143)
|
|
Note: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
|
|
SeeAlso: AX=0501h,AX=0505h
|
|
--------E-310505-----------------------------
|
|
INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK
|
|
AX = 0505h
|
|
ESI = memory block handle
|
|
ECX = new size in bytes (nonzero)
|
|
EDX = flags
|
|
bit 0: create committed pages rather than uncommitted pages
|
|
bit 1: segment descriptor update required
|
|
ES:EBX -> buffer containing array of WORDs with selectors
|
|
EDI = number of selectors in array
|
|
bits 2-31 reserved (0)
|
|
Return: CF clear if successful
|
|
EBX = new linear base address
|
|
ESI = new memory block handle
|
|
CF set on error
|
|
AX = error code (8001h,8012h-8014h,8016h,8021h,8023h)(see #03143)
|
|
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
|
|
the old memory block handle becomes invalid
|
|
if EDX bit 1 set and the block's base address is changed, DPMI updates
|
|
all descriptors for selectors in the update buffer which fall within
|
|
the memory block
|
|
SeeAlso: AX=0503h,AX=0504h
|
|
--------E-310506-----------------------------
|
|
INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES
|
|
AX = 0506h
|
|
ESI = memory block handle
|
|
EBX = offset in memory block of first page
|
|
ECX = number of pages
|
|
ES:EDX -> array of WORDs to hold page attributes (see #03156)
|
|
Return: CF clear if successful
|
|
buffer filled
|
|
CF set on error
|
|
AX = error code (8001h,8023h,8025h) (see #03143)
|
|
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
|
|
if EBX is not page-aligned, it will be rounded down
|
|
SeeAlso: AX=0504h,AX=0507h,INT 21/AX=251Dh,INT 21/AX=EB00h
|
|
|
|
Bitfields for DPMI page attribute word:
|
|
Bit(s) Description (Table 03156)
|
|
0-2 page type
|
|
000 uncommitted
|
|
001 committed
|
|
010 mapped (see AX=0508h,AX=0509h)
|
|
other currently unused
|
|
3 page is read/write rather than read-only
|
|
4 accessed/dirty bits supplied in bits 5 and 6
|
|
5 page has been accessed (only valid if bit 4 set)
|
|
6 page has been written (only valid if bit 4 set)
|
|
7-15 reserved (0)
|
|
--------E-310507-----------------------------
|
|
INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES
|
|
AX = 0507h
|
|
ESI = memory block handle
|
|
EBX = offset in memory block of first page
|
|
ECX = number of pages
|
|
ES:EDX -> array of WORDs with new page attributes (see #03156)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8001h,8002h,8013h,8014h,8021h,8023h,8025h)
|
|
(see #03143)
|
|
ECX = number of pages which have been set
|
|
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
|
|
if EBX is not page-aligned, it will be rounded down
|
|
SeeAlso: AX=0504h,AX=0506h,INT 21/AX=251Eh
|
|
--------E-310508-----------------------------
|
|
INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK
|
|
AX = 0508h
|
|
ESI = memory block handle
|
|
EBX = page-aligned offset within memory block of page(s) to be mapped
|
|
ECX = number of pages to map
|
|
EDX = page-aligned physical address of device
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8001h,8003h,8023h,8025h) (see #03143)
|
|
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
|
|
support of this function is optional; hosts are also allowed to support
|
|
the function for some devices but not others
|
|
SeeAlso: AX=0504h,AX=0509h,AX=0800h,AX=0801h
|
|
--------E-310509-----------------------------
|
|
INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK
|
|
AX = 0509h
|
|
ESI = memory block handle
|
|
EBX = page-aligned offset within memory block of page(s) to map
|
|
ECX = number of pages to map
|
|
EDX = page-aligned linear address of conventional (below 1M) memory
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8001h,8003h,8023h,8025h) (see #03143)
|
|
Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients
|
|
support of this function is optional
|
|
SeeAlso: AX=0504h,AX=0508h,AX=0801h
|
|
--------E-31050A-----------------------------
|
|
INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE
|
|
AX = 050Ah
|
|
SI:DI = memory block handle
|
|
Return: CF clear if successful
|
|
SI:DI = size in bytes
|
|
BX:CX = base address
|
|
CF set on error
|
|
AX = error code (8023h) (see #03143)
|
|
SeeAlso: AX=0501h,AX=0504h
|
|
--------E-31050B-----------------------------
|
|
INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION
|
|
AX = 050Bh
|
|
ES:(E)DI -> 128-byte buffer for memory information (see #03157)
|
|
Return: CF clear if successful
|
|
CF set on error (DPMI 0.9 only)
|
|
Note: 16-bit programs use ES:DI, 32-bit programs must use ES:EDI
|
|
SeeAlso: AX=0500h
|
|
|
|
Format of DPMI memory information:
|
|
Offset Size Description (Table 03157)
|
|
00h DWORD total allocated bytes of physical memory controlled by host
|
|
04h DWORD total allocated bytes of virtual memory controlled by host
|
|
08h DWORD total available bytes of virtual memory controlled by host
|
|
0Ch DWORD total allocated bytes of virtual memory for curr virtual mach
|
|
10h DWORD total available bytes of virtual memory for curr virtual mach
|
|
14h DWORD total allocated bytes of virtual memory for current client
|
|
18h DWORD total available bytes of virtual memory for current client
|
|
1Ch DWORD total locked bytes for current client
|
|
20h DWORD maximum locked bytes for current client
|
|
24h DWORD highest linear address available to current client
|
|
28h DWORD largest available memory block in bytes
|
|
2Ch DWORD minimum allocation unit in bytes
|
|
30h DWORD allocation alignment unit size in bytes
|
|
34h 76 BYTEs reserved (00h)
|
|
--------E-310600-----------------------------
|
|
INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION
|
|
AX = 0600h
|
|
BX:CX = starting linear address
|
|
SI:DI = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
none of the memory is locked
|
|
AX = error code (DPMI 1.0+) (8013h,8017h,8025h) (see #03143)
|
|
Notes: pages at beginning and end will be locked if the region overlaps them
|
|
may be called multiple times for a given page; the DPMI host keeps a
|
|
lock count for each page
|
|
SeeAlso: AX=0004h,AX=0601h,INT 21/AX=251Ah,INT 21/AX=EB06h
|
|
--------E-310601-----------------------------
|
|
INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION
|
|
AX = 0601h
|
|
BX:CX = starting linear address
|
|
SI:DI = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
none of the memory is unlocked
|
|
AX = error code (DPMI 1.0+) (8002h,8025h) (see #03143)
|
|
Notes: pages at beginning and end will be unlocked if the region overlaps them
|
|
memory whose lock count has not reached zero remains locked
|
|
SeeAlso: AX=0005h,AX=0600h,INT 21/AX=251Bh,INT 21/AX=EB07h
|
|
--------E-310602-----------------------------
|
|
INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE
|
|
AX = 0602h
|
|
BX:CX = starting linear address
|
|
SI:DI = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
none of the memory is made pageable
|
|
AX = error code (DPMI 1.0+) (8002h,8025h) (see #03143)
|
|
Notes: must relock all unlocked real mode memory before terminating process
|
|
for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory
|
|
pages at beginning and end will be unlocked if the region overlaps them
|
|
pageability of real mode pages is binary, not a count
|
|
SeeAlso: AX=0600h,AX=0603h
|
|
--------E-310603-----------------------------
|
|
INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION
|
|
AX = 0603h
|
|
BX:CX = starting linear address
|
|
SI:DI = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
none of the memory is relocked
|
|
AX = error code (DPMI 1.0+) (8002h,8013h,8025h) (see #03143)
|
|
Notes: pages at beginning and end will be relocked if the region overlaps them
|
|
pageability of real mode pages is binary, not a count
|
|
SeeAlso: AX=0602h
|
|
--------E-310604-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET PAGE SIZE
|
|
AX = 0604h
|
|
Return: CF clear if successful
|
|
BX:CX = page size in bytes
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (see also #03143)
|
|
8001h unsupported, 16-bit host
|
|
BUG: the Borland C++ 3.1 DPMILOAD returns with CF clear but BX and CX
|
|
unchanged
|
|
--------E-310700-----------------------------
|
|
INT 31 Pu - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES
|
|
AX = 0700h
|
|
BX:CX = starting linear page number
|
|
SI:DI = number of pages to mark as paging candidates
|
|
Return: ???
|
|
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
|
|
specification, this function is called by MS Windows TASKMAN,
|
|
PROGMAN, and KERNEL
|
|
SeeAlso: AX=0701h,AX=0702h
|
|
--------E-310701-----------------------------
|
|
INT 31 Pu - DPMI 0.9+ - DISCARD PAGES
|
|
AX = 0701h
|
|
BX:CX = starting linear page number
|
|
SI:DI = number of pages to discard
|
|
Return: ???
|
|
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
|
|
specification, this function is called by MS Windows TASKMAN,
|
|
PROGMAN, and KERNEL
|
|
SeeAlso: AX=0700h,AX=0703h
|
|
--------E-310702-----------------------------
|
|
INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE
|
|
AX = 0702h
|
|
BX:CX = starting linear address
|
|
SI:DI = number of bytes to mark as paging candidates
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8025h) (see #03143)
|
|
Notes: this function is advisory, and does not force immediate paging
|
|
partial pages will not be discarded
|
|
SeeAlso: AX=0700h,AX=0703h
|
|
--------E-310703-----------------------------
|
|
INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS
|
|
AX = 0703h
|
|
BX:CX = starting linear address
|
|
SI:DI = number of bytes to mark as discarded
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8025h) (see #03143)
|
|
Notes: this function is advisory, and may be ignored by DPMI implementations
|
|
partial pages will not be discarded
|
|
SeeAlso: AX=0701h,AX=0702h
|
|
--------E-310800-----------------------------
|
|
INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING
|
|
AX = 0800h
|
|
BX:CX = physical address (should be above 1 MB)
|
|
SI:DI = size in bytes
|
|
Return: CF clear if successful
|
|
BX:CX = linear address which maps the requested physical memory
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8003h,8021h) (see #03143)
|
|
Notes: implementations may refuse this call because it can circumvent protects
|
|
the caller must build an appropriate selector for the memory
|
|
do not use for memory mapped in the first megabyte
|
|
SeeAlso: AX=0002h,AX=0508h,AX=0509h,AX=0801h,INT 21/AX=250Ah,INT 21/AX=EB05h
|
|
--------E-310801-----------------------------
|
|
INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING
|
|
AX = 0801h
|
|
BX:CX = linear address returned by AX=0800h
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8025h) (see #03143)
|
|
Note: should be called at end of access to device mapped with AX=0800h
|
|
SeeAlso: AX=0508h,AX=0509h,AX=0800h,INT 21/AX=EB03h
|
|
--------E-310900-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE
|
|
AX = 0900h
|
|
Return: CF clear
|
|
virtual interrupts disabled
|
|
AL = previous interrupt state (00h disabled, 01h enabled)
|
|
AH preserved
|
|
Notes: the previous state may be restored simply by executing another INT 31
|
|
a CLI instruction may be used if the previous state is unimportant,
|
|
but should be assumed to be very slow due to trapping by the host
|
|
SeeAlso: AX=0901h,AX=0902h
|
|
--------E-310901-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE
|
|
AX = 0901h
|
|
Return: CF clear
|
|
virtual interrupts enabled
|
|
AL = previous interrupt state (00h disabled, 01h enabled)
|
|
AH preserved
|
|
Notes: the previous state may be restored simply by executing another INT 31
|
|
a STI instruction may be used if the previous state is unimportant,
|
|
but should be assumed to be very slow due to trapping by the host
|
|
SeeAlso: AX=0900h,AX=0902h
|
|
--------E-310902-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE
|
|
AX = 0902h
|
|
Return: CF clear
|
|
AL = current interrupt state (00h disabled, 01h enabled)
|
|
Note: should be used rather than PUSHF because that instruction yields the
|
|
physical interrupt state rather than the per-client virtualized
|
|
interrupt flag
|
|
SeeAlso: AX=0900h,AX=0901h
|
|
--------E-310A00-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT
|
|
AX = 0A00h
|
|
DS:(E)SI -> case-sensitive ASCIZ vendor name or identifier
|
|
Return: CF clear if successful
|
|
ES:(E)DI -> FAR extended API entry point
|
|
DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8001h) (see #03143)
|
|
Notes: extended API parameters are vendor-specific
|
|
DPMI 1.0+ supports this function solely for backward compatibility; use
|
|
INT 2F/AX=168Ah instead
|
|
this function is not supported by MS Windows 3.10, BC++ 3.1 DPMILOAD,
|
|
or QDPMI v1.0x; use INT 2F/AX=168Ah instead. It is supported by
|
|
386MAX v7.01.
|
|
SeeAlso: INT 2F/AX=168Ah
|
|
--------E-310B00-----------------------------
|
|
INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT
|
|
AX = 0B00h
|
|
BX:CX = linear address
|
|
DL = size (1,2,4 bytes)
|
|
DH = type (00h execute, 01h write, 02h read/write)
|
|
Return: CF clear if successful
|
|
BX = watchpoint handle
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8016h,8021h,8025h) (see #03143)
|
|
SeeAlso: AX=0212h,AX=0601h
|
|
--------E-310B01-----------------------------
|
|
INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT
|
|
AX = 0B01h
|
|
BX = watchpoint handle
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8023h) (see #03143)
|
|
Note: the watchpoint handle is freed
|
|
SeeAlso: AX=0B00h
|
|
--------E-310B02-----------------------------
|
|
INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT
|
|
AX = 0B02h
|
|
BX = watchpoint handle
|
|
Return: CF clear if successful
|
|
AX = status flags
|
|
bit 0: watch point has been executed since AX=0B00h or AX=0B03h
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8023h) (see #03143)
|
|
SeeAlso: AX=0B00h,AX=0B03h
|
|
--------E-310B03-----------------------------
|
|
INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT
|
|
AX = 0B03h
|
|
BX = watchpoint handle
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (DPMI 1.0+) (8023h) (see #03143)
|
|
SeeAlso: AX=0B02h
|
|
--------E-310C00-----------------------------
|
|
INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK
|
|
AX = 0C00h
|
|
ES:(E)DI -> resident service provider structure (see #03158)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8015h,8021h,8025h) (see #03143 at AX=0000h)
|
|
Note: calling this function declares an intent to provide resident
|
|
protected mode services after terminating with AX=0C01h
|
|
SeeAlso: AX=0303h,AX=0C01h
|
|
|
|
Format of DPMI resident service provider structure:
|
|
Offset Size Description (Table 03158)
|
|
00h QWORD descriptor for 16-bit data segment
|
|
08h QWORD descriptor for 16-bit code segment (zeros if not supported)
|
|
10h WORD offset of 16-bit callback procedure
|
|
12h 2 BYTEs reserved
|
|
14h QWORD descriptor for 32-bit data segment
|
|
1Ch QWORD descriptor for 32-bit code segment (zeros if not supported)
|
|
24h DWORD offset of 32-bit callback procedure
|
|
--------E-310C01-----------------------------
|
|
INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT
|
|
AX = 0C01h
|
|
BL = return code
|
|
DX = number of paragraphs of DOS memory to reserve (0 or >= 6)
|
|
Return: never
|
|
Notes: should only be used if the program will only provide services to
|
|
other DPMI programs
|
|
any protected mode memory remains allocated to the program unless
|
|
explicitly freed before this call
|
|
must first call AX=0C00h or program will simply be terminated
|
|
SeeAlso: AX=0C00h,INT 21/AH=31h
|
|
--------E-310D00-----------------------------
|
|
INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY
|
|
AX = 0D00h
|
|
ES:(E)DI -> shared memory allocation request structure (see #03159)
|
|
Return: CF clear if successful
|
|
request structure updated
|
|
CF set on error
|
|
AX = error code (8012h,8013h,8014h,8016h,8021h) (see #03143)
|
|
Note: first 16 bytes of memory block will be initialized to zeros on the
|
|
first allocation
|
|
SeeAlso: AX=0501h,AX=0D01h,AX=0D02h
|
|
|
|
Format of DPMI shared memory allocation request structure:
|
|
Offset Size Description (Table 03159)
|
|
00h DWORD requested length of shared memory block in bytes
|
|
04h DWORD (ret) allocated length of block
|
|
08h DWORD (ret) shared memory handle
|
|
0Ch DWORD (ret) linear address of memory block
|
|
10h PWORD selector:offset32 of ASCIZ name for memory block
|
|
(name max 128 bytes)
|
|
16h 2 BYTEs reserved
|
|
18h 4 BYTEs reserved (00h)
|
|
--------E-310D01-----------------------------
|
|
INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY
|
|
AX = 0D01h
|
|
SI:DI = shared memory block handle
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8023h) (see #03143)
|
|
Notes: handle becomes invalid after this call
|
|
DPMI maintains separate global and virtual machine use counts for each
|
|
shared memory block; when the global use counts reaches zero, the
|
|
block is finally destroyed
|
|
SeeAlso: AX=0502h,AX=0D00h
|
|
--------E-310D02-----------------------------
|
|
INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY
|
|
AX = 0D02h
|
|
SI:DI = shared memory block handle
|
|
DX = flags
|
|
bit 0: return immediately rather than suspending if serialization
|
|
unavailable
|
|
bit 1: shared rather than exclusive serialization
|
|
bits 2-15 reserved (0)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8004h,8005h,8017h-8019h,8023h) (see #03143)
|
|
Notes: an exclusive serialization blocks any other serialization attempts for
|
|
the same block by another virtual machine; a shared serialization
|
|
blocks attempts at exclusive serialization by another virtual machine
|
|
hosts are not required to detect deadlock
|
|
a client's interrupt handler can cancel a serialization call which
|
|
caused it to block by calling AX=0D03h
|
|
SeeAlso: AX=0D00h,AX=0D03h
|
|
--------E-310D03-----------------------------
|
|
INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY
|
|
AX = 0D03h
|
|
SI:DI = shared memory block handle
|
|
DX = flags
|
|
bit 0: release shared serialization rather than exclusive serialztn
|
|
bit 1: free pending serialization
|
|
bits 2-15 reserved (0)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8002h,8023h) (see #03143 at AX=0000h)
|
|
SeeAlso: AX=0D00h,AX=0D02h
|
|
--------E-310E00-----------------------------
|
|
INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS
|
|
AX = 0E00h
|
|
Return: CF clear
|
|
AX = coprocessor status (see #03160)
|
|
Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
|
|
SeeAlso: AX=0E01h
|
|
|
|
Bitfields for DPMI coprocessor status:
|
|
Bit(s) Description (Table 03160)
|
|
0 numeric coprocessor enabled for current client
|
|
1 client is emulating coprocessor
|
|
2 numeric coprocessor is present
|
|
3 host is emulating coprocessor instructions
|
|
4-7 coprocessor type
|
|
0000 none
|
|
0010 80287
|
|
0011 80387
|
|
0100 80486 with numeric coprocessor
|
|
other reserved
|
|
8-15 not used
|
|
--------E-310E01-----------------------------
|
|
INT 31 P - DPMI 1.0+ - SET EMULATION
|
|
AX = 0E01h
|
|
BX = coprocessor flag bits (see #03161)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (8026h) (see #03143 at AX=0000h)
|
|
Note: supported by 386MAX v6.01, which otherwise only supports DPMI 0.9
|
|
SeeAlso: AX=0E00h
|
|
|
|
Bitfields for DPMI coprocessor flags:
|
|
Bit(s) Description (Table 03161)
|
|
0 enable numeric coprocessor for current client
|
|
1 client will emulate coprocessor
|
|
2-15 not used
|
|
--------E-3157-------------------------------
|
|
INT 31 - Netroom3 DPMI.EXE v3.00 - ???
|
|
AH = 57h
|
|
AL = subfunction (at least 02h,03h,04h,05h,07h,08h,09h,0Ah)
|
|
???
|
|
Return: ???
|
|
SeeAlso: INT 2C/AX=0000h"Cloaking"
|
|
--------E-315702-----------------------------
|
|
INT 31 - Netroom3 DPMI.EXE v3.00 - SWITCH TO PROTECTED MODE
|
|
AX = 5702h
|
|
DX = PSP segment of caller
|
|
STACK: WORD ???
|
|
WORD flags (bit 0 set if 32-bit program)
|
|
Return: as for DPMI mode-switch entry point (see #02718 at INT 2F/AX=1687h)
|
|
Note: this function is called by the real-mode DPMI mode-switch entry point
|
|
SeeAlso: INT 2F/AX=1687h
|
|
--------E-31EE00------------------------
|
|
INT 31 - DOS32 v3.0+ - GET DOS32 VERSION AND SELECTOR VALUES
|
|
AX = EE00h
|
|
Return: AL = minor version (BCD)
|
|
AH = major version (BCD)
|
|
DL = system type (1=raw DOS, 2=XMS, 4=VCPI, 8=DPMI)
|
|
BX = selector of 4GB data segment with zero base address
|
|
Program: DOS32 is a 32 bit DOS extender by Adam Seychell.
|
|
SeeAlso: AX=EE02h
|
|
--------E-31EE02------------------------
|
|
INT 31 - DOS32 v3.0+ - GET DOS32 ADDRESS INFORMATION
|
|
AX = EE02h
|
|
Return: AX = real-mode segment of temporary 8K buffer (v3.1+)
|
|
EBX = 32bit linear address of the program segment
|
|
EDX = Total size in bytes of the programs .EXE file after linking.
|
|
ESI = offset address of PSP
|
|
EDI = offset address of program environment
|
|
ECX = offset address of the program's .EXE ASCIZ file name and path
|
|
SeeAlso: AX=EE00h,AX=EE20h
|
|
--------E-31EE10------------------------
|
|
INT 31 - DOS32 v3.2+ - SET UP A DOS32 LOADABLE LIBRARY
|
|
AX = EE10h
|
|
EDX -> library ASCIZ path\filename
|
|
EBX = number of bytes to seek from beginning of file
|
|
Return: CF clear if successful
|
|
EAX = size of memory block required to store library
|
|
EBX = size of library file
|
|
CF set on error
|
|
AL = error code.
|
|
01h error opening or reading file
|
|
02h bad DOS32 library file
|
|
SeeAlso: AX=EE00h,AX=EE11h
|
|
--------E-31EE11------------------------
|
|
INT 31 - DOS32 v3.2+ - LOAD LIBRARY FILE
|
|
AX = EE11h
|
|
EDX -> near pointer of memory block to store library
|
|
Return: CF clear if successful
|
|
EDX = near pointer to the dynamic library public
|
|
CF set on error
|
|
Note: must first successfuly call function AX=EE10h before calling this
|
|
function
|
|
SeeAlso: AX=EE00h,AX=EE10h
|
|
--------E-31EE20------------------------
|
|
INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH RETF STACK FRAME
|
|
AX = EE20h
|
|
ESI = offset of the real mode call back function
|
|
Return: CF clear if successful
|
|
CX:DX = real mode address to call up to the protected mode
|
|
procedure
|
|
CF set on error
|
|
SeeAlso: AX=EE00h,AX=EE02h,AX=EE21h
|
|
--------E-31EE21------------------------
|
|
INT 31 - DOS32 v3.0+ - GET REAL MODE CALL BACK ADDRESS WITH IRET STACK FRAME
|
|
AX = EE21h
|
|
ESI = offset of the real mode call back function
|
|
Return: CF clear if successful
|
|
CX:DX = real mode address to call up to the protected mode
|
|
procedure
|
|
CF set on error
|
|
SeeAlso: AX=EE20h
|
|
--------E-31EE30------------------------
|
|
INT 31 - DOS32 v3.0+ - TERMINATE AND STAY RESIDENT
|
|
AX = EE30h
|
|
SeeAlso: AX=EE21h,AX=EE40h,INT 21/AH=31h
|
|
--------E-31EE40------------------------
|
|
INT 31 - DOS32 v3.0+ - UNDO PREVIOUS MEMORY ALLOCATION or DMA BUFFER
|
|
AX = EE40h
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: AX=EE41h,AX=EE42h
|
|
--------E-31EE41------------------------
|
|
INT 31 - DOS32 v3.0+ - ALLOCATE 16KB DMA BLOCK
|
|
AX = EE41h
|
|
Return: CF clear if successful
|
|
EBX -> 16KB DMA block (physical address)
|
|
EDX -> 16KB DMA block (offset address)
|
|
CF set on error
|
|
SeeAlso: AX=EE40h,AX=EE42h
|
|
--------E-31EE42------------------------
|
|
INT 31 - DOS32 v3.0+ - ALLOCATE MEMORY BLOCK
|
|
AX = EE42h
|
|
EDX = size in bytes
|
|
Return: CF clear if successful
|
|
EAX = size in bytes
|
|
EDX -> memory block
|
|
CF set on error
|
|
Note: size is rounded off to the next 4KB boundary
|
|
SeeAlso: AX=EE40h,AX=EE41h
|
|
--------E-31FF00-----------------------------
|
|
INT 31 P - CauseWay - "Info" - GET SYSTEM SELECTORS/FLAGS
|
|
AX = FF00h
|
|
Return: AX = selector for flag address space (base 00000000h, limit 4GB)
|
|
BX = selector for current PSP segment (limit 0100h)
|
|
(E)CX = size of DOS transfer buffer (max 64K)
|
|
DX = real-mode segment address of DOS transfer buffer
|
|
ES:(E)SI = protected-mode address of DOS transfer buffer
|
|
EDI = system flags (see #03162)
|
|
Program: CauseWay is a 386 DOS extender by Michael Devore and John Wildsmith
|
|
for use with Watcom C++ or assembly language programs
|
|
Notes: the entire transfer buffer can be addressed with a 16-bit offset in
|
|
protected mode
|
|
CauseWay always maps selector 0040h to the BIOS data segment at
|
|
real-mode segment 0040h; when not running under a DPMI host, CauseWay
|
|
also provides selectors A000h, B000h, and B800h mapped to video
|
|
memory
|
|
SeeAlso: AX=FF25h
|
|
|
|
Bitfields for CauseWay system flags:
|
|
Bit(s) Description (Table 03162)
|
|
0 32-bit code
|
|
1 virtual memory manage enabled
|
|
3-2 mode: 00 raw extended memory, 01 VCPI, 10 DPMI
|
|
4 DPMI available
|
|
5 VCPI available
|
|
6 no memory managers
|
|
7 application descriptor table type: 0 = GDT, 1 = LDT
|
|
14-8 reserved
|
|
15 debugging engine present
|
|
--------E-31FF01-----------------------------
|
|
INT 31 P - CauseWay - "IntXX" - SIMULATE REAL-MODE INTERRUPT
|
|
AX = FF01h
|
|
BL = interrupt number
|
|
ES:(E)DI -> real-mode register list (see #03148 at AX=0300h)
|
|
Return: register list updated
|
|
Note: CauseWay fills in the values for SS, SP, and FLAGS itself, and ignores
|
|
the values specified for CS and IP
|
|
SeeAlso: AX=0300h,AX=FF02h
|
|
--------E-31FF02-----------------------------
|
|
INT 31 P - CauseWay - "FarCallReal" - SIMULATE REAL-MODE FAR CALL
|
|
AX = FF02h
|
|
ES:(E)DI -> real-mode register list (see #03148 at AX=0300h)
|
|
Return: register list updated
|
|
SeeAlso: AX=0301h,AX=FF01h
|
|
--------E-31FF03-----------------------------
|
|
INT 31 P - CauseWay - "GetSel" - ALLOCATE NEW SELECTOR
|
|
AX = FF03h
|
|
Return: CF clear if successful
|
|
BX = new selector
|
|
CF set on error
|
|
Note: the new selector is initialized with a base address of 000000h, a limit
|
|
of 0000h, and attributes read/write expand-up data
|
|
SeeAlso: AX=FF04h,AX=FF05h,AX=FF06h
|
|
--------E-31FF04-----------------------------
|
|
INT 31 P - CauseWay - "RelSel" - RELEASE A SELECTOR
|
|
AX = FF04h
|
|
BX = selector
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: AX=FF03h,AX=FF06h
|
|
--------E-31FF05-----------------------------
|
|
INT 31 P - CauseWay - "CodeSel" - CONVERT SELECTOR TO EXECUTABLE CODE SELECTOR
|
|
AX = FF05h
|
|
BX = selector
|
|
CL = default operation size (00h = 16-bit, 01h = 32-bit)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: AX=FF03h
|
|
--------E-31FF06-----------------------------
|
|
INT 31 P - CauseWay - "AliasSel" - CREATE READ/WRITE DATA ALIAS SELECTOR
|
|
AX = FF06h
|
|
BX = original selector
|
|
Return: CF clear if successful
|
|
AX = new data selector aliasing original selector
|
|
CF set on error
|
|
SeeAlso: AX=FF03h,AX=FF04h
|
|
--------E-31FF07-----------------------------
|
|
INT 31 P - CauseWay - "GetSelDet" - GET SELECTOR BASE AND LIMIT
|
|
AX = FF07h
|
|
BX = selector
|
|
Return: CF clear if successful
|
|
CX:DX = base address
|
|
SI:DI = limit (bytes)
|
|
CF set on error
|
|
SeeAlso: AX=FF08h,AX=FF09h
|
|
--------E-31FF08-----------------------------
|
|
INT 31 P - CauseWay - "GetSelDet32" - GET SELECTOR BASE AND LIMIT (32-bit)
|
|
AX = FF08h
|
|
Return: CF clear if successful
|
|
EDX = base address
|
|
ECX = limit (bytes)
|
|
CF set on error
|
|
SeeAlso: AX=FF07h,AX=FF0Ah
|
|
--------E-31FF09-----------------------------
|
|
INT 31 P - CauseWay - "SetSelDet" - SET SELECTOR BASE AND LIMIT
|
|
AX = FF09h
|
|
BX = selector
|
|
CX:DX = new base address
|
|
SI:DI = new byte-granular limit
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: AX=FF07h,AX=FF0Ah
|
|
--------E-31FF0A-----------------------------
|
|
INT 31 P - CauseWay - "SetSelDet32" - SET SELECTOR BASE AND LIMIT (32-bit)
|
|
AX = FF0Ah
|
|
BX = selector
|
|
EDX = new base address
|
|
ECX = new byte-granular limit
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: AX=FF08h,AX=FF09h
|
|
--------E-31FF0B-----------------------------
|
|
INT 31 P - CauseWay - "GetMem" - ALLOCATE BLOCK OF MEMORY
|
|
AX = FF0Bh
|
|
CX:DX = size in bytes (FFFFh:FFFFh to get size of largest available)
|
|
Return: CF clear if successful
|
|
BX = selector for accessing block if requested size not FFFFh:FFFFh
|
|
CX:DX = size of largest available block if requested FFFFh:FFFFh
|
|
CF set on error
|
|
SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF0Fh,AX=FF10h,AX=FF2Ch
|
|
--------E-31FF0C-----------------------------
|
|
INT 31 P - CauseWay - "GetMem32" - ALLOCATE BLOCK OF MEMORY (32-bit)
|
|
AX = FF0Ch
|
|
ECX = size in bytes (FFFFFFFFh to get size of largest available block)
|
|
Return: CF clear if successful
|
|
BX = selector for accessing block if requested size not FFFFh:FFFFh
|
|
ECX = size of largest available block if requested FFFFh:FFFFh
|
|
CF set on error
|
|
SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF0Fh,AX=FF11h
|
|
--------E-31FF0D-----------------------------
|
|
INT 31 P - CauseWay - "ResMem" - RESIZE MEMORY BLOCK
|
|
AX = FF0Dh
|
|
BX = selector for block to be resized
|
|
CX:DX = new size in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Note: the memory block may have to be copied to another location in order
|
|
to satisfy the requested new size, in which case the base address
|
|
of the selector is updated
|
|
SeeAlso: AX=FF0Bh,AX=FF0Eh,AX=FF12h
|
|
--------E-31FF0E-----------------------------
|
|
INT 31 P - CauseWay - "ResMem32" - RESIZE MEMORY BLOCK (32-bit)
|
|
AX = FF0Eh
|
|
BX = selector for block to be resized
|
|
ECX = new size in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Note: the memory block may have to be copied to another location in order
|
|
to satisfy the requested new size, in which case the base address
|
|
of the selector is updated
|
|
SeeAlso: AX=FF0Ch,AX=FF0Dh,AX=FF13h
|
|
--------E-31FF0F-----------------------------
|
|
INT 31 P - CauseWay - "RelMem" - RELEASE PREVIOUSLY ALLOCATED MEMORY
|
|
AX = FF0Fh
|
|
BX = selector for block to be released
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: AX=FF0Bh,AX=FF0Ch,AX=FF14h
|
|
--------E-31FF10-----------------------------
|
|
INT 31 P - CauseWay - "GetMemLinear" - ALLOCATE MEMORY WITHOUT SELECTOR
|
|
AX = FF10h
|
|
CX:DX = size of block in bytes
|
|
Return: CF clear if successful
|
|
SI:DI = linear address of allocated block
|
|
CF set on error
|
|
Note: this function may return addresses above 16M
|
|
SeeAlso: AX=FF0Bh,AX=FF11h,AX=FF12h,AX=FF14h
|
|
--------E-31FF11-----------------------------
|
|
INT 31 P - CauseWay - "GetMemLinear32" - ALLOCATE MEMORY WITHOUT SELECTOR
|
|
AX = FF11h
|
|
ECX = size of block in bytes
|
|
Return: CF clear if successful
|
|
ESI = linear address of allocated block
|
|
CF set on error
|
|
Note: this function may return addresses above 16M
|
|
SeeAlso: AX=FF0Ch,AX=FF10h,AX=FF13h,AX=FF14h
|
|
--------E-31FF12-----------------------------
|
|
INT 31 P - CauseWay - "ResMemLinear" - RESIZE LINEAR MEMORY BLOCK
|
|
AX = FF12h
|
|
CX:DX = new size in bytes
|
|
SI:DI = linear address of block to be resized
|
|
Return: CF clear if successful
|
|
SI:DI = new linear address of block
|
|
CF set on error
|
|
SeeAlso: AX=FF0Dh,AX=FF10h,AX=FF13h
|
|
--------E-31FF13-----------------------------
|
|
INT 31 P - CauseWay - "ResMemLinear32" - RESIZE LINEAR MEMORY BLOCK (32-bit)
|
|
AX = FF13h
|
|
ECX = new size in bytes
|
|
ESI = linear address of block to be resized
|
|
Return: CF clear if successful
|
|
ESI = new linear address of block
|
|
CF set on error
|
|
SeeAlso: AX=FF0Eh,AX=FF11h,AX=FF12h
|
|
--------E-31FF14-----------------------------
|
|
INT 31 P - CauseWay - "RelMemLinear" - RELEASE LINEAR MEMORY BLOCK
|
|
AX = FF14h
|
|
SI:DI = linear address of block to be released
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: AX=FF0Fh,AX=FF10h,AX=FF15h
|
|
--------E-31FF15-----------------------------
|
|
INT 31 P - CauseWay - "RelMemLinear32" - RELEASE LINEAR MEMORY BLOCK (32-bit)
|
|
AX = FF15h
|
|
ESI = linear address of block to be released
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: AX=FF0Fh,AX=FF11h,AX=FF15h
|
|
--------E-31FF16-----------------------------
|
|
INT 31 P - CauseWay - "GetMemNear" - ALLOCATE APPLICATION-RELATIVE MEMORY
|
|
AX = FF16h
|
|
EBX = size in bytes of block to allocate
|
|
Return: CF clear if successful
|
|
ESI = application-relative linear address of allocated block
|
|
CF set on error
|
|
SeeAlso: AX=FF17h,AX=FF18h,AX=FF19h
|
|
--------E-31FF17-----------------------------
|
|
INT 31 P - CauseWay - "ResMemNear" - RESIZE APPLICATION-RELATIVE MEMORY BLOCK
|
|
AX = FF17h
|
|
EBX = size in bytes of block to allocate
|
|
ESI = application-relative linear address of block
|
|
Return: CF clear if successful
|
|
ESI = new application-relative linear address of block
|
|
CF set on error
|
|
SeeAlso: AX=FF16h,AX=FF18h,AX=FF19h
|
|
--------E-31FF18-----------------------------
|
|
INT 31 P - CauseWay - "RelMemNear" - RELEASE APPLICATION-RELATIVE MEMORY BLOCK
|
|
AX = FF18h
|
|
ESI = application-relative linear address of block
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
SeeAlso: AX=FF16h,AX=FF17h,AX=FF19h
|
|
--------E-31FF19-----------------------------
|
|
INT 31 P - CauseWay - "Linear2Near" - CONVERT LINEAR TO APP-RELATIVE ADDRESS
|
|
AX = FF19h
|
|
ESI = linear address
|
|
Return: ESI = application-relative linear address
|
|
SeeAlso: AX=FF1Ah
|
|
--------E-31FF1A-----------------------------
|
|
INT 31 P - CauseWay - "Near2Linear" - CONVERT APP-RELATIVE TO LINEAR ADDRESS
|
|
AX = FF1Ah
|
|
ESI = application-relative linear address
|
|
Return: ESI = linear address
|
|
SeeAlso: AX=FF19h
|
|
--------E-31FF1B-----------------------------
|
|
INT 31 P - CauseWay - "LockMem" - LOCK REGION OF MEMORY
|
|
AX = FF1Bh
|
|
BX:CX = starting linear address
|
|
SI:DI = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Desc: prevent memory from being swapped out by the virtual memory manager
|
|
Note: locks are applied on 4K page boundaries, so memory above and below
|
|
the specified region may be locked as well
|
|
SeeAlso: AX=FF1Ch,AX=FF1Dh
|
|
--------E-31FF1C-----------------------------
|
|
INT 31 P - CauseWay - "LockMem32" - LOCK REGION OF MEMORY (32-bit)
|
|
AX = FF1Ch
|
|
ESI = starting linear address
|
|
ECX = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Desc: prevent memory from being swapped out by the virtual memory manager
|
|
Note: locks are applied on 4K page boundaries, so memory above and below
|
|
the specified region may be locked as well
|
|
SeeAlso: AX=FF1Bh,AX=FF1Eh,AX=FF1Fh
|
|
--------E-31FF1D-----------------------------
|
|
INT 31 P - CauseWay - "UnLockMem" - UNLOCK REGION OF MEMORY
|
|
AX = FF1Dh
|
|
BX:CX = starting linear address
|
|
SI:DI = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Desc: allow memory to be swapped out by the virtual memory manager
|
|
Note: locks are applied on 4K page boundaries, so memory above and below
|
|
the specified region may be unlocked as well
|
|
SeeAlso: AX=FF1Bh,AX=FF1Eh
|
|
--------E-31FF1E-----------------------------
|
|
INT 31 P - CauseWay - "UnLockMem32" - UNLOCK REGION OF MEMORY (32-bit)
|
|
AX = FF1Eh
|
|
ESI = starting linear address
|
|
ECX = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Desc: allow memory to be swapped out by the virtual memory manager
|
|
Note: locks are applied on 4K page boundaries, so memory above and below
|
|
the specified region may be unlocked as well
|
|
SeeAlso: AX=FF1Ch,AX=FF1Dh,AX=FF20h
|
|
--------E-31FF1F-----------------------------
|
|
INT 31 P - CauseWay - "LockMemNear" - LOCK APPLICATION-RELATIVE MEMORY REGION
|
|
AX = FF1Fh
|
|
ESI = starting application-relative linear address
|
|
EBX = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Desc: prevent memory from being swapped out by the virtual memory manager
|
|
Note: locks are applied on 4K page boundaries, so memory above and below
|
|
the specified region may be locked as well
|
|
SeeAlso: AX=FF1Ch,AX=FF20h
|
|
--------E-31FF20-----------------------------
|
|
INT 31 P - CauseWay - "UnLockMemNear" - UNLOCK APP-RELATIVE MEMORY REGION
|
|
AX = FF20h
|
|
ESI = starting application-relative linear address
|
|
ECX = size of region in bytes
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
Desc: allow memory to be swapped out by the virtual memory manager
|
|
Note: locks are applied on 4K page boundaries, so memory above and below
|
|
the specified region may be unlocked as well
|
|
SeeAlso: AX=FF1Eh,AX=FF1Fh
|
|
--------E-31FF21-----------------------------
|
|
INT 31 P - CauseWay - "GetMemDOS" - ALLOCATE CONVENTIONAL MEMORY
|
|
AX = FF21h
|
|
BX = number of paragraphs to allocate
|
|
Return: CF clear if successful
|
|
AX = real-mode segment of allocated block
|
|
DX = initial selector for block
|
|
CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
BX = size of largest available block
|
|
Note: if the requested size is greater than 64K, contiguous selectors will
|
|
be allocated, one for each 64K; for 32-bit applications, the first
|
|
selector's limit will be set to the size of the entire block, while
|
|
that selector will have a limit of 64K for 16-bit applications. All
|
|
selectors after the first one have a limit of 64K except the final
|
|
one
|
|
SeeAlso: AX=FF22h,AX=FF23h,INT 21/AH=48h
|
|
--------E-31FF22-----------------------------
|
|
INT 31 P - CauseWay - "ResMemDOS" - RESIZE CONVENTIONAL MEMORY BLOCK
|
|
AX = FF22h
|
|
BX = new size in paragraphs
|
|
DX = initial selector for block
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
BX = maximum number of paragraphs available
|
|
Note: this function will also fail if the block is expanded past a 64K
|
|
boundary and the next selector is already in use
|
|
SeeAlso: AX=FF21h,AX=FF23h,INT 21/AH=49h
|
|
--------E-31FF23-----------------------------
|
|
INT 31 P - CauseWay - "RelMemDOS" - RELEASE CONVENTIONAL MEMORY BLOCK
|
|
AX = FF23h
|
|
DX = initial selector for block
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
Note: all descriptors allocated for the block are freed
|
|
SeeAlso: AX=FF21h,AX=FF22h,INT 21/AH=4Ah
|
|
--------E-31FF24-----------------------------
|
|
INT 31 P - CauseWay - "ExecOverlay" - LOAD AND OPTIONALLY EXECUTE APP CODE
|
|
AX = FF24h
|
|
EBX = flags
|
|
bit 0: don't execute (overlay only)
|
|
bit 1: don't preserve relocation information
|
|
ES:EDX -> filename (see also #03163)
|
|
FS:ESI -> commandline (ESI = 00000000h if no commandline)
|
|
GS:EDI -> name (CW's /o option)
|
|
Return: CF clear if successful
|
|
---EBX bit 0 set---
|
|
CX:EDX = program entry point (CS:EIP)
|
|
SI = segment of PSP
|
|
---EBX bit 1 set---
|
|
BX:EAX = initial SS:ESP
|
|
EDI high word = base segment
|
|
EDI low word = number of segments
|
|
EBP = start of segment definitions
|
|
CF set on error
|
|
AX = error code
|
|
0001h DOS file access error
|
|
0002h not a CuaseWay 3P file
|
|
0003h not enough memory
|
|
SeeAlso: AX=FF2Ah,INT 21/AH=4Bh
|
|
|
|
Format of CauseWay executable:
|
|
Offset Size Description (Table 03163)
|
|
00h 2 BYTEs signature "3P"
|
|
02h DWORD size of header data in bytes
|
|
06h DWORD size of EXE image data in bytes
|
|
0Ah DWORD number of bytes of program memory required
|
|
0Eh WORD number of segment definitions (see #03165)
|
|
10h DWORD number of relocation table entries
|
|
14h DWORD offset of program entry point
|
|
18h WORD segment list entry number for entry point's CS
|
|
1Ah DWORD initial ESP
|
|
1Eh WORD segment list entry number for initial SS
|
|
20h DWORD control flags (see #03164)
|
|
24h DWORD automatic stack size in bytes if ESP entry = 00000000h
|
|
28h BYTE length of name (name follows program image)
|
|
29h 23 BYTEs reserved
|
|
SeeAlso: #01594,#01609 at INT 21/AH=4Bh
|
|
|
|
Bitfields for CauseWay executable control flags:
|
|
Bit(s) Description (Table 03164)
|
|
0 16-bit interrupt stack frame
|
|
7 descriptor table type (0 = GDT, 1 = LDT)
|
|
14 16-bit default data size
|
|
31 compressed EXE image
|
|
Note: bits 0 and 14 should always be equal
|
|
SeeAlso: #03163
|
|
|
|
Format of CauseWay segment definition [array]:
|
|
Offset Size Description (Table 03165)
|
|
00h DWORD start offset within program image
|
|
04h DWORD length and type
|
|
bits 0-19: length
|
|
bit 20: granularity (if set, length is in 4K pages)
|
|
bits 21-24: type
|
|
0000 code
|
|
0001 read/write data
|
|
0010 stack
|
|
0011 read-only data
|
|
bit 25: force segment descriptor's D bit to 0
|
|
bit 26: force segmetn descriptor's D bit to 1
|
|
SeeAlso: #03163
|
|
--------E-31FF25-----------------------------
|
|
INT 31 P - CauseWay - "GetDOSTrans" - GET DOS TRANSFER BUFFER
|
|
AX = FF25h
|
|
Return: BX = real-mode segment of transfer buffer
|
|
ECX = transfer buffer size
|
|
DX = protected-mode selector for transfer buffer
|
|
Note: the default buffer size of 8K is sufficient for most applications,
|
|
but an application performing large amounts of file I/O may benefit
|
|
from allocating its own, larger buffer
|
|
SeeAlso: AX=FF00h,AX=FF26h
|
|
--------E-31FF26-----------------------------
|
|
INT 31 P - CauseWay - "SetDOSTrans" - SET DOS TRANSFER BUFFER
|
|
AX = FF26h
|
|
BX = real-mode segment of new transfer buffer
|
|
ECX = new transfer buffer size
|
|
DX = protected-mode selector for new transfer buffer
|
|
Return: nothing
|
|
Note: the specific buffer must be located in conventional memory; only the
|
|
first 64K will be used
|
|
SeeAlso: AX=FF25h
|
|
--------E-31FF27-----------------------------
|
|
INT 31 P - CauseWay v1.3 - "GetMCBSize" - GET CURRENT MCB ALLOCATION BLOCK SIZE
|
|
AX = FF27h
|
|
Return: ECX = current threshold
|
|
Desc: determine the memory allocation size below which CauseWay will use
|
|
internal MCB chains rather than allocating full 4K pages via DPMI
|
|
SeeAlso: AX=FF00h,AX=FF28h
|
|
--------E-31FF28-----------------------------
|
|
INT 31 P - CauseWay v1.3 - "SetMCBSize" - SET MCB MEMORY ALLOCATION BLOCK SIZE
|
|
AX = FF28h
|
|
ECX = new threshold (0000000h to disable MCB memory allocation system)
|
|
Return: CF clear if successful
|
|
threshold unchanged (default 16K)
|
|
CF set on error (threshold > 64K)
|
|
Desc: specify the memory allocation size below which CauseWay will use
|
|
internal MCB chains rather than allocating full 4K pages via DPMI
|
|
Note: the specified threshold will be rounded up to the next higher multiple
|
|
of 4K
|
|
SeeAlso: AX=FF00h,AX=FF27h
|
|
--------E-31FF29-----------------------------
|
|
INT 31 P - CauseWay v1.3 - "GetSels" - ALLOCATE MULTIPLE SELECTORS
|
|
AX = FF29h
|
|
CX = number of selectors to allocate
|
|
Return: BX = base selector
|
|
Desc: allocate multiple contiguous selectors, initializing each to have a
|
|
base address and limit of zero
|
|
SeeAlso: AX=FF00h,AX=FF04h
|
|
--------E-31FF2A-----------------------------
|
|
INT 31 P - CauseWay v1.3 - "cwLoad" - LOAD ANOTHER CAUSEWAY PROGRAM AS OVERLAY
|
|
AX = FF2Ah
|
|
DS:EDX -> filename
|
|
Return: CF clear if successful
|
|
CX:EDX = CS:EIP of entry point
|
|
BX:EAX = initial SS:ESP for program
|
|
SI = PSP for overlay program
|
|
CF set on error
|
|
AX = error code (01h file error, 02h not a 3P file, 03h no memory)
|
|
Note: the returned PSP can be given to "RelMem" (AX=FF0Fh) to release the
|
|
overlay's memory and selectors; only selectors and memory allocated
|
|
during loading will be freed by RelMem unless one switches PSPs with
|
|
INT 21/AH=50h
|
|
SeeAlso: AX=FF00h,AX=FF24h
|
|
--------E-31FF2B-----------------------------
|
|
INT 31 P - CauseWay v1.3 - "cwcInfo" - VALIDATE AND GET SIZE OF CWC FILE
|
|
AX = FF2Bh
|
|
BX = file handle for CWC-compressed file
|
|
Return: CF clear if successful
|
|
ECX = expanded file size
|
|
CF set on error (not a CWC-compressed file)
|
|
SeeAlso: AX=FF00h,AX=FFFBh
|
|
--------E-31FF2C-----------------------------
|
|
INT 31 P - CauseWay v1.3 - "GetMemSO" - ALLOCATE MEMORY AND RETURN SEL:OFFSET
|
|
AX = FF2Ch
|
|
CX:DX = block size in bytes
|
|
Return: CF clear if successful
|
|
SI:DI = selector:offset of allocated memory
|
|
CF set on error
|
|
Note: unlike "GetMem" (AX=FF0Bh), this function will reuse selectors until a
|
|
segment is full, rather than allocating a new selector for each
|
|
memory block
|
|
SeeAlso: AX=FF00h,AX=FF2Dh,AX=FF2Eh
|
|
--------E-31FF2D-----------------------------
|
|
INT 31 P - CauseWay v1.3 - "ResMemSO" - RESIZE SELECTOR:OFFSET MEMORY BLOCK
|
|
AX = FF2Dh
|
|
SI:DI = selector:offset for memory block
|
|
CX:DX = new size of block
|
|
Return: CF clear if successful
|
|
SI:DI = new selector:offset for memory block
|
|
CF set on error
|
|
SeeAlso: AX=FF00h,AX=FF2Ch,AX=FF2Eh
|
|
--------E-31FF2E-----------------------------
|
|
INT 31 P - CauseWay v1.3 - "RelMemSO" - RELEASE SELECTOR:OFFSET MEMORY BLOCK
|
|
AX = FF2Eh
|
|
SI:DI = selector:offset for memory block
|
|
SeeAlso: AX=FF00h
|
|
--------E-31FFFB-----------------------------
|
|
INT 31 P - Causeway v1.3 - "cwcLoad" - LOAD/EXPAND CWC-COMPRESSED FILE
|
|
AX = FFFBh
|
|
BX = source file handle
|
|
ES:EDI -> memory buffer into which to expand file
|
|
Return: CF clear if successful
|
|
ECX = expanded data length
|
|
CF set on error
|
|
EAX = error code (01h file error, 02h bad data, 03h not CWC file)
|
|
Note: the provided file may consist of the concatenation of several CWC
|
|
files; the one beginning at the current file position will be
|
|
expanded
|
|
SeeAlso: AX=FF2Bh
|
|
--------v-32---------------------------------
|
|
INT 32 - VIRUS - "Tiny" Viruses - ORIGINAL INT 21h VECTOR
|
|
SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 31"VIRUS",INT 44"VIRUS"
|
|
--------v-32---------------------------------
|
|
INT 32 - VIRUS - "Plovdiv 1.3"/"Damage 1.3" - ORIGINAL INT 21h VECTOR
|
|
SeeAlso: INT 31"VIRUS",INT 9E"VIRUS"
|
|
--------y-326E-------------------------------
|
|
INT 32 - NOISE.SYS 0.53 - API
|
|
AH = 6Eh (function ID)
|
|
AL = subfunction (see INT 32/AX=6E00h)
|
|
Return: CF set on error
|
|
AL = error code (see #03166)
|
|
CF clear if successful
|
|
Notes: INT 32 is only a proposed interface for NOISE.SYS. Use the IOCTL READ
|
|
from the RANDOM device to determine the interrupt and function ID
|
|
used by the driver, since future versions may use the Alternate
|
|
Multiplex Interrupt (AMIS) at INT 2Dh.
|
|
the beta v0.51 had a substantially different API on INT 32/AH=6Eh
|
|
|
|
(Table 03166)
|
|
Values for NOISE.SYS error codes:
|
|
00h subfunction not supported
|
|
FBh random pool is empty
|
|
FCh quality of sample is too low
|
|
FDh too many processes using the API or driver
|
|
FEh subfunction is disabled in the current build
|
|
FFh successful
|
|
--------y-326E00-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - INSTALLATION CHECK
|
|
AX = 6E00h
|
|
Return: AL = installation status
|
|
00h not installed
|
|
FFh installed
|
|
CX = version (ie, 0123h = Version 1.2.3)
|
|
DX:DI -> signature string
|
|
--------y-326E01-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - GET ENTRY POINT
|
|
AX = 6E01h
|
|
Return: AL = FFh
|
|
DX:DI -> far call hook
|
|
----------326E04-----------------------------
|
|
INT 32 - NOISE.SYS v0.55+ - GET INTERRUPT HOOK LIST
|
|
AX = 6E04h
|
|
Return: AL = status
|
|
00h = unimplemented
|
|
04h = DX:BX -> interrupt hook list
|
|
FEh = subfunction disabled
|
|
Note: the hook list array ends with API interrupt (usually 32h, although
|
|
it will differ if the API is installed at another interrupt)
|
|
----------326E06-----------------------------
|
|
INT 32 - NOISE.SYS v0.55+ - GET DEVICE DRIVER HEADER
|
|
AX = 6E06h
|
|
Return: AL = number of device drivers in NOISE.SYS chain
|
|
02h = default (for RANDOM and URANDOM devices)
|
|
AH = AMIS device driver flags (set to 00h for now)
|
|
DX:BX -> first device in chain (see #01646)
|
|
SeeAlso: INT 2D/AL=06h
|
|
--------y-326E10-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - STATUS CHECK
|
|
AX = 6E10h
|
|
Return: CF set on error
|
|
AL = error code (FDh) (see #03166)
|
|
CF clear if successful
|
|
AL = status
|
|
FFh successful
|
|
BH = number of processes using the API
|
|
CX = number of random bytes waiting
|
|
DX = maximum possible bytes waiting
|
|
(if CX=DX, the pool is full)
|
|
Note: this subfunction is a convenient way to check the driver if any
|
|
fresh bytes are waiting in the output pool.
|
|
SeeAlso: INT 32/AH=6Eh,AX=6E00h,AX=6E11h
|
|
--------y-326E11-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - GET ENTROPY ESTIMATE
|
|
AX = 6E11h
|
|
Return: CF set on error
|
|
AL = error code (00h,FDh,FEh) (see #03166)
|
|
CF clear if successful
|
|
EBX = estimated bit count (refer to note below)
|
|
CL = FRACBITS (number of fractional bits)
|
|
EDX = low 32-bits of total number of samples added
|
|
Note: the estimated number of fresh random bits is equal to
|
|
(EAX >> FRACBITS) + ((EAX & ((1 << FRACBITS)-1) / (1 << FRACBITS))
|
|
SeeAlso: AH=6Eh,AX=6E00h
|
|
--------y-326E12-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - ADD SAMPLE FROM FAST TIMER
|
|
AX = 6E12h
|
|
Return: CF set on error
|
|
AL = error code (FCh,FDh,FEh) (see #03166)
|
|
CF clear if successful
|
|
CX = number of random bytes waiting
|
|
Note: subfunctions 12h and 13h are meant for applications or devices
|
|
which are able to gather entropy from other sources which are
|
|
not polled by NOISE.SYS (for example, a communications driver
|
|
could use this call to sample packet arrival times).
|
|
SeeAlso: AX=6E00h,AX=6E10h,AX=6E13h
|
|
--------y-326E13-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - ADD 16-BIT SAMPLE TO RANDOM POOL
|
|
AX = 6E13h
|
|
DX = sample
|
|
Return: CF set on error
|
|
AL = error code (FCh,FEh) (see #03166)
|
|
CF clear if successful
|
|
CX = number of random bytes waiting
|
|
SeeAlso: AX=6E00h,AX=6E11h
|
|
--------y-326E14-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - GET FLAGS
|
|
AX = 6E14h
|
|
Return: BX = flags (see #03167)
|
|
CX = mask of settable flags in BX
|
|
SeeAlso: AX=6E00h,AX=6E15h
|
|
|
|
Bitfields for NOISE.SYS flags:
|
|
Bit(s) Description (Table 03167)
|
|
0 MS Windows active
|
|
1-5 reserved
|
|
6 clock drift sampling
|
|
7 video retrace drift sampling
|
|
8 network access sampling (not implemented yet in 0.53)
|
|
9 CD-ROM access sampling (not implemented yet in 0.53)
|
|
10 DOS spinner
|
|
11 DOS process start/end and miscellaneous process activity sampling
|
|
12 mouse movement/button sampling
|
|
13 disk sampling (INT 13)
|
|
14 keystroke timings
|
|
15 reserved for hardware RNG
|
|
--------y-326E15-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - SET FLAGS
|
|
AX = 6E15h
|
|
BX = flags (see #03167)
|
|
Return: BX = new flags
|
|
Note: flags which AX=6E14h indicates are not settable should be masked off
|
|
by ANDing with the CX returned by AX=6E14h
|
|
SeeAlso: AX=6E00h,AX=6E14h
|
|
--------y-326E16-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - READ URANDOM BYTES
|
|
AX = 6E16h
|
|
CX = number of bytes
|
|
ES:DI -> buffer
|
|
Return: CF set on error
|
|
AL = error code (FDh,FEh) (see #03166)
|
|
CF clear if successful
|
|
CX = number of random bytes read
|
|
SeeAlso: AX=6E00h,AX=6E12h,AX=6E17h
|
|
--------y-326E17-----------------------------
|
|
INT 32 - NOISE.SYS v0.53+ - READ RANDOM BYTES
|
|
AX = 6E17h
|
|
CX = number of bytes
|
|
ES:DI -> buffer
|
|
Return: CF set on error
|
|
AL = error code (FBh,FDh,FEh) (see #03166)
|
|
CF clear if successful
|
|
CX = number of random bytes read
|
|
SeeAlso: AX=6E00h,AX=6E16h
|
|
----------326E18-----------------------------
|
|
INT 32 - NOISE.SYS v0.6+ - READ CONTROL RECORD
|
|
AX = 6E18h
|
|
CX = buffer size
|
|
ES:DI -> buffer
|
|
Return: AL = status
|
|
00h unimplemented (before v0.6)
|
|
FEh subfunction is disabled
|
|
FFh successful
|
|
CX = number of bytes read
|
|
Note: the control record corresponds to the IOCTL Read record for the RANDOM
|
|
device
|
|
----------326E-------------------------------
|
|
INT 32 - NOISE.SYS - RESERVED FOR FUTURE USE
|
|
AH = 6Eh
|
|
AL = 19h to 3Fh
|
|
Return: AL = 00h
|
|
Note: these functions are reserved for future use; user additions to the
|
|
the driver should use subfunctions 40h to FFh.
|
|
--------M-330000-----------------------------
|
|
INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS
|
|
AX = 0000h
|
|
Return: AX = status
|
|
0000h hardware/driver not installed
|
|
FFFFh hardware/driver installed
|
|
BX = number of buttons
|
|
0000h other than two
|
|
0002h two buttons (many drivers)
|
|
0003h Mouse Systems/Logitech three-button mouse
|
|
FFFFh two buttons
|
|
Notes: since INT 33 might be uninitialized on old machines, the caller
|
|
should first check that INT 33 is neither 0000h:0000h nor points at
|
|
an IRET instruction (BYTE CFh) before calling this API
|
|
to use mouse on a Hercules-compatible monographics card in graphics
|
|
mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1,
|
|
and then call this function. Logitech drivers v5.01 and v6.00
|
|
reportedly do not correctly use Hercules graphics in dual-monitor
|
|
systems, while version 4.10 does.
|
|
the Logitech mouse driver contains the signature string "LOGITECH"
|
|
three bytes past the interrupt handler; many of the Logitech mouse
|
|
utilities check for this signature.
|
|
Logitech MouseWare v6.30 reportedly does not support CGA video modes
|
|
if no CGA is present when it is started and the video board is
|
|
later switched into CGA emulation
|
|
SeeAlso: AX=0011h,AX=0021h,AX=002Fh,INT 62/AX=007Ah,INT 74
|
|
--------M-330001-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - SHOW MOUSE CURSOR
|
|
AX = 0001h
|
|
SeeAlso: AX=0002h,INT 16/AX=FFFEh,INT 62/AX=007Bh,INT 6F/AH=06h"F_TRACK_ON"
|
|
--------M-330002-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - HIDE MOUSE CURSOR
|
|
AX = 0002h
|
|
Note: multiple calls to hide the cursor will require multiple calls to
|
|
function 01h to unhide it.
|
|
SeeAlso: AX=0001h,AX=0010h,INT 16/AX=FFFFh,INT 62/AX=007Bh
|
|
SeeAlso: INT 6F/AH=08h"F_TRACK_OFF"
|
|
--------M-330003-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - RETURN POSITION AND BUTTON STATUS
|
|
AX = 0003h
|
|
Return: BX = button status (see #03168)
|
|
CX = column
|
|
DX = row
|
|
Note: in text modes, all coordinates are specified as multiples of the cell
|
|
size, typically 8x8 pixels
|
|
SeeAlso: AX=0004h,AX=000Bh,INT 2F/AX=D000h"ZWmous"
|
|
|
|
Bitfields for mouse button status:
|
|
Bit(s) Description (Table 03168)
|
|
0 left button pressed if 1
|
|
1 right button pressed if 1
|
|
2 middle button pressed if 1 (Mouse Systems/Logitech/Genius)
|
|
--------M-330004-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - POSITION MOUSE CURSOR
|
|
AX = 0004h
|
|
CX = column
|
|
DX = row
|
|
Note: the row and column are truncated to the next lower multiple of the cell
|
|
size (typically 8x8 in text modes); however, some versions of the
|
|
Microsoft documentation incorrectly state that the coordinates are
|
|
rounded
|
|
SeeAlso: AX=0003h,INT 62/AX=0081h,INT 6F/AH=10h"F_PUT_SPRITE"
|
|
--------M-330005-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - RETURN BUTTON PRESS DATA
|
|
AX = 0005h
|
|
BX = button number (see #03169)
|
|
Return: AX = button states (see #03168)
|
|
BX = number of times specified button has been pressed since last call
|
|
CX = column at time specified button was last pressed
|
|
DX = row at time specified button was last pressed
|
|
Note: at least for the Genius mouse driver, the number of button presses
|
|
returned is limited to 7FFFh
|
|
SeeAlso: AX=0006h,INT 62/AX=007Ch
|
|
|
|
(Table 03169)
|
|
Values for mouse button number:
|
|
0000h left
|
|
0001h right
|
|
0002h middle (Mouse Systems/Logitech/Genius mouse)
|
|
--------M-330006-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - RETURN BUTTON RELEASE DATA
|
|
AX = 0006h
|
|
BX = button number (see #03169)
|
|
Return: AX = button states (see #03168)
|
|
BX = number of times specified button has been released since last call
|
|
CX = column at time specified button was last released
|
|
DX = row at time specified button was last released
|
|
Note: at least for the Genius mouse driver, the number of button releases
|
|
returned is limited to 7FFFh
|
|
SeeAlso: AX=0005h,INT 62/AX=007Ch
|
|
--------M-330007-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - DEFINE HORIZONTAL CURSOR RANGE
|
|
AX = 0007h
|
|
CX = minimum column
|
|
DX = maximum column
|
|
Note: in text modes, the minimum and maximum columns are truncated to the
|
|
next lower multiple of the cell size, typically 8x8 pixels
|
|
SeeAlso: AX=0008h,AX=0010h,AX=0031h,INT 62/AX=0080h
|
|
SeeAlso: INT 6F/AH=0Ch"F_SET_LIMITS_X"
|
|
--------M-330008-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - DEFINE VERTICAL CURSOR RANGE
|
|
AX = 0008h
|
|
CX = minimum row
|
|
DX = maximum row
|
|
Note: in text modes, the minimum and maximum rows are truncated to the
|
|
next lower multiple of the cell size, typically 8x8 pixels
|
|
SeeAlso: AX=0007h,AX=0010h,AX=0031h,INT 62/AX=0080h
|
|
SeeAlso: INT 6F/AH=0Eh"F_SET_LIMITS_Y"
|
|
--------M-330009-----------------------------
|
|
INT 33 - MS MOUSE v3.0+ - DEFINE GRAPHICS CURSOR
|
|
AX = 0009h
|
|
BX = column of cursor hot spot in bitmap (-16 to 16)
|
|
CX = row of cursor hot spot (-16 to 16)
|
|
ES:DX -> mask bitmap (see #03170)
|
|
Notes: in graphics modes, the screen contents around the current mouse cursor
|
|
position are ANDed with the screen mask and then XORed with the
|
|
cursor mask
|
|
the Microsoft mouse driver v7.04 and v8.20 uses only BL and CL, so the
|
|
hot spot row/column should be limited to -128..127
|
|
Microsoft KnowledgeBase article Q19850 states that the high bit is
|
|
right-most, but that statement is contradicted by all other available
|
|
documentation
|
|
SeeAlso: AX=000Ah,AX=0012h,AX=002Ah,INT 62/AX=007Fh,INT 6F/AH=0Ah"F_DEF_MASKS"
|
|
|
|
Format of mouse mask bitmap:
|
|
Offset Size Description (Table 03170)
|
|
00h 16 WORDs screen mask
|
|
10h 16 WORDs cursor mask
|
|
Note: each word defines the sixteen pixels of a row, low bit rightmost
|
|
--------M-33000A-----------------------------
|
|
INT 33 - MS MOUSE v3.0+ - DEFINE TEXT CURSOR
|
|
AX = 000Ah
|
|
BX = hardware/software text cursor
|
|
0000h software
|
|
CX = screen mask
|
|
DX = cursor mask
|
|
0001h hardware
|
|
CX = start scan line
|
|
DX = end scan line
|
|
Note: when the software cursor is selected, the character/attribute data at
|
|
the current screen position is ANDed with the screen mask and then
|
|
XORed with the cursor mask
|
|
SeeAlso: AX=0009h,INT 62/AX=007Eh
|
|
--------M-33000B-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - READ MOTION COUNTERS
|
|
AX = 000Bh
|
|
Return: CX = number of mickeys mouse moved horizontally since last call
|
|
DX = number of mickeys mouse moved vertically
|
|
Notes: a mickey is the smallest increment the mouse can sense
|
|
positive values indicate down/right
|
|
SeeAlso: AX=0003h,AX=001Bh,AX=0027h
|
|
--------M-33000C-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - DEFINE INTERRUPT SUBROUTINE PARAMETERS
|
|
AX = 000Ch
|
|
CX = call mask (see #03171)
|
|
ES:DX -> FAR routine (see #03172)
|
|
SeeAlso: AX=0018h
|
|
|
|
Bitfields for mouse call mask:
|
|
Bit(s) Description (Table 03171)
|
|
0 call if mouse moves
|
|
1 call if left button pressed
|
|
2 call if left button released
|
|
3 call if right button pressed
|
|
4 call if right button released
|
|
5 call if middle button pressed (Mouse Systems/Logitech/Genius mouse)
|
|
6 call if middle button released (Mouse Systems/Logitech/Genius mouse)
|
|
7-15 unused
|
|
Note: some versions of the Microsoft documentation incorrectly state that CX
|
|
bit 0 means call if mouse cursor moves
|
|
|
|
(Table 03172)
|
|
Values interrupt routine is called with:
|
|
AX = condition mask (same bit assignments as call mask)
|
|
BX = button state
|
|
CX = cursor column
|
|
DX = cursor row
|
|
SI = horizontal mickey count
|
|
DI = vertical mickey count
|
|
Notes: some versions of the Microsoft documentation erroneously swap the
|
|
meanings of SI and DI
|
|
in text modes, the row and column will be reported as a multiple of
|
|
the character cell size, typically 8x8 pixels
|
|
--------M-33000D-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION ON
|
|
AX = 000Dh
|
|
SeeAlso: AX=000Eh,INT 10/AH=04h
|
|
--------M-33000E-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - LIGHT PEN EMULATION OFF
|
|
AX = 000Eh
|
|
SeeAlso: AX=000Dh
|
|
--------M-33000F-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - DEFINE MICKEY/PIXEL RATIO
|
|
AX = 000Fh
|
|
CX = number of mickeys per 8 pixels horizontally (default 8)
|
|
DX = number of mickeys per 8 pixels vertically (default 16)
|
|
SeeAlso: AX=0013h,AX=001Ah,INT 62/AX=0082h
|
|
--------M-330010-----------------------------
|
|
INT 33 - MS MOUSE v1.0+ - DEFINE SCREEN REGION FOR UPDATING
|
|
AX = 0010h
|
|
CX,DX = X,Y coordinates of upper left corner
|
|
SI,DI = X,Y coordinates of lower right corner
|
|
Note: mouse cursor is hidden in the specified region, and needs to be
|
|
explicitly turned on again
|
|
SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"Genius MOUSE",AX=0031h
|
|
--------M-330010-----------------------------
|
|
INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING
|
|
AX = 0010h
|
|
ES:DX -> update region list (see #03173)
|
|
Notes: mouse cursor is hidden in the specified region, and needs to be
|
|
explicitly turned on again
|
|
this version of the call is described in an August 1988 version of the
|
|
Genius Mouse programmer's reference; it has been changed to conform
|
|
to the Microsoft version shown above by version 9.06 (and possibly
|
|
earlier versions)
|
|
SeeAlso: AX=0001h,AX=0002h,AX=0007h,AX=0010h"MS MOUSE"
|
|
|
|
Format of Genius Mouse update region list:
|
|
Offset Size Description (Table 03173)
|
|
00h WORD left-most column
|
|
02h WORD top-most row
|
|
04h WORD right-most column
|
|
06h WORD bottom-most row
|
|
--------M-330011-----------------------------
|
|
INT 33 - Genius Mouse 9.06 - GET NUMBER OF BUTTONS
|
|
AX = 0011h
|
|
Return: AX = FFFFh
|
|
BX = number of buttons
|
|
SeeAlso: AX=0000h
|
|
--------M-330012-----------------------------
|
|
INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK
|
|
AX = 0012h
|
|
BH = cursor width in words
|
|
CH = rows in cursor
|
|
BL = horizontal hot spot (-16 to 16)
|
|
CL = vertical hot spot (-16 to 16)
|
|
ES:DX -> bit map of screen and cursor maps
|
|
Return: AX = FFFFh if successful
|
|
SeeAlso: AX=0009h,AX=002Ah,AX=0035h
|
|
--------M-330013-----------------------------
|
|
INT 33 - MS MOUSE v5.0+ - DEFINE DOUBLE-SPEED THRESHOLD
|
|
AX = 0013h
|
|
DX = threshold speed in mickeys/second, 0000h = default of 64/second
|
|
Note: if speed exceeds threshold, the cursor's on-screen motion is doubled
|
|
SeeAlso: AX=000Fh,AX=001Bh,AX=002Ch
|
|
--------M-330014-----------------------------
|
|
INT 33 - MS MOUSE v3.0+ - EXCHANGE INTERRUPT SUBROUTINES
|
|
AX = 0014h
|
|
CX = call mask (see #03171)
|
|
ES:DX -> FAR routine
|
|
Return: CX = call mask of previous interrupt routine
|
|
ES:DX = FAR address of previous interrupt routine
|
|
SeeAlso: AX=000Ch,AX=0018h
|
|
--------M-330015-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - RETURN DRIVER STORAGE REQUIREMENTS
|
|
AX = 0015h
|
|
Return: BX = size of buffer needed to store driver state
|
|
SeeAlso: AX=0016h,AX=0017h,AX=0042h
|
|
--------M-330016-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - SAVE DRIVER STATE
|
|
AX = 0016h
|
|
BX = size of buffer (see AX=0015h)
|
|
ES:DX -> buffer for driver state
|
|
Note: although not documented (since the Microsoft driver does not use it),
|
|
many drivers appear to require BX on input
|
|
SeeAlso: AX=0015h,AX=0017h
|
|
--------M-330017-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - RESTORE DRIVER STATE
|
|
AX = 0017h
|
|
BX = size of buffer (see AX=0015h)
|
|
ES:DX -> buffer containing saved state
|
|
Notes: although not documented (since the Microsoft driver does not use it),
|
|
many drivers appear to require BX on input
|
|
some mouse drivers range-check the values in the saved state based on
|
|
the current video mode; thus, the video mode should be restored
|
|
before the mouse driver's state is restored
|
|
SeeAlso: AX=0015h,AX=0016h
|
|
--------M-330018-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - SET ALTERNATE MOUSE USER HANDLER
|
|
AX = 0018h
|
|
CX = call mask (see #03174)
|
|
ES:DX -> FAR routine to be invoked on mouse events (see #03175)
|
|
Return: AX = status
|
|
0018h if successful
|
|
FFFFh on error
|
|
Notes: up to three handlers can be defined by separate calls to this function,
|
|
each with a different combination of shift states in the call mask;
|
|
calling this function again with a call mask of 0000h undefines the
|
|
specified handler (official documentation); specifying the same
|
|
call mask and an address of 0000h:0000h undefines the handler (real
|
|
life)
|
|
some versions of the documentation erroneously reverse the order of
|
|
the bits in the call mask
|
|
SeeAlso: AX=000Ch,AX=0014h,AX=0019h
|
|
|
|
Bitfields for mouse call mask:
|
|
Bit(s) Description (Table 03174)
|
|
0 call if mouse moves
|
|
1 call if left button pressed
|
|
2 call if left button released
|
|
3 call if right button pressed
|
|
4 call if right button released
|
|
5 call if shift button pressed during event
|
|
6 call if ctrl key pressed during event
|
|
7 call if alt key pressed during event
|
|
Note: at least one of 5-7 must be set
|
|
|
|
(Table 03175)
|
|
Values user handler is called with:
|
|
AX = condition mask (same bit assignments as call mask)
|
|
BX = button state
|
|
CX = cursor column
|
|
DX = cursor row
|
|
SI = horizontal mickey count
|
|
DI = vertical mickey count
|
|
Return: registers preserved
|
|
Note: in text modes, the row and column will be reported as a multiple of
|
|
the cell size, typically 8x8 pixels
|
|
--------M-330019-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - RETURN USER ALTERNATE INTERRUPT VECTOR
|
|
AX = 0019h
|
|
CX = call mask (see #03174)
|
|
Return: BX:DX = user interrupt vector
|
|
CX = call mask (0000h if not found)
|
|
Note: attempts to find a user event handler (defined by function 18h)
|
|
whose call mask matches CX
|
|
SeeAlso: AX=0018h
|
|
--------M-33001A-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - SET MOUSE SENSITIVITY
|
|
AX = 001Ah
|
|
BX = horizontal speed \
|
|
CX = vertical speed / (see AX=000Fh)
|
|
DX = double speed threshold (see AX=0013h)
|
|
SeeAlso: AX=0013h,AX=001Bh,INT 62/AX=0082h
|
|
--------M-33001B-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - RETURN MOUSE SENSITIVITY
|
|
AX = 001Bh
|
|
Return: BX = horizontal speed
|
|
CX = vertical speed
|
|
DX = double speed threshold
|
|
SeeAlso: AX=000Bh,AX=001Ah
|
|
--------M-33001C-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - SET INTERRUPT RATE
|
|
AX = 001Ch
|
|
BX = rate (see #03176)
|
|
Notes: only available on InPort mouse
|
|
values greater than 4 may cause unpredictable driver behavior
|
|
|
|
(Table 03176)
|
|
Values for mouse interrupt rate:
|
|
00h no interrupts allowed
|
|
01h 30 per second
|
|
02h 50 per second
|
|
03h 100 per second
|
|
04h 200 per second
|
|
--------M-33001D-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - DEFINE DISPLAY PAGE NUMBER
|
|
AX = 001Dh
|
|
BX = display page number
|
|
Note: the cursor will be displayed on the specified page
|
|
SeeAlso: AX=001Eh
|
|
--------M-33001E-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - RETURN DISPLAY PAGE NUMBER
|
|
AX = 001Eh
|
|
Return: BX = display page number
|
|
SeeAlso: AX=001Dh
|
|
--------M-33001F-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - DISABLE MOUSE DRIVER
|
|
AX = 001Fh
|
|
Return: AX = status
|
|
001Fh successful
|
|
ES:BX = INT 33 vector before mouse driver was first installed
|
|
FFFFh unsuccessful
|
|
Notes: restores vectors for INT 10 and INT 71 (8086) or INT 74 (286/386)
|
|
if you restore INT 33 to ES:BX, driver will be completely disabled
|
|
many drivers return AX=001Fh even though the driver has been disabled
|
|
SeeAlso: AX=0020h
|
|
--------M-330020-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - ENABLE MOUSE DRIVER
|
|
AX = 0020h
|
|
Return: AX = status
|
|
0020h successful
|
|
FFFFh unsuccessful
|
|
Notes: restores vectors for INT 10h and INT 71h (8086) or INT 74h (286/386)
|
|
which were removed by function 1Fh
|
|
Microsoft's documentation states that no value is returned
|
|
SeeAlso: AX=001Fh
|
|
--------M-330021-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - SOFTWARE RESET
|
|
AX = 0021h
|
|
Return: AX = status
|
|
FFFFh if mouse driver installed
|
|
BX = number of buttons (FFFFh = two buttons)
|
|
0021h if mouse driver not installed
|
|
Note: this call is identical to funtion 00h, but does not reset the mouse
|
|
SeeAlso: AX=0000h
|
|
--------M-330022-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - SET LANGUAGE FOR MESSAGES
|
|
AX = 0022h
|
|
BX = language (see #03177)
|
|
Note: only available on international versions of the driver; US versions
|
|
ignore this call
|
|
SeeAlso: AX=0023h
|
|
|
|
(Table 03177)
|
|
Values for mouse driver language:
|
|
00h English
|
|
01h French
|
|
02h Dutch
|
|
03h German
|
|
04h Swedish
|
|
05h Finnish
|
|
06h Spanish
|
|
07h Portugese
|
|
08h Italian
|
|
--------M-330023-----------------------------
|
|
INT 33 - MS MOUSE v6.0+ - GET LANGUAGE FOR MESSAGES
|
|
AX = 0023h
|
|
Return: BX = language (see #03177)
|
|
Note: the US version of the driver always returns zero
|
|
SeeAlso: AX=0022h
|
|
--------M-330024BX0000-----------------------
|
|
INT 33 - MS MOUSE v6.26+ - GET SOFTWARE VERSION, MOUSE TYPE, AND IRQ NUMBER
|
|
AX = 0024h
|
|
BX = 0000h to check for function's existence
|
|
Return: AX = FFFFh on error
|
|
otherwise,
|
|
BH = major version
|
|
BL = minor version
|
|
CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP)
|
|
CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3,...,7=IRQ7,...,0Fh=IRQ15)
|
|
Note: although current Microsoft documentation states that this function was
|
|
introduced in v6.26, it appears to have been present as early as
|
|
v6.02 (for earlier versions, use INT 33/AX=006Dh)
|
|
SeeAlso: AX=004Dh,AX=006Dh
|
|
--------M-330025-----------------------------
|
|
INT 33 - MS MOUSE v6.26+ - GET GENERAL DRIVER INFORMATION
|
|
AX = 0025h
|
|
Return: AX = general information (see #03178)
|
|
BX = cursor lock flag for OS/2 to prevent reentrancy problems
|
|
CX = mouse code active flag (for OS/2)
|
|
DX = mouse driver busy flag (for OS/2)
|
|
|
|
Bitfields for general mouse driver information:
|
|
Bit(s) Description (Table 03178)
|
|
15 driver loaded as device driver rather than TSR
|
|
14 driver is newer integrated type
|
|
13,12 current cursor type
|
|
00 software text cursor
|
|
01 hardware text cursor (CRT Controller's cursor)
|
|
1X graphics cursor
|
|
11-8 interrupt rate (see #03176)
|
|
7-0 count of currently-active Mouse Display Drivers (MDD), the newer
|
|
integrated driver type
|
|
--------M-330026-----------------------------
|
|
INT 33 - MS MOUSE v6.26+ - GET MAXIMUM VIRTUAL COORDINATES
|
|
AX = 0026h
|
|
Return: BX = mouse-disabled flag (0000h mouse enabled, nonzero disabled)
|
|
CX = maximum virtual X (for current video mode)
|
|
DX = maximum virtual Y
|
|
Note: for driver versions before 7.05, this call returns the currently-set
|
|
maximum coordinates; v7.05+ returns the absolute maximum coordinates
|
|
SeeAlso: AX=0031h
|
|
--------M-330026-----------------------------
|
|
INT 33 - Genius Mouse 9.06 - ???
|
|
AX = 0026h
|
|
Return: CX = 0204h if CX was 0105h on entry, else unchanged
|
|
--------M-330027-----------------------------
|
|
INT 33 - MS MOUSE v7.01+ - GET SCREEN/CURSOR MASKS AND MICKEY COUNTS
|
|
AX = 0027h
|
|
Return: AX = screen-mask value (or hardware cursor scan-line start for v7.02+)
|
|
BX = cursor-mask value (or hardware cursor scan-line stop for v7.02+)
|
|
CX = horizontal mickeys moved since last call
|
|
DX = vertical mickeys moved since last call
|
|
SeeAlso: AX=000Bh
|
|
--------M-330028-----------------------------
|
|
INT 33 - MS MOUSE v7.0+ - SET VIDEO MODE
|
|
AX = 0028h
|
|
CX = new video mode (call is NOP if 0000h)
|
|
DH = Y font size (00h = default)
|
|
DL = X font size (00h = default)
|
|
Return: CL = status (00h = successful)
|
|
Notes: DX is ignored unless the selected video mode supports font size control
|
|
when CX=0000h, an internal flag that had been set by a previous call
|
|
is cleared; this is required before a mouse reset
|
|
SeeAlso: AX=0029h,INT 10/AH=00h
|
|
--------M-330029-----------------------------
|
|
INT 33 - MS MOUSE v7.0+ - ENUMERATE VIDEO MODES
|
|
AX = 0029h
|
|
CX = previous video mode
|
|
0000h get first supported video mode
|
|
other get next supported mode after mode CX
|
|
Return: CX = first/next video mode (0000h = no more video modes)
|
|
DS:DX -> description of video mode or 0000h:0000h if none
|
|
Notes: the enumerated video modes may be in any order and may repeat
|
|
the description string (if available) is terminated by '$' followed by
|
|
a NUL byte
|
|
SeeAlso: AX=0028h
|
|
--------M-33002A-----------------------------
|
|
INT 33 - MS MOUSE v7.02+ - GET CURSOR HOT SPOT
|
|
AX = 002Ah
|
|
Return: AX = internal counter controlling cursor visibility
|
|
BX = cursor hot spot column
|
|
CX = cursor hot spot row
|
|
DX = mouse type (see #03179)
|
|
Note: the hot spot location is relative to the upper left corner of the
|
|
cursor block and may range from -128 to +127 both horizontally and
|
|
vertically
|
|
SeeAlso: AX=0009h,AX=0012h,AX=0035h
|
|
|
|
(Table 03179)
|
|
Values for mouse type:
|
|
00h none
|
|
01h bus
|
|
02h serial
|
|
03h InPort
|
|
04h IBM
|
|
05h Hewlett-Packard
|
|
--------M-33002B-----------------------------
|
|
INT 33 - MS MOUSE v7.0+ - LOAD ACCELERATION PROFILES
|
|
AX = 002Bh
|
|
BX = active acceleration profile
|
|
0001h-0004h or FFFFh to restore default curves
|
|
ES:SI -> buffer containing acceleration profile data (see #03180)
|
|
Return: AX = success flag
|
|
SeeAlso: AX=002Ch,AX=002Dh,AX=0033h
|
|
|
|
Format of acceleration profile data:
|
|
Offset Size Description (Table 03180)
|
|
00h BYTE length of acceleration profile 1
|
|
01h BYTE length of acceleration profile 2
|
|
02h BYTE length of acceleration profile 3
|
|
03h BYTE length of acceleration profile 4
|
|
04h 32 BYTEs threshold speeds for acceleration profile 1
|
|
24h 32 BYTEs threshold speeds for acceleration profile 2
|
|
44h 32 BYTEs threshold speeds for acceleration profile 3
|
|
64h 32 BYTEs threshold speeds for acceleration profile 4
|
|
84h 32 BYTEs speedup factor for acceleration profile 1
|
|
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
|
|
A4h 32 BYTEs speedup factor for acceleration profile 2
|
|
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
|
|
C4h 32 BYTEs speedup factor for acceleration profile 3
|
|
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
|
|
E4h 32 BYTEs speedup factor for acceleration profile 4
|
|
(10h = 1.0, 14h = 1.25, 20h = 2.0, etc)
|
|
104h 16 BYTEs name of acceleration profile 1 (blank-padded)
|
|
114h 16 BYTEs name of acceleration profile 2 (blank-padded)
|
|
124h 16 BYTEs name of acceleration profile 3 (blank-padded)
|
|
134h 16 BYTEs name of acceleration profile 4 (blank-padded)
|
|
Note: unused bytes in the threshold speed fields are filled with 7Fh and
|
|
unused bytes in the speedup factor fields are filled with 10h
|
|
--------M-33002C-----------------------------
|
|
INT 33 - MS MOUSE v7.0+ - GET ACCELERATION PROFILES
|
|
AX = 002Ch
|
|
Return: AX = status (0000h success)
|
|
BX = currently-active acceleration profile
|
|
ES:SI -> acceleration profile data (see #03180)
|
|
SeeAlso: AX=002Bh,AX=002Dh,AX=0033h
|
|
--------M-33002D-----------------------------
|
|
INT 33 - MS MOUSE v7.0+ - SELECT ACCELERATION PROFILE
|
|
AX = 002Dh
|
|
BX = acceleration level
|
|
0001h-0004h to set profile, or FFFFh to get current profile
|
|
Return: AX = status
|
|
0000h successful
|
|
ES:SI -> 16-byte blank-padded name of acceleration profile
|
|
FFFEh invalid acceleration curve number
|
|
ES:SI destroyed
|
|
BX = active acceleration curve number
|
|
SeeAlso: AX=0013h,AX=002Bh,AX=002Ch,AX=002Eh
|
|
--------M-33002E-----------------------------
|
|
INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES
|
|
AX = 002Eh
|
|
BL = flag (if nonzero, fill ES:SI buffer with default names on return)
|
|
ES:SI -> 64-byte buffer containing profile names (16 bytes per name)
|
|
Return: AX = status (0000h success)
|
|
FFFEh error for ATI Mouse driver
|
|
ES:SI buffer filled with default names if BL nonzero on entry
|
|
Notes: not supported by Logitech driver v6.10
|
|
supported by ATI Mouse driver v7.04
|
|
SeeAlso: AX=002Ch,AX=002Dh,AX=012Eh,AX=022Eh
|
|
--------M-33002F-----------------------------
|
|
INT 33 - MS MOUSE v7.02+ - MOUSE HARDWARE RESET
|
|
AX = 002Fh
|
|
Return: AX = status
|
|
Note: invoked by mouse driver v8.20 on being called with INT 2F/AX=530Bh
|
|
SeeAlso: INT 2F/AH=53h
|
|
--------M-330030-----------------------------
|
|
INT 33 - MS MOUSE v7.04+ - GET/SET BallPoint INFORMATION
|
|
AX = 0030h
|
|
CX = command
|
|
0000h get status of BallPoint device
|
|
other set rotation angle and masks
|
|
BX = rotation angle (-32768 to 32767 degrees)
|
|
CH = primary button mask
|
|
CL = secondary button mask
|
|
Return: AX = button status (FFFFh if no BallPoint) (see #03181)
|
|
BX = rotation angle (0-360 degrees)
|
|
CH = primary button mask
|
|
CL = secondary button mask
|
|
Note: not supported by the ATI Mouse driver which calls itself v7.04
|
|
|
|
Bitfields for BallPoint mouse button status:
|
|
Bit(s) Description (Table 03181)
|
|
5 button 1
|
|
4 button 2
|
|
3 button 3
|
|
2 button 4
|
|
other zero
|
|
--------M-330031-----------------------------
|
|
INT 33 - MS MOUSE v7.05+ - GET CURRENT MINIMUM/MAXIMUM VIRTUAL COORDINATES
|
|
AX = 0031h
|
|
Return: AX = virtual X minimum
|
|
BX = virtual Y minimum
|
|
CX = virtual X maximum
|
|
DX = virtual Y maximum
|
|
Note: the minimum and maximum values are those set by AX=0007h and AX=0008h;
|
|
the default is minimum = 0 and maximum = absolute maximum
|
|
(see AX=0026h)
|
|
SeeAlso: AX=0007h,AX=0008h,AX=0010h,AX=0026h
|
|
--------M-330032-----------------------------
|
|
INT 33 - MS MOUSE v7.05+ - GET ACTIVE ADVANCED FUNCTIONS
|
|
AX = 0032h
|
|
Return: AX = active function flags (FFFFh for v8.10)
|
|
bit 15: function 0025h supported
|
|
bit 14: function 0026h supported
|
|
...
|
|
bit 0: function 0034h supported
|
|
BX = ??? (0000h) officially unused
|
|
CX = ??? (E000h) officially unused
|
|
DX = ??? (0000h) officially unused
|
|
Note: the Italian version of MS MOUSE v8.20 reportedly indicates that
|
|
functions 0033h and 0034h are not supported even though they are
|
|
--------M-330033-----------------------------
|
|
INT 33 - MS MOUSE v7.05+ - GET SWITCH SETTINGS AND ACCELERATION PROFILE DATA
|
|
AX = 0033h
|
|
CX = size of buffer
|
|
0000h get required buffer size
|
|
Return: AX = 0000h
|
|
CX = required size (0154h for Logitech v6.10, 0159h
|
|
for MS v8.10-8.20)
|
|
other
|
|
ES:DX -> buffer of CX bytes for mouse settings
|
|
Return: AX = 0000h
|
|
CX = number of bytes returned
|
|
ES:DX buffer filled (see #03182)
|
|
SeeAlso: AX=002Bh
|
|
|
|
Format of mouse settings data buffer:
|
|
Offset Size Description (Table 03182)
|
|
00h BYTE mouse type
|
|
01h BYTE current language
|
|
02h BYTE horizontal sensitivity (00h-64h)
|
|
03h BYTE vertical sensitivity (00h-64h)
|
|
04h BYTE double-speed threshold (00h-64h)
|
|
05h BYTE ballistic curve (01h-04h)
|
|
06h BYTE interrupt rate (01h-04h)
|
|
07h BYTE cursor override mask
|
|
08h BYTE laptop adjustment
|
|
09h BYTE memory type (00h-02h)
|
|
0Ah BYTE SuperVGA support (00h,01h)
|
|
0Bh BYTE rotation angle
|
|
0Ch BYTE ???
|
|
0Dh BYTE primary button (01h-04h)
|
|
0Eh BYTE secondary button (01h-04h)
|
|
0Fh BYTE click lock enabled (00h,01h)
|
|
10h 324 BYTEs acceleration profile data (see #03180)
|
|
154h 5 BYTEs ??? (Microsoft driver, but not Logitech)
|
|
--------M-330034-----------------------------
|
|
INT 33 - MS MOUSE v8.0+ - GET INITIALIZATION FILE
|
|
AX = 0034h
|
|
Return: AX = status (0000h successful)
|
|
ES:DX -> ASCIZ initialization (.INI) file name
|
|
--------M-330035-----------------------------
|
|
INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT
|
|
AX = 0035h
|
|
BX = function
|
|
FFFFh get current settings
|
|
Return: AX = 0000h
|
|
BH = style (see #03183)
|
|
BL = size (see #03184)
|
|
CH = threshold (00h-64h)
|
|
CL = active flag (00h disabled, 01h enabled)
|
|
DX = delay
|
|
other
|
|
BH = pointer style (see #03183)
|
|
BL = size (see #03184)
|
|
CH = threshold (00h-64h)
|
|
CL = active flag (00h disable size change, 01h enable)
|
|
DX = delay (0000h-0064h)
|
|
Return: AX = 0000h
|
|
Note: not supported by Logitech driver v6.10
|
|
SeeAlso: AX=0012h,AX=002Ah
|
|
|
|
(Table 03183)
|
|
Values for pointer style:
|
|
00h normal
|
|
01h reverse
|
|
02h transparent
|
|
SeeAlso: #03184
|
|
|
|
(Table 03184)
|
|
Values for pointer size:
|
|
00h small ("1")
|
|
01h medium ("1.5")
|
|
02h large ("2")
|
|
SeeAlso: #03183
|
|
--------M-330042-----------------------------
|
|
INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS
|
|
AX = 0042h
|
|
Return: AX = status
|
|
0000h MSMOUSE not installed
|
|
0042h functions 42h, 50h, and 52h not supported
|
|
FFFFh successful
|
|
BX = buffer size in bytes for functions 50h and 52h
|
|
Note: this function is also supported by the Genius Mouse 9.06 driver
|
|
SeeAlso: AX=0015h,AX=0050h,AX=0052h
|
|
--------M-330043-----------------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CONFIGURE MOUSE???
|
|
AX = 0043h
|
|
CX:BX -> configuration buffer (see #03185)
|
|
DL = ???
|
|
Return: ???
|
|
Notes: also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh
|
|
this function is also supported by the Genius Mouse 9.06 driver
|
|
|
|
Format of Mouse Systems configuration buffer:
|
|
Offset Size Description (Table 03185)
|
|
00h WORD I/O port address
|
|
02h BYTE ???
|
|
03h BYTE interrupt number
|
|
04h BYTE interrupt mask for interrupt controller
|
|
05h 5 BYTEs ???
|
|
--------M-330044CXCDEF-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE IGNORE ACCELERATION CMDS
|
|
AX = 0044h
|
|
CX = CDEFh
|
|
Return: AX = new state of "Ignore Application Acceleration Commands" flag
|
|
Note: this function is also supported by the Genius Mouse 9.06 driver
|
|
SeeAlso: AX=0045h
|
|
--------M-330045CXCDEF-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - TOGGLE RESOLUTION DOUBLING
|
|
AX = 0045h
|
|
CX = CDEFh
|
|
Return: AX = new state of resolution doubling flag
|
|
Note: this function is also supported by the Genius Mouse 9.06 driver
|
|
SeeAlso: AX=0044h
|
|
--------M-330047-----------------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET BUTTON ASSIGNMENTS
|
|
AX = 0047h
|
|
ES:BX -> button assignments (3 bytes, combinations of "L", "M", "R")
|
|
Return: ???
|
|
Note: also supported by Genius Mouse 9.06 driver
|
|
SeeAlso: AX=0067h
|
|
--------M-330048BXCDEF-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET ???
|
|
AX = 0048h
|
|
BX = CDEFh
|
|
Return: CX = ???
|
|
BH = ???
|
|
BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface)
|
|
Note: also supported by Genius Mouse 9.06 driver
|
|
--------M-33004B-----------------------------
|
|
INT 33 - LCS/Telegraphics MOUSE DRIVERS - INSTALLATION CHECK / GET VERSION
|
|
AX = 004Bh
|
|
Return: ES:DI -> ASCIZ signature/description string if installed (see #03186)
|
|
|
|
(Table 03186)
|
|
Values for LCS/Telegraphics mouse driver OEM signature/description string:
|
|
"Primax Generic;Universal Mouse Driver;IMOUSE;v8.20i"
|
|
"Synaptics;TouchPad Driver;SYNTOUCH;v2.26"
|
|
"Z-NIX;BUS,AUX,Serial 3-byte and 5-byte Mouse Driver;ZMOUSE;v7.04d"
|
|
Note: the string consists of OEM, driver description, driver name, and
|
|
version number
|
|
--------M-33004CBXCDEF-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ??? FLAG
|
|
AX = 004Ch
|
|
BX = CDEFh
|
|
Note: also supported by Genius Mouse 9.06
|
|
SeeAlso: AX=006Ch
|
|
--------M-33004D-----------------------------
|
|
INT 33 - MS MOUSE - RETURN POINTER TO COPYRIGHT STRING
|
|
AX = 004Dh
|
|
Return: ES:DI -> copyright message "*** This is Copyright 1983 Microsoft" or
|
|
"Copyright 19XX...."
|
|
Notes: also supported by Logitech, Kraft, Genius Mouse, and Mouse Systems
|
|
mouse drivers
|
|
in the Genius Mouse 9.06 driver, the ASCIZ signature "KYE" immediately
|
|
follows the above copyright message (KYE Corp. manufactures the
|
|
driver)
|
|
SeeAlso: AX=0024h,AX=006Dh,AX=0666h
|
|
--------M-33004F-----------------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ENABLE MOUSE
|
|
AX = 004Fh
|
|
Return: nothing
|
|
Note: also supported by Genius Mouse 9.06
|
|
SeeAlso: AX=0043h,AX=0053h
|
|
--------M-330050-----------------------------
|
|
INT 33 - PCMOUSE - SAVE MSMOUSE STATE
|
|
AX = 0050h
|
|
BX = buffer size (ignored by some driver versions)
|
|
ES:DX -> buffer
|
|
Return: AX = FFFFh if successful
|
|
Notes: the buffer must be large enough to hold the entire state, or following
|
|
data will be overwritten by state data in versions which ignore BX;
|
|
use INT 33/AX=0042h to get the required size
|
|
this function is also supported by the Genius Mouse 9.06 driver
|
|
SeeAlso: AX=0042h,AX=0052h
|
|
--------M-330052-----------------------------
|
|
INT 33 - PCMOUSE - RESTORE MSMOUSE STATE
|
|
AX = 0052h
|
|
BX = buffer size (ignored by some driver versions)
|
|
ES:DX -> buffer
|
|
Return: AX = FFFFh if successful
|
|
Note: also supported by Genius Mouse 9.06 driver
|
|
SeeAlso: AX=0050h
|
|
--------M-330053-----------------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - DISABLE MOUSE
|
|
AX = 0053h
|
|
Return: nothing
|
|
Note: also supported by Genius Mouse 9.06
|
|
SeeAlso: AX=0043h,AX=004Fh
|
|
--------M-330054CXCDEF-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SELECT ULTRARES ACCELERATION LEVEL
|
|
AX = 0054h
|
|
CX = CDEFh
|
|
BX = new acceleration level (0-9)
|
|
Return: ???
|
|
Note: this function is also supported by the Genius Mouse 9.06 driver
|
|
SeeAlso: AX=005Ah
|
|
--------M-330055-----------------------------
|
|
INT 33 - Kraft Mouse - GET ???
|
|
AX = 0055h
|
|
Return: CX = ???
|
|
DX = ???
|
|
ES = ???
|
|
--------M-330058-----------------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
|
|
AX = 0058h
|
|
Return: AX = CS of driver
|
|
CX:BX = original INT 33 vector
|
|
DX = ???
|
|
Note: this function is also supported by the Genius Mouse 9.06 driver
|
|
--------M-33005A-----------------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - SET ULTRARES ACCELERATIONS
|
|
AX = 005Ah
|
|
CX = number of WORDs to copy (max 0014h, but not range-checked)
|
|
DX:SI -> buffer containing thresholds??? (CX words)
|
|
DX:BX -> buffer containing acceleration values???
|
|
(9*14h words, only first CX of each 14h used)
|
|
???
|
|
Return: CF clear
|
|
???
|
|
Note: this function is also supported by Genius Mouse 9.06
|
|
SeeAlso: AX=0054h
|
|
--------M-330061BXCDEF-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
|
|
AX = 0061h
|
|
BX = CDEFh
|
|
Return: CX = ???
|
|
Note: also supported by Genius Mouse 9.06
|
|
--------M-330067-----------------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET MOUSE BUTTONS???
|
|
AX = 0067h
|
|
Return: BL = number of buttons???
|
|
Note: also supported by Genius Mouse 9.06
|
|
SeeAlso: AX=0047h
|
|
--------M-33006A-----------------------------
|
|
INT 33 U - ATI Mouse - INSTALLATION CHECK
|
|
AX = 006Ah
|
|
Return: AL = AAh
|
|
AH = ???
|
|
BH = ???
|
|
BL = ???
|
|
CL = ???
|
|
CH = ???
|
|
Program: ATI's MOUSE.COM and MOUSE.SYS are drivers for the mouse port found on
|
|
some of ATI's video adapters
|
|
SeeAlso: AX=006Dh
|
|
--------M-33006C-----------------------------
|
|
INT 33 U - TRUEDOX Mouse driver v4.01 - GET/SET HARDWARE PARAMETERS
|
|
AX = 006Ch
|
|
BX = new IRQ (0003h or 0004h), or 0000h to get current values only
|
|
CL = new IRQmask (sent to 8259)
|
|
DX = new base I/O port
|
|
Return: BX = current IRQ
|
|
DX = light pen state???
|
|
Note: this is the mouse driver for the Dell Dimension series of computers, by
|
|
TRUEDOX Technology Corporation
|
|
SeeAlso: AX=00A1h,AX=0666h
|
|
--------M-33006CBXCDEF-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - CLEAR ??? FLAG
|
|
AX = 006Ch
|
|
BX = CDEFh
|
|
Note: also supported by Genius Mouse 9.06
|
|
SeeAlso: AX=004Ch
|
|
--------M-33006D-----------------------------
|
|
INT 33 - MS MOUSE - GET VERSION STRING
|
|
AX = 006Dh 'm'
|
|
Return: ES:DI -> Microsoft version number of resident driver (see #03187)
|
|
Notes: also supported by Logitech, Mouse Systems, Kraft, and Genius mouse
|
|
drivers
|
|
the Mouse Systems 7.01 and Genius Mouse 9.06 drivers report their
|
|
Microsoft version as 7.00 even though they do not support any of the
|
|
functions from 0025h through 002Dh supported by the MS 7.00 driver
|
|
(the Genius Mouse driver supports function 0026h, but it differs
|
|
from the Microsoft function)
|
|
the TRUEDOX 4.01 driver reports its version as 6.26 through this call,
|
|
but as 6.24 through AX=0024h
|
|
There seems to be no reliable method to distinguish MS MOUSE before
|
|
3.00 from mouse drivers of other vendors.
|
|
Some releases of the MS MOUSE 6.00 erroneously return 6.01 instead of
|
|
their true version number. In this case, a DI value of 01ABh can
|
|
be used to still detect a 6.00 driver.
|
|
For returned versions 6.02+, INT 33/AX=0024h should be used to retrieve
|
|
more accurate version data.
|
|
True MS MOUSE drivers can also be identified by magic numbers in
|
|
their copyright message, stored in the driver's segment (ES).
|
|
These can be found by scanning the first 2 Kb of the mouse
|
|
driver's segment for a string like: [new since 7.00+]
|
|
"** This is Copyright 1983[-19xx] Microsoft ***" with the
|
|
magic number stored one byte after the signature string.
|
|
SeeAlso: AX=0024h,AX=004Dh,AX=006Ah,AX=266Ch
|
|
|
|
Format of Microsoft version number:
|
|
Offset Size Description (Table 03187)
|
|
00h BYTE major version
|
|
01h BYTE minor version (BCD)
|
|
|
|
(Table 04087)
|
|
Values for Microsoft MOUSE copyright string magic numbers:
|
|
5564h version 3.00..6.00 (for reported versions up to 5.03, and 6.00)
|
|
557Ch version 6.01Z..6.24 (for reported versions 6.01..6.24)
|
|
E806h version 6.25 (for reported version 6.25)
|
|
EB02h version 6.26..7.04 (for reported version 6.26..7.04)
|
|
0800h Integrated driver 1.0+ (for reported version 9.x+)
|
|
Note: Versions above 7.04 (except for integrated mouse drivers) have a magic
|
|
number representing their version number, e.g. 0507h for version 7.05
|
|
--------M-330070BXABCD-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK
|
|
AX = 0070h
|
|
BX = ABCDh
|
|
Return: AX = ABCDh if installed
|
|
BX:CX -> data structure (see #03188)
|
|
Notes: this function is also supported by the Genius Mouse 9.06 driver
|
|
the v7.01 POPUP.COM and menu drivers also check for the signature
|
|
CDh ABh BAh DCh at offset -2Ch from the interrupt handler
|
|
if POPUP is not loaded, the returned data structure contains the proper
|
|
signature at offset 00h, but not at offset 08h
|
|
|
|
Format of Mouse Systems POPUP.COM data structure:
|
|
Offset Size Description (Table 03188)
|
|
00h WORD signature ABCDh
|
|
02h DWORD pointer to info structure??? (see #03189)
|
|
06h 2 BYTEs ???
|
|
08h WORD signature ABCDh
|
|
|
|
Format of Mouse Systems POPUP.COM info structure:
|
|
Offset Size Description (Table 03189)
|
|
00h WORD driver version
|
|
02h 8 BYTEs ???
|
|
0Ah WORD segment of ???
|
|
???
|
|
--------M-330072BXABCD-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - ???
|
|
AX = 0072h
|
|
BX = ABCDh
|
|
Return: ???
|
|
Note: this function is also supported by the Genius Mouse 9.06 driver
|
|
--------M-330073BXCDEF-----------------------
|
|
INT 33 - Mouse Systems MOUSE DRIVER v7.01+ - GET BUTTON ASSIGNMENTS
|
|
AX = 0073h
|
|
BX = CDEFh
|
|
ES:DX -> 3-byte buffer for button assignments
|
|
Return: CX = number of buttons???
|
|
ES:DX buffer filled (default is "LMR")
|
|
Note: also supported by Genius Mouse 9.06
|
|
SeeAlso: AX=0067h
|
|
--------M-3300A0-----------------------------
|
|
INT 33 U - TRUEDOX Mouse driver - SET HARDWARE PC MODE (3 button)
|
|
AX = 00A0h
|
|
Return: nothing
|
|
Note: this function is only available if the mouse mode is switchable
|
|
through the power pins
|
|
SeeAlso: AX=006Ch"TRUEDOX",AX=00A1h"TRUEDOX"
|
|
--------M-3300A1-----------------------------
|
|
INT 33 U - TRUEDOX Mouse driver - SET HARDWARE MS MODE (2 button)
|
|
AX = 00A1h
|
|
Return: nothing
|
|
Notes: this function is only available if the mouse mode is switchable
|
|
through the power pins
|
|
this is the mouse driver for the Dell Dimension series of computers, by
|
|
TRUEDOX Technology Corporation
|
|
SeeAlso: AX=006Ch"TRUEDOX",AX=00A0h"TRUEDOX",AX=00A6h,AX=0666h
|
|
--------M-3300A6-----------------------------
|
|
INT 33 U - TRUEDOX Mouse driver - SET RESOLUTION
|
|
AX = 00A6h
|
|
BX = new software resolution
|
|
0001h 50-200 dpi
|
|
0002h 200-400 dpi
|
|
0003h 400-800 dpi
|
|
Note: this is the mouse driver for the Dell Dimension series of computers, by
|
|
TRUEDOX Technology Corporation
|
|
SeeAlso: AX=00A0h,AX=00A1h,AX=0666h
|
|
--------M-3300B0-----------------------------
|
|
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
|
|
AX = 00B0h
|
|
???
|
|
Return: ???
|
|
--------M-3300D6-----------------------------
|
|
INT 33 - Twiddler TWMOUSE - GET BUTTON/TILT STATE
|
|
AX = 00D6h
|
|
Return: AX = current button bitmap
|
|
BX = current X tilt (approximately -200..+200 = -90degrees..+90deg.)
|
|
CX = current Y tilt
|
|
Program: the Twiddler is a chording keyboard/mouse combination by Handykey
|
|
Corporation
|
|
--------M-3300F0-----------------------------
|
|
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
|
|
AX = 00F0h
|
|
???
|
|
Return: ???
|
|
--------M-3300F1-----------------------------
|
|
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
|
|
AX = 00F1h
|
|
???
|
|
Return: ???
|
|
--------M-3300F2-----------------------------
|
|
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
|
|
AX = 00F2h
|
|
???
|
|
Return: ???
|
|
--------M-3300F3-----------------------------
|
|
INT 33 U - LCS/Telegraphics MOUSE DRIVERS - ???
|
|
AX = 00F3h
|
|
???
|
|
Return: ???
|
|
--------M-330100CX4752-----------------------
|
|
INT 33 - GRTMOUSE v1.00+ - INSTALLATION CHECK
|
|
AX = 0100h
|
|
CX = 4752h ('GR')
|
|
DX = 544Dh ('TM')
|
|
Return: AX = 474Dh ('GM') if installed
|
|
CX = version number (CH = major, CL = minor)
|
|
Program: GRTMOUSE is a graphical-cursor driver for textmode by Tommer Leyvand
|
|
SeeAlso: AX=0101h,AX=0102h,AX=0103h,AX=0104h
|
|
--------M-330101-----------------------------
|
|
INT 33 - GRTMOUSE v1.00+ - SET MOUSE CURSOR SHAPE
|
|
AX = 0101h
|
|
DS:SI -> 16-byte cursor pattern
|
|
Return: CF clear if successful
|
|
SeeAlso: AX=0100h,AX=0102h
|
|
--------M-330102-----------------------------
|
|
INT 33 - GRTMOUSE v1.00+ - GET MOUSE CURSOR SHAPE
|
|
AX = 0102h
|
|
ES:DI -> 16-byte buffer for cursor pattern
|
|
SeeAlso: AX=0100h,AX=0101h
|
|
--------M-330103-----------------------------
|
|
INT 33 - GRTMOUSE v1.00+ - SET ACTIVE CHARACTERS
|
|
AX = 0103h
|
|
CH,CL,DH,DL = ASCII codes to be remapped to display mouse pointer
|
|
Note: the default active characters are D0h,D1h,D6h,D8h; the active
|
|
characters should be in the range C0h to DFh
|
|
SeeAlso: AX=0100h,AX=0104h
|
|
--------M-330104-----------------------------
|
|
INT 33 - GRTMOUSE v1.00+ - GET ACTIVE CHARACTERS
|
|
AX = 0104h
|
|
Return: CH,CL,DH,DL = ASCII codes for the active characters
|
|
SeeAlso: AX=0100h,AX=0103h
|
|
--------M-33012E-----------------------------
|
|
INT 33 - MS MOUSE v8.10+ - ???
|
|
AX = 012Eh
|
|
BL = ???
|
|
Return: AX = 0000h (MS)
|
|
AX = FFFFh (ATI Mouse v7.04)
|
|
Note: not supported by Logitech driver v6.10
|
|
SeeAlso: AX=002Eh,AX=022Eh
|
|
--------M-33022E-----------------------------
|
|
INT 33 - MS MOUSE v8.10+ - ???
|
|
AX = 022Eh
|
|
BL = ???
|
|
Return: AX = 0000h (MS)
|
|
AX = FFFFh (ATI Mouse v7.04)
|
|
Note: not supported by Logitech driver v6.10
|
|
SeeAlso: AX=002Eh,AX=012Eh
|
|
--------M-330666-----------------------------
|
|
INT 33 U - TRUEDOX Mouse driver v4.01 - GET COPYRIGHT STRING
|
|
AX = 0666h
|
|
Return: DX:AX -> ASCII "Copyright 1987-1992 TRUEDOX Technology Corporation"
|
|
Note: this is the mouse driver for the Dell Dimension series of computers,
|
|
by TRUEDOX Technology Corporation
|
|
SeeAlso: AX=004Dh,AX=00A6h,AX=0666h
|
|
--------M-33136C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - ???
|
|
AX = 136Ch
|
|
BX = ???
|
|
Return: AX = ???
|
|
BX = ???
|
|
--------M-33146C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ???
|
|
AX = 146Ch
|
|
BL = function
|
|
00h set ???
|
|
BH = new value (zero/nonzero to clear/set)
|
|
else get ???
|
|
Return: ???
|
|
--------M-33156C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS
|
|
AX = 156Ch
|
|
Return: ES:DI -> signature "LOGITECH MOUSE DRIVER"
|
|
ES:SI -> version string, terminated with CRLF
|
|
--------M-33166C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - ???
|
|
AX = 166Ch
|
|
BL = ???
|
|
00h ???
|
|
01h ???
|
|
other ???
|
|
BH = new value of ???
|
|
Return: AX = FFFFh
|
|
--------M-33176C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - ???
|
|
AX = 176Ch
|
|
???
|
|
Return: ???
|
|
--------M-33186C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - ???
|
|
AX = 186Ch
|
|
???
|
|
Return: ???
|
|
--------M-33196C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - ???
|
|
AX = 196Ch
|
|
???
|
|
Return: ???
|
|
--------M-331A6C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
|
|
AX = 1A6Ch
|
|
Return: AX = FFFFh
|
|
BX = ???
|
|
CX = ???
|
|
SeeAlso: AX=1B6Ch
|
|
--------M-331B6C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - SET ???
|
|
AX = 1B6Ch
|
|
BX = new value for ??? (0000h-0003h)
|
|
Return: AX = FFFFh
|
|
SeeAlso: AX=1A6Ch
|
|
--------M-331C6C-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - ???
|
|
AX = 1C6Ch
|
|
BX = ???
|
|
<42h ???
|
|
=42h ???
|
|
>42h ???
|
|
ES:DI -> ???
|
|
Return: AX = ???
|
|
--------M-331D6C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER
|
|
AX = 1D6Ch
|
|
Return: BX = direction (0=north, 1=south, 2=east, 3=west)
|
|
SeeAlso: AX=1E6Ch
|
|
--------M-331E6C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER
|
|
AX = 1E6Ch
|
|
BX = direction (0=north, 1=south, 2=east, 3=west)
|
|
SeeAlso: AX=1D6Ch
|
|
--------M-331F6C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION
|
|
AX = 1F6Ch
|
|
Return: BX = 0=off, 1=on
|
|
CX = 1=low, 2=high
|
|
SeeAlso: AX=002Ch,AX=236Ch
|
|
--------M-33206C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER
|
|
AX = 206Ch
|
|
BX = parameter (00h = right, FFh = left)
|
|
SeeAlso: AX=216Ch
|
|
--------M-33216C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER
|
|
AX = 216Ch
|
|
Return: BX = parameter (00h = right, FFh = left)
|
|
SeeAlso: AX=206Ch
|
|
--------M-33226C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY
|
|
AX = 226Ch
|
|
Note: this only frees memory; does not restore hooked interrupts
|
|
--------M-33236C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION
|
|
AX = 236Ch
|
|
BX = 0=off, 1=on
|
|
CX = 1=low, 2=high
|
|
SeeAlso: AX=002Ch,AX=1F6Ch
|
|
--------M-33246C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE
|
|
AX = 246Ch
|
|
ES:DX -> parameter table buffer (see #03190)
|
|
Return: AX = FFFFh if driver installed for serial mouse
|
|
SeeAlso: AX=0000h,AX=256Ch/BX=0000h,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h
|
|
|
|
Format of Logitech Mouse parameter table:
|
|
Offset Size Description (Table 03190)
|
|
00h WORD baud rate divided by 100 (serial mouse only)
|
|
02h WORD emulation (serial mouse only)
|
|
04h WORD report rate (serial mouse only)
|
|
06h WORD firmware revision (serial mouse only)
|
|
08h WORD 00h (serial mouse only)
|
|
0Ah WORD port (serial mouse only)
|
|
0Ch WORD physical buttons
|
|
0Eh WORD logical buttons
|
|
--------M-33256CBX0000-----------------------
|
|
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET BAUD RATE (SERIAL MOUSE ONLY)
|
|
AX = 256Ch
|
|
BX = 0000h
|
|
CX = rate (0=1200, 1=2400, 2=4800, 3=9600)
|
|
Return: AX = FFFFh if driver installed for serial mouse
|
|
SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0002h,AX=276Ch
|
|
--------M-33256CBX0001-----------------------
|
|
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET EMULATION (SERIAL MOUSE ONLY)
|
|
AX = 256Ch
|
|
BX = 0001h
|
|
CX = emulation type (see #03191)
|
|
Return: AX = FFFFh if driver installed for serial mouse
|
|
SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0003h,AX=276Ch
|
|
|
|
(Table 03191)
|
|
Values for Logitech mouse emulation type:
|
|
00h 5 byte packed binary
|
|
01h 3 byte packed binary
|
|
02h hexadecimal
|
|
03h relative bit pad
|
|
04h not supported
|
|
05h MM Series
|
|
06h not supported
|
|
07h Microsoft
|
|
--------M-33256CBX0002-----------------------
|
|
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET REPORT RATE (SERIAL MOUSE ONLY)
|
|
AX = 256Ch
|
|
BX = 0002h
|
|
CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150)
|
|
Return: AX = FFFFh if driver installed for serial mouse
|
|
SeeAlso: AX=246Ch,AX=256Ch/BX=0001h,AX=256Ch/BX=0003h,AX=276Ch
|
|
--------M-33256CBX0003-----------------------
|
|
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE PORT (SERIAL MOUSE ONLY)
|
|
AX = 256Ch
|
|
BX = 0003h
|
|
CX = port (1, 2)
|
|
Return: AX = FFFFh if driver installed for serial mouse
|
|
SeeAlso: AX=246Ch,AX=256Ch/BX=0000h,AX=256Ch/BX=0004h,AX=276Ch
|
|
--------M-33256CBX0004-----------------------
|
|
INT 33 - LOGITECH MOUSE - SET PARAMETERS - SET MOUSE LOGICAL BUTTONS
|
|
AX = 256Ch
|
|
BX = 0004h
|
|
CX = buttons (2, 3)
|
|
Return: AX = FFFFh if driver installed for serial mouse
|
|
SeeAlso: AX=246Ch,AX=276Ch
|
|
--------M-33266C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - GET VERSION???
|
|
AX = 266Ch
|
|
Return: BX = 'SS'
|
|
CH = '4' major version number
|
|
CL = '1' minor version number
|
|
SeeAlso: AX=006Dh
|
|
--------M-33276C-----------------------------
|
|
INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400
|
|
AX = 276Ch
|
|
SeeAlso: AX=256Ch
|
|
--------M-333000-----------------------------
|
|
INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK
|
|
AX = 3000h
|
|
Return: AX = FFFFh if installed
|
|
BX = version number (BH = major, BL = minor)
|
|
Program: SMD is a programmer's library by Andy Hakim which provides a
|
|
graphics-style mouse cursor in text mode. PrecisePoint is an
|
|
SMD-based TSR which replaces the block mouse cursor in text
|
|
applications.
|
|
SeeAlso: AX=0000h,AX=3001h,AX=3003h
|
|
--------M-333001-----------------------------
|
|
INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE
|
|
AX = 3001h
|
|
Return: AX = status (0000h = disabled, 0001h = enabled)
|
|
Note: SMD remains disabled if running under Desqview or in graphics mode
|
|
SeeAlso: AX=0001h,AX=0002h,AX=3002h
|
|
--------M-333002-----------------------------
|
|
INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE
|
|
AX = 3002h
|
|
Return: AX = status (0000h = disabled, 0001h = enabled)
|
|
SeeAlso: AX=0001h,AX=0002h,AX=3000h,AX=3001h
|
|
--------M-333003-----------------------------
|
|
INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION
|
|
AX = 3003h
|
|
BL = data structure selector
|
|
00h Primary Bitmap (used for 25 line mode) (see #03192)
|
|
01h Secondary Bitmap (used for 43/50 line modes) (see #03192)
|
|
02h Sacrifice Character Map (see #03193)
|
|
03h Program Information (see #03194)
|
|
Return: ES:DX -> selected data structure
|
|
SeeAlso: AX=3000h
|
|
|
|
Format of Primary/Secondary Bitmap [SMD_BITMAP_STRUCT]:
|
|
Offset Size Description (Table 03192)
|
|
00h BYTE vertical size of bitmap (00h - 10h)
|
|
01h BYTE horizontal size of bitmap (00h - 10h)
|
|
02h BYTE vertical hotspot position (00h - 10h)
|
|
03h BYTE horizontal hotspot position (00h - 10h)
|
|
04h 16 WORDs cursor bitmap data
|
|
14h 16 WORDs screen bitmap data
|
|
|
|
Format of Sacrifice Character Map [SMD_SMAP_STRUCT]:
|
|
Offset Size Description (Table 03193)
|
|
00h BYTE bytes are character values (00h-FFh) used in place of the
|
|
01h BYTE actual character for the corresponding position on the screen
|
|
02h BYTE +--------------+ occupied by part or all of the mouse
|
|
03h BYTE | 0h | 1h | 2h | cursor
|
|
04h BYTE |----+----+----|
|
|
05h BYTE | 3h | 4h | 5h |
|
|
06h BYTE |----+----+----|
|
|
07h BYTE | 6h | 7h | 8h |
|
|
08h BYTE +--------------+
|
|
|
|
Format of Program Information [SMD_INFO_STRUCT]:
|
|
Offset Size Description (Table 03194)
|
|
00h WORD segment of old interrupt 33h handler
|
|
02h WORD offset of old interrupt 33h handler
|
|
04h WORD PSP of SMD
|
|
06h BYTE ENABLE/DISABLE manual setting status
|
|
07h BYTE ENABLE/DISABLE internal usage status
|
|
--------M-333004-----------------------------
|
|
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
|
|
AX = 3004h
|
|
SeeAlso: AX=3000h
|
|
--------M-333005-----------------------------
|
|
INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION
|
|
AX = 3005h
|
|
SeeAlso: AX=3000h
|
|
--------M-334F00-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - GET ???
|
|
AX = 4F00h
|
|
Return: AX = 004Fh if supported
|
|
BX = ???
|
|
ES:DI -> ???
|
|
SeeAlso: AX=4F01h
|
|
--------M-334F01-----------------------------
|
|
INT 33 - LOGITECH MOUSE v6.10+ - ???
|
|
AX = 4F01h
|
|
ES = ???
|
|
Return: AX = 004Fh if supported
|
|
ES:DI -> ???
|
|
SeeAlso: AX=4F00h
|
|
--------M-336F00-----------------------------
|
|
INT 33 - Hewlett Packard - HP MOUSE DRIVER INSTALLATION CHECK
|
|
AX = 6F00h
|
|
BX <> 4850h
|
|
Return: BX = 4850h ('HP') if mouse driver written by Hewlett Packard
|
|
SeeAlso: INT 10/AX=6F00h,INT 14/AX=6F00h,INT 16/AX=6F00h,INT 17/AX=6F00h
|
|
--------M-338800-----------------------------
|
|
INT 33 U - InfoTrack IMOUSE.COM - UNHOOK MOUSE IRQ
|
|
AX = 8800h
|
|
BX <> FFFFh
|
|
Note: the code is written to expect a subfunction number in AL, but only
|
|
function 00h has been implemented
|
|
SeeAlso: AX=8800h/BX=FFFFh
|
|
--------M-338800BXFFFF-----------------------
|
|
INT 33 U - InfoTrack IMOUSE.COM - GET ACTIVE IRQ
|
|
AX = 8800h
|
|
BX = FFFFh
|
|
Return: BL = number of IRQ being used by the mouse
|
|
SeeAlso: AX=8800h
|
|
--------T-33FFE6-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ??? PROGRAM
|
|
AX = FFE6h
|
|
CX = length of buffer
|
|
ES:DI -> buffer for program name
|
|
Return: ES:DI buffer filled
|
|
Program: Switch-It is a task switcher supporting up to 100 programs
|
|
simultaneously by Better Software Technology, Inc.
|
|
--------T-33FFE7-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ???
|
|
AX = FFE7h
|
|
Return: AX = ???
|
|
--------T-33FFE8-----------------------------
|
|
INT 33 - Switch-It v3.23 - ???
|
|
AX = FFE8h
|
|
CX = length of name including terminating NUL
|
|
DS:SI -> ASCIZ program pathname
|
|
--------T-33FFE9-----------------------------
|
|
INT 33 - Switch-It v3.23 - SET ???
|
|
AX = FFE9h
|
|
BX = ???
|
|
--------T-33FFEA-----------------------------
|
|
INT 33 - Switch-It v3.23 - SET ???
|
|
AX = FFEAh
|
|
BL = ???
|
|
--------T-33FFEB-----------------------------
|
|
INT 33 - Switch-It v3.23 - SET ??? FLAG
|
|
AX = FFEBh
|
|
--------T-33FFEC-----------------------------
|
|
INT 33 - Switch-It v3.23 - SET ???
|
|
AX = FFECh
|
|
BL = ???
|
|
--------T-33FFED-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ???
|
|
AX = FFEDh
|
|
Return: AX = ??? (0001h)
|
|
BX = ???
|
|
Program: Switch-It is a task switcher supporting up to 100 programs
|
|
simultaneously by Better Software Technology, Inc.
|
|
--------T-33FFEE-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ???
|
|
AX = FFEEh
|
|
Return: AX = ???
|
|
--------T-33FFEF-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ???
|
|
AX = FFEFh
|
|
Return: BX:AX -> ???
|
|
--------T-33FFF0-----------------------------
|
|
INT 33 - Switch-It v3.23 - SET ???
|
|
AX = FFF0h
|
|
BL = ???
|
|
--------T-33FFF1-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET CONFIGURATION FILE
|
|
AX = FFF1h
|
|
Return: BX:AX -> ASCIZ pathname of configuration file
|
|
Program: Switch-It is a task switcher supporting up to 100 programs
|
|
simultaneously by Better Software Technology, Inc.
|
|
--------T-33FFF2-----------------------------
|
|
INT 33 - Switch-It v3.23 - SET ??? FLAG
|
|
AX = FFF2h
|
|
Return: AL = 01h
|
|
--------T-33FFF3-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ???
|
|
AX = FFF3h
|
|
Return: AX = ???
|
|
--------T-33FFF4-----------------------------
|
|
INT 33 - Switch-It v3.23 - SET ???
|
|
AX = FFF4h
|
|
BX = ???
|
|
CX = ???
|
|
--------T-33FFF5-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ???
|
|
AX = FFF5h
|
|
Return: AX = ???
|
|
--------T-33FFF6-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ???
|
|
AX = FFF6h
|
|
Return: AX = ???
|
|
--------T-33FFF7-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ???
|
|
AX = FFF7h
|
|
BX = index of ???
|
|
Return: AX = ???
|
|
--------T-33FFF8-----------------------------
|
|
INT 33 - Switch-It v3.23 - ???
|
|
AX = FFF8h
|
|
BX = ???
|
|
CX = length of program name, including terminating NUL
|
|
DS:SI -> ASCIZ program pathname
|
|
Return: ???
|
|
Program: Switch-It is a task switcher supporting up to 100 programs
|
|
simultaneously by Better Software Technology, Inc.
|
|
--------T-33FFF9-----------------------------
|
|
INT 33 - Switch-It v3.23 - NOP
|
|
AX = FFF9h
|
|
--------T-33FFFA-----------------------------
|
|
INT 33 - Switch-It v3.23 - SET ???
|
|
AX = FFFAh
|
|
BX = index of program
|
|
SeeAlso: AX=FFFBh,AX=FFFCh
|
|
--------T-33FFFB-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET ???
|
|
AX = FFFBh
|
|
BX = index of program
|
|
Return: AX = ??? (0000h or 0001h)
|
|
SeeAlso: AX=FFFAh,AX=FFFCh
|
|
--------T-33FFFC-----------------------------
|
|
INT 33 - Switch-It v3.23 - CLEAR ???
|
|
AX = FFFCh
|
|
BX = index of program
|
|
SeeAlso: AX=FFFAh,AX=FFFCh
|
|
--------T-33FFFD-----------------------------
|
|
INT 33 - Switch-It v3.23 - GET MEMORY ADDRESSES???
|
|
AX = FFFDh
|
|
Return: AX = first available segment???
|
|
BX = paragraph of top of conventional memory
|
|
DX = PSP segment of SI.EXE
|
|
--------T-33FFFE-----------------------------
|
|
INT 33 - Switch-It v3.23 - INSTALLATION CHECK
|
|
AX = FFFEh
|
|
Return: BX = ???
|
|
DX = 5349h ("SI")
|
|
--------T-33FFFF-----------------------------
|
|
INT 33 - Switch-It v3.23 - ???
|
|
AX = FFFFh
|
|
BX = ???
|
|
Program: Switch-It is a task switcher supporting up to 100 programs
|
|
simultaneously by Better Software Technology, Inc.
|
|
--------r-34---------------------------------
|
|
INT 34 - FLOATING POINT EMULATION - OPCODE D8h
|
|
Desc: this interrupt is used to emulate floating-point instructions with
|
|
an opcode of D8h
|
|
Note: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
SeeAlso: INT 35,INT 3E
|
|
--------r-35---------------------------------
|
|
INT 35 - FLOATING POINT EMULATION - OPCODE D9h
|
|
Desc: this interrupt is used to emulate floating-point instructions with
|
|
an opcode of D9h
|
|
Note: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
SeeAlso: INT 34,INT 36
|
|
--------r-36---------------------------------
|
|
INT 36 - FLOATING POINT EMULATION - OPCODE DAh
|
|
Desc: this interrupt is used to emulate floating-point instructions with
|
|
an opcode of DAh
|
|
Note: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
SeeAlso: INT 35,INT 37
|
|
--------r-37---------------------------------
|
|
INT 37 - FLOATING POINT EMULATION - OPCODE DBh
|
|
Desc: this interrupt is used to emulate floating-point instructions with
|
|
an opcode of DBh
|
|
Note: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
SeeAlso: INT 36,INT 38
|
|
--------r-38---------------------------------
|
|
INT 38 - FLOATING POINT EMULATION - OPCODE DCh
|
|
Desc: this interrupt is used to emulate floating-point instructions with
|
|
an opcode of DCh
|
|
Note: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
SeeAlso: INT 37,INT 39
|
|
--------O-38---------------------------------
|
|
INT 38 - PC-MOS/386 v3.0 - API
|
|
Note: this API was been moved to INT D4h sometime between versions 3.0 and
|
|
5.01; v3.0 supported at least functions 02h,04h,0703h,10h,11h, and
|
|
12h
|
|
SeeAlso: INT D4/AH=02h,INT D4/AH=04h,INT D4/AH=07h,INT D4/AH=10h,INT D4/AH=11h
|
|
--------r-39---------------------------------
|
|
INT 39 - FLOATING POINT EMULATION - OPCODE DDh
|
|
Desc: this interrupt is used to emulate floating-point instructions with
|
|
an opcode of DDh
|
|
Note: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
SeeAlso: INT 38,INT 3A
|
|
--------r-3A---------------------------------
|
|
INT 3A - FLOATING POINT EMULATION - OPCODE DEh
|
|
Desc: this interrupt is used to emulate floating-point instructions with
|
|
an opcode of DEh
|
|
Note: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
SeeAlso: INT 39,INT 3B
|
|
--------r-3B---------------------------------
|
|
INT 3B - FLOATING POINT EMULATION - OPCODE DFh
|
|
Desc: this interrupt is used to emulate floating-point instructions with
|
|
an opcode of DFh
|
|
Note: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
SeeAlso: INT 3A,INT 3C
|
|
--------r-3C---------------------------------
|
|
INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE
|
|
Notes: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
the generated code is CD 3C xy mm ....
|
|
where xy is a modified ESC instruction and mm is the modR/M byte.
|
|
The xy byte appears to be encoded as
|
|
s s 0 1 1 x x x or s s 0 0 0 x x x
|
|
where "ss" specifies the segment override:
|
|
00 -> DS:
|
|
01 -> SS:
|
|
10 -> CS:
|
|
11 -> ES:
|
|
SeeAlso: INT 3B,INT 3D
|
|
--------r-3D---------------------------------
|
|
INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT
|
|
Notes: the floating-point emulators in Borland and Microsoft languages and
|
|
Lahey FORTRAN use this interrupt
|
|
this vector is modified but not restored by Direct Access v4.0, and
|
|
may be left dangling by other programs written with the same version
|
|
of compiled BASIC
|
|
SeeAlso: INT 3C,INT 3E
|
|
--------r-3E---------------------------------
|
|
INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES "SHORTCUT" CALL
|
|
Notes: the two bytes following the INT 3E instruction are the subcode
|
|
(see #03195) and a NOP (90h), except for subcodes DCh and DEh, where
|
|
the second byte is a register count (01h-08h)
|
|
this vector is modified but not restored by Direct Access v4.0, and
|
|
may be left dangling by other programs written with the same version
|
|
of compiled BASIC
|
|
SeeAlso: INT 3D
|
|
|
|
(Table 03195)
|
|
Values for Borland floating-point shortcut subcode:
|
|
Subcode Function
|
|
DCh load 8086 stack with 8087 registers; overwrites the 10*N bytes at the
|
|
top of the stack prior to the INT 3E with the 8087 register contents
|
|
DEh load 8087 registers from top of 8086 stack; ST0 is furthest from top
|
|
of 8086 stack
|
|
E0h round TOS and R1 to single precision, compare, pop twice
|
|
returns AX=8087 status word, FLAGS=8087 condition bits
|
|
E2h round TOS and R1 to double precision, compare, pop twice
|
|
returns AX=8087 status word, FLAGS=8087 condition bits
|
|
Note: buggy in TPas5.5, because it sets the 8087 precision control
|
|
field to the undocumented value 01h; this results in actually
|
|
rounding to single precision
|
|
E4h compare TOS/R1 with two POP's
|
|
returns FLAGS=8087 condition bits
|
|
E6h compare TOS/R1 with POP
|
|
returns FLAGS=8087 condition bits
|
|
E8h FTST (check TOS value)
|
|
returns FLAGS=8087 condition bits
|
|
EAh FXAM (check TOS value)
|
|
returns AX=8087 status word
|
|
ECh sine(ST0)
|
|
EEh cosine(ST0)
|
|
F0h tangent(ST0)
|
|
F2h arctangent(ST0)
|
|
F4h ST0 = ln(ST0)
|
|
F6h ST0 = log2(ST0)
|
|
F8h ST0 = log10(ST0)
|
|
FAh ST0 = e**ST0
|
|
FCh ST0 = 2**ST0
|
|
FEh ST0 = 10**ST0
|
|
--------r-3F---------------------------------
|
|
INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM)
|
|
Notes: INT 3F is the default, and may be overridden while linking
|
|
this vector is modified but not restored by Direct Access v4.0, and
|
|
may be left dangling by other programs written with the same version
|
|
of compiled BASIC
|
|
SeeAlso: INT FE"OVERLAY"
|
|
--------r-3F---------------------------------
|
|
INT 3F - Microsoft Dynamic Link Library manager
|
|
SeeAlso: INT 21/AH=4Bh
|
|
--------B-40---------------------------------
|
|
INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS
|
|
SeeAlso: INT 13/AH=00h,INT 13/AH=02h,INT 47"SuperBIOS",INT 63"Adaptec"
|
|
--------h-40---------------------------------
|
|
INT 40 - Z100 - Master 8259 - Parity error or S100 error
|
|
SeeAlso: INT 41"Z100",INT FF"Z100"
|
|
--------O-40---------------------------------
|
|
INT 40 - Acorn BBC Master 512 - "OSFIND" - OPEN FILE
|
|
AL = operation
|
|
00h close file
|
|
40h open file for reading
|
|
80h open file for writing
|
|
C0h open file for random access
|
|
DS:BX -> CR-terminated filename
|
|
Return: AL = file handle (00h if file closed or could not be opened)
|
|
Note: the Acorn BBC Master 512 is an 80186-based add-on board for the
|
|
6502-based Master 128 which uses the original CPU as an I/O processor
|
|
SeeAlso: INT 41"Acorn",INT 42"Acorn",INT 43"Acorn",INT 44"Acorn",INT 4C"Acorn"
|
|
--------h-40---------------------------------
|
|
INT 40 - TI Professional PC - IRQ0
|
|
Note: on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
|
|
that IBM connects to IRQ2
|
|
SeeAlso: INT 0A"IRQ2",INT 41"TI Professional"
|
|
--------B-41---------------------------------
|
|
INT 41 - SYSTEM DATA - HARD DISK 0 PARAMETER TABLE ADDRESS [NOT A VECTOR!]
|
|
Notes: the default parameter table array is located at F000h:E401h in 100%
|
|
compatible BIOSes; the pointer may be overridden by the hard disk
|
|
controller's BIOS to support drive formats unknown to the ROM BIOS
|
|
not used by some PS/2 models
|
|
BIOSes which support four hard drives may store the parameter tables
|
|
for drives 81h-83h immediately following the parameter table pointed
|
|
at by INT 41, with a separate copy of the drive 81h table for INT 46.
|
|
The check for such an arrangement is to test whether INT 46 points
|
|
somewhere other than exactly 16 bytes past INT 41, and the sixteen
|
|
bytes starting at offset 10h from INT 41 are identical to the sixteen
|
|
bytes pointed at by INT 46
|
|
another arrangement for BIOSes which support four IDE drives is to have
|
|
four tables pointed at by INT 41 in the order primary master,
|
|
primary slave, secondary master, and secondary slave, in which case
|
|
(for example) a system with only primary master and secondary master
|
|
will have valid tables at offsets 00h and 20h, with garbage (but
|
|
sectors-per-track = 00h) at offsets 10h and 30h
|
|
SeeAlso: #03196,INT 13/AH=09h,INT 1E,INT 46"HARD DISK 1",INT 60"Adaptec"
|
|
SeeAlso: INT C0"AMI"
|
|
|
|
Format of fixed disk parameters:
|
|
Offset Size Description (Table 03196)
|
|
00h WORD number of cylinders
|
|
02h BYTE number of heads
|
|
03h WORD starting reduced write current cylinder (XT only, 0 for others)
|
|
05h WORD starting write precompensation cylinder number
|
|
07h BYTE maximum ECC burst length (XT only)
|
|
08h BYTE control byte (see #03197,#03198)
|
|
09h BYTE standard timeout (XT only, 0 for others)
|
|
0Ah BYTE formatting timeout (XT and WD1002 only, 0 for others)
|
|
0Bh BYTE timeout for checking drive (XT and WD1002 only, 0 for others)
|
|
0Ch WORD cylinder number of landing zone (AT and later only)
|
|
0Eh BYTE number of sectors per track (AT and later only)
|
|
0Fh BYTE reserved
|
|
SeeAlso: #00273,#00277
|
|
|
|
Bitfields for XT fixed disk control byte:
|
|
Bit(s) Description (Table 03197)
|
|
2-0 drive step speed
|
|
000 3ms
|
|
100 200ms
|
|
101 70ms (default)
|
|
110 3ms
|
|
111 3ms
|
|
5-3 unused
|
|
6 disable ECC retries
|
|
7 disable access retries
|
|
|
|
Bitfields for AT fixed disk control byte:
|
|
Bit(s) Description (Table 03198)
|
|
0 unused
|
|
1 reserved (0) (disable IRQ)
|
|
2 reserved (0) (no reset)
|
|
3 set if more than 8 heads
|
|
4 always 0
|
|
5 set if manufacturer's defect map on max cylinder+1 (AT and later only)
|
|
6 disable ECC retries
|
|
7 disable access retries
|
|
--------h-41---------------------------------
|
|
INT 41 - Z100 - Master 8259 - Processor Swap
|
|
SeeAlso: INT 40"Z100",INT 42"Z100"
|
|
--------h-41---------------------------------
|
|
INT 41 - TI Professional PC - IRQ1
|
|
Note: on the TI Pro, IRQ1 is connected to the same pin on the expansion bus
|
|
that IBM connects to IRQ3
|
|
SeeAlso: INT 0B"IRQ3",INT 40"TI Professional",INT 42"TI Professional"
|
|
--------O-41---------------------------------
|
|
INT 41 - Acorn BBC Master 512 - "OSGBPB" - MULTI-BYTE GET/PUT
|
|
AL = function
|
|
01h put bytes sequentially
|
|
02h put bytes, ignoring sequential pointer
|
|
03h get bytes sequentially
|
|
04h get bytes, ignoring sequential pointer
|
|
05h get media title and boot option
|
|
06h get current device and directory
|
|
07h get current library and device
|
|
08h search directory
|
|
DS:BX -> control block (see #03199)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AL = 00h if operation attempted
|
|
AL unchanged if unsupported function
|
|
SeeAlso: INT 40"Acorn",INT 42"Acorn",INT 43"Acorn"
|
|
|
|
Format of BBC Master control block:
|
|
Offset Size Description (Table 03199)
|
|
00h BYTE file handle
|
|
01h DWORD pointer to data in either I/O processor or Tube processor
|
|
05h DWORD number of bytes to be transferred
|
|
09h DWORD transfer address
|
|
--------G-410000-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - OUTPUT CHARACTER FOR USER
|
|
AX = 0000h
|
|
DS:DX -> character
|
|
Note: the kernel calls this function when it wants the user program to
|
|
output a character
|
|
SeeAlso: AX=0001h
|
|
--------G-410001-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - INPUT CHARACTER
|
|
AX = 0001h
|
|
Return: AL = character
|
|
Note: the kernel calls this function when it needs to input a character
|
|
SeeAlso: AX=0000h
|
|
--------G-41000D-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - TASK GOING OUT
|
|
AX = 000Dh
|
|
SeeAlso: AX=000Eh
|
|
--------G-41000E-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - TASK COMING IN
|
|
AX = 000Eh
|
|
SeeAlso: AX=000Dh
|
|
--------G-410012-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - "OutputDebugString"
|
|
AX = 0012h
|
|
DS:SI -> string (Windows 3.0)
|
|
ES:SI -> string (Windows 3.1)
|
|
Return: nothing???
|
|
Note: this function is called by the kernel when it wants to output a
|
|
string through the debugger
|
|
SeeAlso: AX=0050h,INT 68/AH=47h
|
|
--------G-41004F-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - DEBUGGER INSTALLATION CHECK
|
|
AX = 004Fh
|
|
Return: AX = F386h if debugger is present
|
|
SeeAlso: INT 68/AX=4400h
|
|
--------G-410050-----------------------------
|
|
INT 41 P - MS Windows debugging kernel - "DefineDebugSegment"
|
|
AX = 0050h
|
|
BX = segment number in executable (0-based)
|
|
CX = selector
|
|
DX = instance handle
|
|
SI = segment flags (0=code, 1=data)
|
|
ES:DI -> module name of owner
|
|
Return: ???
|
|
SeeAlso: AX=0012h,AX=004Fh
|
|
--------G-410051-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - MOVE SEGMENT
|
|
AX = 0051h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=0050h,AX=0052h
|
|
--------G-410052-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - FREE SEGMENT
|
|
AX = 0052h
|
|
BX = freed selector
|
|
SeeAlso: AX=0050h,AX=0051h,AX=005Ch
|
|
--------G-410059-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - LOAD TASK
|
|
AX = 0059h
|
|
???:BX = CS:IP of new task's starting point
|
|
--------G-41005C-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - FREE INITIAL SEGMENT
|
|
AX = 005Ch
|
|
BX = freed selector
|
|
Note: called only when KERNEL starts, once for CS and once for the DS alias
|
|
to CS
|
|
SeeAlso: AX=0052h
|
|
--------G-410060-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT LOAD
|
|
AX = 0060h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=0061h
|
|
--------G-410061-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - END OF SEGMENT DISCARD
|
|
AX = 0061h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=0060h
|
|
--------G-410062-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - APPLICATION TERMINATING
|
|
AX = 0062h
|
|
STACK: BYTE exit code
|
|
Return: ???
|
|
STACK unchanged???
|
|
SeeAlso: AX=0064h
|
|
--------G-410063-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - ASYNCHRONOUS STOP (Ctrl-Alt-SysReq)
|
|
AX = 0063h
|
|
--------G-410064-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - DLL LOADED
|
|
AX = 0064h
|
|
CX:BX = DLL entry point CS:IP
|
|
SI = module handle
|
|
SeeAlso: AX=0062h,AX=0065h
|
|
--------G-410065-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - MODULE REMOVED
|
|
AX = 0065h
|
|
ES = module handle
|
|
SeeAlso: AX=0064h
|
|
--------G-410066-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - ERROR
|
|
AX = 0066h
|
|
Note: called by LogError()
|
|
SeeAlso: AX=0067h
|
|
--------G-410067-----------------------------
|
|
INT 41 CPU - MS Windows debugging kernel - PARAMETER ERROR
|
|
AX = 0067h
|
|
Note: called by LogParamError()
|
|
SeeAlso: AX=0066h
|
|
--------V-42---------------------------------
|
|
INT 42 - VIDEO - RELOCATED DEFAULT INT 10 VIDEO SERVICES (EGA,VGA)
|
|
Desc: contains the address of the original INT 10 handler which an EGA+
|
|
video adapter replaces with its own on-board BIOS code
|
|
SeeAlso: INT 10/AH=00h,INT 10/AH=0Eh,INT 6D"VGA"
|
|
Note: not used by PS/2 built-in VGA or XGA
|
|
--------h-42---------------------------------
|
|
INT 42 - Z100 - Master 8259 - Timer
|
|
SeeAlso: INT 41"Z100",INT 43"Z100"
|
|
--------h-42---------------------------------
|
|
INT 42 - TI Professional PC - IRQ2
|
|
Note: on the TI Pro, IRQ0 is connected to the same pin on the expansion bus
|
|
that IBM connects to IRQ4
|
|
SeeAlso: INT 0C"IRQ4",INT 41"TI Professional",INT 43"TI Professional"
|
|
--------b-42---------------------------------
|
|
INT 42 - Western Digital WD1002 SuperBIOS - INT 40 CASCADE
|
|
Note: if the second WD1002 controller in the system finds INT 40 already in
|
|
use, it uses this vector to cascade to the first controller's BIOS
|
|
SeeAlso: INT 40"DISKETTE",INT 47"SuperBIOS"
|
|
--------O-42---------------------------------
|
|
INT 42 - Acorn BBC Master 512 - "OSBPUT" - WRITE SINGLE BYTE TO FILE
|
|
AL = byte to be written
|
|
BH = file handle
|
|
Return: flags destroyed
|
|
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
|
|
--------V-425F33-----------------------------
|
|
INT 42 C - Chips & Technologies '65530' BIOS - MODE SET HOOK
|
|
AX = 5F33h
|
|
BL = current width in characters
|
|
BH = curent video mode
|
|
CH = active display page
|
|
Return: nothing
|
|
Desc: this function is called at the end of a video mode set
|
|
Note: the OEM has the option of enabling or disabling this callout, as well
|
|
as specifying whether the callout occurs on INT 15h or INT 42h
|
|
SeeAlso: INT 15/AX=5F31h,INT 15/AX=5F35h,INT 10/AX=5F50h,INT 15/AX=5F33h
|
|
--------V-427500-----------------------------
|
|
INT 42 U - Toshiba laptops - ???
|
|
AX = 7500h
|
|
BL = ??? (00h or 01h)
|
|
Return: ???
|
|
Note: used by Toshiba utility VCHAD.EXE
|
|
SeeAlso: AX=7501h,AX=7503h
|
|
--------V-427501-----------------------------
|
|
INT 42 U - Toshiba laptop - GET ??? DATA
|
|
AX = 7501h
|
|
DS:DI -> data area to be filled ???
|
|
Return: area filled with data ???
|
|
Note: used by Toshiba utility VCHAD.EXE
|
|
SeeAlso: AX=7500h,AX=7502h,AX=7503h
|
|
--------V-427502-----------------------------
|
|
INT 42 U - Toshiba laptops - SET ??? DATA
|
|
AX = 7502h
|
|
DS:DI -> data area ???
|
|
Return: ???
|
|
Note: used by Toshiba utility VCHAD.EXE
|
|
SeeAlso: AX=7501h,AX=7503h
|
|
--------V-427503-----------------------------
|
|
INT 42 - Toshiba laptops - GET DISPLAY STATUS
|
|
AX = 7503h
|
|
Return: AX = 7575h if supported
|
|
CX = 0001h if supported
|
|
BH = display type (00h color, 03h monochrome)
|
|
BL = display state
|
|
01h internal LCD display is active
|
|
02h external VGA display is active
|
|
03h both displays active / DeskStation display mode enabled
|
|
(not possible on all machines)
|
|
Note: used by VCHAD.EXE and supported by all Toshiba VGA laptops until about
|
|
1994 (string "TOSHIBA " at F000:E010h should be checked before call)
|
|
no longer supported by T21xx series, use INT 10/AX=5F50h instead
|
|
INT 42 normally points to F000:F065h but may be redirected by QEMM386
|
|
SeeAlso: AX=7500h,AX=7504h,INT 10/AX=5F50h,INT 15/AH=C0h
|
|
--------V-427504-----------------------------
|
|
INT 42 U - Toshiba laptops - ???
|
|
AX = 7504h
|
|
BL = ???
|
|
Return: BH = ???
|
|
Note: used by Toshiba utility VCHAD.EXE
|
|
SeeAlso: AX=7500h,AX=7503h
|
|
--------V-43---------------------------------
|
|
INT 43 - VIDEO DATA - CHARACTER TABLE (EGA,MCGA,VGA)
|
|
Desc: points at graphics data for characters 00h-7Fh of the current font
|
|
in 8x8 dot modes, graphics data for all characters in 8x14 and 8x16
|
|
modes
|
|
Note: this is not a callable vector!
|
|
SeeAlso: INT 06"no-name",INT 1F"SYSTEM DATA",INT 44"VIDEO"
|
|
--------h-43---------------------------------
|
|
INT 43 - Z100 - Master 8259 - Slave 8259 input
|
|
Note: slave runs in special fully nested mode
|
|
SeeAlso: INT 42"Z100",INT 44"Z100"
|
|
--------h-43---------------------------------
|
|
INT 43 - TI Professional PC - IRQ3 - TIMER1 25ms INTERVAL INTERRUPT
|
|
SeeAlso: INT 0B"IRQ3",INT 42"TI Professional",INT 44"TI Professional"
|
|
SeeAlso: INT 58"TI Professional"
|
|
--------O-43---------------------------------
|
|
INT 43 - Acorn BBC Master 512 - "OSBGET" - READ SINGLE BYTE FROM FILE
|
|
BH = file handle
|
|
Return: CF clear if successful
|
|
AL = byte read from file
|
|
CF set on error
|
|
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 42"Acorn",INT 46"Acorn"
|
|
--------V-44---------------------------------
|
|
INT 44 - VIDEO DATA - ROM BIOS CHARACTER FONT, CHARACTERS 00h-7Fh (PCjr)
|
|
Desc: this vector points at graphics data for current character font
|
|
SeeAlso: INT 1F"SYSTEM DATA",INT 43"VIDEO"
|
|
--------N-44---------------------------------
|
|
INT 44 - Novell NetWare - HIGH-LEVEL LANGUAGE API
|
|
--------I-44---------------------------------
|
|
INT 44 - IBM 3270-PC High Level Language API
|
|
DS:SI -> parameter control block
|
|
--------h-44---------------------------------
|
|
INT 44 - Z100 - Master 8259 - Serial A
|
|
SeeAlso: INT 43"Z100",INT 45"Z100"
|
|
--------h-44---------------------------------
|
|
INT 44 - TI Professional PC - IRQ4
|
|
Note: on the TI Pro, IRQ4 is connected to the same pin on the expansion bus
|
|
that IBM connects to IRQ5
|
|
SeeAlso: INT 0D"IRQ5",INT 43"TI Professional",INT 45"TI Professional"
|
|
--------v-44---------------------------------
|
|
INT 44 - VIRUS - "Lehigh" - ORIGINAL INT 21h VECTOR
|
|
SeeAlso: INT 32"VIRUS",INT 60"VIRUS",INT 70"VIRUS",INT 9E"VIRUS"
|
|
--------O-4400-------------------------------
|
|
INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
|
|
AH = 00h
|
|
AL = function
|
|
00h get current filing system
|
|
Return: AL = filing system (see #03200)
|
|
01h get address of commandline tail
|
|
Return: BX buffer filled with address of command tail in I/O
|
|
processor address space (use INT 4A/AL=05h to
|
|
retrieve)
|
|
FFh flush all files onto secondary storage
|
|
BX -> 4-byte data buffer
|
|
Note: the commandline tail is terminated with a carriage return (0Dh)
|
|
SeeAlso: INT 40"Acorn",INT 45"Acorn"
|
|
|
|
(Table 03200)
|
|
Values for BBC Master filing system:
|
|
00h none
|
|
01h 1200 bps cassette
|
|
02h 300 bps cassette
|
|
03h ROM FS
|
|
04h DFS
|
|
05h ANFS/NFS
|
|
06h TFS
|
|
08h ADFS
|
|
--------O-44---------------------------------
|
|
INT 44 - Acorn BBC Master 512 - "OSARGS" - GET/SET FILE PARAMS FOR OPEN FILE
|
|
AH = nonzero file handle
|
|
AL = function
|
|
00h get sequential pointer for file
|
|
01h set sequential pointer for file
|
|
02h get length of file
|
|
BX -> 4-byte data buffer
|
|
Return: BX buffer updated if appropriate
|
|
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44/AH=00h,INT 45"Acorn",INT 4A"Acorn"
|
|
--------h-45---------------------------------
|
|
INT 45 - Z100 - Master 8259 - Serial B
|
|
SeeAlso: INT 44"Z100",INT 46"Z100"
|
|
--------h-45---------------------------------
|
|
INT 45 - TI Professional PC - IRQ5
|
|
Note: on the TI Pro, IRQ5 is connected to the same pin on the expansion bus
|
|
that IBM connects to IRQ6
|
|
SeeAlso: INT 0E"IRQ6",INT 44"TI Professional",INT 46"TI Professional"
|
|
--------O-45---------------------------------
|
|
INT 45 - Acorn BBC Master 512 - "OSFILE" - READ/WRITE FILE OR DIRECTORY INFO
|
|
AL = function
|
|
00h save block of memory as file
|
|
01h update directory entry for existing file
|
|
02h set load address for existing file
|
|
03h set execution address for existing file
|
|
04h set attributes for existing file
|
|
05h read directory
|
|
06h delete file
|
|
FFh load file
|
|
DS:BX -> control block (see #03201)
|
|
Return: FLAGS destroyed
|
|
AL = file type
|
|
00h not found
|
|
01h file found
|
|
02h directory found
|
|
FFh protected file
|
|
SeeAlso: INT 40"Acorn",INT 41"Acorn",INT 44"Acorn",INT 46"Acorn"
|
|
|
|
Format of BBC Master control block:
|
|
Offset Size Description (Table 03201)
|
|
00h WORD address of CR-terminated filename
|
|
02h DWORD load address of file
|
|
06h DWORD execution address of file
|
|
0Ah DWORD start address of data to save
|
|
0Eh DWORD end address of data to save, or file attributes
|
|
file attributes in low byte (see #03202)
|
|
other three bytes are filing-system specific file attributes
|
|
|
|
Bitfields for BBC Master file attributes:
|
|
Bit(s) Description (Table 03202)
|
|
0 no owner read access
|
|
1 no owner write access
|
|
2 not executable by owner
|
|
3 not deletable by owner
|
|
4 no public read access
|
|
5 no public write access
|
|
6 not executable with public access
|
|
7 not deletable with public access
|
|
--------B-46---------------------------------
|
|
INT 46 - SYSTEM DATA - HARD DISK 1 DRIVE PARAMETER TABLE ADDRESS [NOT A VECTOR!]
|
|
Note: not used by some PS/2 models
|
|
SeeAlso: INT 13/AH=09h,INT 41"HARD DISK 0",INT 60"Adaptec",INT C0"AMI"
|
|
--------h-46---------------------------------
|
|
INT 46 - Z100 - Master 8259 - Keyboard, Retrace, and Light Pen
|
|
SeeAlso: INT 45"Z100",INT 47"Z100"
|
|
--------h-46---------------------------------
|
|
INT 46 - TI Professional PC - IRQ6 - FLOPPY DISK CONTROLLER
|
|
Note: on the TI Pro, IRQ6 is connected to the same pin on the expansion bus
|
|
that IBM connects to IRQ7
|
|
SeeAlso: INT 0F"IRQ7",INT 45"TI Professional",INT 47"TI Professional"
|
|
--------O-46---------------------------------
|
|
INT 46 - Acorn BBC Master 512 - "OSRDCH" - GET CHARACTER FROM CUR INPUT STREAM
|
|
Return: CF clear if successful
|
|
AL = character read
|
|
CF set on error
|
|
AL = error code
|
|
SeeAlso: INT 40"Acorn",INT 43"Acorn",INT 47"Acorn",INT 49"Acorn"
|
|
--------h-47---------------------------------
|
|
INT 47 - Z100 - Master 8259 - Printer
|
|
SeeAlso: INT 46"Z100",INT 48"Z100"
|
|
--------h-47---------------------------------
|
|
INT 47 - TI Professional PC - IRQ7 - KEYBOARD USART
|
|
SeeAlso: INT 09"IRQ1",INT 46"TI Professional"
|
|
--------O-47---------------------------------
|
|
INT 47 - Acorn BBC Master 512 - "OSWRCH" - WRITE CHARACTER TO CUR OUTPUT STREAM
|
|
AL = character to be written
|
|
Return: FLAGS destroyed
|
|
SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 49"Acorn"
|
|
--------b-47---------------------------------
|
|
INT 47 - Western Digital WD1002-27X SuperBIOS - INT 40 CASCADE
|
|
Desc: used by the second WD1002-27X controller to cascade to the first
|
|
controller's INT 40
|
|
SeeAlso: INT 40"DISKETTE",INT 42"SuperBIOS",INT 48"SuperBIOS"
|
|
----------478000-----------------------------
|
|
INT 47 - SQL Base - DATABASE ENGINE API
|
|
AX = 8000h
|
|
DS:BX -> parameter block, first word is function number (see #03203)
|
|
Program: SQL Base is a network-oriented database engine by Gupta Technologies
|
|
SeeAlso: AX=8001h
|
|
|
|
(Table 03203)
|
|
Values for SQL Base function number:
|
|
01h "SQLFINI" initalialize application's use of the database
|
|
02h "SQLFDON" application is done using the database
|
|
03h "SQLFCON" connect to a cursor/database
|
|
04h "SQLFDIS" disconnect from a cursor/database
|
|
05h "SQLFCOM" compile a SQL command
|
|
06h "SQLFEXE" execute a SQL command
|
|
07h "SQLFCEX" compile and execute a SQL command
|
|
08h "SQLFCMT" commit a transaction to the database
|
|
09h "SQLFDES" describe the items of a SELECT statement
|
|
0Ah "SQLFGFI" get fetch information
|
|
0Bh "SQLFFBK" fetch previous result row from SELECT statement
|
|
0Ch "SQLFFET" fetch next result row from SELECT statement
|
|
0Dh "SQLFEFB" enable fetch backwards
|
|
0Eh "SQLFPRS" position in result set
|
|
0Fh "SQLFURS" undo result set
|
|
10h "SQLFNBV" get number of bind variables
|
|
11h "SQLFBND" bind data variables
|
|
12h "SQLFBNN" bind numerics
|
|
13h "SQLFBLN" bind long number
|
|
14h "SQLFBLD" bind long data variables
|
|
15h "SQLFSRS" start restriction set processing
|
|
16h "SQLFRRS" restart restriction set processing
|
|
17h "SQLFCRS" close restriction set
|
|
18h "SQLFDRS" drop restriction set
|
|
19h "SQLFARF" apply Roll Forward journal
|
|
1Ah "SQLFERF" end Roll Forward journal
|
|
1Bh "SQLFSRF" start Roll Forward journal
|
|
1Ch "SQLFSTO" store a compiled SQL command
|
|
1Dh "SQLFRET" retrieve a compiled SQL command
|
|
1Eh "SQLFDST" drop a stored command
|
|
1Fh "SQLFCTY" get command type
|
|
20h "SQLFEPO" get error position
|
|
21h "SQLFGNR" get number of rows
|
|
22h "SQLFNSI" get number of select items
|
|
23h "SQLFRBF" get Roll Back flag
|
|
24h "SQLFRCD" get return code
|
|
25h "SQLFROW" get number of ROWs
|
|
26h "SQLFSCN" set cursor name
|
|
27h "SQLFSIL" set isolation level
|
|
28h "SQLFSLP" set log parameters
|
|
29h "SQLFSSB" set select buffer
|
|
2Ah "SQLFSSS" set sort space
|
|
2Bh "SQLFRLO" read long
|
|
2Ch "SQLFWLO" write long
|
|
2Dh "SQLFLSK" long seek
|
|
2Eh "SQLFGLS" get long size
|
|
2Fh "SQLFELO" end long operation
|
|
30h "SQLFRBK" roll back a transaction from the database
|
|
31h "SQLFERR" error message
|
|
32h "SQLFCPY" copy
|
|
33h "SQLFR01" reserved
|
|
34h "SQLFSYS" system
|
|
35h "SQLFSTA" statistics
|
|
36h "SQLFR02" reserved
|
|
37h "SQLFXAD" extra add
|
|
38h "SQLFXCN" extra character to number
|
|
39h "SQLFXDA" extra date add
|
|
3Ah "SQLFXDP" extra date picture
|
|
3Bh "SQLFXDV" extra divide
|
|
3Ch "SQLFXML" extra multiply
|
|
3Dh "SQLFXNP" extra number picture
|
|
3Eh "SQLFXPD" extra picture date
|
|
3Fh "SQLFXSB" extra subtract
|
|
40h "SQLFINS" install database
|
|
41h "SQLFDIN" deinstall database
|
|
42h "SQLFDIR" directory of databases
|
|
43h "SQLFTIO" timeout
|
|
44h "SQLFFQN" get fully qualified column name
|
|
45h "SQLFEXP" explain execution plan
|
|
46h "SQLFFER" get full error
|
|
47h "SQLFBKP" begin online backup
|
|
48h "SQLFRDC" read backup data chunk
|
|
49h "SQLFEBK" end backup
|
|
4Ah "SQLFRES" begin restore from backup
|
|
4Bh "SQLFWDC" write backup data chunk for restore
|
|
4Ch "SQLFRRD" recover restored database to consistent state
|
|
4Dh "SQLFERS" end restore
|
|
4Eh "SQLFNRR" return number of result set rows
|
|
4Fh "SQLFSTR" start restriction mode
|
|
50h "SQLFSPR" stop restriction mode
|
|
51h "SQLFCNC" connect 2
|
|
52h "SQLFCNR" connect with no recovery
|
|
53h "SQLFOMS" set output message size
|
|
54h "SQLFIMS" set input message size
|
|
55h "SQLFSCP" set cache pages
|
|
56h "SQLFDSC" describe items of a SELECT statement (external)
|
|
57h "SQLFLAB" get label info for items in SELECT statement
|
|
58h "SQLFCBV" clear bind variables
|
|
59h "SQLFGET" get database information
|
|
5Ah "SQLFSET" set database information
|
|
5Bh "SQLFTEC" translate error code
|
|
----------478001-----------------------------
|
|
INT 47 - SQL Base - GET VERSION NUMBER
|
|
AX = 8001h
|
|
Return: ???
|
|
Program: SQL Base is a network-oriented database engine by Gupta Technologies
|
|
SeeAlso: AX=8000h
|
|
--------B-48---------------------------------
|
|
INT 48 - KEYBOARD - CORDLESS KEYBOARD TRANSLATION (PCjr)
|
|
AL = scan code???
|
|
Note: This interrupt may be un-initialized (0000h:0000h) on old machines.
|
|
This should be checked before calling or hooking this vector.
|
|
MS-DOS/PC DOS 3.3x-4.x KEYB hooked the INT 48h handler. For AL <= 80h
|
|
it checked that either ALT and neither CTRL key was pressed,
|
|
and in that case, it cleared the CTRL flag in the BIOS variable at
|
|
0040:0017h and stored its contents in an internal variable,
|
|
before continuing with the previous (non-zero) INT 48h handler.
|
|
SeeAlso: INT 49"PCjr"
|
|
--------h-48---------------------------------
|
|
INT 48 - Z100 - Slave 8259 - S100 vectored line 0
|
|
SeeAlso: INT 47"Z100",INT 49"Z100"
|
|
--------N-48---------------------------------
|
|
INT 48 - Watstar PC Network data pointer 1
|
|
SeeAlso: INT 49"Watstar"
|
|
--------O-48---------------------------------
|
|
INT 48 - Acorn BBC Master 512 - "OSNEWL" - SEND NEWLINE TO OUTPUT STREAM
|
|
Return: FLAGS destroyed
|
|
Note: writes a carriage return (0Dh) followed by a linefeed (0Ah)
|
|
SeeAlso: INT 40"Acorn",INT 47"Acorn",INT 49"Acorn"
|
|
--------b-48---------------------------------
|
|
INT 48 - Western Digital WD1002-27X SuperBIOS - DRIVE DATA (NOT A VECTOR!)
|
|
Note: the second WD1002-27X controller in a system uses the low byte to
|
|
store the number of drives controlled by the second controller,
|
|
and the high word for temporary storage during track recalculation;
|
|
the first controller uses offsets 74h-77h in the BIOS data area
|
|
(refer to MEMORY.LST) to store data
|
|
SeeAlso: INT 47"SuperBIOS"
|
|
--------V-48---------------------------------
|
|
INT 48 U - Compaq UILIB.EXE - API
|
|
AX = function (see #03204)
|
|
BX = call type (0002h) (see #03207)
|
|
???
|
|
Return: ???
|
|
Note: returns AX=FFFFh if 1000h<=AX<=2000h and AX is not one of the functions
|
|
listed below
|
|
SeeAlso: AX=1A70h
|
|
|
|
(Table 03204)
|
|
Values for valid UILIB function number:
|
|
1000h 1160h 12D0h 1430h 1570h 1680h 17F0h 1920h 1A90h
|
|
1010h 1170h 12E0h 1440h 1578h 1690h 1800h 1930h 1AA0h
|
|
1020h 1180h 12F0h 1450h 1580h 16A0h 1810h 1940h
|
|
1030h 1190h 1300h 1460h 1590h 16B0h 1820h 1950h
|
|
1040h 11A0h 1310h 1470h 1594h 16C0h 1830h 1960h
|
|
1050h 11B0h 1320h 1480h 1598h 16D0h 1840h 1970h
|
|
1060h 11C0h 1330h 1490h 15A0h 16E0h 1848h 1980h
|
|
1070h 11D0h 1340h 14A0h 15B0h 16F0h 1850h 1990h
|
|
1080h 11E0h 1350h 14B0h 15C0h 1700h 1860h 19A0h
|
|
1090h 11F0h 1360h 14B8h 15D0h 1710h 1870h 19B0h
|
|
1095h 1200h 1370h 14BBh 15D4h 1720h 1878h 19C0h
|
|
1098h 1210h 1380h 14C0h 15D8h 1730h 1880h 19D0h
|
|
10A0h 1220h 1390h 14D0h 15E0h 1735h 1890h 19E0h
|
|
10C0h 1230h 13A0h 14E0h 15F0h 1740h 1898h 19F0h
|
|
10D0h 1240h 13B0h 14F0h 1600h 1750h 18A0h 1A00h
|
|
10E0h 1250h 13B8h 1500h 1610h 1770h 18B0h 1A10h
|
|
10F0h 1260h 13C0h 1508h 1620h 1780h 18C0h 1A20h
|
|
1100h 1270h 13D0h 1510h 1630h 1790h 18D0h 1A30h
|
|
1110h 1280h 13E0h 1520h 1640h 17A0h 18E0h 1A40h
|
|
1120h 1290h 13F0h 1530h 1650h 17B0h 18F0h 1A50h
|
|
1130h 12A0h 1400h 1540h 1660h 17C0h 1900h 1A60h
|
|
1140h 12B0h 1410h 1550h 1664h 17D0h 1909h 1A70h
|
|
1150h 12C0h 1420h 1560h 1670h 17E0h 1910h 1A80h
|
|
--------b-4800-------------------------------
|
|
INT 48 - TI Professional PC - SPEAKER DEVICE - SOUND SPEAKER
|
|
AH = 00h
|
|
AL = number of 25ms ticks sound should last
|
|
Return: nothing
|
|
Desc: sound the speaker at the current frequency setting (see AH=02h) for
|
|
the indicated duration
|
|
Notes: this function returns immediately; the sound is terminated by the
|
|
timer interrupt handler
|
|
if a new sound is requested while one is already in progress, the
|
|
previous sound is terminated immediately and the new sound takes
|
|
its place
|
|
SeeAlso: AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
SeeAlso: INT 40"TI Professional",INT 49/AH=01h"TI"
|
|
SeeAlso: INT 4A/AH=00h"TI",INT 4C"TI Professional",INT 4D/AH=00h
|
|
--------b-4801-------------------------------
|
|
INT 48 - TI Professional PC - SPEAKER DEVICE - CHECK SPEAKER STATUS
|
|
AH = 01h
|
|
Return: ZF clear if speaker is currently on
|
|
ZF set if speaker is currently off
|
|
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
--------b-4802-------------------------------
|
|
INT 48 - TI Professional PC - SPEAKER DEVICE - SET SPEAKER FREQUENCY
|
|
AH = 02h
|
|
CX = frequency divisor (freq = 1250000 / CX)
|
|
Return: nothing
|
|
SeeAlso: AH=00h,AH=01h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
--------b-4803-------------------------------
|
|
INT 48 - TI Professional PC - SPEAKER DEVICE - TURN ON SPEAKER
|
|
AH = 03h
|
|
Return: nothing
|
|
Desc: turn on the speaker at the current frequency, leaving it on until
|
|
explicitly turned off with AH=04h or the end of a subsequent
|
|
AH=00h
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
--------b-4804-------------------------------
|
|
INT 48 - TI Professional PC - SPEAKER DEVICE - TURN OFF SPEAKER
|
|
AH = 04h
|
|
Return: nothing
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
--------b-4805-------------------------------
|
|
INT 48 - TI Professional PC - SPEAKER DEVICE - DELAY
|
|
AH = 05h
|
|
CX = desired delay in milliseconds
|
|
Return: after delay expires
|
|
Note: the delay is only approximate, and may be longer than requested
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
--------b-4806-------------------------------
|
|
INT 48 - TI Professional PC - CALCULATE CRC
|
|
AH = 06h
|
|
ES:BX -> memory block for which to calculate CRC
|
|
BP = size of block in bytes
|
|
Return: DX = CRC for block
|
|
ZF set if DX = 0000h
|
|
Note: if the CRC of a memory block is appended to the block, then the CRC
|
|
of the block plus CRC should equal 0000h
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
--------b-4807-------------------------------
|
|
INT 48 - TI Professional PC - PRINT ROM MESSAGE
|
|
AH = 07h
|
|
SI = offset of ASCIZ message string within segment F400h
|
|
Return: nothing
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
--------b-4808-------------------------------
|
|
INT 48 - TI Professional PC - DISPLAY SYSTEM ERROR MESSAGE
|
|
AH = 08h
|
|
BX = error number
|
|
Return: nothing
|
|
Desc: displays the error message " ** System Error ** - xxxx" where xxxx is
|
|
the hexadecimal value in BX
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
--------b-4809-------------------------------
|
|
INT 48 - TI Professional PC - GET SYSTEM CONFIGURATION DATA
|
|
AH = 09h
|
|
Return: ES:BX -> system configuration word (see #03227)
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah,AH=0Bh
|
|
--------b-480A-------------------------------
|
|
INT 48 - TI Professional PC - GET EXTRA SYSTEM CONFIGURATION INFO ADDRESS
|
|
AH = 0Ah
|
|
Return: ES:BX -> configuration information (see #03205)
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Bh
|
|
|
|
Format of TI Professional PC extra system configuration information:
|
|
Offset Size Description (Table 03205)
|
|
-3 WORD memory size in paragraphs
|
|
00h BYTE drive type byte (see #03206)
|
|
01h WORD extra system configuration word 1
|
|
bit 0: 8087 is present
|
|
bits 15-1: reserved (0)
|
|
03h WORD extra system configuration word 2
|
|
bits 15-0: reserved (0)
|
|
|
|
Bitfields for TI Professional PC drive type byte:
|
|
Bit(s) Description (Table 03206)
|
|
0 drive A is double-sided
|
|
1 drive A has 80 tracks instead of 40
|
|
2 drive B is double-sided
|
|
3 drive B has 80 tracks instead of 40
|
|
4 drive C is double-sided
|
|
5 drive C has 80 tracks instead of 40
|
|
6 drive D is double-sided
|
|
7 drive D has 80 tracks instead of 40
|
|
Note: the type for drive A is determined by motherboard switches; the
|
|
remaining drives' types are set from a table in IO.SYS
|
|
SeeAlso: #03205
|
|
--------b-480B-------------------------------
|
|
INT 48 - TI Professional PC - GET EXTRA SYSTEM CONFIGURATION INFORMATION
|
|
AH = 0Bh
|
|
Return: AL = drive type byte (see #03206)
|
|
BX = extra system configuration word 1 (see #03205)
|
|
CX = extra system configuration word 2 (see #03205)
|
|
AH destroyed
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=03h,AH=04h,AH=06h,AH=08h,AH=0Ah
|
|
--------V-481A70-----------------------------
|
|
INT 48 U - Compaq UILIB.EXE - INSTALLATION CHECK
|
|
AX = 1A70h
|
|
BX = call type (see #03207)
|
|
Return: CX = 5649h ('VI') if installed
|
|
DX = 4557h ('EW') if installed
|
|
AX = version??? (0106h)
|
|
|
|
(Table 03207)
|
|
Values for UILIB call type:
|
|
0000h near
|
|
0001h far
|
|
0002h INT (only valid call type when using INT 48)
|
|
0003h near
|
|
--------B-49---------------------------------
|
|
INT 49 - SYSTEM DATA - NON-KEYBOARD SCAN-CODE TRANSLATION TABLE (PCjr)
|
|
SeeAlso: #03208,INT 48"PCjr"
|
|
|
|
Format of PCjr scan-code translation table:
|
|
Offset Size Description (Table 03208)
|
|
00h BYTE number of non-keyboard scancodes in the table
|
|
01h N WORDs high byte 00h (NUL) byte scancode with low order byte
|
|
representing the scancode mapped values relative to their
|
|
input values within the range of 56h through 7Eh
|
|
--------h-49---------------------------------
|
|
INT 49 - Z100 - Slave 8259 - S100 vectored line 1
|
|
SeeAlso: INT 48"Z100",INT 4A"Z100"
|
|
--------N-49---------------------------------
|
|
INT 49 - Watstar PC Network data pointer 2
|
|
SeeAlso: INT 48"Watstar"
|
|
--------O-49---------------------------------
|
|
INT 49 - Acorn BBC Master 512 - "OSASCI" - WRITE CHARACTER TO CUR OUTPUT STREAM
|
|
AL = character to be written
|
|
Return: FLAGS destroyed
|
|
Note: converts carriage return (0Dh) into CRLF sequence (0Dh 0Ah)
|
|
SeeAlso: INT 40"Acorn",INT 46"Acorn",INT 47"Acorn",INT 48"Acorn"
|
|
--------b-49---------------------------------
|
|
INT 49 - Tandy 2000 - BOOTSTRAP LOADER
|
|
Note: this interrupt is identical to INT 19
|
|
SeeAlso: INT 19,INT 4A"Tandy 2000",INT 4C"Tandy 2000",INT 51"Tandy 2000"
|
|
--------a-490001-----------------------------
|
|
INT 49 - MAGic v1.16+ - TURN ON MAGNIFICATION
|
|
AX = 0001h
|
|
Return: AX = status (see #03209)
|
|
BX,CX,DX destroyed
|
|
Program: MAGic (MAGnification In Color) is a TSR by Microsystems Software, Inc.
|
|
providing 2x2 text and graphics magnification on VGA, XGA, and SVGA
|
|
Note: INT 49 is the default, but may be overridden on the commandline. The
|
|
actual interrupt in use may be found by searching for the signature
|
|
"MAGic" or "xMAGic" (for the deluxe version) immediately preceding
|
|
the interrupt handler (this is also the installation check). MAGic
|
|
uses CodeRunneR, which places the signature "RT" at offset 0000h in
|
|
the interrupt handler's segment, followed by MAGic's TSR ID of
|
|
"VMAG".
|
|
SeeAlso: AX=0002h,AX=0003h,AX=0004h,AX=0008h
|
|
Index: installation check;MAGic
|
|
|
|
(Table 03209)
|
|
Values for MAGic status:
|
|
0000h cannot magnify current video mode
|
|
0002h magnified (text mode)
|
|
0003h magnified (graphics mode)
|
|
FFFDh function works only in magnified mode
|
|
FFFFh MAGic busy, retry later
|
|
--------a-490002-----------------------------
|
|
INT 49 - MAGic v1.16+ - TURN OFF MAGNIFICATION
|
|
AX = 0002h
|
|
Return: AX = status (see #03209)
|
|
BX,CX,DX destroyed
|
|
SeeAlso: AX=0001h
|
|
--------a-490003-----------------------------
|
|
INT 49 - MAGic v1.16+ - SHIFT MAGNIFIED WINDOW TO INCLUDE SPECIFIED LOCATION
|
|
AX = 0003h
|
|
BX = vertical position (character row [text] or pixel row [graphics])
|
|
DX = horizontal position (char column [text] or 8-pixel units [gr])
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh MAGic busy, retry later
|
|
BX,CX,DX destroyed
|
|
Note: window is not moved if the position is inside the current window
|
|
SeeAlso: AX=0001h,AX=0004h,AX=0005h
|
|
--------a-490004-----------------------------
|
|
INT 49 - MAGic v1.16+ - REPOSITION MAGNIFIED WINDOW
|
|
AX = 0004h
|
|
BX = vertical position of upper left corner
|
|
DX = horizontal position
|
|
Return: AX = status (see AX=0003h)
|
|
BX,CX,DX destroyed
|
|
SeeAlso: AX=0001h,AX=0003h,AX=0005h
|
|
--------a-490005-----------------------------
|
|
INT 49 - MAGic v1.16+ - GET POSITION OF MAGNIFIED WINDOW
|
|
AX = 0005h
|
|
Return: AX = status
|
|
0000h successful
|
|
BX = vertical position (char row or pixel row)
|
|
DX = horizontal position (char column or 8-pixel units)
|
|
FFFFh MAGic busy, retry later
|
|
BX,DX destroyed
|
|
CX destroyed
|
|
SeeAlso: AX=0001h,AX=0003h,AX=0004h,AX=0006h,AX=0007h
|
|
--------a-490006-----------------------------
|
|
INT 49 - MAGic v1.16+ - GET SIZE OF FULL SCREEN
|
|
AX = 0006h
|
|
Return: AX = status
|
|
0000h successful
|
|
BX = vertical size (char rows or pixel rows)
|
|
DX = horizontal size (char cols or 8-pixel units)
|
|
FFFFh MAGic busy, retry later
|
|
BX,DX destroyed
|
|
CX destroyed
|
|
SeeAlso: AX=0001h,AX=0005h,AX=0007h
|
|
--------a-490007-----------------------------
|
|
INT 49 - MAGic v1.16+ - GET SIZE OF MAGNIFICATION WINDOW
|
|
AX = 0007h
|
|
Return: AX = status
|
|
0000h successful
|
|
BX = vertical size (char rows or pixel rows)
|
|
DX = horizontal size (char cols or 8-pixel units)
|
|
FFFEh invalid function
|
|
FFFFh MAGic busy, retry later
|
|
BX,DX destroyed
|
|
CX destroyed
|
|
BUG: in v1.16 and v1.17, this function is not recognized as valid, but
|
|
AX=0000h is accepted and will branch into hyperspace
|
|
SeeAlso: AX=0001h,AX=0006h
|
|
--------a-490008-----------------------------
|
|
INT 49 - MAGic v1.23+ - SET TEXT MODE MAGNIFICATION SIZE
|
|
AX = 0008h
|
|
BX = scaling factor (01h=1.4 times, 02h, 04h, 06h, 08h, 09h=12 times)
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFBh scaling factor only available in MAGic Deluxe
|
|
FFFCh already in magnified state, can't set size
|
|
Notes: this call specifies the amount a subsequent call to AX=0001h should
|
|
magnify the display
|
|
scaling factors greater than 2 are only available in MAGic Deluxe
|
|
SeeAlso: AX=0001h
|
|
--------V-4901-------------------------------
|
|
INT 49 - TI Professional PC - CRT - SET CURSOR SIZE AND TYPE
|
|
AH = 01h
|
|
CH = cursor start line (bits 3-0) and status (bits 6-5)
|
|
status bits:
|
|
00 non-blinking cursor
|
|
01 no cursor
|
|
10 fast-blinking cursor
|
|
11 slow-blinking cursor
|
|
CL = cursor end line
|
|
Return: nothing
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=02h,AH=03h,INT 40"TI Professional",INT 48/AH=00h"TI Professional"
|
|
SeeAlso: INT 4A/AH=00h"TI",INT 4B"TI Professional",INT 4D/AH=00h
|
|
SeeAlso: INT 57"TI Professional"
|
|
--------V-4902-------------------------------
|
|
INT 49 - TI Professional PC - CRT - SET CURSOR POSITION
|
|
AH = 02h
|
|
DH = column
|
|
DL = row
|
|
Return: DX destroyed
|
|
Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
the TI swaps the row and column compared to the equivalent IBM call
|
|
SeeAlso: AH=01h,AH=03h
|
|
--------V-4903-------------------------------
|
|
INT 49 - TI Professional PC - CRT - GET CURSOR POSTION AND TYPE
|
|
AH = 03h
|
|
Return: CH = cursor start and status (see AH=01h)
|
|
CL = cursor end line
|
|
DH = cursor column
|
|
DL = cursor row
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=02h
|
|
--------V-4906-------------------------------
|
|
INT 49 - TI Professional PC - CRT - SCROLL UP/COPY WINDOW
|
|
AH = 06h
|
|
AL = source blanking
|
|
00h blank source region (move/scroll)
|
|
nonzero do not blank source region (copy)
|
|
DH,DL = source start column,row
|
|
BH,BL = destination start column,row
|
|
CH = width of region to move/copy
|
|
CL = height of region to move/copy
|
|
Return: nothing
|
|
Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
the specified region may be wider than the screen, but reliable
|
|
operation then requires that the height be exactly one row
|
|
SeeAlso: AH=01h,AH=02h,AH=07h,AH=13h,AH=14h
|
|
--------V-4907-------------------------------
|
|
INT 49 - TI Professional PC - CRT - SCROLL DOWN/COPY WINDOW
|
|
AH = 07h
|
|
AL = source blanking
|
|
00h blank source region (move/scroll)
|
|
nonzero do not blank source region (copy)
|
|
DH,DL = source start column,row
|
|
BH,BL = destination start column,row
|
|
CH = width of region to move/copy
|
|
CL = height of region to move/copy
|
|
Return: nothing
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=02h,AH=06h,AH=13h,AH=14h
|
|
--------V-4908-------------------------------
|
|
INT 49 - TI Professional PC - CRT - GET CHARACTER AND ATTRIBUTE AT POSITION
|
|
AH = 08h
|
|
Return: AL = character at current cursor position
|
|
AH = attribute
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=09h,AH=0Ah,AH=0Eh,INT 10/AH=08h
|
|
--------V-4909-------------------------------
|
|
INT 49 - TI Professional PC - CRT - WRITE CHARACTER(S) WITH ATTRIBUTE
|
|
AH = 09h
|
|
AL = character to write
|
|
BL = attribute to use (becomes new current attribute)
|
|
CX = number of times to write character
|
|
Return: nothing
|
|
Desc: write CX copies of the character in AL beginning at the current cursor
|
|
position
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=08h,AH=0Ah,AH=0Eh,INT 10/AH=09h
|
|
--------V-490A-------------------------------
|
|
INT 49 - TI Professional PC - CRT - WRITE CHARACTER(S) WITH CURRENT ATTRIBUTE
|
|
AH = 0Ah
|
|
AL = character to write
|
|
CX = number of times to write character
|
|
Return: nothing
|
|
Desc: write CX copies of the character in AL beginning at the current cursor
|
|
position
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=02h,AH=08h,AH=09h,AH=0Eh,INT 10/AH=0Ah
|
|
--------V-490E-------------------------------
|
|
INT 49 - TI Professional PC - CRT - TTY OUTPUT
|
|
AH = 0Eh
|
|
AL = character to write
|
|
Return: nothing
|
|
Desc: write the character in AL at the current cursor position, advancing
|
|
the cursor, and interpreting CR, LF, TAB, and BEL characters
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=02h,AH=08h,AH=09h,AH=0Ah,INT 10/AH=0Eh
|
|
--------V-4910-------------------------------
|
|
INT 49 - TI Professional PC - CRT - WRITE BLOCK OF CHARACTERS WITH ATTRIBUTE
|
|
AH = 10h
|
|
AL = attribute (becomes new current attribute)
|
|
DX:BX -> string of characters to write
|
|
CX = length of string
|
|
Return: nothing
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
BUG: CX must not be 0000h on entry, or the system will crash
|
|
SeeAlso: AH=01h,AH=02h,AH=09h,AH=0Eh,AH=11h
|
|
--------V-4911-------------------------------
|
|
INT 49 - TI Professional PC - CRT - WRITE BLOCK OF CHARACTERS WITH CURR ATTRIB
|
|
AH = 11h
|
|
DX:BX -> string of characters to write
|
|
CX = length of string
|
|
Return: nothing
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
BUG: CX must not be 0000h on entry, or the system will crash
|
|
SeeAlso: AH=01h,AH=02h,AH=09h,AH=0Eh,AH=10h
|
|
--------V-4912-------------------------------
|
|
INT 49 - TI Professional PC - CRT - FILL ENTIRE SCREEN WITH ATTRIBUTE
|
|
AH = 12h
|
|
AL = attribute (see #03210)
|
|
Return: nothing
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=02h
|
|
|
|
Bitfields for TI Professional PC screen attribute:
|
|
Bit(s) Description (Table 03210)
|
|
7 alternate character set (requires user-supplied ROM)
|
|
6 blink
|
|
5 underline
|
|
4 reverse video
|
|
3 character enable
|
|
2 green (color) or 58% intensity (gray-scale)
|
|
1 red (color) or 27.5% intensity
|
|
0 blue (color) or 14.5% intensity
|
|
--------V-4913-------------------------------
|
|
INT 49 - TI Professional PC - CRT - CLEAR ENTIRE TEXT SCREEN AND HOME CURSOR
|
|
AH = 13h
|
|
Return: nothing
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=02h,AH=06h,AH=14h
|
|
--------V-4914-------------------------------
|
|
INT 49 - TI Professional PC - CRT - CLEAR ENTIRE GRAPHICS SCREEN
|
|
AH = 14h
|
|
Return: nothing
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=02h,AH=06h,AH=13h
|
|
--------V-4915-------------------------------
|
|
INT 49 - TI Professional PC - CRT - SET PROTECTED STATUS AREA
|
|
AH = 15h
|
|
CL = row at which to start status area, or 00h to cancel
|
|
CH = 00h
|
|
Return: nothing
|
|
Desc: set a protected area of the screen which will not be affected by TTY
|
|
writes or the scrolls they may generate
|
|
Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
the current cursor position must be above the status area in order to
|
|
set the protected area
|
|
SeeAlso: AH=01h,AH=02h
|
|
--------V-4916-------------------------------
|
|
INT 49 - TI Professional PC - CRT - SET ATTRIBUTE LATCH
|
|
AH = 16h
|
|
BL = new attribute (see #03210)
|
|
Return: nothing
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=02h
|
|
--------V-4917-------------------------------
|
|
INT 49 - TI Professional PC - CRT - GET START-OF-DISPLAY POINTER
|
|
AH = 17h
|
|
Return: DX = current offset at which display starts
|
|
Note: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
SeeAlso: AH=01h,AH=02h,INT 10/AH=FEh
|
|
--------V-4918-------------------------------
|
|
INT 49 - TI Professional PC - CRT - PRINT TTY STRING
|
|
AH = 18h
|
|
CS:BX -> counted string (count byte with length followed by string)
|
|
Return: nothing
|
|
Notes: AH=00h,04h,05h,0Bh,0Ch,0Dh,0Fh are documented as NOPs
|
|
the string must be located in the caller's code segment; any TSRs
|
|
which want to hook INT 49 must check for this function and emulate
|
|
it, because the BIOS retrieves the caller's CS from the stack
|
|
SeeAlso: AH=01h,AH=02h,AH=0Eh
|
|
--------B-4A---------------------------------
|
|
INT 4A C - SYSTEM - USER ALARM HANDLER
|
|
Desc: This interrupt is invoked by the BIOS when a real-time clock alarm
|
|
occurs; an application may use it to perform an action at a
|
|
predetermined time.
|
|
Note: this interrupt is called from within a hardware interrupt handler,
|
|
so all usual precautions against reentering DOS must be taken
|
|
SeeAlso: INT 1A/AH=06h
|
|
--------h-4A---------------------------------
|
|
INT 4A - Z100 - Slave 8259 - S100 vectored line 2
|
|
SeeAlso: INT 49"Z100",INT 4B"Z100"
|
|
--------b-4A---------------------------------
|
|
INT 4A - Tandy 2000 - PRINT SCREEN
|
|
Note: this interrupt is identical to INT 05
|
|
SeeAlso: INT 05"PRINT SCREEN"
|
|
--------O-4A---------------------------------
|
|
INT 4A - Acorn BBC Master 512 - "OSWORD" - MISC FUNCTIONS USING CONTROL BLOCK
|
|
AL = function code
|
|
FAh transfer data between 80186 and 65C12 I/O processor
|
|
DS:BX -> control block (see #03211)
|
|
Return: FLAGS destroyed
|
|
control block updated
|
|
Note: there are more functions than are listed here, but details are not
|
|
available
|
|
SeeAlso: INT 40"Acorn",INT 4B"Acorn",INT 4C"Acorn"
|
|
|
|
Format of BBC Master control block for function FAh:
|
|
Offset Size Description (Table 03211)
|
|
00h BYTE number of parameters sent to I/O processor (0Dh,0Eh)
|
|
01h BYTE number of parameters read from I/O processor (01h)
|
|
02h DWORD I/O processor address
|
|
06h DWORD 80186 segment:offset address
|
|
0Ah WORD number of bytes to transfer
|
|
0Ch BYTE operation type
|
|
00h write to 65C12 at 24 us/byte
|
|
01h read from 65C12 at 24 us/byte
|
|
02h write to 65C12 at 26 us/word
|
|
03h read from 65C12 at 26 us/word
|
|
04h write to 65C12 at 10 us/byte using 256-byte blocks
|
|
05h read from 65C12 at 10 us/byte using 256-byte blocks
|
|
0Dh BYTE 65C12 memory access control (only used if offset 00h = 0Eh)
|
|
(see #03212)
|
|
|
|
Bitfields for 65C12 memory access control:
|
|
Bit(s) Description (Table 03212)
|
|
7 unused
|
|
6 always use main screen memory if I/O addr 3000h-7FFFh (overrides bit 5)
|
|
5 use shadow screen memory if screen address specified
|
|
4 use current ROM rather than ROM selected by bits 3-0 (only if I/O
|
|
address between 8000h and BFFFh)
|
|
3-0 paged ROM number
|
|
--------b-4A00-------------------------------
|
|
INT 4A - TI Professional PC - KEYBOARD - GET KEYPRESS
|
|
AH = 00h
|
|
Return: AX = keystroke (AH=00h for ASCII keys -- no scan code)
|
|
SeeAlso: AH=01h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=00h
|
|
SeeAlso: INT 47"TI Professional",INT 48/AH=00h"TI Professional"
|
|
SeeAlso: INT 49/AH=01h"TI",INT 4C"TI Professional",INT 4D/AH=00h
|
|
SeeAlso: INT 5B"TI Professional"
|
|
--------b-4A01-------------------------------
|
|
INT 4A - TI Professional PC - KEYBOARD - GET KEYBOARD STATUS
|
|
AH = 01h
|
|
Return: ZF set if no keystroke available
|
|
ZF clear if keystrokes in buffer
|
|
AX = next keystroke (AH=00h for ASCII keys -- no scan code)
|
|
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=01h
|
|
--------b-4A02-------------------------------
|
|
INT 4A - TI Professional PC - KEYBOARD - GET KEYBOARD MODE
|
|
AH = 02h
|
|
Return: AL = shift states (see #03213)
|
|
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 16/AH=02h
|
|
|
|
Bitfields for TI Professional PC keyboard shift states:
|
|
Bit(s) Description (Table 03213)
|
|
0 Ctrl key pressed
|
|
1 Alt key pressed
|
|
2 either Shift key pressed
|
|
3-6 0
|
|
7 CapsLock is ON
|
|
--------b-4A03-------------------------------
|
|
INT 4A - TI Professional PC - KEYBOARD - FLUSH KEYBOARD BUFFER
|
|
AH = 03h
|
|
Return: nothing
|
|
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h
|
|
--------b-4A04-------------------------------
|
|
INT 4A - TI Professional PC - KEYBOARD - SEND COMMAND TO KEYBOARD
|
|
AH = 04h
|
|
AL = command
|
|
00h reset to default states
|
|
01h enable auto-repeat (default)
|
|
02h disable auto-repeat
|
|
03h lock keyboard
|
|
04h unlock keyboard (default)
|
|
05h enable keyclick (requires hardware modification to work)
|
|
06h disable keyclick (default)
|
|
Return: nothing
|
|
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h
|
|
--------b-4A05-------------------------------
|
|
INT 4A - TI Professional PC - KEYBOARD - INSERT CHARACTER INTO KEYBOARD BUFFER
|
|
AH = 05h
|
|
BX = character code (BH=00h if ASCII character, BL=00h/BH nonzero for
|
|
extended codes) (see #03214)
|
|
Return: ZF set if keyboard buffer was already full
|
|
ZF clear if keystroke inserted into buffer
|
|
SeeAlso: AH=00h,AH=02h,AH=03h,AH=04h,AH=05h,INT 5B"TI"
|
|
|
|
(Table 03214)
|
|
Values for TI Professional PC scan/character codes:
|
|
Scan Key Normal Shift Ctrl Alt Notes
|
|
00h -- unused
|
|
01h F5 3F00h 5800h 6200h 6C00h
|
|
02h F6 4000h 5900h 6300h 6D00h
|
|
03h F7 4100h 5A00h 6400h 6E00h
|
|
04h F8 4200h 5B00h 6500h 6F00h
|
|
05h F9 4300h 5C00h 6600h 7000h
|
|
06h F10 4400h 5D00h 6700h 7100h
|
|
07h F11 4500h 0800h 0A00h 0C00h
|
|
08h F12 4600h 0900h 0B00h 0D00h
|
|
09h 1 ! 0031h 0021h ---- 7800h
|
|
0Ah 2 @ 0032h 0040h 0300h 7900h
|
|
0Bh 3 # 0033h 0023h ---- 7A00h
|
|
0Ch 4 $ 0034h 0024h ---- 7B00h
|
|
0Dh 5 % 0035h 0025h ---- 7C00h
|
|
0Eh 6 ^ 0036h 005Eh 001Eh 7D00h
|
|
0Fh 7 & 0037h 0026h ---- 7E00h
|
|
10h 8 * 0038h 002Ah ---- 7F00h
|
|
11h 9 ( 0039h 0028h ---- 8000h
|
|
12h 0 ) 0030h 0029h ---- 8100h
|
|
13h - _ 002Dh 005Fh 001Fh 8200h
|
|
14h = + 003Dh 002Bh ---- 8300h
|
|
15h BACK SPACE 0008h 0008h 007Fh ----
|
|
16h ` ~ 0060h 007Eh ---- ----
|
|
17h NUM = 003Dh 003Dh 003Dh 8C00h
|
|
18h NUM + 002Bh 002Bh 002Bh 8D00h
|
|
19h NUM SPAC 0020h 0020h 0020h 8E00h
|
|
1Ah NUM TAB 0009h 0F00h 0009h 8F00h
|
|
1Bh NUM 1 0031h 0031h 0031h (alt-###) [Note 5]
|
|
1Ch (unused)
|
|
1Dh NUM 0 0030h 0030h 0030h (alt-###) [Note 5]
|
|
1Eh NUM ENTER 000Dh 000Dh 000Dh ----
|
|
1Fh NUM 4 0034h 0034h 0034h (alt-###) [Note 5]
|
|
20h NUM 5 0035h 0035h 0035h (alt-###) [Note 5]
|
|
21h NUM 9 0039h 0039h 0039h (alt-###) [Note 5]
|
|
22h NUM - 002Dh 002Dh 002Dh ----
|
|
23h NUM 2 0032h 0032h 0032h (alt-###) [Note 5]
|
|
24h-26h -- unused
|
|
27h NUM 7 0037h 0037h 0037h (alt-###) [Note 5]
|
|
28h NUM 8 0038h 0038h 0038h (alt-###) [Note 5]
|
|
29h NUM 6 0036h 0036h 0036h (alt-###) [Note 5]
|
|
2Ah NUM , 002Ch 002Ch 002Ch ----
|
|
2Bh NUM 3 0033h 0033h 0033h (alt-###) [Note 5]
|
|
2Ch NUM . 002Eh 002Eh 002Eh ----
|
|
2Dh PRINT 7200h [Note2] ---- ---- [Notes 1,2]
|
|
2Eh RtArrow 4D00h 8A00h 7400h 4E00h
|
|
2Fh INS 5200h 2800h 2900h 2A00h [Note 1]
|
|
30h DEL 5300h 3800h 3900h 3A00h [Note 1]
|
|
31h TAB 0009h 0F00h 0009h ----
|
|
32h Q 0071h 0051h 0011h 1000h
|
|
33h W 0077h 0057h 0017h 1100h
|
|
34h E 0065h 0045h 0005h 1200h
|
|
35h R 0072h 0052h 0012h 1300h
|
|
36h T 0074h 0054h 0014h 1400h
|
|
37h Y 0079h 0059h 0019h 1500h
|
|
38h U 0075h 0055h 0015h 1600h
|
|
39h I 0069h 0049h 0009h 1700h
|
|
3Ah O 006Fh 004Fh 000Fh 1800h
|
|
3Bh P 0070h 0050h 0010h 1900h
|
|
3Ch [ { 005Bh 007Bh 001Bh ----
|
|
3Dh ] } 005Dh 007Dh 001Dh ----
|
|
3Eh LINE FEED 000Ah 000Ah 7500h 4F00h
|
|
3Fh BRK/PAUS [Note3] [Note4] ---- ---- [Notes 1,3,4]
|
|
40h UpArrow 4800h 8800h 8400h 4900h
|
|
41h ESC 001Bh 001Bh 001Bh ----
|
|
42h A 0061h 0041h 0001h 1E00h
|
|
43h S 0073h 0053h 0013h 1F00h
|
|
44h D 0064h 0044h 0004h 2000h
|
|
45h F 0066h 0046h 0006h 2100h
|
|
46h G 0067h 0047h 0007h 2200h
|
|
47h H 0068h 0048h 0008h 2300h
|
|
48h J 006Ah 004Ah 000Ah 2400h
|
|
49h K 006Bh 004Bh 000Bh 2500h
|
|
4Ah L 006Ch 004Ch 000Ch 2600h
|
|
4Bh ; : 003Bh 003Ah ---- ----
|
|
4Ch ' " 0027h 0022h ---- ----
|
|
4Dh RETURN 000Dh 000Dh 000Dh ----
|
|
4Eh \ | 005Ch 007Ch 001Ch ----
|
|
4Fh LeftArrow 4B00h 8B00h 7300h 4C00h
|
|
50h HOME 4700h 8600h 7700h 8500h
|
|
51h Space Bar 0020h 0020h 0020h 0020h
|
|
52h Z 007Ah 005Ah 001Ah 2C00h
|
|
53h X 0078h 0058h 0018h 2D00h
|
|
54h C 0063h 0043h 0003h 2E00h
|
|
55h V 0076h 0056h 0016h 2F00h
|
|
56h B 0062h 0042h 0002h 3000h
|
|
57h N 006Eh 004Eh 000Eh 3100h
|
|
58h M 006Dh 004Dh 000Dh 3200h
|
|
59h , < 002Ch 003Ch ---- ----
|
|
5Ah PRINT 7200h [Note2] ---- ---- [Notes 1,2]
|
|
5Bh . > 002Eh 003Eh ---- ----
|
|
5Ch / ? 002Fh 003Fh ---- ----
|
|
5Dh (unused)
|
|
5Eh DEL 5300h 3800h 3900h 3A00h [Note 1]
|
|
5Fh INS 5200h 2800h 2900h 2A00h [Note 1]
|
|
60h DownArrow 5000h 8900h 7600h 5100h
|
|
61h-63h -- unused
|
|
64h BRK/PAUS [Note3] [Note4] ---- ---- [Notes 1,3,4]
|
|
65h F1 3B00h 5400h 5E00h 6800h
|
|
66h F2 3C00h 5500h 5F00h 6900h
|
|
67h F3 3D00h 5600h 6000h 6A00h
|
|
68h F4 3E00h 5700h 6100h 6B00h
|
|
69h-6Fh -- unused
|
|
Notes: [1] four of the keys can have differing scan codes, depending on the
|
|
actual keyboard; the BIOS accepts either scan code ("normal": 2Fh,
|
|
30h, 5Ah, 64h; "alternate": 2Dh,3Fh,5Eh,5Fh) for any of these keys
|
|
[2] Shift-Print invokes INT 5E for a screen dump; the PRTSCRN.DEV
|
|
device driver also supports Alt-Print, Ctrl-Print, Shift-Alt-Print,
|
|
and Shift-Ctrl-Print for dumping graphics in various permutations
|
|
[3] BRK/PAUS invokes INT 5C for a pause, then stuffs 0100h into the
|
|
keyboard buffer
|
|
[4] Shift-BRK/PAUS invokes INT 5D for the Break, then stuffs 0000h
|
|
into the keyboard buffer; MS-DOS hooks INT 5D to keep the 0000h from
|
|
appearing in the keyboard buffer
|
|
[5] on the TI Pro, one enters an arbitrary character slightly
|
|
differently than on a standard PC: exactly three numberpad digits
|
|
must be pressed (using leading zeros for codes less than 100), and
|
|
the key for the requested code is inserted into the keyboard buffer
|
|
immediately on pressing the third key. The Alt key may be released
|
|
and re-pressed arbitrarily often between digits without affecting
|
|
the Alt-digit-digit-digit sequence.
|
|
scan codes with bit 7 set are not key releases, but rather
|
|
auto-repeated keystrokes, which the BIOS only places into the
|
|
keyboard buffer if the buffer is empty at the time (thus avoiding
|
|
typeahead of repeated keystrokes faster than they can be processed)
|
|
SeeAlso: #00006 at INT 09
|
|
--------h-4B---------------------------------
|
|
INT 4B - Z100 - Slave 8259 - S100 vectored line 3
|
|
SeeAlso: INT 4A"Z100",INT 4C"Z100"
|
|
--------d-4B---------------------------------
|
|
INT 4B - Common Access Method SCSI interface (draft revision 1.9)
|
|
ES:DI -> CAM Control Block (see #03229 at INT 4F/AX=8100h)
|
|
InstallCheck: test for the string "SCSI_CAM" eight bytes past the INT 4Bh
|
|
handler
|
|
Notes: the CAM committee moved the interface to INT 4F after revision 1.9
|
|
to avoid conflicting with the IBM SCSI interface and the Virtual
|
|
DMA specification
|
|
the only driver to date reported to use the CAM interface on INT 4B
|
|
instead of INT 4F is from Future Domain (which has drivers for CAM
|
|
on either interrupt)
|
|
SeeAlso: INT 4F/AX=8100h
|
|
Index: installation check;Common Access Method SCSI interface
|
|
--------b-4B---------------------------------
|
|
INT 4B - Tandy 2000 - EQUIPMENT DETERMINATION
|
|
Return: AX = BIOS equipment list word (see #03215)
|
|
Note: this interrupt is identical to INT 11 on the Tandy 2000
|
|
SeeAlso: INT 11"EQUIPMENT",INT 4A"Tandy 2000",INT 4C"Tandy 2000"
|
|
|
|
Bitfields for Tandy 2000 BIOS equipment list:
|
|
Bit(s) Description (Table 03215)
|
|
0 reserved
|
|
1 monochrome graphics installed
|
|
2 graphics with color option installed
|
|
3 floppy disk drive 1 installed
|
|
4 floppy disk drive 2 installed
|
|
5 hard disk drive 1 installed
|
|
6 hard disk drive 2 installed
|
|
7 unused
|
|
8 black and white monitor
|
|
9 color monitor
|
|
12-10 reserved
|
|
13 printer installed
|
|
14 reserved
|
|
15 unused
|
|
SeeAlso: #00226 at INT 11
|
|
--------O-4B---------------------------------
|
|
INT 4B - Acorn BBC Master 512 - "OSBYTE" - MISC FUNCTIONS USING REGISTER PARAMS
|
|
AL = function code
|
|
BL = first parameter
|
|
BH = second parameter (if needed)
|
|
Return: BL = first return parameter
|
|
BH = second return parameter
|
|
CF depends on function
|
|
SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4C"Acorn"
|
|
--------b-4B00-------------------------------
|
|
INT 4B - TI Professional PC - PARALLEL PORT - OUTPUT CHARACTER
|
|
AH = 00h
|
|
DL = printer number (00h)
|
|
AL = character to print
|
|
Return: AH = printer status (see #03216)
|
|
Note: on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
|
|
TI hook INT 4B and handle requests for DL<>00h
|
|
SeeAlso: AH=01h,AH=02h,INT 17/AH=00h
|
|
SeeAlso: INT 40"TI Professional",INT 48/AH=00h"TI Professional"
|
|
SeeAlso: INT 49/AH=01h"TI",INT 4C"TI Professional",INT 4D/AH=00h
|
|
|
|
Bitfields for TI Professional PC printer status:
|
|
Bit(s) Description (Table 03216)
|
|
0 timeout (function 00h only)
|
|
3-1 unused
|
|
4 busy
|
|
5 paper out
|
|
6 on-line (selected)
|
|
7 fault
|
|
--------b-4B01-------------------------------
|
|
INT 4B - TI Professional PC - PARALLEL PORT - INITIALIZE PRINTER
|
|
AH = 01h
|
|
DL = printer number (00h)
|
|
Return: AH = printer status (see #03216)
|
|
Note: on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
|
|
TI hook INT 4B and handle requests for DL<>00h
|
|
SeeAlso: AH=00h,AH=02h,INT 17/AH=01h
|
|
--------b-4B02-------------------------------
|
|
INT 4B - TI Professional PC - PARALLEL PORT - GET PRINTER STATUS
|
|
AH = 02h
|
|
DL = printer number (00h)
|
|
Return: AH = printer status (see #03216)
|
|
Note: on the TI Pro, the BIOS only supports DL=00h; MS-DOS versions for the
|
|
TI hook INT 4B and handle requests for DL<>00h
|
|
SeeAlso: AH=00h,AH=01h,INT 17/AH=02h
|
|
--------d-4B80-------------------------------
|
|
INT 4B - IBM SCSI interface
|
|
AH = 80h
|
|
AL = 00h-10h (Corel PowerSCSI INT4BCAM.SYS)
|
|
further details not yet available
|
|
--------d-4B8102DX0000-----------------------
|
|
INT 4B - Virtual DMA Specification (VDS) - GET VERSION
|
|
AX = 8102h
|
|
DX = 0000h
|
|
Return: CF clear if successful
|
|
AH = major version number
|
|
AL = minor version number
|
|
BX = product number (see #03217)
|
|
CX = product revision number
|
|
always 0000h for QMAPS and HPMM.SYS
|
|
always 0001h for Microsoft's EMM386.EXE v4.20-4.41
|
|
DX = flags (see #03219)
|
|
SI:DI = maximum DMA buffer size
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
Note: bit 5 of 0040h:007Bh is supposed to be set if VDS is supported; this is
|
|
apparently not always the case
|
|
SeeAlso: INT 2C/AX=002Bh,INT 31/AX=0400h,MEM 0040h:007Bh"4Bh"
|
|
Index: installation check;Virtual DMA Specification
|
|
|
|
(Table 03217)
|
|
Values for VDS product number:
|
|
0000h for Quadtel's QMAPS and Hewlett-Packard's HPMM.SYS
|
|
0001h for Microsoft's EMM386.EXE
|
|
0003h for Windows 3.x WIN386.EXE
|
|
0300h OS/2 (all versions to date)
|
|
0EDCh for DR DOS 6.0 EMM386.SYS
|
|
4560h ("E`") for Qualitas' 386MAX
|
|
4D43h ("MC") for V Communications' Memory Commander
|
|
5145h ("QE") for Quarterdeck's QEMM-386
|
|
524Dh ("RM") for Helix's Netroom RM386
|
|
|
|
(Table 03218)
|
|
Values for VDS error code:
|
|
01h region not in contiguous memory
|
|
02h region crossed a physical alignment boundary
|
|
03h unable to lock pages
|
|
04h no buffer available
|
|
05h region too large for buffer
|
|
06h buffer currently in use
|
|
07h invalid memory region
|
|
08h region was not locked
|
|
09h number of physical pages greater than table length
|
|
0Ah invalid buffer ID
|
|
0Bh copy out of buffer range
|
|
0Ch invalid DMA channel number
|
|
0Dh disable count overflow
|
|
0Eh disable count underflow
|
|
0Fh function not supported
|
|
10h reserved flag bits set in DX
|
|
|
|
Bitfields for VDS flags:
|
|
Bit(s) Description (Table 03219)
|
|
0 PC/XT bus (DMA in first megabyte only)
|
|
1 physical buffer/remap region in first megabyte
|
|
2 automatic remap enabled
|
|
3 all memory is physically contiguous
|
|
4-15 reserved (zero)
|
|
--------d-4B8103-----------------------------
|
|
INT 4B - Virtual DMA Specification - LOCK DMA REGION
|
|
AX = 8103h
|
|
DX = flags (see #03220)
|
|
ES:DI -> DMA descriptor structure (see #03221,#03222,#03223)
|
|
Return: CF clear if successful
|
|
DDS physical address field filled in
|
|
DDS buffer ID field filled (0000h if no buffer allocated)
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
DDS region size field filled wth maximum contiguous length in bytes
|
|
BUGS: Windows 3.0 does not correctly support automatic remapping or copying
|
|
in enhanced mode
|
|
Windows 3.0 in enhanced mode does not return a correct code on error
|
|
SeeAlso: AX=8104h,AX=8105h
|
|
|
|
Bitfields for VDS flags:
|
|
Bit(s) Description (Table 03220)
|
|
0 reserved (zero)
|
|
1 data should be copied into buffer (ignored if 2 set)
|
|
2 buffer should not be allocated if region noncontiguous or crosses
|
|
physical alignment boundary specified by 4-5
|
|
3 don't attempt automatic remap
|
|
4 region must not cross 64K physical alignment boundary
|
|
5 region must not cross 128K physical alignment boundary
|
|
6-15 reserved (zero)
|
|
|
|
Format of DMA descriptor structure (DDS):
|
|
Offset Size Description (Table 03221)
|
|
00h DWORD region size
|
|
04h DWORD offset
|
|
08h WORD segment/selector
|
|
0Ah WORD buffer ID
|
|
0Ch DWORD physical address
|
|
|
|
Format of Extended DMA descriptor structure (EDDS):
|
|
Offset Size Description (Table 03222)
|
|
00h DWORD region size
|
|
04h DWORD offset
|
|
08h WORD segment/selector
|
|
0Ah WORD reserved
|
|
0Ch WORD number available
|
|
0Eh WORD number used
|
|
10h DWORD region 0 physical address
|
|
14h DWORD region 0 size in bytes
|
|
18h DWORD region 1 physical address
|
|
1Ch DWORD region 1 size in bytes
|
|
...
|
|
|
|
Format of Extended DMA descriptor structure (EDDS) with page table entries:
|
|
Offset Size Description (Table 03223)
|
|
00h DWORD region size
|
|
04h DWORD offset
|
|
08h WORD segment/selector
|
|
0Ah WORD reserved
|
|
0Ch WORD number available
|
|
0Eh WORD number used
|
|
10h DWORD page table entry 0 (same as 80386 page table entry)
|
|
14h DWORD page table entry 1
|
|
...
|
|
Note: bits 1-11 of the page table entries should be zero; bit 0 set if page
|
|
is present and locked
|
|
--------d-4B8104-----------------------------
|
|
INT 4B - Virtual DMA Specification - UNLOCK DMA REGION
|
|
AX = 8104h
|
|
DX = flags
|
|
bit 0: reserved (zero)
|
|
bit 1: data should be copied out of buffer
|
|
bits 2-15 reserved (zero)
|
|
ES:DI -> DMA descriptor structure (see #03221,#03222) with region size,
|
|
physical address, and buffer ID fields set
|
|
Return: CF clear if successful
|
|
DDS physical address field set
|
|
DDS buffer ID field set (0000h if no buffer allocated)
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
DDS region size field filled wth maximum contiguous length in bytes
|
|
Note: Windows 3.0 does not check whether the region extends beyond the end of
|
|
a segment
|
|
BUG: Windows 3.0 in enhanced mode does not return a correct code on error
|
|
SeeAlso: AX=8103h,AX=8106h
|
|
--------d-4B8105-----------------------------
|
|
INT 4B - Virtual DMA Specification - SCATTER/GATHER LOCK REGION
|
|
AX = 8105h
|
|
DX = flags (see #03224)
|
|
ES:DI -> Extended DMA descriptor structure (see #03222,#03223)
|
|
region size, linear segment, linear offset, and number avail
|
|
fields set
|
|
Return: CF clear if successful
|
|
EDDS number used field set
|
|
if DX bit 6 set, lower 12 bits of BX = offset in first page
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
EDDS region size field filled with max length in bytes that can be
|
|
locked and described in the EDDS table
|
|
BUG: Windows 3.0 in enhanced mode may return zero instead of the physical
|
|
page address for pages which were originally not present
|
|
SeeAlso: AX=8103h,AX=8106h
|
|
|
|
Bitfields for VDS flags:
|
|
Bit(s) Description (Table 03224)
|
|
0-5 reserved (zero)
|
|
6 EDDS should be returned with page table entries
|
|
7 only present pages should be locked (not-present pages receive entry
|
|
of 0000h)
|
|
8-15 reserved (zero)
|
|
--------d-4B8106-----------------------------
|
|
INT 4B - Virtual DMA Specification - SCATTER/GATHER UNLOCK REGION
|
|
AX = 8106h
|
|
DX = flags (see #03225)
|
|
ES:DI -> Extended DMA descriptor structure (see #03222,#03223) returned
|
|
by AX=8105h
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
Note: according to the Microsoft version of the VDS specification, the
|
|
actual scatter/gather list is ignored, while according to the IBM
|
|
version of the specification, "the result of a LOCK operation"
|
|
must be provided to this function
|
|
SeeAlso: AX=8104h,AX=8105h
|
|
|
|
Bitfields for VDS flags:
|
|
Bit(s) Description (Table 03225)
|
|
0-5 reserved (zero)
|
|
6 EDDS contains page table entries
|
|
7 EDDS may contain not-present pages (entry = 0000h)
|
|
8-15 reserved (zero)
|
|
--------d-4B8107-----------------------------
|
|
INT 4B - Virtual DMA Specification - REQUEST DMA BUFFER
|
|
AX = 8107h
|
|
DX = flags
|
|
bit 0: reserved (zero)
|
|
bit 1: data should be copied into buffer
|
|
bits 2-15 reserved (zero)
|
|
ES:DI -> DMA descriptor structure (see #03221) with region size set
|
|
(also region offset and region segment if DX bit 1 set)
|
|
Return: CF clear if successful
|
|
DDS physical address and buffer ID set
|
|
DDS region size filled with length of buffer
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
SeeAlso: AX=8108h
|
|
--------d-4B8108-----------------------------
|
|
INT 4B - Virtual DMA Specification - RELEASE DMA BUFFFER
|
|
AX = 8108h
|
|
DX = flags
|
|
bit 0: reserved (zero)
|
|
bit 1: data should be copied out of buffer
|
|
bits 2-15 reserved (zero)
|
|
ES:DI -> DMA descriptor structure (see #03221,#03222) with buffer ID set
|
|
(also region size/region offset/segment if DX bit 1 set)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
BUG: under Windows 3.0 Enhanced mode, you must specify that data be copied
|
|
for this function to work correctly
|
|
SeeAlso: AX=8107h
|
|
--------d-4B8109DX0000-----------------------
|
|
INT 4B - Virtual DMA Specification - COPY INTO DMA BUFFER
|
|
AX = 8109h
|
|
DX = 0000h
|
|
ES:DI -> DMA descriptor structure (see #03221,#03222) with buffer ID,
|
|
region segment/offset, and region size fields set
|
|
BX:CX = starting offset into DMA buffer
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
BUG: Windows 3.0 Enhanced mode does not correctly interpret the copy count
|
|
SeeAlso: AX=810Ah
|
|
--------d-4B810ADX0000-----------------------
|
|
INT 4B - Virtual DMA Specification - COPY OUT OF DMA BUFFER
|
|
AX = 810Ah
|
|
DX = 0000h
|
|
ES:DI -> DMA descriptor structure (see #03221,#03223) with buffer ID,
|
|
region segment/offset, and region size fields set
|
|
BX:CX = starting offset into DMA buffer
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
BUG: Windows 3.0 Enhanced mode does not correctly interpret the copy count
|
|
SeeAlso: AX=8109h
|
|
--------d-4B810B-----------------------------
|
|
INT 4B - Virtual DMA Specification - DISABLE DMA TRANSLATION
|
|
AX = 810Bh
|
|
BX = DMA channel number
|
|
DX = 0000h
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
SeeAlso: AX=810Ch
|
|
--------d-4B810C-----------------------------
|
|
INT 4B - Virtual DMA Specification - ENABLE DMA TRANSLATION
|
|
AX = 810Ch
|
|
BX = DMA channel number
|
|
DX = 0000h
|
|
Return: CF clear if successful
|
|
ZF set if disable count decremented to zero
|
|
CF set on error
|
|
AL = error code (see #03218)
|
|
SeeAlso: AX=810Bh
|
|
--------Q-4B810D-----------------------------
|
|
INT 4B - QEMM-386 - BUG
|
|
AX = 810Dh
|
|
Note: the code in QEMM v5.11 and 6.00 jumps to an invalid location on this
|
|
call
|
|
--------h-4C---------------------------------
|
|
INT 4C - Z100 - Slave 8259 - S100 vectored line 4
|
|
SeeAlso: INT 4B"Z100",INT 4D"Z100"
|
|
--------b-4C---------------------------------
|
|
INT 4C - TI Professional PC - CLOCK/ANALOG INTERFACE
|
|
no details available
|
|
SeeAlso: INT 40"TI Professional",INT 49/AH=01h"TI"
|
|
SeeAlso: INT 4A/AH=00h"TI",INT 4B"TI Professional",INT 4D/AH=00h
|
|
SeeAlso: INT 58"TI Professional"
|
|
--------b-4C---------------------------------
|
|
INT 4C - Tandy 2000 - GET MEMORY SIZE
|
|
Return: AX = kilobytes of contiguous memory starting at 0
|
|
Note: this interrupt is identical to INT 12 on the Tandy 2000
|
|
SeeAlso: INT 12"BIOS",INT 4A"Tandy 2000",INT 4B"Tandy 2000",INT 51"Tandy 2000"
|
|
--------O-4C---------------------------------
|
|
INT 4C - Acorn BBC Master 512 - "OSCLI" - INTERPRET COMMAND LINE
|
|
DS:BX -> CR-terminated command string
|
|
Return: FLAGS destroyed
|
|
SeeAlso: INT 40"Acorn",INT 4A"Acorn",INT 4B"Acorn"
|
|
--------h-4D---------------------------------
|
|
INT 4D - Z100 - Slave 8259 - S100 vectored line 5
|
|
SeeAlso: INT 4C"Z100",INT 4E"Z100"
|
|
--------s-4D---------------------------------
|
|
INT 4D - IBM - M-Audio Adapter SUPPORT
|
|
no details available; supposedly documented in IBM form G571-0203-01
|
|
--------B-4D00-------------------------------
|
|
INT 4D - TI Professional PC - DISK - RESET DISK SYSTEM
|
|
AH = 00h
|
|
DL = drive (if bit 7 is set both hard disks and floppy disks reset)
|
|
Return: AH = status (see #00234 at INT 13/AH=01h)
|
|
CF clear if successful (returned AH=00h)
|
|
CF set on error
|
|
Note: this function is the same as INT 13/AH=00h on a standard PC BIOS
|
|
SeeAlso: AH=01h,AH=02h,AH=08h,AH=0Bh,INT 13/AH=00h,INT 46"TI Professional"
|
|
SeeAlso: INT 48/AH=00h"TI Professional",INT 4A/AH=00h"TI"
|
|
--------B-4D01-------------------------------
|
|
INT 4D - TI Professional PC - DISK - GET STATUS OF LAST OPERATION
|
|
AH = 01h
|
|
DL = drive (bit 7 set for hard disk)
|
|
Return: CF clear if status unchanged
|
|
CF set if status changed since last call
|
|
AH = 00h
|
|
AL = status of previous operation (see #00234 at INT 13/AH=01h)
|
|
Notes: this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
|
|
the TI's BIOS tranparently performs a number of retries, and an error
|
|
status is only reported if all of the retries fail. To get the error
|
|
status if the operation succeeded on a retry, use AH=07h instead
|
|
SeeAlso: AH=00h,AH=07h,INT 13/AH=01h
|
|
--------B-4D02-------------------------------
|
|
INT 4D - TI Professional PC - DISK - READ SECTOR(S) INTO MEMORY
|
|
AH = 02h
|
|
AL = number of sectors to read (must be nonzero)
|
|
CH = low eight bits of cylinder number
|
|
CL = sector number 1-63 (bits 0-5)
|
|
high two bits of cylinder (bits 6-7, hard disk only)
|
|
DH = head number
|
|
DL = drive number (bit 7 set for hard disk)
|
|
ES:BX -> data buffer
|
|
Return: CF set on error
|
|
if AH = 11h (corrected ECC error), AL = burst length
|
|
CF clear if successful
|
|
AH = status (see #00234 at INT 13/AH=01h)
|
|
AL = number of sectors transferred
|
|
ES:BX -> buffer for last sector processed (including one with errors)
|
|
SeeAlso: AH=00h,AH=01h,AH=03h,AH=04h,INT 13/AH=02h
|
|
--------B-4D03-------------------------------
|
|
INT 4D - TI Professional PC - DISK - WRITE SECTOR(S) FROM MEMORY
|
|
AH = 03h
|
|
AL = number of sectors to write (must be nonzero)
|
|
CH = low eight bits of cylinder number
|
|
CL = sector number 1-63 (bits 0-5)
|
|
high two bits of cylinder (bits 6-7, hard disk only)
|
|
DH = head number
|
|
DL = drive number (bit 7 set for hard disk)
|
|
ES:BX -> buffer containing data
|
|
Return: CF set on error
|
|
if AH = 11h (corrected ECC error), AL = burst length
|
|
CF clear if successful
|
|
AH = status (see #00234 at INT 13/AH=01h)
|
|
AL = number of sectors transferred
|
|
ES:BX -> buffer for last sector processed (including one with errors)
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=03h
|
|
--------B-4D04-------------------------------
|
|
INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR CRC(S)
|
|
AH = 04h
|
|
AL = number of sectors to verify (must be nonzero)
|
|
CH = low eight bits of cylinder number
|
|
CL = sector number 1-63 (bits 0-5)
|
|
high two bits of cylinder (bits 6-7, hard disk only)
|
|
DH = head number
|
|
DL = drive number (bit 7 set for hard disk)
|
|
ES:BX -> data buffer
|
|
Return: CF set on error
|
|
if AH = 11h (corrected ECC error), AL = burst length
|
|
CF clear if successful
|
|
AH = status (see #00234 at INT 13/AH=01h)
|
|
AL = number of sectors transferred
|
|
ES:BX -> buffer for last sector processed (including one with errors)
|
|
Note: even though no data is transferred, ES:BX must still be valid
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=06h,INT 13/AH=04h
|
|
--------B-4D05-------------------------------
|
|
INT 4D - TI Professional PC - DISK - NOP
|
|
AH = 05h
|
|
Note: on the TI Pro, FORMAT.COM contains direct port I/O commands to perform
|
|
disk formatting, rather than using the BIOS
|
|
--------B-4D06-------------------------------
|
|
INT 4D - TI Professional PC - DISK - VERIFY DISK SECTOR(S)
|
|
AH = 06h
|
|
AL = number of sectors to verify (must be nonzero)
|
|
CH = low eight bits of cylinder number
|
|
CL = sector number 1-63 (bits 0-5)
|
|
high two bits of cylinder (bits 6-7, hard disk only)
|
|
DH = head number
|
|
DL = drive number (bit 7 set for hard disk)
|
|
ES:BX -> data buffer
|
|
Return: CF set on error
|
|
if AH = 11h (corrected ECC error), AL = burst length
|
|
CF clear if successful
|
|
AH = status (see #00234 at INT 13/AH=01h)
|
|
AL = number of sectors transferred
|
|
ES:BX -> buffer for last sector processed (including one with errors)
|
|
Note: even though no data is transferred, ES:BX must still be valid because
|
|
an actual comparison with disk data is performed, not just the CRC
|
|
check of the standard PC BIOS or INT 4D/AH=04h
|
|
SeeAlso: AH=00h,AH=01h,AH=02h,AH=04h,INT 13/AH=04h
|
|
--------B-4D07-------------------------------
|
|
INT 4D - TI Professional PC - DISK - GET RETRY STATUS OF LAST OPERATION
|
|
AH = 07h
|
|
DL = drive (bit 7 set for hard disk)
|
|
Return: CF clear if status unchanged
|
|
CF set if status changed since last call
|
|
AH = 00h
|
|
AL = status of previous operation (see #00234 at INT 13/AH=01h)
|
|
Notes: this function is nearly the same as INT 13/AH=01h on a standard PC BIOS
|
|
the TI's BIOS tranparently performs a number of retries; this function
|
|
returns the error status of a failed operation even if the operation
|
|
succeeded on a retry
|
|
SeeAlso: AH=00h,AH=01h,INT 13/AH=01h
|
|
--------B-4D08-------------------------------
|
|
INT 4D - TI Professional PC - DISK - SET STANDARD DEVICE INTERFACE TABLE
|
|
AH = 08h
|
|
DL = drive number (00h-03h)
|
|
AL = drive type
|
|
00h single-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
|
|
01h double-sided 48 tpi (40-track, 8 sectors, 512 bytes/sector)
|
|
02h single-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
|
|
03h double-sided 96 tpi (80-track, 8 sectors, 512 bytes/sector)
|
|
Return: nothing???
|
|
SeeAlso: AH=00h,AH=09h
|
|
--------B-4D09-------------------------------
|
|
INT 4D - TI Professional PC - DISK - SET DEVICE INTERFACE TABLE ADDRESS
|
|
AH = 09h
|
|
DL = drive number (00h-07h)
|
|
ES:BX -> Device Interface Table (see #03226)
|
|
Return: nothing???
|
|
SeeAlso: AH=00h,AH=08h,AH=0Ah,INT 1E
|
|
|
|
Format of TI Professional PC Device Interface Table:
|
|
Offset Size Description (Table 03226)
|
|
00h DWORD -> entry point for disk routine
|
|
04h WORD bytes per sector
|
|
06h BYTE sectors per track
|
|
07h BYTE number of heads
|
|
08h BYTE number of cylinders
|
|
09h BYTE retry count
|
|
0Ah BYTE precompensation start
|
|
SeeAlso: #01264 at INT 1E
|
|
--------B-4D0A-------------------------------
|
|
INT 4D - TI Professional PC - DISK - GET DEVICE INTERFACE TABLE ADDRESS
|
|
AH = 0Ah
|
|
DL = drive number (00h-07h)
|
|
Return: AH = status
|
|
ES:BX -> Device Interface Table (see #03226)
|
|
SeeAlso: AH=00h,AH=08h,AH=09h,INT 1E
|
|
--------B-4D0B-------------------------------
|
|
INT 4D - TI Professional PC - DISK - TURN OFF ALL DRIVES
|
|
AH = 0Bh
|
|
Return: AH = 00h
|
|
Note: used for diagnostics or to conserve power
|
|
SeeAlso: AH=00h
|
|
--------h-4E---------------------------------
|
|
INT 4E - Z100 - Slave 8259 - S100 vectored line 6
|
|
SeeAlso: INT 4D"Z100",INT 4F"Z100"
|
|
--------b-4E00-------------------------------
|
|
INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - SET BIOS DATE
|
|
AH = 00h
|
|
BX = number of days since January 1, 1980
|
|
Return: nothing
|
|
SeeAlso: AH=01h,AH=02h
|
|
SeeAlso: INT 40"TI Professional",INT 48/AH=00h"TI Professional"
|
|
SeeAlso: INT 4A/AH=00h"TI",INT 4F"TI Professional"
|
|
--------b-4E01-------------------------------
|
|
INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - SET BIOS TIME
|
|
AH = 01h
|
|
CH = hours
|
|
CL = minutes
|
|
DH = seconds
|
|
DL = hundredths
|
|
Return: nothing
|
|
Note: the BIOS does not validate the data passed to this function
|
|
SeeAlso: AH=00h,AH=02h
|
|
--------b-4E02-------------------------------
|
|
INT 4E - TI Professional PC - TIME-OF-DAY CLOCK - GET BIOS DATA AND TIME
|
|
AH = 02h
|
|
Return: AX = number of days since January 1, 1980
|
|
CH = hours
|
|
CL = minutes
|
|
DH = seconds
|
|
DL = hundredths
|
|
SeeAlso: AH=00h,AH=01h
|
|
--------h-4F---------------------------------
|
|
INT 4F - Z100 - Slave 8259 - S100 vectored line 7
|
|
SeeAlso: INT 4E"Z100"
|
|
--------b-4F---------------------------------
|
|
INT 4F - TI Professional PC - SYSTEM CONFIGURATION CALL
|
|
Return: AX = system configuration word (see #03227)
|
|
BX = size of contiguous DOS memory in paragraphs
|
|
SeeAlso: INT 11"BIOS",INT 12"BIOS",INT 40"TI Professional",INT 48/AH=09h
|
|
SeeAlso: INT 49/AH=01h"TI",INT 4B"TI Professional",INT 4D/AH=00h
|
|
SeeAlso: INT 4E"TI Professional"
|
|
|
|
Bitfields for TI Professional PC system configuration:
|
|
Bit(s) Description (Table 03227)
|
|
0 floppy drive 0 (A:, internal) installed
|
|
1 floppy drive 1 (B:, internal) installed
|
|
2 floppy drive 2 (C:, external) installed
|
|
3 floppy drive 3 (D:, external) installed
|
|
4 drive A: is 96tpi (80 tracks)
|
|
5 drive A: is double-sided
|
|
6 60 Hz power instead of 50 Hz
|
|
7 hard disk (E: or E:/F:) installed
|
|
8 serial port 1 installed
|
|
9 serial port 2 installed
|
|
10 serial port 3 installed
|
|
11 serial port 4 installed
|
|
14-12 installed graphics RAM
|
|
000 none (text-only system)
|
|
001 bank A only (graphics limited to 2 of 8 colors)
|
|
111 banks A/B/C (graphics supports 8 of 8 colors)
|
|
15 clock/analog board installed
|
|
--------d-4F0081-----------------------------
|
|
INT 4F - ATA Software Programming Interface (ATASPI) - SEND ATASPI REQUEST
|
|
AX = 0081h
|
|
ES:BX -> ATA Request Block (see #90002)
|
|
Return: AH = 00h always???
|
|
Note: this interface has probably appeared in some later revisions of ATASPI
|
|
than 0.72
|
|
SeeAlso: INT 21/AX=4402h"ATASPI",INT 4F/AX=0082h
|
|
--------d-4F0082CX8765-----------------------
|
|
INT 4F - ATA Software Programming Interface (ATASPI) - INSTALLATION CHECK
|
|
AX = 0082h
|
|
CX = 8765h
|
|
DX = CBA9h
|
|
Return: AH = 00h if installed
|
|
CX = 9ABCh
|
|
DX = 5678h
|
|
ES:DI -> "$ATAMGR$"
|
|
Note: this interface has probably appeared in some later revisions of ATASPI
|
|
than 0.72
|
|
SeeAlso: INT 21/AX=4402h"ATASPI",INT 4F/AX=0081h
|
|
--------d-4F8100-----------------------------
|
|
INT 4F - Common Access Method SCSI interface rev 2.3 - SEND CCB TO XPT/SIM
|
|
AX = 8100h
|
|
ES:BX -> CAM Control Block (CCB) (see #03229)
|
|
Return: AH = status
|
|
00h successful
|
|
01h invalid CCB address (0000h:0000h)
|
|
Note: the SCSI Interface Module (SIM) may complete the requested function
|
|
and invoke the completion callback function before this call returns
|
|
SeeAlso: AX=8200h,INT 2F/AX=7F01h,INT 4B"Common Access Method"
|
|
|
|
(Table 03228)
|
|
Values for CAM function code:
|
|
00h NOP
|
|
01h execute SCSI I/O
|
|
02h get device type
|
|
03h path inquiry
|
|
04h release SIM queue
|
|
05h set async callback
|
|
06h set device type
|
|
07h-0Fh reserved
|
|
10h abort SCSI command
|
|
11h reset SCSI bus
|
|
12h reset SCSI device
|
|
13h terminate I/O process
|
|
14h-1Fh reserved
|
|
20h engine inquiry
|
|
21h execute engine request
|
|
22h-2Fh reserved
|
|
30h enable logical unit number
|
|
31h execute target I/O
|
|
32h-7Fh reserved
|
|
80h-FFh vendor-specific functions
|
|
|
|
Format of CAM Control Block:
|
|
Offset Size Description (Table 03229)
|
|
00h DWORD physical address of this CCB
|
|
04h WORD CAM control block length
|
|
06h BYTE function code (see #03228)
|
|
07h BYTE CAM status (see #03232)
|
|
08h BYTE SCSI status
|
|
09h BYTE path ID (FFh = XPT)
|
|
0Ah BYTE target ID
|
|
0Bh BYTE logical unit number
|
|
0Ch WORD CAM flags (see #03230)
|
|
0Eh BYTE CAM address flags (see #03231)
|
|
0Fh BYTE target-mode flags (see #03233)
|
|
---function 02h---
|
|
10h DWORD pointer to 36-byte buffer for inquiry data or 0000h:0000h
|
|
14h BYTE peripheral device type of target logical unit number
|
|
---function 03h---
|
|
10h BYTE version number (00h-07h prior to rev 1.7, 08h = rev 1.7,
|
|
09h-FFh = rev no, i.e. 23h = rev 2.3)
|
|
11h BYTE SCSI capabilities (see #03234)
|
|
12h BYTE target mode support
|
|
bit 7: processor mode
|
|
bit 6: phase-cognizant mode
|
|
bit 5-0: reserved
|
|
13h BYTE miscellaneous flags
|
|
bit 7: scanned high to low instead of low to high
|
|
bit 6: removables not included in scan
|
|
bit 5: inquiry data not kept by XPT
|
|
bits 4-0: reserved
|
|
14h WORD engine count
|
|
16h 14 BYTEs vendor-specific data
|
|
24h DWORD size of private data area
|
|
28h DWORD asynchronous event capabilities (see #03235)
|
|
2Ch BYTE highest path ID assigned
|
|
2Dh BYTE SCSI device ID of initiator
|
|
2Eh 2 BYTEs reserved
|
|
30h 16 BYTEs SIM vendor ID
|
|
40h 16 BYTEs HBA (host bus adaptor) vendor ID
|
|
50h 4 BYTEs operating-system dependant usage
|
|
---functions 00h,04h,11h,12h---
|
|
no additional fields
|
|
---function 05h---
|
|
10h DWORD asynchronous event enables (refer to function 03h above)
|
|
14h DWORD pointer to asynchronous callback routine (see #03241)
|
|
18h DWORD pointer to peripheral driver buffer
|
|
1Ch BYTE size of peripheral buffer
|
|
---function 06h---
|
|
10h BYTE peripheral device type of target
|
|
---functions 10h,13h---
|
|
10h DWORD pointer to CCB to be aborted
|
|
---function 20h---
|
|
10h WORD engine number
|
|
12h BYTE engine type
|
|
00h buffer memory
|
|
01h lossless compression
|
|
02h lossy compression
|
|
03h encryption
|
|
13h BYTE engine algorithm ID
|
|
00h vendor-unique
|
|
01h LZ1 variation 1 (STAC)
|
|
02h LZ2 variation 1 (HP DCZL)
|
|
03h LZ2 variation 2 (Infochip)
|
|
14h DWORD engine memory size
|
|
---function 21h---
|
|
10h DWORD pointer to peripheral driver
|
|
14h 4 BYTEs reserved
|
|
18h DWORD OS-dependent request-mapping info
|
|
1Ch DWORD address of completion callback routine
|
|
20h DWORD pointer to scatter/gather list or data buffer
|
|
24h DWORD length of data transfer
|
|
28h DWORD pointer to engine buffer data
|
|
2Ch 2 BYTEs reserved
|
|
2Eh WORD number of scatter/gather entries
|
|
30h DWORD maximum destination data length
|
|
34h DWORD length of destination data
|
|
38h DWORD source residual length
|
|
3Ch 12 BYTEs reserved
|
|
48h DWORD OS-dependent timeout value
|
|
4Ch 4 BYTEs reserved
|
|
50h WORD engine number
|
|
52h WORD vendor-unique flags
|
|
54h 4 BYTEs reserved
|
|
58h N BYTEs private data area for SIM
|
|
---function 30h---
|
|
10h WORD group 6 vendor-unique CDB length
|
|
12h WORD group 7 vendor-unique CDB length
|
|
14h DWORD pointer to target CCB list
|
|
18h WORD number of target CCBs
|
|
---other functions---
|
|
10h DWORD pointer to peripheral driver
|
|
14h DWORD pointer to next CCB
|
|
18h DWORD OS-dependent request mapping information
|
|
1Ch DWORD address of completion callback routine (see #03240)
|
|
20h DWORD pointer to scatter/gather list or data buffer
|
|
24h DWORD length of data transfer
|
|
28h DWORD pointer to sense info buffer
|
|
2Ch BYTE length of sense info buffer
|
|
2Dh BYTE CDB length
|
|
2Eh WORD number of scatter/gather entries
|
|
scatter/gather list is array of 2N DWORDs, each pair specifying
|
|
the address and length of a data block
|
|
30h 4 BYTEs vendor-specific data
|
|
34h BYTE (ret) SCSI status
|
|
35h BYTE (ret) auto-sense residual length
|
|
36h 2 BYTEs reserved
|
|
38h DWORD (ret) residual length
|
|
40h 12 BYTEs Command Descriptor Block (CDB) (see #03236,#03237,#03238)
|
|
44h DWORD OS-dependent timeout value
|
|
48h DWORD pointer to message buffer
|
|
4Ch WORD length of message buffer
|
|
4Eh WORD vendor-unique flags
|
|
50h BYTE tag queue action
|
|
51h 3 BYTEs reserved
|
|
54h N BYTEs private data area for SIM
|
|
|
|
Bitfields for CAM flags:
|
|
Bit(s) Description (Table 03230)
|
|
0 CDB is a pointer
|
|
1 tagged queue action enable
|
|
2 linked CDB
|
|
3 disable callback on completion
|
|
4 scatter/gather
|
|
5 disable autosense
|
|
7-6 direction (00 reserved, 01 in, 10 out, 11 no data transfer)
|
|
9-8 reserved
|
|
10 engine synchronize
|
|
11 SIM queue freeze
|
|
12 SIM queue priority
|
|
1 head insertion
|
|
0 tail insertion (normal)
|
|
13 disable synchronous transfers \ mutually
|
|
14 initiate synchronous transfers / exclusive
|
|
15 disable disconnect
|
|
|
|
Bitfields for CAM address flags:
|
|
Bit(s) Description (Table 03231)
|
|
7 SG list/data (0 = host, 1 = engine)
|
|
6 CDB pointer (6-1: 0=virtual addr, 1=phys addr)
|
|
5 SG list/data
|
|
4 sense buffer
|
|
3 message buffer
|
|
2 next CCB
|
|
1 callback on completion
|
|
0 reserved
|
|
|
|
(Table 03232)
|
|
Values for CAM status:
|
|
00h request in progress
|
|
01h request successful
|
|
02h host aborted request
|
|
03h unable to abort request
|
|
04h request completed with error
|
|
05h CAM is busy
|
|
06h invalid request
|
|
07h invalid path ID
|
|
08h no such SCSI device
|
|
09h unable to terminate I/O process
|
|
0Ah timeout on target selection
|
|
0Bh timeout on command
|
|
0Dh receive message rejection
|
|
0Eh sent/received SCSI bus reset
|
|
0Fh detected uncorrectable parity error
|
|
10h Autosense request failed
|
|
11h no HBA detected
|
|
12h data over/underrun
|
|
13h bus freed unexpectedly
|
|
14h target bus phase sequence failure
|
|
15h CCB too small
|
|
16h requested capability not available
|
|
17h sent bus device reset
|
|
18h terminate I/O process
|
|
38h invalid LUN
|
|
39h invalid target ID
|
|
3Ah unimplemented function
|
|
3Bh nexus not established
|
|
3Ch invalid initiator ID
|
|
3Dh received SCSI Command Descriptor Block
|
|
3Eh LUN already enabled
|
|
3Fh SCSI bus busy
|
|
Note: bit 6 set to indicate frozen SIM queue
|
|
bit 7 set to indicate valid autosense
|
|
|
|
Bitfields for CAM target-mode flags:
|
|
Bit(s) Description (Table 03233)
|
|
7 data buffer valid
|
|
6 status valid
|
|
5 message buffer valid
|
|
4 reserved
|
|
3 phase-cognizant mode
|
|
2 target CCB available
|
|
1 disable autodisconnect
|
|
0 disable autosave/restore
|
|
|
|
Bitfields for SCSI capabilities:
|
|
Bit(s) Description (Table 03234)
|
|
7 modify data pointers
|
|
6 wide bus (32 bits)
|
|
5 wide bus (16 bits)
|
|
4 synchronous transfers
|
|
3 linked commands
|
|
2 reserved
|
|
1 tagged queueing
|
|
0 soft reset
|
|
|
|
Bitfields for CAM asynchronous event capabilities:
|
|
Bit(s) Description (Table 03235)
|
|
31-24 vendor-specific
|
|
23-8 reserved
|
|
7 new devices found during rescan
|
|
6 SIM module deregistered
|
|
5 SIM module registered
|
|
4 sent bus device reset to target
|
|
3 SCSI AEN
|
|
2 reserved
|
|
1 unsolicited reselection
|
|
0 unsolicited SCSI bus reset
|
|
|
|
Format of Six-Byte SCSI Command Descriptor Block (CDB):
|
|
Offset Size Description (Table 03236)
|
|
00h BYTE operation code (see #03239)
|
|
01h BYTE logical unit number (bits 7-5), SCSI-1/SCSI-2
|
|
MSB of logical block address (bits 4-0)
|
|
02h WORD logical block address (low word)
|
|
04h BYTE transfer length
|
|
05h BYTE control byte
|
|
SeeAlso: #03237,#03238
|
|
|
|
Format of Ten-Byte SCSI Command Descriptor Block (CDB):
|
|
Offset Size Description (Table 03237)
|
|
00h BYTE operation code (see #03239)
|
|
01h BYTE logical unit number (bits 7-5), SCSI-1/SCSI-2
|
|
reserved in SCSI-3
|
|
02h DWORD logical block address (low word)
|
|
06h BYTE reserved
|
|
07h WORD transfer length
|
|
09h BYTE control byte
|
|
SeeAlso: #03236,#03238
|
|
|
|
Format of Twelve-Byte SCSI Command Descriptor Block (CDB):
|
|
Offset Size Description (Table 03238)
|
|
00h BYTE operation code (see #03239)
|
|
01h BYTE logical unit number (bits 7-5), SCSI-1/SCSI-2
|
|
reserved in SCSI-3
|
|
02h DWORD logical block address (low word)
|
|
06h DWORD transfer length
|
|
0Ah BYTE reserved
|
|
0Bh BYTE control byte
|
|
SeeAlso: #03236,#03237
|
|
|
|
(Table 03239)
|
|
Values for SCSI CDB operation code for direct-access devices:
|
|
00h Test Unit Ready
|
|
01h Rezero Unit
|
|
03h Request Sense
|
|
04h Format Unit
|
|
07h Reassign Blocks
|
|
08h Read (6-byte CDB)
|
|
0Ah Write (6-byte CDB)
|
|
0Bh Seek (6-byte CDB)
|
|
12h Inquiry
|
|
15h Mode Select (6-byte CDB)
|
|
16h Reserve
|
|
17h Release
|
|
18h Copy
|
|
1Ah Mode Sense (6-byte CDB)
|
|
1Bh Start/Stop Unit
|
|
1Ch Receive Diagnostic Results
|
|
1Dh Send Diagnostic
|
|
1Eh Prevent/Allow Medium Removal
|
|
25h Read Capacity
|
|
28h Read (10-byte CDB)
|
|
2Ah Write (10-byte CDB)
|
|
2Bh Seek (10-byte CDB)
|
|
2Eh Write and Verify
|
|
2Fh Verify
|
|
30h Search Data High
|
|
31h Search Data Equal
|
|
32h Search Data Low
|
|
33h Set Limits
|
|
34h Prefetch
|
|
35h Synchronize Cache
|
|
36h Lock/Unlock Cache
|
|
37h Read Defect Data
|
|
39h Compare
|
|
3Ah Copy and Verify
|
|
3Bh Write Buffer
|
|
3Ch Read Buffer
|
|
3Eh Read Long
|
|
3Fh Write Long
|
|
40h Change Definition
|
|
41h Write Same
|
|
4Ch Log Select
|
|
4Dh Log Sense
|
|
55h Mode Select (10-byte CDB)
|
|
5Ah Mode Sense (10-byte CDB)
|
|
SeeAlso: #03236,#03237,#03238
|
|
|
|
(Table 03240)
|
|
Values completion callback function is called with:
|
|
interrupts disabled
|
|
ES:BX -> completed CCB
|
|
|
|
(Table 03241)
|
|
Values asynchronous callback function is called with:
|
|
AH = opcode
|
|
AL = path ID generating callback
|
|
DH = target ID causing event
|
|
DL = LUN causing event
|
|
CX = data byte count (if applicable)
|
|
ES:BX -> data buffer (if applicable)
|
|
Return: all registers preserved
|
|
--------d-4F8200CX8765-----------------------
|
|
INT 4F - Common Access Method SCSI interface rev 2.3 - INSTALLATION CHECK
|
|
AX = 8200h
|
|
CX = 8765h
|
|
DX = CBA9h
|
|
Return: AH = 00h if installed
|
|
CX = 9ABCh
|
|
DX = 5678h
|
|
ES:DI -> "SCSI_CAM"
|
|
SeeAlso: AX=8100h,INT 4B"Common Access Method"
|
|
--------N-50---------------------------------
|
|
INT 50 - TIL Xpert AIM (X.25)
|
|
AH = function
|
|
--------H-50---------------------------------
|
|
INT 50 - IRQ0 relocated by DESQview
|
|
Range: INT 50 to INT F8, selected automatically
|
|
Notes: this is the default location for older versions; DESQview v2.26+
|
|
searches for unused ranges of interrupts and uses the lowest
|
|
available range in its list for relocating these IRQs and the next
|
|
lowest for relocating IRQ8-IRQ15
|
|
a range of eight interrupts starting at a multiple of 8 is considered
|
|
available if all vectors are identical and it has not been excluded
|
|
with an /XB:nn commandline switch
|
|
the list of ranges for v2.26 is 50h,58h,68h,78h,F8h (if < two of these
|
|
are available, F8h and then 50h are used anyway)
|
|
the list of ranges for v2.31+ is 68h,78h,88h-B8h,F8h (if < two of these
|
|
are available, F8h and then F0h are used anyway)
|
|
SeeAlso: INT 08"IRQ0",INT 51"DESQview",INT 54"DESQview",INT 58"DESQview"
|
|
SeeAlso: INT D8"Screen Thief"
|
|
--------H-50---------------------------------
|
|
INT 50 - IRQ0 relocated by IBM 3278 emulation control program
|
|
SeeAlso: INT 51"IBM 3278"
|
|
--------H-50---------------------------------
|
|
INT 50 - IRQ0 relocated by OS/2 v1.x
|
|
SeeAlso: INT 51"OS/2"
|
|
----------50---------------------------------
|
|
INT 50 - TI Professional PC - FATAL SOFTWARE ERROR TRAP
|
|
Desc: the default handler generates a System Error message and halts the
|
|
computer such that only Ctrl-Alt-Del can restart operation
|
|
Note: documented as "for system use only"; intended for multi-tasking
|
|
software
|
|
SeeAlso: INT 40"TI Professional",INT 4F"TI Professional"
|
|
SeeAlso: INT 51"TI Professional",INT 53"TI Professional"
|
|
--------V-500000-----------------------------
|
|
INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - OPEN TEXT WINDOW
|
|
AX = 0000h
|
|
ES:BX -> name string or ES:0000h if none
|
|
CH,CL = row,column of upper left corner
|
|
DH,DL = row,column of lower right corner
|
|
Return: AX = window handle or
|
|
0000h if not installed
|
|
FFFFh on error
|
|
SeeAlso: AX=0001h,AX=0002h"TEXT WINDOWS"
|
|
--------V-500001-----------------------------
|
|
INT 50 - Vanderaart TEXT WINDOWS, PC Thuis Shell - CLOSE TEXT WINDOW
|
|
AX = 0001h
|
|
DI = window handle
|
|
SeeAlso: AX=0000h
|
|
--------V-500002-----------------------------
|
|
INT 50 - Vanderaart TEXT WINDOWS - PUT CHARACTER IN WINDOW
|
|
AX = 0002h
|
|
BL = character
|
|
BH = attribute
|
|
DL = column
|
|
DH = row
|
|
DI = window handle
|
|
Return: AX = status
|
|
0000h if successful
|
|
FFFFh if outside window
|
|
SeeAlso: AX=0000h
|
|
--------l-500002-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - PLOT TEXT
|
|
AX = 0002h
|
|
ES:BX -> text string
|
|
DH,DL = row,column of upper left corner
|
|
DI = window handle
|
|
Return: AX = status
|
|
0000h successful (text fits in window)
|
|
FFFFh error
|
|
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
|
|
published in the June/July 1990 issue of PC Thuis Power magazine
|
|
--------V-500003-----------------------------
|
|
INT 50 - Vanderaart TEXT WINDOWS - OUTPUT LINE TO WINDOW
|
|
AX = 0003h
|
|
ES:BX -> text string
|
|
CX = string length (0000h if ASCIZ string)
|
|
DL = position (FFh centered, else flush left)
|
|
DH = starting row
|
|
DI = window handle
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh did not fit in window
|
|
--------l-500003-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - WRITE FILE
|
|
AX = 0003h
|
|
ES:BX -> data to be written
|
|
CX = number of bytes to write
|
|
DS:SI -> filename
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh error
|
|
SeeAlso: AX=0004h"Shell"
|
|
--------V-500004-----------------------------
|
|
INT 50 - Vanderaart TEXT WINDOWS - GET KEY
|
|
AX = 0004h
|
|
CH = type
|
|
00h any key
|
|
01h 'J' or 'N' (Dutch for yes/no)
|
|
Return: AX = key
|
|
SeeAlso: INT 16/AH=00h
|
|
--------l-500004-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - READ FILE
|
|
AX = 0004h
|
|
ES:BX -> buffer for data
|
|
CX = number of bytes to read or 0000h for entire file
|
|
DL = file type
|
|
01h setting shell
|
|
02h setting sterm
|
|
03h INT21 file
|
|
DS:SI -> filename
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh error
|
|
Note: file type numbers are maintained by John Vanderaart; if a new file type
|
|
is needed, a type number should be requested from him through the
|
|
magazine:
|
|
PC Thuis BV
|
|
Spaarne 55
|
|
2011 CE HAARLEM
|
|
The Netherlands
|
|
SeeAlso: AX=0003h"Shell"
|
|
--------V-500005-----------------------------
|
|
INT 50 - Vanderaart TEXT WINDOWS - CHANGE ATTRIBUTE
|
|
AX = 0005h
|
|
BL = new attribute
|
|
CH,CL = row,column of upper left corner
|
|
DH,DL = row,column of lower right corner
|
|
DI = window handle
|
|
--------l-500005-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - PROMPT YES/NO
|
|
AX = 0005h
|
|
ES:BX -> prompt string (ES:0000h if no prompt)
|
|
Return: AX = key pressed
|
|
0000h "J" (Dutch "Ja" = "Yes")
|
|
FFFFh "N" (Dutch "Nee" = "No")
|
|
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
|
|
published in the June/July 1990 issue of PC Thuis Power magazine
|
|
SeeAlso: AX=0008h"PC Thuis"
|
|
--------V-500006-----------------------------
|
|
INT 50 - Vanderaart TEXT WINDOWS - EDIT LINE IN WINDOW
|
|
AX = 0006h
|
|
ES:BX -> text string
|
|
CH = type of input (see #03242)
|
|
DH,DL = row,column of upper left corner
|
|
DI = window handle
|
|
Return: AX = key which terminated entry
|
|
0000h Enter
|
|
0001h Esc
|
|
0002h Down arrow
|
|
0003h Up arrow
|
|
0004h F10
|
|
|
|
(Table 03242)
|
|
Values for type of input to Vanderaart Text Windows:
|
|
00h everything
|
|
01h uppercase only
|
|
02h positive numbers
|
|
03h Dutch postal code ("9999 AA")
|
|
04h 'J' or 'N' (Dutch yes/no)
|
|
05h telephone or FAX number
|
|
06h positive or negative number
|
|
07h date (dd/mm/yy)
|
|
08h money
|
|
09h '1' through '8'
|
|
0Ah '1' through '4'
|
|
0Bh uppercase filenames
|
|
--------l-500006-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - ALERT USER
|
|
AX = 0006h
|
|
ES:BX -> string
|
|
--------l-500007-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - DO LINE
|
|
AX = 0007h
|
|
ES:BX -> text string
|
|
CX = string length in bytes (0000h if NUL-terminated)
|
|
DL = FFh to center string, else flush left
|
|
DH = upper left row
|
|
DI = window handle
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh error
|
|
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
|
|
published in the June/July 1990 issue of PC Thuis Power magazine
|
|
SeeAlso: AX=0008h
|
|
--------l-500008-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - DO MENU
|
|
AX = 0008h
|
|
ES:BX -> menu structure
|
|
Return: AL = index 1 or FFh if not selected
|
|
AH = index 2 or FFh if not selected
|
|
BL = index 3 or FFh if not selected
|
|
BH = index 4 or FFh if not selected
|
|
SeeAlso: AX=0005h"PC Thuis",AX=0007h,AX=000Ch
|
|
--------l-500009-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - MESSAGE ON
|
|
AX = 0009h
|
|
ES:BX -> message string
|
|
SeeAlso: AX=000Ah
|
|
--------l-50000A-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - MESSAGE OFF
|
|
AX = 000Ah
|
|
SeeAlso: AX=0009h
|
|
--------l-50000B-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - CHANGE ATTRIBUTE
|
|
AX = 000Bh
|
|
BL = new attribute
|
|
CH,CL = row,column of upper left corner
|
|
DH,DL = row,column of lower right corner
|
|
DI = window handle
|
|
--------l-50000C-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - DO REQUEST
|
|
AX = 000Ch
|
|
ES:BX -> request structure
|
|
Return: AX = status
|
|
0000h confirmed
|
|
FFFFh denied
|
|
SeeAlso: AX=0008h
|
|
--------l-50000D-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - EDIT LINE
|
|
AX = 000Dh
|
|
ES:BX -> text string
|
|
CL = length
|
|
CH = input type (see #03243)
|
|
DH,DL = row,column of upper left corner
|
|
DI = window handle
|
|
Return: AX = result code
|
|
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
|
|
published in the June/July 1990 issue of PC Thuis Power magazine
|
|
|
|
Bitfields for input type:
|
|
Bit(s) Description (Table 03243)
|
|
0 force uppercase
|
|
1 integer
|
|
2 no spaces allowed
|
|
3 no cursor keys
|
|
--------l-50000E-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - PLOT CHARACTER
|
|
AX = 000Eh
|
|
BL = character
|
|
BH = attribute
|
|
DH,DL = row,column at which to plot
|
|
DI = window handle
|
|
Return: AX = status
|
|
0000h successful
|
|
FFFFh errror
|
|
--------l-50000F-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - EMPTY WINDOW
|
|
AX = 000Fh
|
|
BL = character
|
|
BH = attribute
|
|
DI = window handle
|
|
--------l-500010-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - TRACE MENU
|
|
AX = 0010h
|
|
ES:BX -> first menu structure
|
|
CL = hotkey to look up
|
|
Return: AL = index 1 or FFh if not selected
|
|
AH = index 2 or FFh if not selected
|
|
BL = index 3 or FFh if not selected
|
|
BH = index 4 or FFh if not selected
|
|
Index: hotkeys;PC Thuis Organizer Shell
|
|
--------l-500011-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - MOVE MEMORY
|
|
AX = 0011h
|
|
DS:SI -> source
|
|
ES:DI -> destination
|
|
CX = number of bytes to move (0000h = until NUL string terminator???)
|
|
SeeAlso: AX=0012h
|
|
--------l-500012-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - COMPARE MEMORY
|
|
AX = 0012h
|
|
DS:SI -> source
|
|
ES:DI -> destination
|
|
CX = number of bytes to compare (0000h=until NUL string terminator???)
|
|
Return: AX = status
|
|
0000h same
|
|
FFFFh different
|
|
SeeAlso: AX=0011h
|
|
--------l-500013-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - GET KEY
|
|
AX = 0013h
|
|
CH = type flags
|
|
bit 0: force uppercase
|
|
bit 1: integer
|
|
bit 2: no spaces
|
|
Return: AX = keystroke
|
|
--------l-500014-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - SCROLL WINDOW
|
|
AX = 0014h
|
|
BL = direction
|
|
06h up
|
|
07h down
|
|
BH = attribute
|
|
DI = window handle
|
|
SeeAlso: INT 10/AH=06h,INT 10/AH=07h
|
|
--------l-500015-----------------------------
|
|
INT 50 - PC Thuis Organizer Shell - GET MEMORY HANDLE
|
|
AX = 0015h
|
|
BL = handle size
|
|
00h 65536 bytes (64K)
|
|
01h 65535 bytes (64K-1)
|
|
02h 32768 bytes (32K)
|
|
03h 32767 bytes (32K-1)
|
|
Return: AX = segment
|
|
Program: The PC Thuis Organizer Shell was written by John Vanderaart and
|
|
published in the June/July 1990 issue of PC Thuis Power magazine
|
|
SeeAlso: INT 21/AH=48h
|
|
--------!---Section--------------------------
|