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.