Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
back2root:ibm-pc-ms-dos:interrupts:ms_interrupt_list-22-30 [2023/01/05 03:46] – supprimée - modification externe (Unknown date) 127.0.0.1 | back2root:ibm-pc-ms-dos:interrupts:old:ms_interrupt_list-22-30 [2023/01/05 04:01] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== MSDOS - Interrupt List 22h-30h ====== | ||
+ | |||
+ | ----------22--------------------------------- | ||
+ | INT 22 - DOS 1+ - PROGRAM TERMINATION ADDRESS | ||
+ | | ||
+ | a program is terminated; should never be called directly, since it does not | ||
+ | point at an interrupt handler | ||
+ | Notes: this vector is restored from the DWORD at offset 0Ah in the PSP during | ||
+ | termination, | ||
+ | normally points at the instruction immediately following INT 21/AH=4Bh | ||
+ | call which loaded the current program | ||
+ | SeeAlso: INT 20,INT 21/ | ||
+ | ----------23--------------------------------- | ||
+ | INT 23 - DOS 1+ - CONTROL-C/ | ||
+ | | ||
+ | ---DOS 1.x--- | ||
+ | Return: AH = 00h abort program | ||
+ | if all registers preserved, restart DOS call | ||
+ | ---DOS 2+--- | ||
+ | Return: all registers preserved | ||
+ | return via RETF or RETF 2 with CF set | ||
+ | DOS will abort program with errorlevel 0 | ||
+ | else (RETF/RETF 2 with CF clear or IRET) | ||
+ | interrupted DOS call is restarted | ||
+ | Notes: | ||
+ | any DOS call may safely be made within the INT 23 handler, although | ||
+ | the handler must to check for a recursive invocation if it does | ||
+ | call DOS | ||
+ | SeeAlso: INT 1B | ||
+ | ----------24--------------------------------- | ||
+ | INT 24 - DOS 1+ - CRITICAL ERROR HANDLER | ||
+ | | ||
+ | never be called directly | ||
+ | |||
+ | Critical error handler is invoked with: | ||
+ | AH = type and processing flags | ||
+ | bit 7 clear = disk I/O error | ||
+ | set = -- if block device, bad FAT image in memory | ||
+ | -- if char device, error code in DI | ||
+ | bit 6 unused | ||
+ | bit 5 = 1 if Ignore allowed, 0 if not (DOS 3+) | ||
+ | bit 4 = 1 if Retry allowed, 0 if not (DOS 3+) | ||
+ | bit 3 = 1 if Fail allowed, 0 if not (DOS 3+) | ||
+ | bit 2 \ disk area of error 00 = DOS area 01 = FAT | ||
+ | bit 1 / 10 = root dir 11 = data area | ||
+ | bit 0 = 1 if write, 0 if read | ||
+ | AL = drive number if AH bit 7 clear | ||
+ | BP:SI -> device driver header (BP:[SI+4] bit 15 set if char device) | ||
+ | DI low byte contains error code if AH bit 7 set | ||
+ | 00h write-protection violation attempted | ||
+ | 01h unknown unit for driver | ||
+ | 02h drive not ready | ||
+ | 03h unknown command given to driver | ||
+ | 04h data error (bad CRC) | ||
+ | 05h bad device driver request structure length | ||
+ | 06h seek error | ||
+ | 07h unknown media type | ||
+ | 08h sector not found | ||
+ | 09h printer out of paper | ||
+ | 0Ah write fault | ||
+ | 0Bh read fault | ||
+ | 0Ch general failure | ||
+ | 0Dh (DOS 3+) sharing violation | ||
+ | 0Eh (DOS 3+) lock violation | ||
+ | 0Fh invalid disk change | ||
+ | 10h (DOS 3+) FCB unavailable | ||
+ | 11h (DOS 3+) sharing buffer overflow | ||
+ | 12h (DOS 4+) code page mismatch | ||
+ | 13h (DOS 4+) out of input | ||
+ | 14h (DOS 4+) insufficient disk space | ||
+ | STACK: | ||
+ | WORD flags pushed by INT 24 | ||
+ | WORD original AX on entry to INT 21 | ||
+ | WORD BX | ||
+ | WORD CX | ||
+ | WORD DX | ||
+ | WORD SI | ||
+ | WORD DI | ||
+ | WORD BP | ||
+ | WORD DS | ||
+ | WORD ES | ||
+ | DWORD return address for INT 21 call | ||
+ | WORD flags pushed by INT 21 | ||
+ | Handler must return: | ||
+ | AL = action code | ||
+ | 00h ignore error and continue processing request | ||
+ | 01h retry operation | ||
+ | 02h terminate program through the equivalent of INT 21/AH=4Ch | ||
+ | (INT 20h for DOS 1.x) | ||
+ | 03h fail system call in progress | ||
+ | SS, | ||
+ | Notes: the only DOS calls the handler may make are INT 21/ | ||
+ | if the handler returns to the application by popping the stack, DOS | ||
+ | will be in an unstable state until the first call with AH > 0Ch | ||
+ | for DOS 3.1+, IGNORE (AL=00h) is turned into FAIL (AL=03h) on network | ||
+ | critical errors | ||
+ | if IGNORE specified but not allowed, it is turned into FAIL | ||
+ | if RETRY specified but not allowed, it is turned into FAIL | ||
+ | if FAIL specified but not allowed, it is turned into ABORT | ||
+ | (DOS 3+) if a critical error occurs inside the critical error handler, | ||
+ | the DOS call is automatically failed | ||
+ | ----------25--------------------------------- | ||
+ | INT 25 - DOS 1+ - ABSOLUTE DISK READ (except partitions > 32M) | ||
+ | AL = drive number (00h = A:, 01h = B:, etc) | ||
+ | CX = number of sectors to read | ||
+ | DX = starting logical sector number (0000h - highest sector on drive) | ||
+ | DS:BX -> buffer for data | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AH = status | ||
+ | 80h device failed to respond (timeout) | ||
+ | 40h seek operation failed | ||
+ | 20h controller failed | ||
+ | 10h data error (bad CRC) | ||
+ | 08h DMA failure | ||
+ | 04h requested sector not found | ||
+ | 03h write-protected disk (INT 26 only) | ||
+ | 02h bad address mark | ||
+ | 01h bad command | ||
+ | AL = error code (same as passed to INT 24 in DI) | ||
+ | may destroy all other registers except segment registers | ||
+ | Notes: | ||
+ | this call bypasses the DOS filesystem | ||
+ | BUG: DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an | ||
+ | invalid drive number | ||
+ | SeeAlso: INT 13/ | ||
+ | ----------25--------------------------------- | ||
+ | INT 25 - DOS 3.31+ - ABSOLUTE DISK READ (>32M hard-disk partition) | ||
+ | AL = drive number (0=A, 1=B, etc) | ||
+ | CX = FFFFh | ||
+ | DS:BX -> disk read packet (see below) | ||
+ | Return: same as above | ||
+ | Notes: | ||
+ | bit 1 of device attribute word in device driver is set | ||
+ | original flags are left on stack, and must be removed by caller | ||
+ | this call bypasses the DOS filesystem | ||
+ | SeeAlso: INT 13/ | ||
+ | |||
+ | Format of disk read packet: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------25CDCD----------------------------- | ||
+ | INT 25 - Stacker - GET DEVICE DRIVER ADDRESS | ||
+ | AX = CDCDh | ||
+ | DS:BX -> buffer for address (see below) | ||
+ | CX = 0001h | ||
+ | DX = 0000h | ||
+ | Return: AX = CDCDh if Stacker installed | ||
+ | DS:BX buffer filled | ||
+ | |||
+ | Format of driver address buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of device driver: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | (list of WORDs, one per drive, containing offsets to various | ||
+ | information) | ||
+ | 06h 56 BYTEs n/a | ||
+ | | ||
+ | (use to index into volume-specific info offset table) | ||
+ | 3Fh 19 BYTEs n/a | ||
+ | | ||
+ | 56h 26 BYTEs drive mapping table (one byte for each drive A: through Z:) | ||
+ | |||
+ | Format of Stacker boot record: | ||
+ | Offset Size Description | ||
+ | 1F0h 8 BYTEs Stacker signature (first byte is CDh) | ||
+ | 1F8h DWORD pointer to start of Stacker device driver | ||
+ | 1FCh WORD Stacker volume number | ||
+ | 1FEh WORD ??? | ||
+ | ----------25----ALFF------------------------- | ||
+ | INT 25 - PC-CACHE.SYS - INSTALLATION CHECK | ||
+ | AL = FFh | ||
+ | SI = 4358h | ||
+ | Return: SI = 6378h if installed | ||
+ | CX = segment of device driver PC-CACHE.SYS | ||
+ | DX = version (major in DH, minor in DL) | ||
+ | Note: | ||
+ | access to certain disk drivers for devices such as Bernoulli drives | ||
+ | SeeAlso: INT 13/AH=A0h | ||
+ | ----------26--------------------------------- | ||
+ | INT 26 - DOS 1+ - ABSOLUTE DISK WRITE (except partitions > 32M) | ||
+ | AL = drive number (00h = A:, 01h = B:, etc) | ||
+ | CX = number of sectors to write | ||
+ | DX = starting logical sector number (0000h - highest sector on drive) | ||
+ | DS:BX -> data to write | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AH = status | ||
+ | 80h device failed to respond (timeout) | ||
+ | 40h seek operation failed | ||
+ | 20h controller failed | ||
+ | 10h data error (bad CRC) | ||
+ | 08h DMA failure | ||
+ | 04h requested sector not found | ||
+ | 03h write-protected disk (INT 26 only) | ||
+ | 02h bad address mark | ||
+ | 01h bad command | ||
+ | AL = error code (same as passed to INT 24 in DI) | ||
+ | may destroy all other registers except segment registers | ||
+ | Notes: | ||
+ | this call bypasses the DOS filesystem | ||
+ | BUG: DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an | ||
+ | invalid drive number | ||
+ | SeeAlso: INT 13/ | ||
+ | ----------26--------------------------------- | ||
+ | INT 26 - DOS 3.31+ - ABSOLUTE DISK WRITE (>32M hard-disk partition) | ||
+ | AL = drive number (0=A, 1=B, etc) | ||
+ | CX = FFFFh | ||
+ | DS:BX -> disk write packet (see below) | ||
+ | Return: same as above | ||
+ | Notes: | ||
+ | bit 1 of device attribute word in device driver is set | ||
+ | original flags are left on stack, and must be removed by caller | ||
+ | this call bypasses the DOS filesystem | ||
+ | SeeAlso: INT 13/ | ||
+ | |||
+ | Format of disk write packet: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------27--------------------------------- | ||
+ | INT 27 - DOS 1+ - TERMINATE AND STAY RESIDENT | ||
+ | DX = number of bytes to keep resident (max FFF0h) | ||
+ | CS = segment of PSP | ||
+ | Return: never | ||
+ | Notes: this is an obsolete call | ||
+ | INT 22, INT 23, and INT 24 are restored from the PSP | ||
+ | does not close any open files | ||
+ | the minimum number of bytes which will remain resident is 110h for | ||
+ | DOS 2.x and 60h for DOS 3+; there is no minimum for DOS 1.x, which | ||
+ | implements this service in COMMAND.COM rather than the DOS kernel | ||
+ | SeeAlso: INT 21/AH=31h | ||
+ | ----------28--------------------------------- | ||
+ | INT 28 - DOS 2+ - DOS IDLE INTERRUPT | ||
+ | | ||
+ | | ||
+ | | ||
+ | to allow a TSR to perform DOS calls while the foreground program is | ||
+ | | ||
+ | | ||
+ | (the byte immediately after the InDOS flag) must be set in order to call | ||
+ | DOS functions 50h/51h without destroying the DOS stacks. | ||
+ | |||
+ | Notes: | ||
+ | at the time of the call, the InDOS flag (see INT 21/AH=34h) is normally | ||
+ | set to 01h; if larger, DOS is truly busy and should not be reentered | ||
+ | the default handler is an IRET instruction | ||
+ | supported in OS/2 compatibility box | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------29--------------------------------- | ||
+ | INT 29 - DOS 2+ - FAST CONSOLE OUTPUT | ||
+ | AL = character to display | ||
+ | Return: nothing | ||
+ | Notes: | ||
+ | driver header set (see also INT 21/AH=52h) | ||
+ | COMMAND.COM v3.2 and v3.3 compare the INT 29 vector against the INT 20 | ||
+ | vector and assume that ANSI.SYS is installed if the segment is larger | ||
+ | the default handler under DOS 2.x and 3.x simply calls INT 10/AH=0Eh | ||
+ | the default handler under DESQview 2.2 understands the < | ||
+ | screen-clearing sequence, calls INT 10/AH=0Eh for all others | ||
+ | SeeAlso: INT 79 | ||
+ | ----------2A00------------------------------- | ||
+ | INT 2A - NETWORK (Microsoft, LANtastic) - INSTALLATION CHECK | ||
+ | AH = 00h | ||
+ | Return: AH <> 00h if installed | ||
+ | SeeAlso: INT 5C | ||
+ | ----------2A0000----------------------------- | ||
+ | INT 2A - AT&T Starlan Extended NetBIOS (var length names) - INSTALLATION CHECK | ||
+ | AX = 0000h | ||
+ | Return: AH = DDh | ||
+ | SeeAlso: INT 5B | ||
+ | ----------2A01------------------------------- | ||
+ | INT 2A - NETWORK (Microsoft, | ||
+ | AH = 01h | ||
+ | ES:BX -> NCB (see INT 5C) | ||
+ | Return: AL = NetBIOS error code | ||
+ | AH = 00h if no error | ||
+ | = 01h on error | ||
+ | SeeAlso: AH=04h, | ||
+ | ----------2A02------------------------------- | ||
+ | INT 2A - NETWORK (Microsoft) - SET NET PRINTER MODE | ||
+ | AH = 02h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2A0300----------------------------- | ||
+ | INT 2A - NETWORK (Microsoft, | ||
+ | AX = 0300h | ||
+ | DS:SI -> ASCIZ device name (may be full path or only drive specifier-- | ||
+ | must include the colon) | ||
+ | Return: CF clear if direct physical addressing (INT 13,INT 25) permissible | ||
+ | CF set if access via files only | ||
+ | Notes: do not use direct disk accesses if this function returns CF set or the | ||
+ | device is redirected (INT 21/ | ||
+ | may take some time to execute | ||
+ | called by DOS kernel on INT 25 and INT 26 | ||
+ | SeeAlso: INT 13,INT 25,INT 26,INT 21/AX=5F02h | ||
+ | ----------2A04------------------------------- | ||
+ | INT 2A - NETWORK (Microsoft, | ||
+ | AH = 04h | ||
+ | AL = error retry | ||
+ | 00h automatically retry request on errors 09h, 12h, and 21h | ||
+ | 01h no retry | ||
+ | ES:BX -> Network Control Block (see INT 5C" | ||
+ | Return: AX = 0000h if successful | ||
+ | AH = 01h on error | ||
+ | AL = error code | ||
+ | Note: | ||
+ | SeeAlso: AH=01h, | ||
+ | ----------2A0500----------------------------- | ||
+ | INT 2A - NETWORK (Microsoft, | ||
+ | AX = 0500h | ||
+ | Return: AX reserved | ||
+ | BX = number of network names available | ||
+ | CX = number of network control blocks available | ||
+ | DX = number of network sessions available | ||
+ | SeeAlso: AH=01h, | ||
+ | ----------2A06------------------------------- | ||
+ | INT 2A - NETBIOS, LANtastic - NETWORK PRINT-STREAM CONTROL | ||
+ | AH = 06h | ||
+ | AL = 01h set concatenation mode (all printer output put in one job) | ||
+ | 02h set truncation mode (default) | ||
+ | printer open/close starts new print job | ||
+ | 03h flush printer output and start new print job | ||
+ | Return: CF set on error | ||
+ | AX = error code | ||
+ | CF clear if successful | ||
+ | Notes: | ||
+ | LANtastic v4.x no longer supports this call | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2A2001----------------------------- | ||
+ | INT 2A - MS Networks or NETBIOS - ??? | ||
+ | AX = 2001h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------2A2002----------------------------- | ||
+ | INT 2A - NETWORK - ??? | ||
+ | AX = 2002h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------2A2003----------------------------- | ||
+ | INT 2A - NETWORK - ??? | ||
+ | AX = 2003h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------2A7802----------------------------- | ||
+ | INT 2A - NETWORK - PC LAN PROG v1.31+ - GET LOGGED ON USER NAME | ||
+ | AX = 7802h | ||
+ | ES:DI -> 8-byte buffer to be filled | ||
+ | Return: AL = 00h if no user logged on to Extended Services | ||
+ | AL <> 00h if user logged on to Extended Services | ||
+ | buffer at ES:DI filled with name, padded to 8 chars with blanks. | ||
+ | ----------2A80------------------------------- | ||
+ | INT 2A - NETWORK - BEGIN DOS CRITICAL SECTION | ||
+ | AH = 80h | ||
+ | AL = critical section number (00h-0Fh) | ||
+ | 01h DOS kernel, SHARE.EXE | ||
+ | apparently for maintaining the integrity of DOS/ | ||
+ | data structures | ||
+ | 02h DOS kernel | ||
+ | ensures that no multitasking occurs while DOS is calling an | ||
+ | installable device driver | ||
+ | 05h DOS 4.x only IFSFUNC | ||
+ | 06h DOS 4.x only IFSFUNC | ||
+ | 08h ASSIGN.COM | ||
+ | 0Ah MSCDEX | ||
+ | Notes: | ||
+ | called | ||
+ | the handler should ensure that none of the critical sections are | ||
+ | reentered, usually by suspending a task which attempts to reenter | ||
+ | an active critical section | ||
+ | the DOS kernel does not invoke critical sections 01h and 02h unless it | ||
+ | is patched. | ||
+ | words beginning at offset 02C3h in the IBMDOS segment; each word | ||
+ | contains the offset within the IBMDOS segment of a byte which must | ||
+ | be changed from C3h to 50h to enable use of critical sections. | ||
+ | SeeAlso: AH=81h, | ||
+ | ----------2A81------------------------------- | ||
+ | INT 2A - NETWORK - END DOS CRITICAL SECTION | ||
+ | AH = 81h | ||
+ | AL = critical section number (00h-0Fh) (see AH=80h) | ||
+ | Notes: | ||
+ | the handler should reawaken any tasks which were suspended due to an | ||
+ | attempt to enter the specified critical section | ||
+ | SeeAlso: AH=80h, | ||
+ | ----------2A82------------------------------- | ||
+ | INT 2A - NETWORK - END DOS CRITICAL SECTIONS 0 THROUGH 7 | ||
+ | AH = 82h | ||
+ | Notes: | ||
+ | greater than 0Ch except 59h, and on process termination | ||
+ | the handler should reawaken any tasks which were suspended due to an | ||
+ | attempt to enter one of the critical sections 0 through 7 | ||
+ | SeeAlso: AH=81h | ||
+ | ----------2A84------------------------------- | ||
+ | INT 2A - Microsoft Networks - KEYBOARD BUSY LOOP | ||
+ | AH = 84h | ||
+ | Note: | ||
+ | loop to allow network to process requests | ||
+ | SeeAlso: INT 28 | ||
+ | ----------2A87------------------------------- | ||
+ | INT 2A - PRINT??? - CRITICAL SECTION | ||
+ | AH = 87h | ||
+ | AL = start/end | ||
+ | 00h start | ||
+ | 01h end | ||
+ | Note: | ||
+ | SeeAlso: AH=80h, | ||
+ | ----------2A89------------------------------- | ||
+ | INT 2A - Network - ??? | ||
+ | AH = 89h | ||
+ | AL = ??? (ASSIGN uses 08h) | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2A90------------------------------- | ||
+ | INT 2A - IBM PC 3270 EMULATION PROGRAM - ??? | ||
+ | AH = 90h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: the LANtastic redirector and SERVER.EXE use this function with AL=01h, | ||
+ | 03h-07h, | ||
+ | ----------2AC2------------------------------- | ||
+ | INT 2A - Network - ??? | ||
+ | AH = C2h | ||
+ | AL = subfunction | ||
+ | 07h ??? | ||
+ | 08h ??? | ||
+ | BX = 0001h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------2AFF90----------------------------- | ||
+ | INT 2A - PC/TCP PREDIR.EXE - ??? | ||
+ | AX = FF90h | ||
+ | Return: AX = ??? | ||
+ | Note: | ||
+ | PC/TCP system by FTP Software, Inc. | ||
+ | ----------2AFF91----------------------------- | ||
+ | INT 2A - PC/TCP PREDIR.EXE - ??? | ||
+ | AX = FF91h | ||
+ | BX = ??? | ||
+ | Return: AX = status??? | ||
+ | ----------2AFF92----------------------------- | ||
+ | INT 2A - PC/TCP PREDIR.EXE - INSTALLATION CHECK | ||
+ | AX = FF92h | ||
+ | Return: AX = 0000h if installed | ||
+ | BX = redirected printer port (FFFFh if no printers redirected) | ||
+ | CX = version (CH = major, CL = minor) | ||
+ | Note: | ||
+ | PC/TCP system by FTP Software, Inc. | ||
+ | ----------2AFF93----------------------------- | ||
+ | INT 2A - PC/TCP PREDIR.EXE - ??? | ||
+ | AX = FF93h | ||
+ | Return: AX = ??? | ||
+ | ----------2AFF94----------------------------- | ||
+ | INT 2A - PC/TCP PREDIR.EXE - ??? | ||
+ | AX = FF94h | ||
+ | BX = ??? | ||
+ | CX = ??? | ||
+ | DX = ??? | ||
+ | Return: AX = ??? | ||
+ | Note: | ||
+ | PC/TCP system by FTP Software, Inc. | ||
+ | ----------2AFF95----------------------------- | ||
+ | INT 2A - PC/TCP PREDIR.EXE - GET CONFIGURATION STRINGS | ||
+ | AX = FF95h | ||
+ | CX = what to get | ||
+ | 0000h ??? (returned pointer to " | ||
+ | 0001h spooling program | ||
+ | 0002h ??? | ||
+ | 0003h spool file name | ||
+ | 0004h swap file name | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | BX:DX -> ASCIZ configuration string | ||
+ | ----------2AFF96----------------------------- | ||
+ | INT 2A - PC/TCP PREDIR.EXE - SET PRINT JOB TERMINATION CONFIGURATION | ||
+ | AX = FF96h | ||
+ | CX = what to set | ||
+ | 0000h ??? | ||
+ | 0001h print-on-hotkey state | ||
+ | 0002h print-on-exit state | ||
+ | 0003h print job timeout in clock ticks | ||
+ | 0004h print-on-EOF state | ||
+ | BX = new value (0000h disabled, 0001h enabled except for timeout) | ||
+ | Return: AX = ??? | ||
+ | SeeAlso: AX=FF97h | ||
+ | Note: | ||
+ | PC/TCP system by FTP Software, Inc. | ||
+ | ----------2AFF97----------------------------- | ||
+ | INT 2A - PC/TCP PREDIR.EXE - GET PRINT JOB TERMINATION CONFIGURATION | ||
+ | AX = FF97h | ||
+ | CX = what to get | ||
+ | 0000h ??? | ||
+ | 0001h print-on-hotkey state | ||
+ | 0002h print-on-exit state | ||
+ | 0003h print job timeout in clock ticks | ||
+ | 0004h print-on-EOF state | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | BX = old value (0000h disabled, 0001 enabled except for timeout) | ||
+ | SeeAlso: AX=FF96h | ||
+ | ----------2B--------------------------------- | ||
+ | INT 2B - DOS 2+ - RESERVED | ||
+ | Note: this vector is not used in DOS versions <= 5.00, and points at an IRET | ||
+ | ----------2C--------------------------------- | ||
+ | INT 2C - DOS 2+ - RESERVED | ||
+ | Note: this vector is not used in DOS versions <= 5.00, and points at an IRET | ||
+ | ----------2C--------------------------------- | ||
+ | INT 2C - STARLITE architecture - KERNEL API | ||
+ | Note: | ||
+ | compatible operating systems (OEM DOS, NETWORK DOS, and SMP DOS) to | ||
+ | be released in 1991. The interrupt number is subject to change | ||
+ | before the actual release. | ||
+ | ----------2D--------------------------------- | ||
+ | INT 2D - DOS 2+ - RESERVED | ||
+ | Note: this vector is not used in DOS versions <= 5.00, and points at an IRET | ||
+ | ----------2D--------------------------------- | ||
+ | INT 2D - ALTERNATE MULTIPLEX INTERRUPT SPECIFICATION (AMIS) [proposal v3.4] | ||
+ | AH = multiplex number | ||
+ | AL = function | ||
+ | 00h installation check | ||
+ | Return: AL = FFh if multiplex number in use | ||
+ | CX = version number (CH = major, CL = minor) | ||
+ | DX:DI -> signature string (see below) identifying | ||
+ | the program using the multiplex number | ||
+ | AL = 00h if free | ||
+ | 01h get entry point | ||
+ | Return: AL = FFh if entry point supported | ||
+ | DX:BX -> entry point for bypassing interrupt chain | ||
+ | AL = 00h if all API calls via INT 2D | ||
+ | 02h uninstall | ||
+ | DX:BX = return address for successful uninstall (may be | ||
+ | ignored by TSR) | ||
+ | Return: AL = status | ||
+ | 00h not implemented | ||
+ | 01h unsuccessful | ||
+ | 02h can not uninstall yet, will do so when able | ||
+ | 03h safe to remove, but no resident uninstaller | ||
+ | (TSR still enabled) | ||
+ | BX = segment of memory block with resident code | ||
+ | 04h safe to remove, but no resident uninstaller | ||
+ | (TSR now disabled) | ||
+ | BX = segment of memory block with resident code | ||
+ | 05h not safe to remove now, try again later | ||
+ | FFh successful | ||
+ | return at DX:BX with AX destroyed if successful and | ||
+ | TSR honors specific return address | ||
+ | 03h request pop-up | ||
+ | Return: AL = status | ||
+ | 00h not implemented or TSR is not a pop-up | ||
+ | 01h can not pop up at this time, try again later | ||
+ | 02h can not pop up yet, will do so when able | ||
+ | 03h already popped up | ||
+ | 04h unable to pop up, user intervention required | ||
+ | BX = standard reason code | ||
+ | 0000h unknown failure | ||
+ | 0001h interrupt chain passes through memory | ||
+ | which must be swapped out to pop up | ||
+ | 0002h swap-in failed | ||
+ | CX = application' | ||
+ | FFh TSR popped up and was exited by user | ||
+ | BX = return value | ||
+ | 0000h no return value | ||
+ | 0001h TSR unloaded | ||
+ | 0002h-00FFh reserved | ||
+ | 0100h-FFFFh application-dependent | ||
+ | 04h determine chained interrupts | ||
+ | BL = interrupt number (except 2Dh) | ||
+ | Return: AL = status | ||
+ | 00h not implemented | ||
+ | 01h unable to determine | ||
+ | 02h interrupt hooked | ||
+ | 03h interrupt hooked, address returned | ||
+ | DX:BX -> TSR's interrupt BL handler | ||
+ | 04h list of hooked interrupts returned | ||
+ | DX:BX -> interrupt hook list (see below) | ||
+ | FFh interrupt not hooked | ||
+ | Notes: | ||
+ | need not test for BL=2Dh (to minimize its size), and | ||
+ | the return value is therefore undefined in that case. | ||
+ | BL is ignored if the TSR returns AL=04h; in that case, | ||
+ | the caller needs to scan the return list rather than | ||
+ | making additional calls to this function. | ||
+ | return is not 00h or 04h, then the caller must cycle | ||
+ | through the remaining interrupt numbers it wishes to | ||
+ | check. | ||
+ | return values 01h thru 03h are disparaged and may be | ||
+ | removed from future versions of the specification; | ||
+ | they are included for compatibility with version 3.3 | ||
+ | 05h-0Fh reserved for future enhancements | ||
+ | Return: AL = 00h (not implemented) | ||
+ | other application-dependent | ||
+ | Notes: | ||
+ | should scan all multiplex numbers from 00h to FFh, remembering the | ||
+ | first unused multiplex in case the program is not yet installed. | ||
+ | For multiplex numbers which are in use, the program should compare | ||
+ | the first 16 bytes of the signature string to determine whether it | ||
+ | is already installed on that multiplex number. | ||
+ | installed, it should use the first free multiplex number. | ||
+ | functions other than 00h are not valid unless a program is installed | ||
+ | on the selected multiplex number | ||
+ | to be considered fully compliant with version 3.4 of the specification, | ||
+ | programs must implement at least functions 00h, 02h (no resident | ||
+ | uninstall code required), and 04h (return value 04h). The absolute | ||
+ | minimum implementation has an overhead of 64 bytes plus 22 bytes per | ||
+ | hooked interrupt (for the interrupt sharing protocol header and hook | ||
+ | list entry). | ||
+ | the signature string and description may be used by memory mappers | ||
+ | to display the installed programs | ||
+ | users of this proposal should adhere to the IBM interrupt sharing | ||
+ | protocol (see below), which will permit removal of TSRs in | ||
+ | arbitrary order and interrupt handler reordering. | ||
+ | following this proposal should be removable, though they need not | ||
+ | keep the code for removing themselves resident; it is acceptable | ||
+ | for a separate program to perform the removal. | ||
+ | A sample implementation including example TSRs and utility programs | ||
+ | may be found in a separate package distributed as AMISLnnn.ZIP | ||
+ | (AMISL081.ZIP as of this writing). | ||
+ | Please let me know if you choose to follow this proposal. | ||
+ | the private API calls you use would be appreciated, | ||
+ | SeeAlso: INT 2F | ||
+ | |||
+ | Format of signature string: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | 10h 64 BYTEs ASCIZ product description (optional, may be a single 00h) | ||
+ | Note: it is not necessary to reserve a full 64 bytes for the description, | ||
+ | just enough to store the actual ASCIZ string | ||
+ | |||
+ | Format of interrupt hook list [array]: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | sharing protocol header (see below) | ||
+ | |||
+ | Format of interrupt sharing protocol interrupt handler entry point: | ||
+ | Offset Size Description | ||
+ | | ||
+ | following this data block (EBh 10h) | ||
+ | | ||
+ | | ||
+ | | ||
+ | 00h software interrupt or secondary hardware interrupt handler | ||
+ | 80h primary hardware interrupt handler (will issue EOI) | ||
+ | | ||
+ | must point at a valid FAR procedure (may be just RETF) | ||
+ | | ||
+ | |||
+ | Signatures known to be in use: | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | | ||
+ | ' | ||
+ | ----------2E--------------------------------- | ||
+ | INT 2E - DOS 2+ - PASS COMMAND TO COMMAND INTERPRETER FOR EXECUTION | ||
+ | DS:SI -> commandline to execute (see below) | ||
+ | Return: all registers except CS:IP destroyed | ||
+ | AX = status (4DOS v4.0) | ||
+ | 0000h successful | ||
+ | FFFFh error before processing command (not enough memory, etc) | ||
+ | other error number returned by command | ||
+ | Notes: this call allows execution of arbitrary commands (including COMMAND.COM | ||
+ | internal commands) without loading another copy of COMMAND.COM | ||
+ | if COMMAND.COM is the user's command interpreter, | ||
+ | executes the command; this allows the master environment to be | ||
+ | modified by issuing a " | ||
+ | environment will not become effective until all programs descended | ||
+ | from the primary COMMAND.COM terminate | ||
+ | since COMMAND.COM processes the string as if typed from the keyboard, | ||
+ | the transient portion needs to be present, and the calling program | ||
+ | must ensure that sufficient memory to load the transient portion can | ||
+ | be allocated by DOS if necessary | ||
+ | results are unpredictable if invoked by a program run from a batch file | ||
+ | because this call is not reentrant and COMMAND.COM uses the same | ||
+ | internal variables when processing a batch file | ||
+ | hooked but ignored by 4DOS v3.0 COMMAND.COM replacement unless SHELL2E | ||
+ | has been loaded | ||
+ | |||
+ | Format of commandline: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | N BYTE 0Dh (CR) | ||
+ | ----------2E----BXE22E----------------------- | ||
+ | INT 2E - 4DOS v2.x-3.03 SHELL2E.COM - UNINSTALL | ||
+ | BX = E22Eh | ||
+ | DS:SI -> zero byte | ||
+ | Return: if successful, SHELL2E terminates itself with INT 21/AH=4Ch | ||
+ | ----------2F--------------------------------- | ||
+ | INT 2F - Multiplex - NOTES | ||
+ | AH = identifier of program which is to handle the interrupt | ||
+ | | ||
+ | | ||
+ | AL is the function code | ||
+ | This is a general mechanism for verifying the presence of a TSR and | ||
+ | | ||
+ | using the installation check (AL=00h), the calling program should set | ||
+ | | ||
+ | and SS:SP to be valid on return, since numerous programs now use additional | ||
+ | | ||
+ | Note: Since the multiplex chain is growing so long, and beginning to | ||
+ | experience multiplex number collisions, I am proposing an alternate | ||
+ | multiplex interrupt on INT 2D. If you decide to use the alternate | ||
+ | multiplex, please let me know. | ||
+ | SeeAlso: INT 2D | ||
+ | ----------2F--------------------------------- | ||
+ | INT 2F - BMB Compuscience Canada Utilities Interface | ||
+ | AH = xx (dynamically assigned based upon a search for a multiplex | ||
+ | number which doesn' | ||
+ | AL = 00h installation check | ||
+ | ES:DI = EBEBh:BEBEh | ||
+ | Return: AL = 00h not installed | ||
+ | 01h not installed, not OK to install | ||
+ | FFh installed; if ES:DI was EBEBh:BEBEh on entry, ES:DI will point | ||
+ | to a string of the form ' | ||
+ | short form of the manufacturer' | ||
+ | name and NNNN is the product' | ||
+ | ----------2F--------------------------------- | ||
+ | INT 2F - Ross Wentworth' | ||
+ | AH = programmer-selected multiplex number | ||
+ | AL = function | ||
+ | 00h installation check | ||
+ | Return: AL = FFh if installed | ||
+ | 01h get TSR interrupt vectors | ||
+ | Return: DX:AX -> vector table (see below) | ||
+ | 02h get TSR code segment | ||
+ | Return: AX = code segment for all interrupt handlers | ||
+ | 03h call user exit routine and release TSR's memory | ||
+ | 04h get signature string | ||
+ | Return: DX:AX -> counted string containing signature | ||
+ | 05h get TSR's INT 2F handler | ||
+ | Return: DX:AX -> INT 2F handler | ||
+ | 06h enable/ | ||
+ | BL = new state (00h disabled, 01h enabled) | ||
+ | 07h activate TSR (popup if not disabled) | ||
+ | 08h get hotkeys | ||
+ | BL = which hotkey (00h = hotkey 1, 01h = hotkey 2) | ||
+ | Return: AX = hotkey (AH = keyflags, AL = scancode) | ||
+ | 09h set hotkey | ||
+ | BL = which hotkey (00h = hotkey 1, 01h = hotkey 2) | ||
+ | CX = new hotkey (CH = keyflags, CL = scancode) | ||
+ | 0Ah-1Fh reserved | ||
+ | |||
+ | Format of vector table entry: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2F--------------------------------- | ||
+ | INT 2F - CiriSOFT Spanish University of Valladolid TSR's Interface | ||
+ | AH = xx (dynamically assigned based upon a search for a multiplex | ||
+ | number from C0h to FFh which doesn' | ||
+ | AL = 00h installation check | ||
+ | ES:DI = 1492h:1992h | ||
+ | Return: AL = 00h not installed | ||
+ | 01h not installed, not OK to install | ||
+ | FFh installed; and if ES:DI was 1492h:1992h on entry, ES:DI will | ||
+ | point to author_name_ver table (see below) | ||
+ | AH = FFh | ||
+ | Note: this interface permits advanced communication with TSRs: it is possible | ||
+ | to make a generic unistall utility, advanced TSR relocator programs | ||
+ | in order to fit fragmented memory areas, etc. | ||
+ | See also: INT 2D" | ||
+ | |||
+ | Format of author_name_ver table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | with PSP, XMS upper memory segment if installed as UMB...) | ||
+ | | ||
+ | in *.COM programs and 0 in upper memory TSR' | ||
+ | | ||
+ | used by TSR is possible to determine if hooked vectors are | ||
+ | still pointing it (and if it is safe the unistall process). | ||
+ | | ||
+ | bits 0-2: 000 normal program (with PSP) | ||
+ | 001 upper XMS memory block (needed HIMEM.SYS function | ||
+ | to free memory when unistalling) | ||
+ | 010 device driver (*.SYS) | ||
+ | 011 device driver in EXE format | ||
+ | 1xx others (reserved) | ||
+ | bits 3-6 reserved | ||
+ | bit 7 set if extra_table defined and supported | ||
+ | | ||
+ | that the TSR must be use THIS variable in it's INT 2Fh handler. | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | is used in order to determine if the TSR is already resident | ||
+ | and it's version code; the ':' | ||
+ | |||
+ | Format of vector_area table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | . . (and so on) Note that the TSR must be use THIS variables to | ||
+ | invoke previous interrupt handler routines. | ||
+ | |||
+ | Format of extra_area table (needed only to improve relocation feature): | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of external_ctrl table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | supports /SR parameter (silent installation & inhibit) | ||
+ | | ||
+ | from the previous TSR still resident | ||
+ | | ||
+ | ----------2F00------------------------------- | ||
+ | INT 2F U - DOS 2.x PRINT.COM - ??? | ||
+ | AH = 00h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler | ||
+ | values in AH other than 00h or 01h cause PRINT to return the number of | ||
+ | files in the queue in AH | ||
+ | SeeAlso: AH=01h | ||
+ | ----------2F0080----------------------------- | ||
+ | INT 2F - DOS 3.1+ PRINT.COM - GIVE PRINT A TIME SLICE | ||
+ | AX = 0080h | ||
+ | Return: after PRINT executes | ||
+ | ----------2F01------------------------------- | ||
+ | INT 2F U - DOS 2.x PRINT.COM - ??? | ||
+ | AH = 01h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler | ||
+ | values in AH other than 00h or 01h cause PRINT to return the number of | ||
+ | files in the queue in AH | ||
+ | SeeAlso: AH=00h | ||
+ | ----------2F0100----------------------------- | ||
+ | INT 2F - DOS 3+ PRINT.COM - INSTALLATION CHECK | ||
+ | AX = 0100h | ||
+ | Return: AL = status | ||
+ | 00h not installed | ||
+ | 01h not installed, but not OK to install | ||
+ | FFh installed | ||
+ | SeeAlso: AX=0101h | ||
+ | ----------2F0101----------------------------- | ||
+ | INT 2F - DOS 3+ PRINT.COM - SUBMIT FILE FOR PRINTING | ||
+ | AX = 0101h | ||
+ | DS:DX -> submit packet (see below) | ||
+ | Return: CF clear if successful | ||
+ | AL = 01h added to queue | ||
+ | 9Eh now printing | ||
+ | CF set on error | ||
+ | AX = error code (see also INT 21/AH=59h) | ||
+ | 01h invalid function | ||
+ | 02h file not found | ||
+ | 03h path not found | ||
+ | 04h out of file handles | ||
+ | 05h access denied | ||
+ | 08h print queue full | ||
+ | 09h spooler busy | ||
+ | 0Ch name too long | ||
+ | 0Fh invalid drive | ||
+ | SeeAlso: AX=0102h | ||
+ | |||
+ | Format of submit packet: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ----------2F0102----------------------------- | ||
+ | INT 2F - DOS 3+ PRINT.COM - REMOVE FILE FROM PRINT QUEUE | ||
+ | AX = 0102h | ||
+ | DS:DX -> ASCIZ filename (wildcards allowed) | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (see AX=0101h) | ||
+ | SeeAlso: AX=0101h, | ||
+ | ----------2F0103----------------------------- | ||
+ | INT 2F - DOS 3+ PRINT.COM - CANCEL ALL FILES IN PRINT QUEUE | ||
+ | AX = 0103h | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (see AX=0101h) | ||
+ | SeeAlso: AX=0102h | ||
+ | ----------2F0104----------------------------- | ||
+ | INT 2F - DOS 3+ PRINT.COM - FREEZE PRINT QUEUE TO READ JOB STATUS | ||
+ | AX = 0104h | ||
+ | Return: CF clear if successful | ||
+ | DX = error count | ||
+ | DS:SI -> print queue | ||
+ | CF set on error | ||
+ | AX = error code (see AX=0101h) | ||
+ | Notes: the print queue is an array of 64-byte ASCIZ filenames terminated by | ||
+ | an empty filename; the first name is the file currently being printed | ||
+ | printing is stopped until AX=0105h is called to prevent the queue | ||
+ | from changing while the filenames are being read | ||
+ | SeeAlso: AX=0101h, | ||
+ | ----------2F0105----------------------------- | ||
+ | INT 2F - DOS 3+ PRINT.COM - RESTART PRINT QUEUE AFTER STATUS READ | ||
+ | AX = 0105h | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (see AX=0101h) | ||
+ | SeeAlso: AX=0104h | ||
+ | ----------2F0106----------------------------- | ||
+ | INT 2F - DOS 3.3+ PRINT.COM - GET PRINTER DEVICE | ||
+ | AX = 0106h | ||
+ | Return: CF set if files in print queue | ||
+ | AX = error code 0008h (queue full) | ||
+ | DS:SI -> device driver header | ||
+ | CF clear if print queue empty | ||
+ | AX = 0000h | ||
+ | Note: | ||
+ | SeeAlso: AX=0104h | ||
+ | ----------2F0200----------------------------- | ||
+ | INT 2F U - PC LAN PROGRAM REDIR/ | ||
+ | AX = 0200h | ||
+ | Return: AL = FFh if installed | ||
+ | ----------2F0201----------------------------- | ||
+ | INT 2F U - PC LAN PROGRAM REDIR/ | ||
+ | AX = 0201h | ||
+ | Return: nothing??? | ||
+ | Notes: | ||
+ | AX=0202h appears to be the opposite function | ||
+ | SeeAlso: AX=0202h | ||
+ | ----------2F0202----------------------------- | ||
+ | INT 2F U - PC LAN PROGRAM REDIR/ | ||
+ | AX = 0202h | ||
+ | ??? | ||
+ | Return: nothing??? | ||
+ | Note: | ||
+ | SeeAlso: AX=0201h | ||
+ | ----------2F0203----------------------------- | ||
+ | INT 2F U - PC LAN PROGRAM REDIR/ | ||
+ | AX = 0203h | ||
+ | Return: nothing??? | ||
+ | Notes: | ||
+ | AX=0204h appears to be the opposite function | ||
+ | SeeAlso: AX=0204h | ||
+ | ----------2F0204----------------------------- | ||
+ | INT 2F U - PC LAN PROGRAM REDIR/ | ||
+ | AX = 0204h | ||
+ | ??? | ||
+ | Return: nothing??? | ||
+ | Note: | ||
+ | ----------2F--------------------------------- | ||
+ | INT 2F U - PC LAN PROGRAM REDIR/ | ||
+ | AX = 02xxh | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2F0500----------------------------- | ||
+ | INT 2F U - DOS 3+ CRITICAL ERROR HANDLER - INSTALLATION CHECK | ||
+ | AX = 0500h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | 01h not installed, can't install | ||
+ | FFh installed | ||
+ | Note: this set of functions allows a user program to partially or completely | ||
+ | override the default critical error handler' | ||
+ | SeeAlso: AH=05h,INT 24 | ||
+ | ----------2F05------------------------------- | ||
+ | INT 2F U - DOS 3+ CRITICAL ERROR HANDLER - EXPAND ERROR INTO STRING | ||
+ | AH = 05h | ||
+ | ---DOS 3.x--- | ||
+ | AL = extended error code (not zero) | ||
+ | ---DOS 4+ --- | ||
+ | AL = error type | ||
+ | 01h DOS extended error code | ||
+ | 02h parameter error | ||
+ | BX = error code | ||
+ | Return: CF clear if successful | ||
+ | ES:DI -> ASCIZ error message (read-only) | ||
+ | AL = ??? | ||
+ | CF set if error code can't be converted to string | ||
+ | Notes: | ||
+ | installed by a user program, allowing partial or complete overriding | ||
+ | of the default error message | ||
+ | subfunction 02h called by many DOS 4 external programs | ||
+ | SeeAlso: AX=122Eh, | ||
+ | ----------2F0600----------------------------- | ||
+ | INT 2F - DOS v3.0+ ASSIGN - INSTALLATION CHECK | ||
+ | AX = 0600h | ||
+ | Return: AL = status | ||
+ | 00h not installed | ||
+ | 01h not installed, but not OK to install | ||
+ | FFh installed | ||
+ | Note: | ||
+ | (see INT 21/ | ||
+ | SeeAlso: AX=0601h, | ||
+ | ----------2F0601----------------------------- | ||
+ | INT 2F U - DOS v3.0+ ASSIGN - GET DRIVE ASSIGNMENT TABLE | ||
+ | AX = 0601h | ||
+ | Return: ES = segment of ASSIGN work area and assignment table | ||
+ | Note: under DOS 3+, the 26 bytes starting at ES:0103h specify which drive | ||
+ | each of A: to Z: is mapped to. Initially set to 01h 02h 03h.... | ||
+ | SeeAlso: AX=0600h | ||
+ | ----------2F0800----------------------------- | ||
+ | INT 2F U - DRIVER.SYS support - INSTALLATION CHECK | ||
+ | AX = 0800h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | 01h not installed, not OK to install | ||
+ | FFh installed | ||
+ | Note: | ||
+ | ----------2F0801----------------------------- | ||
+ | INT 2F U - DRIVER.SYS support - ADD NEW BLOCK DEVICE | ||
+ | AX = 0801h | ||
+ | DS:DI -> drive data table (see AX=0803h) | ||
+ | Notes: | ||
+ | the drive description flags word for tables referencing same physical | ||
+ | drive | ||
+ | data table appended to chain of tables | ||
+ | supported by DR-DOS 5.0 | ||
+ | SeeAlso: AX=0803h | ||
+ | ----------2F0802----------------------------- | ||
+ | INT 2F U - DRIVER.SYS support - EXECUTE DEVICE DRIVER REQUEST | ||
+ | AX = 0802h | ||
+ | ES:BX -> device driver request header (see below) | ||
+ | Return: request header updated as per requested operation | ||
+ | Notes: | ||
+ | DOS 3.2 executes this function on any AL value from 02h through F7h | ||
+ | |||
+ | Format of device driver request header: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | bit 15: error | ||
+ | bits 14-11: reserved | ||
+ | bit 10: ??? set by DOS kernel on entry to some driver calls | ||
+ | bit 9: busy | ||
+ | bit 8: done | ||
+ | bits 7-0: error code if bit 15 set (see below) | ||
+ | ---DOS--- | ||
+ | | ||
+ | ---STARLITE architecture--- | ||
+ | | ||
+ | | ||
+ | ---command code 00h--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---command code 01h--- | ||
+ | | ||
+ | | ||
+ | 00h don't know | ||
+ | 01h media has not changed | ||
+ | FFh media has been changed | ||
+ | | ||
+ | device header set and disk changed (set by driver) | ||
+ | ---command code 02h--- | ||
+ | | ||
+ | | ||
+ | -> scratch sector if NON-IBM FORMAT bit in device header set | ||
+ | -> first FAT sector otherwise | ||
+ | | ||
+ | ---command codes 03h,0Ch--- (see also INT 21/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---command codes 04h, | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | device attribute word bit 1 set only) (see INT 21/AH=52h) | ||
+ | ---command code 05h--- | ||
+ | | ||
+ | ---command codes 06h, | ||
+ | no further fields | ||
+ | ---command code 10h--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---command codes 13h,19h--- | ||
+ | | ||
+ | 00h unknown | ||
+ | 01h COMn: | ||
+ | 03h CON | ||
+ | 05h LPTn: | ||
+ | 08h disk | ||
+ | 9Eh (STARLITE) Media Access Control driver | ||
+ | | ||
+ | 00h (STARLITE) MAC Bind request | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---command codes 80h,82h--- | ||
+ | | ||
+ | 00h HSG (default) | ||
+ | 01h Phillips/ | ||
+ | | ||
+ | | ||
+ | (if 0 for command 82h, request is an advisory seek) | ||
+ | | ||
+ | logical sector number in HSG mode | ||
+ | frame/ | ||
+ | (HSG sector = minute * 4500 + second * 75 + frame - 150) | ||
+ | | ||
+ | 00h cooked (2048 bytes per frame) | ||
+ | 01h raw (2352 bytes per frame, including EDC/ECC) | ||
+ | | ||
+ | | ||
+ | ---command code 83h--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---command code 84h--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---command codes 86h,87h--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 00h mode 0 (write all zeros) | ||
+ | 01h mode 1 (default) (2048 bytes per sector) | ||
+ | 02h mode 2 form 1 (2048 bytes per sector) | ||
+ | 03h mode 2 form 2 (2336 bytes per sector) | ||
+ | | ||
+ | | ||
+ | |||
+ | Values for command code: | ||
+ | 00h INIT | ||
+ | 01h MEDIA CHECK (block devices) | ||
+ | 02h BUILD BPB (block devices) | ||
+ | 03h IOCTL INPUT | ||
+ | 04h INPUT | ||
+ | 05h NONDESTRUCTIVE INPUT, NO WAIT (character devices) | ||
+ | 06h INPUT STATUS (character devices) | ||
+ | 07h INPUT FLUSH (character devices) | ||
+ | 08h OUTPUT | ||
+ | 09h OUTPUT WITH VERIFY | ||
+ | 0Ah OUTPUT STATUS (character devices) | ||
+ | 0Bh OUTPUT FLUSH (character devices) | ||
+ | 0Ch IOCTL OUTPUT | ||
+ | 0Dh (DOS 3+) DEVICE OPEN | ||
+ | 0Eh (DOS 3+) DEVICE CLOSE | ||
+ | 0Fh (DOS 3+) REMOVABLE MEDIA (block devices) | ||
+ | 10h (DOS 3+) OUTPUT UNTIL BUSY (character devices) | ||
+ | 11h unused | ||
+ | 12h unused | ||
+ | 13h (DOS 3.2+) GENERIC IOCTL | ||
+ | 14h unused | ||
+ | 15h unused | ||
+ | 16h unused | ||
+ | 17h (DOS 3.2+) GET LOGICAL DEVICE | ||
+ | 18h (DOS 3.2+) SET LOGICAL DEVICE | ||
+ | 19h (DOS 5.0+) CHECK GENERIC IOCTL SUPPORT | ||
+ | 80h (CD-ROM) READ LONG | ||
+ | 81h (CD-ROM) reserved | ||
+ | 82h (CD-ROM) READ LONG PREFETCH | ||
+ | 83h (CD-ROM) SEEK | ||
+ | 84h (CD-ROM) PLAY AUDIO | ||
+ | 85h (CD-ROM) STOP AUDIO | ||
+ | 86h (CD-ROM) WRITE LONG | ||
+ | 87h (CD-ROM) WRITE LONG VERIFY | ||
+ | 88h (CD-ROM) RESUME AUDIO | ||
+ | |||
+ | Values for error code: | ||
+ | 00h write-protect violation | ||
+ | 01h unknown unit | ||
+ | 02h drive not ready | ||
+ | 03h unknown command | ||
+ | 04h CRC error | ||
+ | 05h bad drive request structure length | ||
+ | 06h seek error | ||
+ | 07h unknown media | ||
+ | 08h sector not found | ||
+ | 09h printer out of paper | ||
+ | 0Ah write fault | ||
+ | 0Bh read fault | ||
+ | 0Ch general failure | ||
+ | 0Dh reserved | ||
+ | 0Eh (CD-ROM) media unavailable | ||
+ | 0Fh invalid disk change | ||
+ | ----------2F0803----------------------------- | ||
+ | INT 2F U - DOS 4+ DRIVER.SYS support - GET DRIVE DATA TABLE LIST | ||
+ | AX = 0803h | ||
+ | Return: DS:DI -> first drive data table in list | ||
+ | Note: not available under DR-DOS 5.0 | ||
+ | SeeAlso: AX=0801h | ||
+ | |||
+ | Format of DOS 3.30 drive data table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | 06h 19 BYTEs BIOS Parameter Block (see also INT 21/AH=53h) | ||
+ | Offset Size Description | ||
+ | 00h WORD bytes per sector | ||
+ | 02h BYTE sectors per cluster, FFh if unknown | ||
+ | 03h WORD number of reserved sectors | ||
+ | 05h BYTE number of FATs | ||
+ | 06h WORD number of root dir entries | ||
+ | 08h WORD total sectors | ||
+ | 0Ah BYTE media descriptor, 00h if unknown | ||
+ | 0Bh WORD sectors per FAT | ||
+ | 0Dh WORD sectors per track | ||
+ | 0Fh WORD number of heads | ||
+ | 11h WORD number of hidden sectors | ||
+ | | ||
+ | bit 6: 16-bit FAT instead of 12-bit FAT | ||
+ | | ||
+ | 1Ch 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for | ||
+ | fixed media) | ||
+ | | ||
+ | | ||
+ | | ||
+ | bit 0: fixed media | ||
+ | bit 1: door lock supported | ||
+ | bit 2: ??? (used in determining BPB to set for INT 21/ | ||
+ | bit 3: all sectors in a track are the same size | ||
+ | bit 4: physical drive has multiple logical units | ||
+ | bit 5: current logical drive for physical drive | ||
+ | bit 6: ??? | ||
+ | bit 7: ??? | ||
+ | bit 8: ??? (related to disk change detection) | ||
+ | | ||
+ | 2Dh 19 BYTEs BIOS Parameter Block for highest capacity supported | ||
+ | | ||
+ | | ||
+ | (apparently only MSDOS 3.30 fixed media, nulls for removable | ||
+ | media and PCDOS 3.30) | ||
+ | | ||
+ | ---removable media--- | ||
+ | | ||
+ | ---fixed media--- | ||
+ | | ||
+ | | ||
+ | drive (always FFFFh if primary partition) | ||
+ | |||
+ | Format of COMPAQ DOS 3.31 drive data table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | 06h 25 BYTEs BIOS Parameter Block (see DOS 4.01 drive data table below) | ||
+ | | ||
+ | | ||
+ | bit 6: 16-bit FAT instead of 12-bit FAT | ||
+ | 5: large volume??? | ||
+ | | ||
+ | 28h 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for | ||
+ | fixed media) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 39h 25 BYTEs BIOS parameter block for highest capacity drive supports | ||
+ | | ||
+ | | ||
+ | ---removable media--- | ||
+ | | ||
+ | ---fixed media--- | ||
+ | | ||
+ | | ||
+ | drive (always FFFFh if primary partition) | ||
+ | |||
+ | Format of DOS 4.0-5.0 drive data table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | 06h 25 BYTEs BIOS Parameter Block (see also INT 21/AH=53h) | ||
+ | Offset Size Description | ||
+ | 00h WORD bytes per sector | ||
+ | 02h BYTE sectors per cluster, FFh if unknown | ||
+ | 03h WORD number of reserved sectors | ||
+ | 05h BYTE number of FATs | ||
+ | 06h WORD number of root dir entries | ||
+ | 08h WORD total sectors (see offset 15h if zero) | ||
+ | 0Ah BYTE media descriptor, 00h if unknown | ||
+ | 0Bh WORD sectors per FAT | ||
+ | 0Dh WORD sectors per track | ||
+ | 0Fh WORD number of heads | ||
+ | 11h DWORD number of hidden sectors | ||
+ | 15h DWORD total sectors if WORD at 08h is zero | ||
+ | | ||
+ | bit 6: 16-bit FAT instead of 12-bit | ||
+ | | ||
+ | | ||
+ | | ||
+ | bit 0: fixed media | ||
+ | bit 1: door lock supported | ||
+ | bit 2: ??? | ||
+ | bit 3: all sectors in a track are the same size | ||
+ | bit 4: physical drive has multiple logical units | ||
+ | bit 5: current logical drive for physical drive | ||
+ | bit 6: ??? | ||
+ | bit 7: ??? | ||
+ | bit 8: ??? | ||
+ | | ||
+ | 27h 25 BYTEs BIOS Parameter Block for highest capacity supported | ||
+ | | ||
+ | ---removable media--- | ||
+ | | ||
+ | ---fixed media, DOS 4.x--- | ||
+ | | ||
+ | | ||
+ | (FFFFh if primary partition) | ||
+ | ---fixed media, DOS 5.0--- | ||
+ | | ||
+ | | ||
+ | ------ | ||
+ | 4Bh 11 BYTEs volume label or "NO NAME " if none (apparently taken from | ||
+ | extended boot record rather than root directory) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2F0C00----------------------------- | ||
+ | INT 2F - AD-DOS - INSTALLATION CHECK | ||
+ | AX = 0C00h | ||
+ | Return: AL = FF if installed | ||
+ | BX = 4144H (' | ||
+ | CX = 2D44H (' | ||
+ | DX = 4F53H (' | ||
+ | Notes: | ||
+ | MS Windows | ||
+ | AH=0Ch is the default multiplex number | ||
+ | SeeAlso: AX=0C01h | ||
+ | ----------2F0C01ES0000----------------------- | ||
+ | INT 2F - AD-DOS - GET RESIDENT CODE SEGMENT | ||
+ | AX = 0C01h | ||
+ | ES = 0000h | ||
+ | Return: CF clear succesful | ||
+ | ES = AD-DOS TSR Code Segment | ||
+ | CF set if failed | ||
+ | SeeAlso: AX=0C00h | ||
+ | ----------2F0C02----------------------------- | ||
+ | INT 2F - AD-DOS - CHECK FOR NEW INPUT | ||
+ | AX = 0C02h | ||
+ | Return: BX = status | ||
+ | 0000h no input since last check | ||
+ | 0001h new input available | ||
+ | Note: this call also resets the new-input flag | ||
+ | ----------2F0C03----------------------------- | ||
+ | INT 2F - AD-DOS - SET MINUTES TO WAIT | ||
+ | AX = 0C03h | ||
+ | BX = minutes to wait before blanking screen | ||
+ | CF set | ||
+ | Return: n/a??? | ||
+ | Notes: | ||
+ | AH=0Ch is the default multiplex number | ||
+ | SeeAlso: AX=0C04h | ||
+ | ----------2F0C04----------------------------- | ||
+ | INT 2F - AD-DOS - GET MINUTES TO WAIT | ||
+ | AX = 0C04h | ||
+ | CF set | ||
+ | Return: BX = minutes to wait before blanking screen | ||
+ | ??? | ||
+ | SeeAlso: AX=0C03h | ||
+ | ----------2F0C05----------------------------- | ||
+ | INT 2F - AD-DOS - SET ENABLE??? FLAG | ||
+ | AX = 0C05h | ||
+ | BX = new state (0000h or 0001h) (default 0001h) | ||
+ | CF set | ||
+ | Return: n/a??? | ||
+ | SeeAlso: AX=0C06h | ||
+ | ----------2F0C06----------------------------- | ||
+ | INT 2F - AD-DOS - GET ENABLE??? FLAG | ||
+ | AX = 0C06h | ||
+ | Carry Set | ||
+ | Return: BX = current state of ??? flag (0000h or 0001h) | ||
+ | ??? | ||
+ | Notes: | ||
+ | AH=0Ch is the default multiplex number | ||
+ | SeeAlso: AX=0C05h | ||
+ | ----------2F0C07----------------------------- | ||
+ | INT 2F - AD-DOS - SET HOT KEY | ||
+ | AX = 0C07h | ||
+ | BX = hot key | ||
+ | CL = hot key shift status | ||
+ | CF set | ||
+ | Return: n/a??? | ||
+ | SeeAlso: AX=0C08h | ||
+ | ----------2F0C08----------------------------- | ||
+ | INT 2F - AD-DOS - GET CURRENT HOT KEY | ||
+ | AX = 0C08h | ||
+ | CF set | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | BX = Hot Key | ||
+ | CL = Hot Key Shift Status | ||
+ | 0008h otherwise | ||
+ | SeeAlso: AX=0C07h | ||
+ | ----------2F0C09----------------------------- | ||
+ | INT 2F - AD-DOS - ??? | ||
+ | AX = 0C09h | ||
+ | Carry Set | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | ??? | ||
+ | 0009h otherwise | ||
+ | Notes: | ||
+ | AH=0Ch is the default multiplex number | ||
+ | ----------2F0C0A----------------------------- | ||
+ | INT 2F - AD-DOS - ??? | ||
+ | AX = 0C0Ah | ||
+ | CF set | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | BH = ?? | ||
+ | BL = ?? | ||
+ | 000Ah failed | ||
+ | ----------2F0C0B----------------------------- | ||
+ | INT 2F - AD-DOS - ??? | ||
+ | AX = 0C0Bh | ||
+ | CF set | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | 000Bh failed | ||
+ | ----------2F0C0C----------------------------- | ||
+ | INT 2F - AD-DOS - SET ??? INTERNAL FLAG TO 01h | ||
+ | AX = 0C0Ch | ||
+ | CF set | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | 000Ch failed | ||
+ | Notes: | ||
+ | AH=0Ch is the default multiplex number | ||
+ | ----------2F0C20----------------------------- | ||
+ | INT 2F - AD-DOS - GET AND RESET VxD API STATUS | ||
+ | AX = 0C20h | ||
+ | CF set | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | BX = VxD API Status | ||
+ | 0000h no error | ||
+ | 0001h error | ||
+ | 0100h neither Windows 3.X enhanced mode nor | ||
+ | Windows/ | ||
+ | 0200h VM API entry point found | ||
+ | 0020h otherwise | ||
+ | Note: this call resets the VxD API Status to zero | ||
+ | SeeAlso: AX=1602h, | ||
+ | ----------2F1000----------------------------- | ||
+ | INT 2F - SHARE - INSTALLATION CHECK | ||
+ | AX = 1000h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | | ||
+ | | ||
+ | BUGS: | ||
+ | (08E9: OR AL,AL | ||
+ | 08EB: JNZ 08EB) <- the buggy instruction (DOS 3.3) | ||
+ | values of AL other than described here put PCDOS 4.00 into the same | ||
+ | loop (the buggy instructions are the same) | ||
+ | Notes: | ||
+ | if DOS 4.01 SHARE was automatically loaded, file sharing is in an | ||
+ | inactive state (due to the undocumented /NC flag used by the autoload | ||
+ | code) until this call is made | ||
+ | DOS 5.0 chains to the previous handler if AL <> 00h on entry | ||
+ | SeeAlso: AX=1080h, | ||
+ | ----------2F1040----------------------------- | ||
+ | INT 2F U - DOS 4 only SHARE internal - ??? | ||
+ | AX = 1040h | ||
+ | ??? | ||
+ | Return: AL = FFh??? | ||
+ | SeeAlso: AX=1000h | ||
+ | ----------2F1080----------------------------- | ||
+ | INT 2F U - DOS 4 only SHARE internal - TURN ON FILE SHARING CHECKS | ||
+ | AX = 1080h | ||
+ | Return: AL = status | ||
+ | F0h successful | ||
+ | FFh checking was already on | ||
+ | Note: DOS 4.x SHARE has dual functions: FCB support for large (>32M) media | ||
+ | and file sharing checks. | ||
+ | be used to disable the sharing code. | ||
+ | SeeAlso: AX=1000h, | ||
+ | ----------2F1081----------------------------- | ||
+ | INT 2F U - DOS 4 only SHARE internal - TURN OFF FILE SHARING CHECKS | ||
+ | AX = 1081h | ||
+ | Return: AL = status | ||
+ | F0h successful | ||
+ | FFh checking was already off | ||
+ | Note: (see AX=1080h) | ||
+ | SeeAlso: AX=1000h, | ||
+ | ----------2F10FF----------------------------- | ||
+ | INT 2F U - Multiplex - DR-DOS 5.0 - ??? | ||
+ | AX = 10FFh | ||
+ | ES:BX -> ??? | ||
+ | Note: sets pointer in kernel | ||
+ | ----------2F1100----------------------------- | ||
+ | INT 2F - NETWORK REDIRECTOR - INSTALLATION CHECK | ||
+ | AX = 1100h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | | ||
+ | | ||
+ | Notes: | ||
+ | In DOS 4.x only, the 11xx calls are all in IFSFUNC.EXE, | ||
+ | PC LAN Program redirector; DOS 5.0 moves the calls back into the | ||
+ | redirector | ||
+ | ----------2F1100----------------------------- | ||
+ | INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK | ||
+ | AX = 1100h | ||
+ | STACK: WORD DADAh | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | STACK unchanged | ||
+ | = 01h not installed, not OK to install | ||
+ | STACK unchanged | ||
+ | = FFh installed | ||
+ | STACK: WORD ADADh | ||
+ | ----------2F1101----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - REMOVE REMOTE DIRECTORY | ||
+ | AX = 1101h | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified directory name | ||
+ | SDA CDS pointer -> current directory structure for drive with dir | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | Note: | ||
+ | SeeAlso: AX=1103h, | ||
+ | ----------2F1102----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - REMOVE REMOTE DIRECTORY | ||
+ | AX = 1102h | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified directory name | ||
+ | SDA CDS pointer -> current directory structure for drive with dir | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | Note: | ||
+ | SeeAlso: AX=1101h | ||
+ | ----------2F1103----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - MAKE REMOTE DIRECTORY | ||
+ | AX = 1103h | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified directory name | ||
+ | SDA CDS pointer -> current directory structure for drive with dir | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | Note: | ||
+ | SeeAlso: AX=1101h, | ||
+ | ----------2F1104----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - MAKE REMOTE DIRECTORY | ||
+ | AX = 1104h | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified directory name | ||
+ | SDA CDS pointer -> current directory structure for drive with dir | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | Note: | ||
+ | SeeAlso: AX=1103h | ||
+ | ----------2F1105----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - CHDIR | ||
+ | AX = 1105h | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified directory name | ||
+ | SDA CDS pointer -> current directory structure for drive with dir | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | CDS updated with new path | ||
+ | Notes: | ||
+ | directory string in CDS should not have a terminating backslash unless | ||
+ | the current directory is the root | ||
+ | SeeAlso: AX=1101h, | ||
+ | ----------2F1106----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - CLOSE REMOTE FILE | ||
+ | AX = 1106h | ||
+ | ES:DI -> SFT | ||
+ | SFT DPB field -> DPB of drive containing file | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | SFT updated (except handle count, which DOS manages itself) | ||
+ | Note: | ||
+ | SeeAlso: AX=1201h, | ||
+ | ----------2F1107----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - COMMIT REMOTE FILE | ||
+ | AX = 1107h | ||
+ | ES:DI -> SFT | ||
+ | SFT DPB field -> DPB of drive containing file | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | all buffers for file flushed | ||
+ | directory entry updated | ||
+ | Note: | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F1108----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - READ FROM REMOTE FILE | ||
+ | AX = 1108h | ||
+ | ES:DI -> SFT | ||
+ | SFT DPB field -> DPB of drive containing file | ||
+ | CX = number of bytes | ||
+ | SS = DOS DS | ||
+ | SDA DTA field -> user buffer | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | CX = number of bytes read (0000h = end of file) | ||
+ | SFT updated | ||
+ | Note: | ||
+ | SeeAlso: AX=1109h, | ||
+ | ----------2F1109----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - WRITE TO REMOTE FILE | ||
+ | AX = 1109h | ||
+ | ES:DI -> SFT | ||
+ | SFT DPB field -> DPB of drive containing file | ||
+ | CX = number of bytes | ||
+ | SS = DOS DS | ||
+ | SDA DTA field -> user buffer | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | CX = number of bytes written | ||
+ | SFT updated | ||
+ | Note: | ||
+ | SeeAlso: AX=1107h, | ||
+ | ----------2F110A----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR (DOS 3.x only) - LOCK REGION OF FILE | ||
+ | AX = 110Ah | ||
+ | BX = file handle | ||
+ | CX:DX = starting offset | ||
+ | SI = high word of size | ||
+ | STACK: WORD low word of size | ||
+ | ES:DI -> SFT | ||
+ | SFT DPB field -> DPB of drive containing file | ||
+ | SS = DOS DS | ||
+ | Return: CF set on error | ||
+ | AL = DOS error code (see INT 21/AH=59h) | ||
+ | STACK unchanged | ||
+ | Notes: | ||
+ | the redirector is expected to resolve lock conflicts | ||
+ | SeeAlso: AX=110Bh, | ||
+ | ----------2F110A----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR (DOS 4+) - LOCK/UNLOCK REGION OF FILE | ||
+ | AX = 110Ah | ||
+ | BL = function | ||
+ | 00h lock | ||
+ | 01h unlock | ||
+ | DS:DX -> parameter block (see below) | ||
+ | ES:DI -> SFT | ||
+ | SFT DPB field -> DPB of drive containing file | ||
+ | SS = DOS DS | ||
+ | Return: CF set on error | ||
+ | AL = DOS error code (see INT 21/AH=59h) | ||
+ | Notes: | ||
+ | the redirector is expected to resolve lock conflicts | ||
+ | SeeAlso: AX=110Bh, | ||
+ | |||
+ | Format of parameter block: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ----------2F110B----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR (DOS 3.x only) - UNLOCK REGION OF FILE | ||
+ | AX = 110Bh | ||
+ | BX = file handle | ||
+ | CX:DX = starting offset | ||
+ | SI = high word of size | ||
+ | STACK: WORD low word of size | ||
+ | ES:DI -> SFT for file | ||
+ | SFT DPB field -> DPB of drive containing file | ||
+ | Return: CF set on error | ||
+ | AL = DOS error code (see INT 21/AH=59h) | ||
+ | STACK unchanged | ||
+ | Note: | ||
+ | SeeAlso: AX=110Ah, | ||
+ | ----------2F110C----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - GET DISK SPACE | ||
+ | AX = 110Ch | ||
+ | ES:DI -> current directory structure for desired drive | ||
+ | Return: AL = sectors per cluster | ||
+ | AH = media ID byte | ||
+ | BX = total clusters | ||
+ | CX = bytes per sector | ||
+ | DX = number of available clusters | ||
+ | Note: | ||
+ | SeeAlso: INT 21/AH=36h | ||
+ | ----------2F110D----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 110Dh | ||
+ | SDA first filename pointer -> name of file | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=110Fh | ||
+ | ----------2F110E----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - SET REMOTE FILE'S ATTRIBUTES | ||
+ | AX = 110Eh | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified name of file | ||
+ | SDA CDS pointer -> current directory structure for drive with file | ||
+ | STACK: WORD new file attributes | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | STACK unchanged | ||
+ | Note: | ||
+ | SeeAlso: AX=110Fh, | ||
+ | ----------2F110F----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - GET REMOTE FILE'S ATTRIBUTES AND SIZE | ||
+ | AX = 110Fh | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified name of file | ||
+ | SDA CDS pointer -> current directory structure for drive with file | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | AX = file attributes | ||
+ | BX:DI = file size | ||
+ | Note: | ||
+ | SeeAlso: AX=110Eh, | ||
+ | ----------2F1110----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 1110h | ||
+ | SDA first filename pointer -> name of file | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=110Eh | ||
+ | ----------2F1111----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - RENAME REMOTE FILE | ||
+ | AX = 1111h | ||
+ | SS = DS = DOS DS | ||
+ | SDA first filename pointer = offset of fully-qualified old name | ||
+ | SDA second filename pointer = offset of fully-qualified new name | ||
+ | SDA CDS pointer -> current directory structure for drive with file | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | Note: | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F1112----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 1112h | ||
+ | SS = DS = DOS DS | ||
+ | SDA first filename pointer -> name of file | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=1111h | ||
+ | ----------2F1113----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - DELETE REMOTE FILE | ||
+ | AX = 1113h | ||
+ | SS = DS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified filename in DOS DS | ||
+ | SDA CDS pointer -> current directory structure for drive with file | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | Notes: | ||
+ | the filespec may contain wildcards | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F1114----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 1114h | ||
+ | SDA first filename pointer -> name of file | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=1113h | ||
+ | ----------2F1115----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 1115h | ||
+ | SS = DOS DS | ||
+ | ES:DI -> SFT ??? | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=112Eh | ||
+ | ----------2F1116----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - OPEN EXISTING REMOTE FILE | ||
+ | AX = 1116h | ||
+ | ES:DI -> uninitialized SFT | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified name of file to open | ||
+ | STACK: WORD file open mode (see INT 21/AH=3Dh) | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | SFT filled (except handle count, which DOS manages itself) | ||
+ | STACK unchanged | ||
+ | Note: | ||
+ | SeeAlso: AX=1106h, | ||
+ | ----------2F1117----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - CREATE/ | ||
+ | AX = 1117h | ||
+ | ES:DI -> uninitialized SFT | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified name of file to open | ||
+ | SDA CDS pointer -> current directory structure for drive with file | ||
+ | STACK: WORD file creation mode | ||
+ | low byte = file attributes | ||
+ | high byte = 00h normal create, 01h create new file | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | SFT filled (except handle count, which DOS manages itself) | ||
+ | STACK unchanged | ||
+ | Note: | ||
+ | SeeAlso: AX=1106h, | ||
+ | ----------2F1118----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - CREATE/ | ||
+ | AX = 1118h | ||
+ | ES:DI -> uninitialized SFT | ||
+ | SS = DOS DS | ||
+ | SDA first filename pointer -> fully-qualified name of file | ||
+ | STACK: WORD file creation mode | ||
+ | low byte = file attributes | ||
+ | high byte = 00h normal create, 01h create new file | ||
+ | Return: ??? | ||
+ | STACK unchanged | ||
+ | Note: | ||
+ | SDA CDS pointer has offset FFFFh | ||
+ | SeeAlso: AX=1106h, | ||
+ | ----------2F1119----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - FIND FIRST FILE WITHOUT CDS | ||
+ | AX = 1119h | ||
+ | SS = DS = DOS DS | ||
+ | [DTA] = uninitialized 21-byte findfirst search data (see INT 21/AH=4Eh) | ||
+ | SDA first filename pointer -> fully-qualified search template | ||
+ | SDA search attribute = attribute mask for search | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | [DTA] = updated findfirst search data | ||
+ | (bit 7 of first byte must be set) | ||
+ | [DTA+15h] = standard directory entry for file | ||
+ | Notes: | ||
+ | DOS 4.x IFSFUNC returns CF set, AX=0003h | ||
+ | ----------2F111A----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 111Ah | ||
+ | ??? | ||
+ | Return: CF set | ||
+ | AX = error code (03h for DOS 4.01 IFSFUNC) | ||
+ | ----------2F111B----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - FINDFIRST | ||
+ | AX = 111Bh | ||
+ | SS = DS = DOS DS | ||
+ | [DTA] = uninitialized 21-byte findfirst search data (see INT 21/AH=4Eh) | ||
+ | SDA first filename pointer -> fully-qualified search template | ||
+ | SDA CDS pointer -> current directory structure for drive with file | ||
+ | SDA search attribute = attribute mask for search | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | [DTA] = updated findfirst search data | ||
+ | (bit 7 of first byte must be set) | ||
+ | [DTA+15h] = standard directory entry for file | ||
+ | Note: | ||
+ | SeeAlso: AX=111Ch, | ||
+ | ----------2F111C----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - FINDNEXT | ||
+ | AX = 111Ch | ||
+ | SS = DS = DOS DS | ||
+ | [DTA] = 21-byte findfirst search data (see INT 21/AH=4Eh) | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | [DTA] = updated findfirst search data | ||
+ | (bit 7 of first byte must be set) | ||
+ | [DTA+15h] = standard directory entry for file | ||
+ | Note: | ||
+ | SeeAlso: AX=111Bh, | ||
+ | ----------2F111D----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - CLOSE ALL REMOTE FILES FOR PROCESS | ||
+ | AX = 111Dh | ||
+ | DS??? | ||
+ | SS = DOS DS | ||
+ | Return: ??? | ||
+ | Notes: | ||
+ | closes all FCBs opened by process | ||
+ | ----------2F111E----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - DO REDIRECTION | ||
+ | AX = 111Eh | ||
+ | SS = DOS DS | ||
+ | STACK: WORD function to execute | ||
+ | 5F00h | ||
+ | BL = type (03h printer, 04h disk) | ||
+ | Return: BH = state (00h off, 01h on) | ||
+ | 5F01h | ||
+ | BL = type (03h printer, 04h disk) | ||
+ | BH = state (00h off, 01h on) | ||
+ | 5F02h | ||
+ | BX = redirection list index | ||
+ | DS:SI -> 16-byte local device name buffer | ||
+ | ES:DI -> 128-byte network name buffer | ||
+ | Return: must set user's BX to device type and CX to | ||
+ | stored parameter value, using AX=1218h to get | ||
+ | stack frame address | ||
+ | 5F03h | ||
+ | BL = device type (see INT 21/ | ||
+ | CX = stored parameter value | ||
+ | DS:SI -> ASCIZ source device name | ||
+ | ES:DI -> destination ASCIZ network path + ASCIZ passwd | ||
+ | 5F04h | ||
+ | DS:SI -> ASCIZ device name or network path | ||
+ | 5F05h | ||
+ | BX = redirection list index | ||
+ | DS:SI -> buffer for ASCIZ source device name | ||
+ | ES:DI -> buffer for destination ASCIZ network path | ||
+ | Return: BH = status flag | ||
+ | BL = type (03h printer, 04h disk) | ||
+ | CX = stored parameter value | ||
+ | BP = NETBIOS local session number | ||
+ | 5F06h | ||
+ | Return: CF set on error | ||
+ | AX = error code (see INT 21/AH=59h) | ||
+ | STACK unchanged | ||
+ | Note: | ||
+ | SeeAlso: INT 21/ | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F111F----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - PRINTER SETUP | ||
+ | AX = 111Fh | ||
+ | STACK: WORD function | ||
+ | 5E02h | ||
+ | 5E03h | ||
+ | 5E04h | ||
+ | 5E05h | ||
+ | Return: CF set on error | ||
+ | AX = error code (see INT 21/AH=59h) | ||
+ | STACK unchanged | ||
+ | Note: | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F1120----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - FLUSH ALL DISK BUFFERS | ||
+ | AX = 1120h | ||
+ | DS = DOS DS | ||
+ | ??? | ||
+ | Return: CF clear (successful) | ||
+ | Notes: | ||
+ | uses CDS array pointer and LASTDRIVE= entries in DOS list of lists | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F1121----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - SEEK FROM END OF REMOTE FILE | ||
+ | AX = 1121h | ||
+ | CX:DX = offset (in bytes) from end | ||
+ | ES:DI -> SFT | ||
+ | SFT DPB field -> DPB of drive with file | ||
+ | SS = DOS DS | ||
+ | Return: CF set on error | ||
+ | AL = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | DX:AX = new file position | ||
+ | Note: | ||
+ | SeeAlso: AX=1228h, | ||
+ | ----------2F1122----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - PROCESS TERMINATION HOOK | ||
+ | AX = 1122h | ||
+ | SS = DOS DS | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------2F1123----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - QUALIFY REMOTE FILENAME | ||
+ | AX = 1123h | ||
+ | DS:SI -> ASCIZ filename to canonicalize | ||
+ | ES:DI -> 128-byte buffer for qualified name | ||
+ | Return: CF set if not resolved | ||
+ | Notes: | ||
+ | filename matches the name of a character device | ||
+ | called first when DOS attempts to resolve a filename (unless inside an | ||
+ | AX=5D00h server call); if this fails, DOS resolves the name locally | ||
+ | SeeAlso: AX=1221h, | ||
+ | ----------2F1124----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - PRINTER OFF??? | ||
+ | AX = 1124h | ||
+ | ES:DI -> SFT | ||
+ | SS = DOS DS | ||
+ | ??? | ||
+ | Return: CX = ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=1126h | ||
+ | ----------2F1125----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - REDIRECTED PRINTER MODE | ||
+ | AX = 1125h | ||
+ | STACK: WORD subfunction | ||
+ | 5D07h get print stream state | ||
+ | Return: DL = current state | ||
+ | 5D08h set print stream state | ||
+ | DL = new state | ||
+ | 5D09h finish print job | ||
+ | Return: CF set on error | ||
+ | AX = error code (see INT 21/AH=59h) | ||
+ | STACK unchanged | ||
+ | Note: | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F1126----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR - PRINTER ON/OFF??? | ||
+ | AX = 1126h | ||
+ | ES:DI -> SFT for file handle 4??? | ||
+ | SS = DOS DS??? | ||
+ | ??? | ||
+ | Return: CF set on error | ||
+ | Notes: | ||
+ | called when print echoing (^P, ^PrtSc) changes state and STDPRN has | ||
+ | bit 11 of the device information word in the SFT set | ||
+ | SeeAlso: AX=1124h | ||
+ | ----------2F1127----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - UNUSED | ||
+ | AX = 1127h | ||
+ | Return: CF set | ||
+ | AX = 0001h (invalid function) (see INT 21/AH=59h) | ||
+ | ----------2F1128----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - UNUSED | ||
+ | AX = 1128h | ||
+ | Return: CF set | ||
+ | AX = 0001h (invalid function) (see INT 21/AH=59h) | ||
+ | ----------2F1129----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - UNUSED | ||
+ | AX = 1129h | ||
+ | Return: CF set | ||
+ | AX = 0001h (invalid function) (see INT 21/AH=59h) | ||
+ | ----------2F112A----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 112Ah | ||
+ | DS = DOS DS | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: does something to each IFS driver | ||
+ | ----------2F112B----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - GENERIC IOCTL??? | ||
+ | AX = 112Bh | ||
+ | SS = DOS DS | ||
+ | CX = function/ | ||
+ | DS:DX -> parameter block | ||
+ | STACK: WORD value of AX on entry to INT 21 (440Ch or 440Dh) | ||
+ | ??? | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | Note: | ||
+ | ----------2F112C----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 112Ch | ||
+ | SS = DOS DS | ||
+ | SDA current SFT pointer -> SFT for file | ||
+ | ??? | ||
+ | Return: CF set on error | ||
+ | ----------2F112D----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 112Dh | ||
+ | BL = subfunction (value of AL on INT 21) | ||
+ | 04h truncate open file to zero length | ||
+ | ES:DI -> SFT for file | ||
+ | Return: CF clear | ||
+ | else ??? | ||
+ | Return: CX = ??? (00h or 02h for DOS 4.01) | ||
+ | ES:DI -> SFT | ||
+ | SS = DOS DS | ||
+ | Return: DS = DOS DS | ||
+ | Note: | ||
+ | INT 21/AX=5704h | ||
+ | ----------2F112E----------------------------- | ||
+ | INT 2F U - NETWORK REDIRECTOR (DOS 4+) - EXTENDED OPEN/CREATE FILE | ||
+ | AX = 112Eh | ||
+ | SS = DS = DOS DS | ||
+ | ES:DI -> uninitialized SFT for file | ||
+ | STACK: WORD file attribute for created/ | ||
+ | low byte = file attributes | ||
+ | high byte = 00h normal create/ | ||
+ | SDA first filename pointer -> fully-qualified filename | ||
+ | SDA extended file open action = action code (see INT 21/ | ||
+ | SDA extended file open mode = open mode for file (see INT 21/ | ||
+ | Return: CF set on error | ||
+ | AX = error code | ||
+ | CF clear if successful | ||
+ | CX = result code | ||
+ | 01h file opened | ||
+ | 02h file created | ||
+ | 03h file replaced (truncated) | ||
+ | SFT initialized (except handle count, which DOS manages itself) | ||
+ | Note: | ||
+ | SeeAlso: AX=1115h, | ||
+ | ----------2F112F----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - ??? | ||
+ | AX = 112Fh | ||
+ | SS = DOS DS | ||
+ | STACK: WORD function in low byte | ||
+ | 00h ??? | ||
+ | DS:SI -> Current Directory Structure??? | ||
+ | CL = drive (1=A:) | ||
+ | 01h ??? | ||
+ | DS:SI -> ??? | ||
+ | CL = file handle??? | ||
+ | 02h ??? | ||
+ | DS:SI -> Current Directory Structure??? | ||
+ | DI = ??? | ||
+ | CX = drive (1=A:) | ||
+ | ??? | ||
+ | Return: CF set on error | ||
+ | AX = DOS error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | Note: | ||
+ | SeeAlso: INT 21/AH=6Bh | ||
+ | ----------2F1130----------------------------- | ||
+ | INT 2F U - IFSFUNC.EXE (DOS 4.x only) - GET IFSFUNC SEGMENT | ||
+ | AX = 1130h | ||
+ | Return: ES = CS of resident IFSFUNC | ||
+ | ----------2F1186----------------------------- | ||
+ | INT 2F - LAN Manager Enhanced DOS API - DosReadAsynchNmPipe | ||
+ | AX = 1186h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: LAN Manager enhance mode adds features beyond the standard redirector | ||
+ | file/ | ||
+ | SeeAlso: AX=118Fh, | ||
+ | ----------2F118A----------------------------- | ||
+ | INT 2F - LAN Manager 2.0 DOS Enhanced ENCRYPT.EXE - STREAM ENCRYPTION SERVICE | ||
+ | AX = 118Ah | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=1186h, | ||
+ | ----------2F118F----------------------------- | ||
+ | INT 2F - LAN Manager Enhanced DOS API - DosWriteAsynchNmPipe | ||
+ | AX = 118Fh | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=1186h, | ||
+ | ----------2F1200----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - INSTALLATION CHECK | ||
+ | AX = 1200h | ||
+ | Return: AL = FFh (for compatibility with other INT 2F functions) | ||
+ | ----------2F1201----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - CLOSE CURRENT FILE | ||
+ | AX = 1201h | ||
+ | SS = DOS DS | ||
+ | SDA current SFT pointer -> SFT of file to close | ||
+ | Return: CF set on error | ||
+ | BX??? | ||
+ | CX new reference count of SFT | ||
+ | ES:DI -> SFT for file | ||
+ | SeeAlso: AX=1106h, | ||
+ | ----------2F1202----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET INTERRUPT ADDRESS | ||
+ | AX = 1202h | ||
+ | STACK: WORD vector number | ||
+ | Return: ES:BX -> interrupt vector | ||
+ | STACK unchanged | ||
+ | ----------2F1203----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET DOS DATA SEGMENT | ||
+ | AX = 1203h | ||
+ | Return: DS = segment of IBMDOS.COM/ | ||
+ | ----------2F1204----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - NORMALIZE PATH SEPARATOR | ||
+ | AX = 1204h | ||
+ | STACK: WORD character to normalize | ||
+ | Return: AL = normalized character (forward slash turned to backslash, all | ||
+ | others unchanged) | ||
+ | ZF set if path separator | ||
+ | STACK unchanged | ||
+ | ----------2F1205----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - OUTPUT CHARACTER TO STANDARD OUTPUT | ||
+ | AX = 1205h | ||
+ | STACK: WORD character to output | ||
+ | Return: STACK unchanged | ||
+ | Note: can be called only from within DOS | ||
+ | ----------2F1206----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - INVOKE CRITICAL ERROR | ||
+ | AX = 1206h | ||
+ | DI = error code | ||
+ | BP:SI -> device driver header | ||
+ | SS = DOS DS | ||
+ | STACK: WORD value to be passed to INT 24 in AX | ||
+ | Return: AL = 0-3 for Abort, Retry, Ignore, Fail | ||
+ | STACK unchanged | ||
+ | SeeAlso: INT 24 | ||
+ | ----------2F1207----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - MAKE DISK BUFFER MOST-RECENTLY USED | ||
+ | AX = 1207h | ||
+ | DS:DI -> disk buffer | ||
+ | Return: nothing | ||
+ | Notes: can be called only from within DOS | ||
+ | buffer is moved to end of buffer list (least-recently used is first) | ||
+ | SeeAlso: AX=120Fh | ||
+ | ----------2F1208----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - DECREMENT SFT REFERENCE COUNT | ||
+ | AX = 1208h | ||
+ | ES:DI -> SFT | ||
+ | Return: AX = original value of reference count | ||
+ | Note: if the reference count was 1, it is set to FFFFh (since 0 indicates | ||
+ | that the SFT is not in use). It is the caller' | ||
+ | set the reference count to zero after cleaning up. | ||
+ | ----------2F1209----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - FLUSH AND FREE DISK BUFFER | ||
+ | AX = 1209h | ||
+ | DS:DI -> disk buffer | ||
+ | Return: disk buffer marked unused, contents written to disk if buffer dirty | ||
+ | Note: can be called only from within DOS | ||
+ | SeeAlso: AX=120Eh, | ||
+ | ----------2F120A----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - PERFORM CRITICAL ERROR INTERRUPT | ||
+ | AX = 120Ah | ||
+ | DS = SS = DOS DS | ||
+ | STACK: WORD extended error code | ||
+ | Return: AL = user response (0=ignore, 1=retry, 2=abort, 3=fail) | ||
+ | CF clear if retry, set otherwise | ||
+ | STACK unchanged | ||
+ | Notes: can only be called during a DOS function call, as it uses various | ||
+ | fields in the SDA to set up the registers for the INT 24 | ||
+ | reportedly sets current DPB's first root directory sector to 1 | ||
+ | SeeAlso: INT 24 | ||
+ | ----------2F120B----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - SIGNAL SHARING VIOLATION TO USER | ||
+ | AX = 120Bh | ||
+ | ES:DI -> system file table entry for previous open of file | ||
+ | STACK: WORD extended error code (should be 20h--sharing violation) | ||
+ | Return: CF clear if operation should be retried | ||
+ | CF set if operation should not be retried | ||
+ | AX = error code (20h) (see INT 21/AH=59h) | ||
+ | STACK unchanged | ||
+ | Notes: can only be called during a DOS function call | ||
+ | should only be called if an attempt was made to open an already-open | ||
+ | file contrary to the sharing rules | ||
+ | invokes INT 24 if SFT file opened via FCB or in compatibility mode with | ||
+ | inheritance allowed | ||
+ | ----------2F120C----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - OPEN DEVICE AND SET SFT OWNER??? | ||
+ | AX = 120Ch | ||
+ | SDA current SFT pointer -> SFT for file | ||
+ | DS = SS = DOS DS | ||
+ | Return: ES, DI, AX destroyed | ||
+ | Notes: | ||
+ | changes owner of last-accessed SFT to calling process if it was opened | ||
+ | via FCB | ||
+ | called by network redirectors | ||
+ | ----------2F120D----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET DATE AND TIME | ||
+ | AX = 120Dh | ||
+ | SS = DOS DS | ||
+ | Return: AX = current date in packed format (see INT 21/ | ||
+ | DX = current time in packed format (see INT 21/ | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F120E----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - MARK ALL DISK BUFFERS UNREFERENCED | ||
+ | AX = 120Eh | ||
+ | SS = DOS DS | ||
+ | Return: DS:DI -> first disk buffer | ||
+ | Note: | ||
+ | SeeAlso: AX=1209h, | ||
+ | ----------2F120F----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - MAKE BUFFER MOST RECENTLY USED | ||
+ | AX = 120Fh | ||
+ | DS:DI -> disk buffer | ||
+ | SS = DOS DS | ||
+ | Return: DS:DI -> next buffer in buffer list | ||
+ | Note: | ||
+ | SeeAlso: AX=1207h | ||
+ | ----------2F1210----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - FIND UNREFERENCED DISK BUFFER | ||
+ | AX = 1210h | ||
+ | DS:DI -> first disk buffer to check | ||
+ | Return: ZF clear if found | ||
+ | DS:DI -> first unreferenced disk buffer | ||
+ | ZF set if not found | ||
+ | SeeAlso: AX=120Eh | ||
+ | ----------2F1211----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - NORMALIZE ASCIZ FILENAME | ||
+ | AX = 1211h | ||
+ | DS:SI -> ASCIZ filename to normalize | ||
+ | ES:DI -> buffer for normalized filename | ||
+ | Return: destination buffer filled with uppercase filename, with slashes turned | ||
+ | to backslashes | ||
+ | SeeAlso: AX=121Eh, | ||
+ | ----------2F1212----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET LENGTH OF ASCIZ STRING | ||
+ | AX = 1212h | ||
+ | ES:DI -> ASCIZ string | ||
+ | Return: CX = length of string | ||
+ | SeeAlso: AX=1225h | ||
+ | ----------2F1213----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - UPPERCASE CHARACTER | ||
+ | AX = 1213h | ||
+ | STACK: WORD character to convert to uppercase | ||
+ | Return: AL = uppercase character | ||
+ | STACK unchanged | ||
+ | ----------2F1214----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - COMPARE FAR POINTERS | ||
+ | AX = 1214h | ||
+ | DS:SI = first pointer | ||
+ | ES:DI = second pointer | ||
+ | Return: ZF set if pointers are equal, ZF clear if not equal | ||
+ | ----------2F1215----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - FLUSH BUFFER | ||
+ | AX = 1215h | ||
+ | DS:DI -> disk buffer | ||
+ | SS = DOS DS | ||
+ | STACK: WORD drives for which to skip buffer | ||
+ | ignore buffer if drive same as high byte, or bytes differ and | ||
+ | the buffer is for a drive OTHER than that given in low byte | ||
+ | Return: STACK unchanged | ||
+ | Note: can be called only from within DOS | ||
+ | SeeAlso: AX=1209h | ||
+ | ----------2F1216----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET ADDRESS OF SYSTEM FILE TABLE | ||
+ | AX = 1216h | ||
+ | BX = system file table entry number | ||
+ | Return: CF clear if successful | ||
+ | ES:DI -> system file table entry | ||
+ | CF set if BX greater than FILES= | ||
+ | SeeAlso: AX=1220h | ||
+ | ----------2F1217----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET CURRENT DIRECTORY STRUCTURE FOR DRIVE | ||
+ | AX = 1217h | ||
+ | SS = DOS DS | ||
+ | STACK: WORD drive (0 = A:, 1 = B:, etc) | ||
+ | Return: CF set on error | ||
+ | (drive > LASTDRIVE) | ||
+ | CF clear if successful | ||
+ | DS:SI -> current directory structure for specified drive | ||
+ | STACK unchanged | ||
+ | SeeAlso: AX=1219h | ||
+ | ----------2F1218----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET CALLER' | ||
+ | AX = 1218h | ||
+ | Return: DS:SI -> saved caller' | ||
+ | Note: only valid while within DOS | ||
+ | ----------2F1219----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - SET DRIVE??? | ||
+ | AX = 1219h | ||
+ | SS = DOS DS | ||
+ | STACK: WORD drive (0 = default, 1 = A:, etc) | ||
+ | Return: ??? | ||
+ | STACK unchanged | ||
+ | Notes: | ||
+ | builds a current directory structure if inside server call | ||
+ | (INT 21/ | ||
+ | SeeAlso: AX=1217h, | ||
+ | ----------2F121A----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET FILE'S DRIVE | ||
+ | AX = 121Ah | ||
+ | DS:SI -> filename | ||
+ | Return: AL = drive (0 = default, 1 = A:, etc, FFh = invalid) | ||
+ | DS:SI -> filename without leading X: (if present) | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F121B----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - SET YEAR/LENGTH OF FEBRUARY | ||
+ | AX = 121Bh | ||
+ | CL = year - 1980 | ||
+ | Return: AL = number of days in February | ||
+ | Note: | ||
+ | SeeAlso: INT 21/AH=2Bh | ||
+ | ----------2F121C----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - CHECKSUM MEMORY | ||
+ | AX = 121Ch | ||
+ | DS:SI -> start of memory to checksum | ||
+ | CX = number of bytes | ||
+ | DX = initial checksum | ||
+ | SS = DOS DS | ||
+ | Return: AX, CX destroyed | ||
+ | DX = checksum | ||
+ | DS:SI -> first byte after checksummed range | ||
+ | Note: used by DOS to determine day count since 1/1/80 given a date | ||
+ | SeeAlso: AX=121Dh | ||
+ | ----------2F121D----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - SUM MEMORY | ||
+ | AX = 121Dh | ||
+ | DS:SI -> memory to add up | ||
+ | CX = 0000h | ||
+ | DX = limit | ||
+ | Return: AL = byte which exceeded limit | ||
+ | CX = number of bytes before limit exceeded | ||
+ | DX = remainder after adding first CX bytes | ||
+ | DS:SI -> byte beyond the one which exceeded the limit | ||
+ | Note: used by DOS to determine year or month given day count since 1/1/80 | ||
+ | SeeAlso: AX=121Ch | ||
+ | ----------2F121E----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - COMPARE FILENAMES | ||
+ | AX = 121Eh | ||
+ | DS:SI -> first ASCIZ filename | ||
+ | ES:DI -> second ASCIZ filename | ||
+ | Return: ZF set if filenames equivalent, ZF clear if not | ||
+ | SeeAlso: AX=1211h, | ||
+ | ----------2F121F----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - BUILD CURRENT DIRECTORY STRUCTURE | ||
+ | AX = 121Fh | ||
+ | SS = DOS DS | ||
+ | STACK: WORD drive letter | ||
+ | Return: ES:DI -> current directory structure (will be overwritten by next call) | ||
+ | STACK unchanged | ||
+ | ----------2F1220----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET JOB FILE TABLE ENTRY | ||
+ | AX = 1220h | ||
+ | BX = file handle | ||
+ | Return: CF set on error | ||
+ | AL = 6 (invalid file handle) | ||
+ | CF clear if successful | ||
+ | ES:DI -> JFT entry for file handle in current process | ||
+ | Note: the byte pointed at by ES:DI contains the number of the SFT for the | ||
+ | file handle, or FFh if the handle is not open | ||
+ | SeeAlso: AX=1216h, | ||
+ | ----------2F1221----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - CANONICALIZE FILE NAME | ||
+ | AX = 1221h | ||
+ | DS:SI -> file name to be fully qualified | ||
+ | ES:DI -> 128-byte buffer for resulting canonical file name | ||
+ | SS = DOS DS | ||
+ | Return: (see INT 21/AH=60h) | ||
+ | Note: | ||
+ | SeeAlso: AX=1123h, | ||
+ | ----------2F1222----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - SET EXTENDED ERROR INFO | ||
+ | AX = 1222h | ||
+ | SS = DOS data segment | ||
+ | SS:SI -> 4-byte records | ||
+ | BYTE error code, FFh = last record | ||
+ | BYTE error class, FFh = don't change | ||
+ | BYTE suggested action, FFh = don't change | ||
+ | BYTE error locus, FFh = don't change | ||
+ | SDA error code set | ||
+ | Return: SI destroyed | ||
+ | SDA error class, error locus, and suggested action fields set | ||
+ | Note: can be called only from within DOS | ||
+ | SeeAlso: AX=122Dh, | ||
+ | ----------2F1223----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - CHECK IF CHARACTER DEVICE | ||
+ | AX = 1223h | ||
+ | SDA+218h (DOS 3.10-3.30) = eight-character blank-padded name | ||
+ | SDA+22Bh (DOS 4.0x) = eight-character blank-padded name | ||
+ | Return: CF set if no character device by that name found | ||
+ | CF clear if found | ||
+ | BH = low byte of device attribute word | ||
+ | Note: can only be called from within DOS (assumes DS=SS=DOS DS) | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F1224----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - DELAY | ||
+ | AX = 1224h | ||
+ | SS = DOS DS | ||
+ | Return: after delay set by INT 21/ | ||
+ | (INT 21/ | ||
+ | Note: delay is dependent on the processor speed, and is skipped entirely if | ||
+ | inside a server call | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F1225----------------------------- | ||
+ | INT 2F U - DOS 3+ internal - GET LENGTH OF ASCIZ STRING | ||
+ | AX = 1225h | ||
+ | DS:SI -> ASCIZ string | ||
+ | Return: CX = length of string | ||
+ | SeeAlso: AX=1212h | ||
+ | ----------2F1226----------------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - OPEN FILE | ||
+ | AX = 1226h | ||
+ | CL = access mode | ||
+ | DS:DX -> ASCIZ filename | ||
+ | Return: CF set on error | ||
+ | AL = error code (see INT 21/AH=59h) | ||
+ | CF clear if successful | ||
+ | AX = file handle | ||
+ | Notes: can only be called from within DOS (assumes SS=DOS DS) | ||
+ | equivalent to INT 21/AH=3Dh | ||
+ | SeeAlso: AX=1227h, | ||
+ | ----------2F1227----------------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - CLOSE FILE | ||
+ | AX = 1227h | ||
+ | BX = file handle | ||
+ | Return: CF set on error | ||
+ | AL = 06h invalid file handle | ||
+ | CF clear if successful | ||
+ | Notes: can only be called from within DOS (assumes SS=DOS DS) | ||
+ | equivalent to INT 21/AH=3Eh | ||
+ | SeeAlso: AX=1106h, | ||
+ | ----------2F1228BP4200----------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - MOVE FILE POINTER | ||
+ | AX = 1228h | ||
+ | BP = 4200h, 4201h, 4202h (see INT 21/AH=42h) | ||
+ | BX = file handle | ||
+ | CX:DX = offset in bytes | ||
+ | SS = DOS DS | ||
+ | Return: as for INT 21/AH=42h | ||
+ | Notes: | ||
+ | function call | ||
+ | sets user stack frame pointer to dummy buffer, moves BP to AX, performs | ||
+ | LSEEK, and restores frame pointer | ||
+ | SeeAlso: INT 21/AH=42h | ||
+ | ----------2F1229----------------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - READ FROM FILE | ||
+ | AX = 1229h | ||
+ | BX = file handle | ||
+ | CX = number of bytes to read | ||
+ | DS:DX -> buffer | ||
+ | SS = DOS DS | ||
+ | Return: as for INT 21/AH=3Fh | ||
+ | Note: | ||
+ | a DOS function call | ||
+ | SeeAlso: AX=1226h, | ||
+ | ----------2F122A----------------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - SET FASTOPEN ENTRY POINT | ||
+ | AX = 122Ah | ||
+ | BX = entry point to set (0001h or 0002h) | ||
+ | DS:SI -> FASTOPEN entry point | ||
+ | (entry point not set if SI = FFFFh for DOS 4+) | ||
+ | Return: CF set if specified entry point already set | ||
+ | Notes: | ||
+ | both entry points set to same handler by DOS 4.01 | ||
+ | |||
+ | DOS 3.30+ FASTOPEN is called with: | ||
+ | AL = 01h ??? | ||
+ | CX = ??? seems to be offset | ||
+ | DI = ??? seems to be offset | ||
+ | SI = offset in DOS DS of filename | ||
+ | AL = 02h ??? | ||
+ | AL = 03h open file??? | ||
+ | SI = offset in DOS DS of filename | ||
+ | AL = 04h ??? | ||
+ | AH = subfunction (00h, | ||
+ | ES:DI -> ??? | ||
+ | CX = ??? (subfunctions 01h and 02h only) | ||
+ | Returns: CF set on error or not installed | ||
+ | Note: function 03h calls function 01h first | ||
+ | |||
+ | PCDOS 4.01 FASTOPEN is additionally called with: | ||
+ | AL = 04h ??? | ||
+ | AH = 03h | ||
+ | ??? | ||
+ | AL = 05h ??? | ||
+ | AL = 0Bh ??? | ||
+ | AL = 0Ch ??? | ||
+ | AL = 0Dh ??? | ||
+ | AL = 0Eh ??? | ||
+ | AL = 0Fh ??? | ||
+ | AL = 10h ??? | ||
+ | |||
+ | MSDOS 5.0 FASTOPEN is additionally called with: | ||
+ | AL = 04h ??? | ||
+ | AH = 03h | ||
+ | ??? | ||
+ | AL = 05h ??? | ||
+ | DL = drive (00h = A:) | ||
+ | ??? | ||
+ | AL = 06h ??? | ||
+ | ----------2F122B----------------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - IOCTL | ||
+ | AX = 122Bh | ||
+ | BP = 44xxh | ||
+ | SS = DOS DS | ||
+ | additional registers as appropriate for INT 21/AX=44xxh | ||
+ | Return: as for INT 21/AH=44h | ||
+ | Notes: | ||
+ | a DOS function call | ||
+ | sets user stack frame pointer to dummy buffer, moves BP to AX, performs | ||
+ | IOCTL, and restores frame pointer | ||
+ | SeeAlso: INT 21/AH=44h | ||
+ | ----------2F122C----------------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - GET DEVICE CHAIN | ||
+ | AX = 122Ch | ||
+ | Return: BX:AX -> header of second device driver (NUL is first) in driver chain | ||
+ | SeeAlso: INT 21/AH=52h | ||
+ | ----------2F122D----------------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - GET EXTENDED ERROR CODE | ||
+ | AX = 122Dh | ||
+ | Return: AX = current extended error code | ||
+ | SeeAlso: AX=1222h, | ||
+ | ----------2F122E----------------------------- | ||
+ | INT 2F U - DOS 4+ internal - GET OR SET ERROR TABLE ADDRESSES | ||
+ | AX = 122Eh | ||
+ | DL = subfunction | ||
+ | 00h get standard DOS error table (errors 00h-12h, | ||
+ | Return: ES:DI -> error table | ||
+ | 01h set standard DOS error table | ||
+ | ES:DI -> error table | ||
+ | 02h get parameter error table (errors 00h-0Ah) | ||
+ | Return: ES:DI -> error table | ||
+ | 03h set parameter error table | ||
+ | ES:DI -> error table | ||
+ | 04h get critical/ | ||
+ | Return: ES:DI -> error table | ||
+ | 05h set critical/ | ||
+ | ES:DI -> error table | ||
+ | 06h get ??? error table | ||
+ | Return: ES:DI -> error table or 0000h:0000h | ||
+ | 07h set ??? error table | ||
+ | ES:DI -> error table | ||
+ | 08h get error message retriever (see below) | ||
+ | Return: ES:DI -> FAR procedure to fetch error message | ||
+ | 09h set ??? error table | ||
+ | ES:DI -> error table | ||
+ | Notes: if the returned segment on a " | ||
+ | the offset of the error message table within COMMAND.COM, | ||
+ | procedure returned by DL=08h should be called | ||
+ | DOS 5.0 COMMAND.COM does not allow setting any of the addresses; they | ||
+ | are always returned with segment 0001h | ||
+ | SeeAlso: AX=0500h, | ||
+ | |||
+ | Format of DOS 4.x error table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | 04h 2N WORDs table of all error headers for table | ||
+ | Offset Size Description | ||
+ | 00h WORD error message number | ||
+ | 02h WORD offset of error message from start of header | ||
+ | error messages are count byte followed by msg | ||
+ | Note: DOS 5 error tables consist of one word per error number; each word | ||
+ | contains either the offset of a counted string or 0000h | ||
+ | |||
+ | Call error retrieval function with: | ||
+ | AX = error number | ||
+ | DI = offset of error table | ||
+ | Return: ES:DI -> error message (counted string) | ||
+ | Notes: this function needs to access COMMAND.COM if the messages were not | ||
+ | loaded into memory permanently with /MSG; the caller should assume | ||
+ | that the returned message will be overwritten by the next call of | ||
+ | the function | ||
+ | supported by DR-DOS 5.0 | ||
+ | ----------2F122F----------------------------- | ||
+ | INT 2F U - DOS 4+ internal - SET DOS VERSION NUMBER TO RETURN | ||
+ | AX = 122Fh | ||
+ | DX = DOS version number (0000h = return true DOS version) | ||
+ | Note: not available under DR-DOS 5.0 | ||
+ | SeeAlso: INT 21/AH=30h | ||
+ | ----------2F13------------------------------- | ||
+ | INT 2F U - DOS 3.2+ - SET DISK INTERRUPT HANDLER | ||
+ | AH = 13h | ||
+ | DS:DX -> interrupt handler disk driver calls on read/write | ||
+ | ES:BX = address to restore INT 13 to on system halt (exit from root | ||
+ | shell) or warm boot (INT 19) | ||
+ | Return: DS:DX from previous invocation of this function | ||
+ | ES:BX from previous invocation of this function | ||
+ | Notes: | ||
+ | original INT 13 handler. | ||
+ | on floppy drives, the second is for tracking formatting calls and | ||
+ | correcting DMA boundary errors, the third is for working around | ||
+ | problems in a particular version of IBM's ROM BIOS | ||
+ | before the first call, ES:BX points at the original BIOS INT 13; DS:DX | ||
+ | also points there unless IO.SYS has installed a special filter for | ||
+ | hard disk reads (on systems with model byte FCh and BIOS date | ||
+ | " | ||
+ | most DOS 3.3+ disk access is via the vector in DS:DX, although a few | ||
+ | functions are still invoked via an INT 13 instruction | ||
+ | this is a dangerous security loophole for any virus-monitoring software | ||
+ | which does not trap this call (many Bulgarian viruses are known to | ||
+ | use it to get the original ROM entry point) | ||
+ | SeeAlso: INT 13/ | ||
+ | ----------2F1400----------------------------- | ||
+ | INT 2F - NLSFUNC.COM - INSTALLATION CHECK | ||
+ | AX = 1400h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | 01h not installed, not OK | ||
+ | FFh installed | ||
+ | Notes: | ||
+ | supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh | ||
+ | supported by DR-DOS 5.0 | ||
+ | documented for MS-DOS 5.0, but undocumented in prior versions | ||
+ | ----------2F1401----------------------------- | ||
+ | INT 2F U - NLSFUNC.COM - CHANGE CODE PAGE | ||
+ | AX = 1401h | ||
+ | DS:SI -> internal code page structure (see below) | ||
+ | BX = new code page | ||
+ | DX = country code??? | ||
+ | Return: AL = status | ||
+ | 00h successful | ||
+ | else DOS error code | ||
+ | Note: | ||
+ | SeeAlso: INT 21/AH=66h | ||
+ | |||
+ | Format of DOS 3.30 internal code page structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | 08h 64 BYTEs name of country information file | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 60h 41 BYTEs data to return for INT 21/AX=6501h | ||
+ | ----------2F1402----------------------------- | ||
+ | INT 2F U - NLSFUNC.COM - GET COUNTRY INFO | ||
+ | AX = 1402h | ||
+ | BP = subfunction (same as AL for INT 21/AH=65h) | ||
+ | BX = code page | ||
+ | DX = country code | ||
+ | DS:SI -> internal code page structure (see AX=1401h) | ||
+ | ES:DI -> user buffer | ||
+ | CX = size of user buffer | ||
+ | Return: AL = status | ||
+ | 00h successful | ||
+ | else DOS error code | ||
+ | Notes: | ||
+ | code page structure apparently only needed for COUNTRY.SYS pathname | ||
+ | SeeAlso: AX=1403h, | ||
+ | ----------2F1403----------------------------- | ||
+ | INT 2F U - NLSFUNC.COM - SET COUNTRY INFO | ||
+ | AX = 1403h | ||
+ | DS:SI -> internal code page structure (see AX=1401h) | ||
+ | BX = code page | ||
+ | DX = country code | ||
+ | Return: AL = status | ||
+ | ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=1402h, | ||
+ | ----------2F1404----------------------------- | ||
+ | INT 2F U - NLSFUNC.COM - GET COUNTRY INFO | ||
+ | AX = 1404h | ||
+ | BX = code page | ||
+ | DX = country code | ||
+ | DS:SI -> internal code page structure (see AX=1401h) | ||
+ | ES:DI -> user buffer | ||
+ | Return: AL = status | ||
+ | ??? | ||
+ | Notes: | ||
+ | code page structure apparently only needed for COUNTRY.SYS pathname | ||
+ | SeeAlso: AX=1402h, | ||
+ | ----------2F14FE----------------------------- | ||
+ | INT 2F U - DR-DOS 5.0 NLSFUNC - ??? | ||
+ | AX = 14FEh | ||
+ | DI = ??? | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | or FFh on entry. | ||
+ | SeeAlso: AX=14FFh | ||
+ | ----------2F14FF----------------------------- | ||
+ | INT 2F U - DR-DOS 5.0 NLSFUNC - ??? | ||
+ | AX = 14FFh | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | or FFh on entry. | ||
+ | SeeAlso: AX=14FEh | ||
+ | ----------2F1500----------------------------- | ||
+ | INT 2F - DOS 4.00 GRAPHICS.COM - INSTALLATION CHECK | ||
+ | AX = 1500h | ||
+ | Return: AX = FFFFh | ||
+ | ES:DI -> ??? (graphics data?) | ||
+ | Note: this installation check conflicts with the CD-ROM Extensions | ||
+ | installation check; moved to AX=AC00h in later versions | ||
+ | SeeAlso: AX=AC00h | ||
+ | ----------2F1500BX0000----------------------- | ||
+ | INT 2F - CD-ROM - INSTALLATION CHECK | ||
+ | AX = 1500h | ||
+ | BX = 0000h | ||
+ | Return: BX = number of CD-ROM drive letters used | ||
+ | CX = starting drive letter (0=A:) | ||
+ | Notes: this installation check DOES NOT follow the format used by other | ||
+ | software | ||
+ | this installation check conflicts with the DOS 4.00 GRAPHICS.COM | ||
+ | installation check | ||
+ | SeeAlso: INT 2F/ | ||
+ | ----------2F1501----------------------------- | ||
+ | INT 2F - CD-ROM - GET DRIVE DEVICE LIST | ||
+ | AX = 1501h | ||
+ | ES:BX -> buffer to hold drive letter list (5 bytes per drive letter) | ||
+ | Return: buffer filled, for each drive letter | ||
+ | BYTE subunit number in driver | ||
+ | DWORD address of device driver header | ||
+ | ----------2F1502----------------------------- | ||
+ | INT 2F - CD-ROM - GET COPYRIGHT FILE NAME | ||
+ | AX = 1502h | ||
+ | ES:BX -> 38-byte buffer for name of copyright file | ||
+ | CX = drive number (0=A:) | ||
+ | Return: CF set if drive is not a CD-ROM drive | ||
+ | AX = 15 (invalid drive) | ||
+ | CF clear if successful | ||
+ | SeeAlso: AX=1503h | ||
+ | ----------2F1503----------------------------- | ||
+ | INT 2F - CD-ROM - GET ABSTRACT FILE NAME | ||
+ | AX = 1503h | ||
+ | ES:BX -> 38-byte buffer for name of abstract file | ||
+ | CX = drive number (0=A:) | ||
+ | Return: CF set if drive is not a CD-ROM drive | ||
+ | AX = 15 (invalid drive) | ||
+ | CF clear if successful | ||
+ | SeeAlso: AX=1502h | ||
+ | ----------2F1504----------------------------- | ||
+ | INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME | ||
+ | AX = 1504h | ||
+ | ES:BX -> 38-byte buffer for name of bibliographic documentation file | ||
+ | CX = drive number (0=A:) | ||
+ | Return: CF set if drive is not a CD-ROM drive | ||
+ | AX = 15 (invalid drive) | ||
+ | CF clear if successful | ||
+ | ----------2F1505----------------------------- | ||
+ | INT 2F - CD-ROM - READ VTOC | ||
+ | AX = 1505h | ||
+ | ES:BX -> 2048-byte buffer | ||
+ | CX = drive number (0=A:) | ||
+ | DX = sector index (0=first volume descriptor, | ||
+ | Return: CF set on error | ||
+ | AX = error code (15=invalid drive, | ||
+ | CF clear if successful | ||
+ | AX = volume descriptor type (1=standard, | ||
+ | ----------2F1506----------------------------- | ||
+ | INT 2F - CD-ROM - TURN DEBUGGING ON | ||
+ | AX = 1506h | ||
+ | BX = debugging function to enable | ||
+ | Note: | ||
+ | SeeAlso: AX=1507h | ||
+ | ----------2F1507----------------------------- | ||
+ | INT 2F - CD-ROM - TURN DEBUGGING OFF | ||
+ | AX = 1507h | ||
+ | BX = debugging function to disable | ||
+ | Note: | ||
+ | SeeAlso: AX=1506h | ||
+ | ----------2F1508----------------------------- | ||
+ | INT 2F - CD-ROM - ABSOLUTE DISK READ | ||
+ | AX = 1508h | ||
+ | ES:BX -> buffer | ||
+ | CX = drive number (0=A:) | ||
+ | SI:DI = starting sector number | ||
+ | DX = number of sectors to read | ||
+ | Return: CF set on error | ||
+ | AL = error code (15=invalid drive, | ||
+ | CF clear if successful | ||
+ | SeeAlso: AX=1509h | ||
+ | |||
+ | ===== INT 2F - CD-ROM - ABSOLUTE DISK WRITE ===== | ||
+ | |||
+ | AX = 1509h | ||
+ | ES:BX -> buffer | ||
+ | CX = drive number (0=A:) | ||
+ | SI:DI = starting sector number | ||
+ | DX = number of sectors to write | ||
+ | Note: | ||
+ | SeeAlso: AX=1508h | ||
+ | ----------2F150A----------------------------- | ||
+ | INT 2F - CD-ROM - RESERVED | ||
+ | AX = 150Ah | ||
+ | ----------2F150B----------------------------- | ||
+ | INT 2F - CD-ROM v2.00+ - DRIVE CHECK | ||
+ | AX = 150Bh | ||
+ | CX = drive number (0=A:) | ||
+ | Return: BX = ADADh if MSCDEX.EXE installed | ||
+ | AX = 0000h if drive not supported | ||
+ | nonzero if supported | ||
+ | SeeAlso: AX=150Dh | ||
+ | ----------2F150C----------------------------- | ||
+ | INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION | ||
+ | AX = 150Ch | ||
+ | Return: BH = major version | ||
+ | BL = minor version | ||
+ | Note: | ||
+ | ----------2F150D----------------------------- | ||
+ | INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS | ||
+ | AX = 150Dh | ||
+ | ES:BX -> buffer for drive letter list (1 byte per drive) | ||
+ | Return: buffer filled with drive numbers (0=A: | ||
+ | to the drive in the same position for function 1501h | ||
+ | SeeAlso: AX=150Bh | ||
+ | ----------2F150E----------------------------- | ||
+ | INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE | ||
+ | AX = 150Eh | ||
+ | BX = subfunction | ||
+ | 00h get preference | ||
+ | DX = 0000h | ||
+ | Return: DX = preference settings | ||
+ | 01h set preference | ||
+ | DH = volume descriptor preference | ||
+ | 01h = primary volume descriptor | ||
+ | 02h = supplementary volume descriptor | ||
+ | DL = supplementary volume descriptor preference | ||
+ | 01h = shift-Kanji | ||
+ | CX = drive number (0=A:) | ||
+ | Return: CF set on error | ||
+ | AX = error code (15=invalid drive, | ||
+ | CF clear if successful | ||
+ | ----------2F150F----------------------------- | ||
+ | INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY | ||
+ | AX = 150Fh | ||
+ | CL = drive number (0=A:) | ||
+ | CH bit 0 = copy flag | ||
+ | clear if direct copy | ||
+ | set if copy to structure which removed ISO/High Sierra diffs | ||
+ | ES:BX -> ASCIZ path name | ||
+ | SI:DI -> buffer for directory entry (see below) | ||
+ | minimum 255 bytes for direct copy | ||
+ | Return: CF set on error | ||
+ | AX = error code | ||
+ | CF clear if succesful | ||
+ | AX = disk format (0=High Sierra, | ||
+ | |||
+ | Format of directory entry (direct copy): | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---High Sierra--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---ISO 9660--- | ||
+ | | ||
+ | | ||
+ | ---both formats--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | BYTE (optional) padding if filename is odd length | ||
+ | N BYTEs system data | ||
+ | |||
+ | Format of directory entry (canonicalized): | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 18h 38 BYTEs ASCIZ filename | ||
+ | | ||
+ | | ||
+ | 41h 220 BYTEs system use data | ||
+ | ----------2F1510----------------------------- | ||
+ | INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST | ||
+ | AX = 1510h | ||
+ | CX = CD-ROM drive letter (0 = A, 1 = B, etc) | ||
+ | ES:BX -> CD-ROM device driver request header (see AX=0802h) | ||
+ | ----------2F1600----------------------------- | ||
+ | INT 2F - MS WINDOWS - WINDOWS ENHANCED MODE INSTALLATION CHECK | ||
+ | AX = 1600h | ||
+ | Return: AL = 00h if Windows 3.x enhanced mode or Windows/386 2.x not running | ||
+ | AL = 80h if Windows 3.x enhanced mode or Windows/386 2.x not running | ||
+ | AL = 01h if Windows/386 2.x running | ||
+ | AL = FFh if Windows/386 2.x running | ||
+ | AL = anything else | ||
+ | AL = Windows major version number >= 3 | ||
+ | AH = Windows minor version number | ||
+ | Note: INT 2F/AH=16h comprises an API for non-Windows programs (DOS device | ||
+ | drivers, TSRs, and applications) to cooperate with multitasking | ||
+ | Windows/386 2.x and Windows 3.x and higher enhanced mode. | ||
+ | certain calls are also supported in the Microsoft 80286 DOS extender in | ||
+ | Windows standard mode | ||
+ | SeeAlso: AX=4680h | ||
+ | ----------2F1602----------------------------- | ||
+ | INT 2F - MS WINDOWS/386 2.x - GET API ENTRY POINT | ||
+ | AX = 1602h | ||
+ | Return: ES:DI -> Windows/386 2.x API procedure entry point | ||
+ | Notes: this interface is supported in Windows 3.x only for 2.x compatibility | ||
+ | to get the current virtual machine (VM) ID in Windows/386 2.x: | ||
+ | AX = 0000h | ||
+ | ES:DI -> return address | ||
+ | JUMP to address returned from INT 2F/AX=1602h | ||
+ | After JUMP, at return address: | ||
+ | BX = current VM ID. | ||
+ | SeeAlso: AX=0C20h | ||
+ | ----------2F1603----------------------------- | ||
+ | INT 2F - RM Nimbus MSDOS 3.3 - ??? | ||
+ | AX = 1603h | ||
+ | Return: AX = 5248h (' | ||
+ | DS:SI -> first byte after INT 2F handler in IBMBIO.COM | ||
+ | ----------2F1605----------------------------- | ||
+ | INT 2F - MS WINDOWS - WINDOWS ENH MODE & 286 DOSX INIT BROADCAST | ||
+ | AX = 1605h | ||
+ | ES:BX = 0000h:0000h | ||
+ | DS:SI = 0000h:0000h | ||
+ | CX = 0000h | ||
+ | DX = flags | ||
+ | bit 0 = 0 if Windows enhanced-mode initialization | ||
+ | bit 0 = 1 if Microsoft 286 DOS extender initialization | ||
+ | bits 1-15 reserved (undefined) | ||
+ | DI = version number (major in upper byte, minor in lower) | ||
+ | Return: CX = 0000h if okay for Windows to load | ||
+ | CX <> 0 if Windows should not load | ||
+ | ES:BX -> startup info structure (see below) | ||
+ | DS:SI -> virtual86 mode enable/ | ||
+ | Notes: the Windows enhanced mode loader and Microsoft 286 DOS extender will | ||
+ | broadcast an INT 2F/AX=1605h call when initializing. Any DOS device | ||
+ | driver or TSR can watch for this broadcast and return the appropriate | ||
+ | values. | ||
+ | responsibility to display an error message. | ||
+ | each handler must first chain to the prior INT 2F handler with | ||
+ | registers unchanged before processing the call | ||
+ | if the handler requires local data on a per-VM basis, it must store the | ||
+ | returned ES:BX in the " | ||
+ | return a pointer to that structure in ES:BX | ||
+ | a single TSR may set the V86 mode enable/ | ||
+ | already nonzero, the TSR must fail the initialization by setting CX | ||
+ | nonzero | ||
+ | SeeAlso: AX=1606h, | ||
+ | |||
+ | Format of Startup Information Structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of one Instance Item in array: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | |||
+ | Virtual mode enable/ | ||
+ | AX = 0000h disable V86 mode | ||
+ | AX = 0001h enable V86 mode | ||
+ | interrupts disabled | ||
+ | Return: CF set on error | ||
+ | CF clear if successful | ||
+ | interrupts disabled | ||
+ | ----------2F1606----------------------------- | ||
+ | INT 2F - MS WINDOWS - WINDOWS ENH MODE & 286 DOSX EXIT BROADCAST | ||
+ | AX = 1606h | ||
+ | DX = flags | ||
+ | bit 0 = 0 if Windows enhanced-mode exit | ||
+ | bit 0 = 1 if Microsoft 286 DOS extender exit | ||
+ | bits 1-15 reserved (undefined) | ||
+ | Notes: if the init broadcast fails (AX=1605h returned CX <> 0), then this | ||
+ | broadcast will be issued immediately. | ||
+ | this call will be issued in real mode | ||
+ | SeeAlso: AX=1605h, | ||
+ | ----------2F1607----------------------------- | ||
+ | INT 2F - MS WINDOWS - VIRTUAL DEVICE CALL OUT API | ||
+ | AX = 1607h | ||
+ | BX = virtual device ID (see INT 2F/ | ||
+ | Notes: more of a convention than an API, this call specifies a standard | ||
+ | mechanism for Windows enhanced-mode virtual devices (VxD' | ||
+ | to DOS device drivers and TSRs | ||
+ | VNETBIOS calls this function and then checks ES:DI to determine whether | ||
+ | the NetBIOS has any extensions Windows should know about | ||
+ | VMD (Virtual Mouse Driver) calls this and then checks whether CX is | ||
+ | nonzero; if yes, it will not automatically virtualize the mouse | ||
+ | driver. | ||
+ | itself using the Windows API. | ||
+ | SeeAlso: AX=0C20h, | ||
+ | ----------2F1607BX0015----------------------- | ||
+ | INT 2F - DOS 5.0 kernel - " | ||
+ | AX = 1607h | ||
+ | BX = 0015h (VxD identifier of " | ||
+ | CX = function | ||
+ | 0000h ??? | ||
+ | Return: CX = 0001h | ||
+ | ES:BX -> ??? data | ||
+ | 0001h ??? | ||
+ | DX = ??? | ||
+ | Return: AX = B97Ch | ||
+ | BX = value of DX on call | ||
+ | DX = A2ABh | ||
+ | 0002h NOP | ||
+ | 0003h ??? | ||
+ | DX = ??? (bit 0 significant) | ||
+ | Return: if DX bit 0 set: | ||
+ | AX = B97Ch | ||
+ | CX = ??? (0058h) | ||
+ | DX = A2ABh | ||
+ | if DX bit 0 clear: | ||
+ | all registers preserved | ||
+ | 0004h ??? | ||
+ | Return: DX = 0000h | ||
+ | 0005h get device driver size | ||
+ | ES = segment of device driver | ||
+ | Return: DX:AX = 0000h:0000h on error (not dev. driver segment) | ||
+ | DX:AX = A2ABh:B97Ch if successful | ||
+ | BX:CX = size of device driver in bytes | ||
+ | ----------2F1608----------------------------- | ||
+ | INT 2F - MS WINDOWS - WINDOWS ENHANCED MODE INIT COMPLETE BROADCAST | ||
+ | AX = 1608h | ||
+ | Notes: | ||
+ | real-mode software may be called between the Windows enhanced-mode init | ||
+ | call (AX=1605h) and this call; the software must detect this | ||
+ | situation | ||
+ | SeeAlso: AX=1605h, | ||
+ | ----------2F1609----------------------------- | ||
+ | INT 2F - MS WINDOWS - WINDOWS ENHANCED MODE BEGIN EXIT BROADCAST | ||
+ | AX = 1609h | ||
+ | Note: | ||
+ | event of a fatal system crash | ||
+ | SeeAlso: AX=1606h, | ||
+ | ----------2F160A----------------------------- | ||
+ | INT 2F - MS Windows 3.1 - IDENTIFY WINDOWS VERSION AND TYPE | ||
+ | AX = 160Ah | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2F160B----------------------------- | ||
+ | INT 2F - MS Windows 3.1 - IDENTIFY TSRs | ||
+ | AX = 160Bh | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | |||
+ | Format of TSR-to-Windows communication structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | bit 0: " | ||
+ | bit 1: " | ||
+ | bit 2: " | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2F160C----------------------------- | ||
+ | INT 2F - MS Windows 3.1 - DETECT ROMs | ||
+ | AX = 160Ch | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: used by ROM Windows | ||
+ | ----------2F1680----------------------------- | ||
+ | INT 2F - MS WINDOWS, DPMI, various - RELEASE CURRENT VIRTUAL MACHINE TIME-SLICE | ||
+ | AX = 1680h | ||
+ | Return: AL = 00h if the call is supported | ||
+ | AL = 80h (unchanged) if the call is not supported | ||
+ | Notes: | ||
+ | under multitaskers; | ||
+ | DPMI 1.0+, and will be supported in OS/2 2.0 for multitasking DOS | ||
+ | applications | ||
+ | does not block the program; it just gives up the remainder of the time | ||
+ | slice | ||
+ | should not be used by Windows-specific programs | ||
+ | SeeAlso: INT 15/AX=1000h | ||
+ | ----------2F1681----------------------------- | ||
+ | INT 2F - MS WINDOWS 3+ - BEGIN CRITICAL SECTION | ||
+ | AX = 1681h | ||
+ | Notes: used to prevent a task switch from occurring | ||
+ | should be followed by an INT 2F/AX=1682h call as soon as possible | ||
+ | nested calls are allowed, and must be followed by an appropriate number | ||
+ | of "end critical section" | ||
+ | not supported in Windows/386 2.x. Get INDOS flag with INT 21/AH=34h and | ||
+ | and increment by hand. | ||
+ | SeeAlso: AX=1682h, | ||
+ | ----------2F1682----------------------------- | ||
+ | INT 2F - MS WINDOWS 3+ - END CRITICAL SECTION | ||
+ | AX = 1682h | ||
+ | Notes: not supported in Windows/386 2.x. Get InDOS flag with INT 21/AH=34h | ||
+ | and decrement by hand, taking care not to decrement InDOS flag | ||
+ | through zero | ||
+ | SeeAlso: AX=1681h, | ||
+ | ----------2F1683----------------------------- | ||
+ | INT 2F - MS WINDOWS 3+ - GET CURRENT VIRTUAL MACHINE ID | ||
+ | AX = 1683h | ||
+ | Return: BX = current virtual machine (VM) ID | ||
+ | Notes: | ||
+ | VM IDs are reused when VMs are destroyed | ||
+ | an ID of 0 will never be returned | ||
+ | SeeAlso: AX=1684h, | ||
+ | ----------2F1684----------------------------- | ||
+ | INT 2F - MS WINDOWS - GET DEVICE API ENTRY POINT | ||
+ | AX = 1684h | ||
+ | BX = virtual device (VxD) ID (see below) | ||
+ | ES:DI = 0000h:0000h | ||
+ | Return: ES:DI -> VxD API entry point, or 0:0 if the VxD does not support an API | ||
+ | Note: some Windows enhanced-mode virtual devices provide services that | ||
+ | applications can access. | ||
+ | (VDD) provides an API used in turn by WINOLDAP. | ||
+ | SeeAlso: AX=1683h | ||
+ | |||
+ | Values for VxD ID: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Note: The high bit of the VxD ID is reserved for future use. The | ||
+ | next 10 bits are the OEM # which is assigned by Microsoft. The | ||
+ | low 5 bits are the device number. | ||
+ | |||
+ | Call VTD.386 entry point with: | ||
+ | AX = 0000h get VTD version number | ||
+ | Return: AH = major version | ||
+ | AL = minor version | ||
+ | AX = 0100h get current clock tick time | ||
+ | Return: EDX:EAX = clock tick time in 840ns units since Windows was | ||
+ | started | ||
+ | AX = 0101h get current system time in milliseconds | ||
+ | Return: EAX = time in milliseconds that Windows has been running | ||
+ | AX = 0102h get current virtual machine time | ||
+ | Return: EAX = cumulative amount of time the virtual machine has | ||
+ | been active, in milliseconds | ||
+ | Note: | ||
+ | be called | ||
+ | ----------2F1685----------------------------- | ||
+ | INT 2F - MS WINDOWS - SWITCH VMs AND CALLBACK | ||
+ | AX = 1685h | ||
+ | BX = VM ID of virtual machine to switch to | ||
+ | CX = flags | ||
+ | bit 0 wait until interrupts enabled | ||
+ | bit 1 wait until critical section unowned | ||
+ | bits 2-15 reserved (zero) | ||
+ | DX:SI = priority boost (see VMM.INC) | ||
+ | ES:DI -> FAR procedure to callback | ||
+ | Return: CF set on error | ||
+ | AX = error code | ||
+ | 01h invalid VM ID | ||
+ | 02h invalid priority boost | ||
+ | 03h invalid flags | ||
+ | CF clear if successful | ||
+ | event will be or has been called | ||
+ | Notes: some DOS devices, such as networks, need to call functions in a | ||
+ | specific VM. This call forces the appropriate VM to be installed. | ||
+ | the callback procedure must preserve all registers and return with IRET | ||
+ | SeeAlso: AX=1683h, | ||
+ | ----------2F1686----------------------------- | ||
+ | INT 2F - DOS Protected-Mode Interface - DETECT MODE | ||
+ | AX = 1686h | ||
+ | Return: AX = 0000h if operating in protected mode under DPMI (INT 31 available) | ||
+ | AX nonzero if in real/V86 mode or no DPMI (INT 31 not available) | ||
+ | SeeAlso: AX=1687h | ||
+ | ----------2F1687----------------------------- | ||
+ | INT 2F - DOS Protected-Mode Interface - INSTALLATION CHECK | ||
+ | AX = 1687h | ||
+ | Return: AX = 0000h if installed | ||
+ | BX = flags | ||
+ | bit 0: 32-bit programs supported | ||
+ | CL = processor type (02h=80286, 03h=80386, 04h=80486) | ||
+ | DH = DPMI major version | ||
+ | DL = two-digit DPMI minor version | ||
+ | SI = number of paragraphs of DOS extender private data | ||
+ | ES:DI -> DPMI mode-switch entry point | ||
+ | AX nonzero if not installed | ||
+ | SeeAlso: AX=1686h | ||
+ | |||
+ | Call mode switch entry point with: | ||
+ | AX = flags | ||
+ | bit 0: set if 32-bit program | ||
+ | ES = real mode segment of buffer for DPMI private data (ignored if | ||
+ | SI was zero) | ||
+ | Return: CF set on error | ||
+ | program still in real mode | ||
+ | AX = error code (DPMI 1.0+) | ||
+ | 8011h unable to allocate all necessary descriptors | ||
+ | 8021h 32-bit program specified, but 16-bit DPMI host | ||
+ | CF clear if successful | ||
+ | CS = 16-bit selector corresponding to real-mode CS | ||
+ | SS = selector corresponding to real-mode SS (64K limit) | ||
+ | DS = selector corresponding to real-mode DS (64K limit) | ||
+ | ES = selector to program' | ||
+ | FS = GS = 0 | ||
+ | high word of ESP = 0 if 32-bit program | ||
+ | program now in protected mode | ||
+ | Note: this entry point is only called for the initial switch to protected | ||
+ | mode | ||
+ | ----------2F1688----------------------------- | ||
+ | INT 2F U - MS Windows 3.0, 386MAX v6.01 - GET SELECTOR TO LDT | ||
+ | AX = 1688h | ||
+ | Return: AX = status??? (0000h for 386MAX) | ||
+ | BX = selector for ??? | ||
+ | ----------2F1689----------------------------- | ||
+ | INT 2F U - MS Windows 3.0+ - KERNEL IDLE CALL | ||
+ | AX = 1689h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2F168A----------------------------- | ||
+ | INT 2F - DPMI 0.9+ - GET VENDOR-SPECIFIC API ENTRY POINT | ||
+ | AX = 168Ah | ||
+ | DS:(E)SI = selector: | ||
+ | Return: AL = status | ||
+ | 00h successful | ||
+ | | ||
+ | 8Ah unsuccessful | ||
+ | Notes: the vendor name is used to determine which entry point to return; it is | ||
+ | case-sensitive | ||
+ | available in protected mode only | ||
+ | 32-bit applications use ESI and EDI, 16-bit applications use SI and DI | ||
+ | this call is present but not documented for DPMI 0.9 | ||
+ | SeeAlso: INT 31/AX=0A00h | ||
+ | |||
+ | Vendor names: | ||
+ | " | ||
+ | " | ||
+ | ----------2F168B----------------------------- | ||
+ | INT 2F - MS Windows 3.1 - SET FOCUS TO SPECIFIED VIRTUAL MACHINE | ||
+ | AX = 168Bh | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=1683h | ||
+ | ----------2F168C----------------------------- | ||
+ | INT 2F - MS Windows 3.1 - RESTART COMMAND | ||
+ | AX = 168Ch | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------2F1700----------------------------- | ||
+ | INT 2F - MS WINDOWS " | ||
+ | AX = 1700h | ||
+ | Return: AX = 1700h if this version of WINOLDAP doesn' | ||
+ | AX <> 1700h | ||
+ | AL = WINOLDAP major version | ||
+ | AH = WINOLDAP minor version | ||
+ | Notes: | ||
+ | " | ||
+ | menus, and the Windows clipboard. | ||
+ | this installation check DOES NOT follow the format used by other | ||
+ | software | ||
+ | ----------2F1701----------------------------- | ||
+ | INT 2F - MS WINDOWS " | ||
+ | AX = 1701h | ||
+ | Return: AX <> 0 success | ||
+ | AX = 0 clipboard is already open | ||
+ | ----------2F1702----------------------------- | ||
+ | INT 2F - MS WINDOWS " | ||
+ | AX = 1702h | ||
+ | Return: AX <> 0 clipboard has been emptied | ||
+ | AX = 0 failure | ||
+ | ----------2F1703----------------------------- | ||
+ | INT 2F - MS WINDOWS " | ||
+ | AX = 1703h | ||
+ | DX = clipboard format supported by WinOldAp: | ||
+ | 01h text | ||
+ | 02h bitmap | ||
+ | 03h metafile picture | ||
+ | 04h SYLK | ||
+ | 05h DIF | ||
+ | 06h TIFF | ||
+ | 07h OEM text | ||
+ | ES:BX -> data (see below for formats) | ||
+ | SI:CX = size of data | ||
+ | Return: AX <> 0 data copied into the Clipboard | ||
+ | AX = 0 failure | ||
+ | |||
+ | Format of bitmap: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of metafile picture: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2F1704----------------------------- | ||
+ | INT 2F - MS WINDOWS " | ||
+ | AX = 1704h | ||
+ | DX = clipboard format supported by WinOldAp (see AX=1703h) | ||
+ | Return: DX:AX = size of data in bytes, including any headers | ||
+ | Failure: DX:AX = 0 no data in this format in the Clipboard | ||
+ | ----------2F1705----------------------------- | ||
+ | INT 2F - MS WINDOWS " | ||
+ | AX = 1705h | ||
+ | DX = clipboard format supported by WinOldAp (see AX=1703h) | ||
+ | ES:BX -> buffer | ||
+ | Return: AX <> 0 success | ||
+ | AX = 0 error, or no data in this format in Clipboard | ||
+ | ----------2F1708----------------------------- | ||
+ | INT 2F - MS WINDOWS " | ||
+ | AX = 1708h | ||
+ | Return: AX <> 0 success | ||
+ | AX = 0 failure | ||
+ | ----------2F1709----------------------------- | ||
+ | INT 2F - MS WINDOWS " | ||
+ | AX = 1709h | ||
+ | SI:CX = desired size in bytes | ||
+ | Return: DX:AX = number of bytes in largest block of free memory | ||
+ | Note: | ||
+ | ----------2F170A----------------------------- | ||
+ | INT 2F - MS WINDOWS " | ||
+ | AX = 170Ah | ||
+ | DX = GDI information index | ||
+ | 00h device driver version | ||
+ | 02h device classification | ||
+ | 04h width in mm | ||
+ | 06h height in mm | ||
+ | 08h width in pixels | ||
+ | 0Ah height in pixels | ||
+ | 0Ch bits per pixel | ||
+ | 0Eh number of bit planes | ||
+ | 10h number of brushes supported by device | ||
+ | 12h number of pens supported by device | ||
+ | 14h number of markers supported by device | ||
+ | 16h number of fonts supported by device | ||
+ | 18h number of colors | ||
+ | 1Ah size required for device descriptor | ||
+ | 1Ch curve capabilities | ||
+ | 1Eh line capabilities | ||
+ | 20h polygon capabilities | ||
+ | 22h text capabilities | ||
+ | 24h clipping capabilities | ||
+ | 26h bitblt capabilities | ||
+ | 28h X aspect | ||
+ | 2Ah Y aspect | ||
+ | 2Ch length of hypotenuse of aspect | ||
+ | 58h logical pixels per inch of width | ||
+ | 5Ah logical pixels per inch of height | ||
+ | Return: AX = integer value of the desired item | ||
+ | device classification | ||
+ | 00h vector plotter | ||
+ | 01h raster display | ||
+ | 02h raster printer | ||
+ | 03h raster camera | ||
+ | 04h character-stream, | ||
+ | 05h Metafile, VDM | ||
+ | 06h display-file | ||
+ | curve capabilities | ||
+ | bit 0 circles | ||
+ | bit 1 pie wedges | ||
+ | bit 2 chord arcs | ||
+ | bit 3 ellipses | ||
+ | bit 4 wide lines | ||
+ | bit 5 styled lines | ||
+ | bit 6 wide styled lines | ||
+ | bit 7 interiors | ||
+ | line capabilities | ||
+ | bit 1 polylines | ||
+ | bit 2 markers | ||
+ | bit 3 polymarkers | ||
+ | bit 4 wide lines | ||
+ | bit 5 styled lines | ||
+ | bit 6 wide styled lines | ||
+ | bit 7 interiors | ||
+ | polygon capabilities | ||
+ | bit 0 polygons | ||
+ | bit 1 rectangles | ||
+ | bit 2 trapezoids | ||
+ | bit 3 scanlines | ||
+ | bit 4 wide borders | ||
+ | bit 5 styled borders | ||
+ | bit 6 wide styled borders | ||
+ | bit 7 interiors | ||
+ | text capabilities | ||
+ | bit 0 output precision character | ||
+ | bit 1 output precision stroke | ||
+ | bit 2 clippping precision stroke | ||
+ | bit 3 90-degree character rotation | ||
+ | bit 4 arbitrary character rotation | ||
+ | bit 5 independent X and Y scaling | ||
+ | bit 6 double-size | ||
+ | bit 7 integer scaling | ||
+ | bit 8 continuous scaling | ||
+ | bit 9 bold | ||
+ | bit 10 italic | ||
+ | bit 11 underline | ||
+ | bit 12 strikeout | ||
+ | bit 13 raster fonts | ||
+ | bit 14 vector fonts | ||
+ | bit 15 reserved | ||
+ | clipping capabilities | ||
+ | 00h none | ||
+ | 01h clipping to rectangles | ||
+ | raster capabilities | ||
+ | bit 0 simple bitBLT | ||
+ | bit 1 device requires banding support | ||
+ | bit 2 device requires scaling support | ||
+ | bit 3 supports >64K bitmap | ||
+ | Note: This function returns the device-capability bits for the given display | ||
+ | ----------2F1900----------------------------- | ||
+ | INT 2F U - DOS 4.x only SHELLB.COM - INSTALLATION CHECK | ||
+ | AX = 1900h | ||
+ | Return: AL = 00h not installed | ||
+ | | ||
+ | ----------2F1901BL00------------------------- | ||
+ | INT 2F U - DOS 4.x only SHELLB.COM - SHELLC.EXE INTERFACE | ||
+ | AX = 1901h | ||
+ | BL = 00h if SHELLC transient | ||
+ | 01h if SHELLC resident | ||
+ | DS:DX -> far call entry point for resident SHELLC.EXE | ||
+ | Return: ES:DI -> SHELLC.EXE workspace within SHELLB.COM | ||
+ | Note: | ||
+ | ----------2F1902----------------------------- | ||
+ | INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM INTERFACE | ||
+ | AX = 1902h | ||
+ | ES:DI -> ASCIZ full filename of current batch file, with at least the | ||
+ | final filename element uppercased | ||
+ | DS:DX -> buffer for results | ||
+ | Return: AL = 00h failed, either | ||
+ | (a) final filename element quoted at ES:DI does not match | ||
+ | identity of shell batch file quoted as parameter of most | ||
+ | recent call of SHELLB command, or | ||
+ | (b) no more Program Start Commands available. | ||
+ | AL= FFh success, then: | ||
+ | memory at DS:[DX+1] onwards filled as: | ||
+ | DX+1: | ||
+ | DX+2: N BYTEs Program Start Command text | ||
+ | BYTE 0Dh terminator | ||
+ | Explanation: | ||
+ | reading a command from a batch file. Thus the batch file does not | ||
+ | advance in execution for so long as SHELLB provides PSCs from its | ||
+ | workspace. The PSCs are planted in SHELLB workspace by SHELLC, the user | ||
+ | menu interface. The final PSC of a sequence is finished with a | ||
+ | GOTO COMMON, which causes a loop back in the batch file which called | ||
+ | SHELLC so as to execute SHELLC again. The check on batch file name | ||
+ | permits PSCs to CALL nested batch files while PSCs are still stacked | ||
+ | up for subsequent execution. | ||
+ | ----------2F1903----------------------------- | ||
+ | INT 2F U - DOS 4.x only SHELLB.COM - COMMAND.COM interface | ||
+ | AX = 1903h | ||
+ | ES:DI -> ASCIZ batch file name as for AX=1902h | ||
+ | Return: AL = FFh if quoted batch file name matches last SHELLB parameter | ||
+ | AL = 00h if it does not | ||
+ | ----------2F1904----------------------------- | ||
+ | INT 2F U - DOS 4.x only SHELLB.COM - SHELLB transient to TSR intrface | ||
+ | AX = 1904h | ||
+ | Return: ES:DI -> name of current shell batch file: | ||
+ | WORD number of bytes of name following | ||
+ | BYTEs (8 max) uppercase name of shell batch file | ||
+ | ----------2F1A00----------------------------- | ||
+ | INT 2F - DOS 4+ ANSI.SYS - INSTALLATION CHECK | ||
+ | AX = 1A00h | ||
+ | Return: AL = FFh if installed | ||
+ | Notes: | ||
+ | documented for DOS 5+, but undocumented for DOS 4.x | ||
+ | ----------2F1A00BX4156----------------------- | ||
+ | INT 2F - AVATAR.SYS - INSTALLATION CHECK | ||
+ | AX = 1A00h | ||
+ | BX = 4156h (' | ||
+ | CX = 4154h (' | ||
+ | DX = 4152h (' | ||
+ | Return: AL = FFh if installed | ||
+ | CF clear | ||
+ | BX = AVATAR protocol level supported | ||
+ | CX = driver type | ||
+ | 0000h AVATAR.SYS | ||
+ | 4456h DVAVATAR.COM inside DESQview window | ||
+ | DX = 0016h | ||
+ | Notes: | ||
+ | the magic values | ||
+ | AVATAR.SYS is a CON replacement by George Adam Stanislav which | ||
+ | interprets AVATAR command codes in the same way that ANSI interprets | ||
+ | ANSI command codes | ||
+ | ----------2F1A01----------------------------- | ||
+ | INT 2F U - DOS 4+ ANSI.SYS internal - GET/SET DISPLAY INFORMATION | ||
+ | AX = 1A01h | ||
+ | CL = function | ||
+ | 7Fh for GET | ||
+ | 5Fh for SET | ||
+ | DS:DX -> parm block as for INT 21, | ||
+ | Return: CF set on error | ||
+ | AX = error code (many non-standard) | ||
+ | CF clear if successful | ||
+ | AX destroyed | ||
+ | Note: | ||
+ | SeeAlso: AX=1A02h, | ||
+ | ----------2F1A02----------------------------- | ||
+ | INT 2F U - DOS 4+ ANSI.SYS internal - MISCELLANEOUS REQUESTS | ||
+ | AX = 1A02h | ||
+ | DS:DX -> parameter block (see below) | ||
+ | Note: DOS 5.0 chains to previous handler if AL > 02h on call | ||
+ | SeeAlso: AX=1A01h | ||
+ | |||
+ | Format of parameter block: | ||
+ | Offset Size Description | ||
+ | | ||
+ | 00h set/reset interlock | ||
+ | 01h get /L flag | ||
+ | | ||
+ | 00h=reset, | ||
+ | This interlock prevents some of the ANSI.SYS post-processing | ||
+ | in its hook onto INT 10, AH=00h mode set | ||
+ | | ||
+ | 00h if /L not in effect | ||
+ | 01h if /L in effect | ||
+ | ----------2F1A21----------------------------- | ||
+ | INT 2F - AVATAR.SYS - SET DRIVER STATE | ||
+ | AX = 1A21h (AL=' | ||
+ | DS:SI -> command string with one or more state characters | ||
+ | CX = length of command string | ||
+ | Return: CF set on error (invalid subfunction) | ||
+ | CF clear if successful | ||
+ | Note: the characters in the state string are interpreted left to right, and | ||
+ | need not be in any particular order | ||
+ | SeeAlso: AX=1A3Fh | ||
+ | |||
+ | Values of state characters: | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ----------2F1A3C----------------------------- | ||
+ | INT 2F U - AVATAR.SYS v0.11 - ??? | ||
+ | AX = 1A3Ch | ||
+ | ??? | ||
+ | Return: CX = 0000h | ||
+ | ----------2F1A3E----------------------------- | ||
+ | INT 2F U - AVATAR.SYS v0.11 - ??? | ||
+ | AX = 1A3Eh | ||
+ | CL = ??? | ||
+ | CH = ??? | ||
+ | DL = ??? | ||
+ | DH = ??? | ||
+ | Return: CL = ??? | ||
+ | CH = ??? | ||
+ | DL = ??? | ||
+ | DH = ??? | ||
+ | ----------2F1A3F----------------------------- | ||
+ | INT 2F - AVATAR.SYS - QUERY DRIVER STATE | ||
+ | AX = 1A3Fh (AL='?' | ||
+ | ES:DI -> buffer | ||
+ | CX = length of buffer in bytes | ||
+ | Return: CF clear | ||
+ | CX = actual size of returned info | ||
+ | Note: the returned information consists of multiple letters whose meanings | ||
+ | are described under AX=1A21h | ||
+ | SeeAlso: AX=1A21h | ||
+ | ----------2F1A42BX4156----------------------- | ||
+ | INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ3 HANDLER | ||
+ | AX = 1A42h | ||
+ | BX = 4156h (' | ||
+ | ES:DI -> FAR handler for serial port using IRQ3 | ||
+ | DS = data segment needed by handler | ||
+ | Return: AX = 1A42h if ASD not installed | ||
+ | = 0000h if no more room | ||
+ | else handle to use when uninstalling | ||
+ | Notes: the handler need not save/ | ||
+ | interrupt controller | ||
+ | the handler should return AX=0000h if the interrupt was meant for it, | ||
+ | and either leave AX unchanged or return a non-zero value otherwise | ||
+ | the most recently installed handler will be called first, continuing | ||
+ | to earlier handlers until one returns AX=0000h | ||
+ | SeeAlso: AX=1A43h, | ||
+ | ----------2F1A43BX4156----------------------- | ||
+ | INT 2F - AVATAR Serial Dispatcher - INSTALL IRQ4 HANDLER | ||
+ | AX = 1A43h | ||
+ | BX = 4156h (' | ||
+ | ES:DI -> FAR handler for serial port using IRQ4 | ||
+ | DS = data segment needed by handler | ||
+ | Return: AX = 1A43h if ASD not installed | ||
+ | = 0000h if no more room | ||
+ | else handle to use when uninstalling | ||
+ | Notes: (see AX=1A42h) | ||
+ | SeeAlso: AX=1A42h, | ||
+ | ----------2F1A44BX4156----------------------- | ||
+ | INT 2F - AVATAR.SYS v0.11+ - GET DATA SEGMENT | ||
+ | AX = 1A44h | ||
+ | BX = 4156h (' | ||
+ | Return: AX = 0000h | ||
+ | DS = data segment | ||
+ | CX = size of data segment | ||
+ | Note: | ||
+ | process under a multitasker hooks this function and provides a | ||
+ | separate data segment, AVATAR.SYS becomes fully reentrant. | ||
+ | SeeAlso: AX=1A21h, | ||
+ | ----------2F1A52----------------------------- | ||
+ | INT 2F U - AVATAR.SYS v0.11 - GET ??? | ||
+ | AX = 1A52h | ||
+ | CX = size of buffer | ||
+ | ES:DI -> buffer | ||
+ | Return: ??? copied into user buffer | ||
+ | Note: the maximum size of the data which may be copied is returned by | ||
+ | AX=1A72h | ||
+ | SeeAlso: AX=1A72h | ||
+ | ----------2F1A53----------------------------- | ||
+ | INT 2F U - AVATAR.SYS v0.11 - ??? | ||
+ | AX = 1A53h | ||
+ | CL = ??? (00h-05h) | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2F1A62BX4156----------------------- | ||
+ | INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ3 HANDLER | ||
+ | AX = 1A62h | ||
+ | BX = 4156h (' | ||
+ | CX = handle for IRQ routine returned by AX=1A42h | ||
+ | SeeAlso: AX=1A42h, | ||
+ | ----------2F1A63BX4156----------------------- | ||
+ | INT 2F - AVATAR Serial Dispatcher - UNINSTALL IRQ4 HANDLER | ||
+ | AX = 1A63h | ||
+ | BX = 4156h (' | ||
+ | CX = handle for IRQ routine returned by AX=1A43h | ||
+ | SeeAlso: AX=1A43h, | ||
+ | ----------2F1A72----------------------------- | ||
+ | INT 2F U - AVATAR.SYS v0.11 - GET ??? SIZE | ||
+ | AX = 1A72h | ||
+ | Return: CX = maximum size of ??? | ||
+ | SeeAlso: AX=1A52h | ||
+ | ----------2F1A7B----------------------------- | ||
+ | INT 2F U - AVATAR.SYS v0.11 - ??? | ||
+ | AX = 1A7Bh | ||
+ | Return: AX = 0000h | ||
+ | CX = 0000h | ||
+ | ----------2F1A7D----------------------------- | ||
+ | INT 2F U - AVATAR.SYS v0.11 - ??? | ||
+ | AX = 1A7Dh | ||
+ | Return: AX = ??? | ||
+ | ----------2F1AADDX0000----------------------- | ||
+ | INT 2F U - AVATAR.SYS v0.11 - ??? | ||
+ | AX = 1AADh | ||
+ | DX = 0000h | ||
+ | CX = subfunction (00h-0Ch) | ||
+ | ??? | ||
+ | Return: AX = 0000h if DX was nonzero | ||
+ | ??? | ||
+ | ----------2F1B00----------------------------- | ||
+ | INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - INSTALLATION CHECK | ||
+ | AX = 1B00h | ||
+ | Return: AL = FFh if installed | ||
+ | Note: | ||
+ | This extension hooks onto INT 67/AH=58h and returns from that call data | ||
+ | which excludes the physical pages being used by DOS. | ||
+ | SeeAlso: AH=1Bh" | ||
+ | ----------2F1B------------------------------- | ||
+ | INT 2F U - DOS 4+ XMA2EMS.SYS extension internal - GET HIDDEN FRAME INFORMATION | ||
+ | AH = 1Bh | ||
+ | AL <> 00h | ||
+ | DI = hidden physical page number | ||
+ | Return: AX = FFFFh if failed (no such hidden page) | ||
+ | AX = 0000h if OK, then | ||
+ | ES = segment of page frame | ||
+ | DI = physical page number | ||
+ | Notes: this corresponds to the data edited out of the INT 67/AH=58h call | ||
+ | FASTOPEN makes this call with AL = FFh | ||
+ | SeeAlso: AX=1B00h | ||
+ | ----------2F2300----------------------------- | ||
+ | INT 2F - DR-DOS 5.0 GRAFTABL - INSTALLATION CHECK | ||
+ | AX = 2300h | ||
+ | Return: AH = FFh | ||
+ | Note: this installation check does not follow the usual format | ||
+ | SeeAlso: AH=23h | ||
+ | ----------2F23------------------------------- | ||
+ | INT 2F - DR-DOS 5.0 GRAFTABL - GET GRAPHICS DATA | ||
+ | AH = 23h | ||
+ | AL nonzero | ||
+ | Return: AH = FFh | ||
+ | ES:BX -> graphics data | ||
+ | SeeAlso: AX=2300h | ||
+ | ----------2F2700----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - INSTALLATION CHECK | ||
+ | AX = 2700h | ||
+ | Return: AL = 00h not installed | ||
+ | = FFh installed | ||
+ | ----------2F2701----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - GET STATUS | ||
+ | AX = 2701h | ||
+ | Return: AX = maximum simultaneous tasks | ||
+ | BX = index into TASK_IDS of current foreground task | ||
+ | CX = currently-active tasks | ||
+ | DX = version number (DR-DOS 6.0 = 0001h) | ||
+ | ES:SI -> TASK_IDS | ||
+ | ES:DI -> name table (array of 8-byte names, NUL-terminated if <8 chars) | ||
+ | Notes: do not attempt to create a new task if CX == AX | ||
+ | the task's index is its position on the task menu, while its ID is the | ||
+ | position within the internal task name table | ||
+ | SeeAlso: AX=2714h, | ||
+ | ----------2F2702----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - GET PER-TASK EMS LIMIT | ||
+ | AX = 2702h | ||
+ | Return: DX = maximum pages INT 67/AH=42h will report available | ||
+ | Note: | ||
+ | amount which is reported as being available at a given time | ||
+ | SeeAlso: AX=2703h, | ||
+ | ----------2F2703----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - SET PER-TASK EMS LIMIT | ||
+ | AX = 2703h | ||
+ | DX = maximum pages INT 67/AH=42h should report available | ||
+ | Return: DX = new maximum for reporting | ||
+ | SeeAlso: AX=2702h, | ||
+ | ----------2F2704----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - REGISTER/ | ||
+ | AX = 2704h | ||
+ | DL = subfunction | ||
+ | 00h unregister task manager | ||
+ | 01h register task manager | ||
+ | Return: DL = status | ||
+ | 00h registered | ||
+ | 01h unregistered | ||
+ | Notes: a task manager replaces TaskMAX' | ||
+ | interface; while one is registered, the TaskMAX hotkeys and | ||
+ | Ctrl-Alt-Del invoke the manager rather than the built-in menu system | ||
+ | unregister the task manager before terminating it | ||
+ | SeeAlso: AX=2705h | ||
+ | ----------2F2705----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - ENABLE/ | ||
+ | AX = 2705h | ||
+ | DL = subfunction | ||
+ | 00h disable keystrokes for switching to next/ | ||
+ | 01h enable | ||
+ | Return: nothing | ||
+ | Note: | ||
+ | SeeAlso: AX=2704h, | ||
+ | ----------2F2706----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - SWITCH TO SPECIFIED TASK | ||
+ | AX = 2706h | ||
+ | DX = task index (see AX=2701h) of task to be activated | ||
+ | Return: DX = task index of previously-active task | ||
+ | SeeAlso: AX=2705h, | ||
+ | ----------2F2707----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - CREATE NEW TASK | ||
+ | AX = 2707h | ||
+ | DS:DX -> ASCIZ pathname of executable | ||
+ | ES:BX -> parameter block (see below) | ||
+ | CX = number of ticks before automatic return to task manager | ||
+ | (0000h = run until termination or explicitly switched) | ||
+ | Return: DX = new task's task index (FFFFh if task terminated) | ||
+ | SeeAlso: AX=2706h, | ||
+ | |||
+ | Format of parameter block: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2F2708----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - DELETE TASK | ||
+ | AX = 2708h | ||
+ | DX = task index | ||
+ | Return: DX = FFFFh (task deleted) | ||
+ | Notes: this call should only be used for abnormal task termination, | ||
+ | first checking for open files with AX=270Ch; should not be used | ||
+ | with programs that allocate EMS or XMS memory | ||
+ | switches to specified task first | ||
+ | SeeAlso: AX=2707h | ||
+ | ----------2F2709----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - NAME TASK | ||
+ | AX = 2709h | ||
+ | DX = task index | ||
+ | DS:SI -> 8-byte name (8 NULs = remove name) | ||
+ | Return: AL = task flags | ||
+ | 00h ID unused or task terminated | ||
+ | 01h ID in use, task name table entry valid | ||
+ | 81h ID in use, task name fixed | ||
+ | BX = task ID | ||
+ | ES:DI -> name in task name table (see AX=2701h) | ||
+ | Note: the task retains the given name until it terminates or the name is | ||
+ | removed by specifying a name of 8 NULs. | ||
+ | SeeAlso: AX=2701h, | ||
+ | ----------2F270A----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - CONVERT TASK INDEX TO TASK ID | ||
+ | AX = 270Ah | ||
+ | DX = task index | ||
+ | Return: DX = task ID (FFFFh if index invalid) | ||
+ | Note: task IDs stay constant, while indexes can change when other tasks are | ||
+ | deleted | ||
+ | SeeAlso: AX=2701h, | ||
+ | ----------2F270B----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - CONVERT TASK ID TO TASK INDEX | ||
+ | AX = 270Bh | ||
+ | DX = task ID | ||
+ | Return: DX = task index (FFFFh if task not active) | ||
+ | SeeAlso: AX=270Ah | ||
+ | ----------2F270C----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - CHECK OPEN FILES | ||
+ | AX = 270Ch | ||
+ | DX = task index | ||
+ | Return: AX = number of files currently open for specified task | ||
+ | SeeAlso: AX=2708h | ||
+ | ----------2F270D----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - CHECK IF TASK RUNNING PRIMARY COMMAND INTERPRETER | ||
+ | AX = 270Dh | ||
+ | DX = task index | ||
+ | Return: DX = status | ||
+ | 0000h if primary command interpreter (COMMAND.COM, | ||
+ | 0001h if not in root shell for task | ||
+ | Note: | ||
+ | command interpreter with AX=2707h | ||
+ | SeeAlso: AX=2707h, | ||
+ | ----------2F270E----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - GET/SET TEXT PASTE LEAD-IN | ||
+ | AX = 270Eh | ||
+ | CX = length of string (max 15 keystrokes, 0000h to get current string) | ||
+ | DS:SI -> pasting lead-in string (character/ | ||
+ | Return: ES:DI -> current lead-in string | ||
+ | Note: the specified sequence of keystrokes is sent to the application before | ||
+ | every line of a text-mode spreadsheet paste | ||
+ | SeeAlso: AX=270Fh, | ||
+ | ----------2F270F----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE LEAD-IN | ||
+ | AX = 270Fh | ||
+ | CX = length of string (max 15 keystrokes, 0000h to get current string) | ||
+ | DS:SI -> pasting lead-in string (character/ | ||
+ | Return: ES:DI -> current lead-in string | ||
+ | Note: the specified sequence of keystrokes is sent to the application before | ||
+ | every number in a numeric-mode spreadsheet paste | ||
+ | SeeAlso: AX=270Eh, | ||
+ | ----------2F2710----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - GET/SET PASTE LINE TERMINATOR STRING | ||
+ | AX = 2710h | ||
+ | CX = length of string (max 15 keystrokes, 0000h to get current string) | ||
+ | DS:SI -> pasting lead-in string (character/ | ||
+ | Return: ES:DI -> current lead-in string | ||
+ | Note: the specified sequence of keystrokes is sent to the application after | ||
+ | every line of a spreadsheet paste operation | ||
+ | SeeAlso: AX=270Eh, | ||
+ | ----------2F2711----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - GET/SET NUMERIC PASTE DECIMAL POINT | ||
+ | AX = 2711h | ||
+ | DX = ASCII code for separator (FFFFh to get current) | ||
+ | Return: DL = current separator character | ||
+ | SeeAlso: AX=270Fh | ||
+ | ----------2F2712----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - INITIATE EXPORTING TASK DATA | ||
+ | AX = 2712h | ||
+ | DX = task index | ||
+ | ----------2F2713----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - INITIATE PASTE OPERATION | ||
+ | AX = 2713h | ||
+ | DX = task index | ||
+ | CX = past mode | ||
+ | 0000h alphanumeric | ||
+ | 0001h numeric | ||
+ | 0002h text | ||
+ | SeeAlso: AX=270Eh, | ||
+ | ----------2F2714----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - GET SWAP SPACE INFO | ||
+ | AX = 2714h | ||
+ | Return: CX = total KB of swap space | ||
+ | DX = available KB of swap space | ||
+ | SeeAlso: AX=2701h | ||
+ | ----------2F2715----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - SWITCH TO TASK MANAGER | ||
+ | AX = 2715h | ||
+ | Return: only after calling task is again selected | ||
+ | SeeAlso: AX=2706h | ||
+ | ----------2F2716----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - GET PASTE BUFFER STATUS | ||
+ | AX = 2716h | ||
+ | Return: AX = 0000h if AX=2716h, | ||
+ | CX = bytes in paste buffer | ||
+ | DX = current generation number (updated after every copy operation) | ||
+ | SeeAlso: AX=2701h, | ||
+ | ----------2F2717----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - PASTE DATA DIRECTLY TO APPLICATION BUFFER | ||
+ | AX = 2717h | ||
+ | CX = bytes in destination buffer | ||
+ | ES:DI -> destination buffer | ||
+ | Return: AX = 0000h if function supported | ||
+ | CX = bytes actually copied (FFFFh if buffer too small) | ||
+ | DX = current generation number for paste buffer | ||
+ | Note: the destination buffer may be too small if another task adds more data | ||
+ | to the paste buffer after the AX=2716h call but before this call | ||
+ | SeeAlso: AX=2713h, | ||
+ | ----------2F2718----------------------------- | ||
+ | INT 2F - DR-DOS 6.0 TaskMAX - COPY DATA DIRECTLY INTO PASTE BUFFER | ||
+ | AX = 2718h | ||
+ | CX = bytes in source buffer | ||
+ | DS:SI -> source buffer (plain ASCII, lines terminated with CR LF) | ||
+ | Return: AX = 0000h if function supported | ||
+ | CX = bytes actually copied | ||
+ | DX = current generation number for paste buffer | ||
+ | SeeAlso: AX=2712h, | ||
+ | ----------2F2A------------------------------- | ||
+ | INT 2F - Gammafax DOS Dispatcher INTERFACE | ||
+ | AH = 2Ah | ||
+ | Note: | ||
+ | SeeAlso: AX=8000h" | ||
+ | ----------2F3900----------------------------- | ||
+ | INT 2F - Kingswood TSR INTERFACE - COMPATIBILITY MODE | ||
+ | AX = 3900h | ||
+ | Return: AL = status | ||
+ | 00h not installed | ||
+ | FFh one or more TSRs using this interface is installed | ||
+ | Note: this function is provided to that the multiplex number will appear used | ||
+ | to other programs | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F39--BL00------------------------- | ||
+ | INT 2F - Kingswood TSR INTERFACE - INSTALLATION CHECK | ||
+ | AH = 39h | ||
+ | BL = 00h | ||
+ | AL = TSR ID number (01h-FFh, currently only 01h-0Eh used) (see below) | ||
+ | Return: AL = status | ||
+ | 00h not installed | ||
+ | FFh installed | ||
+ | DX = segment address of resident module | ||
+ | Note: All of Kingswood Software' | ||
+ | resident module is installed by allocating a block of upper memory, | ||
+ | setting its owner ID to 0008h (DOS data), and filling the MCB name | ||
+ | field with the TSR's name. | ||
+ | SeeAlso: AX=3900h, | ||
+ | |||
+ | Values for TSR ID number: | ||
+ | 01h TSR Windows | ||
+ | 02h NOBUSY | ||
+ | 03h CD STACK | ||
+ | 04h DISK WATCH | ||
+ | 05h PUSHBP | ||
+ | 06h ALIAS | ||
+ | 07h KEYMACRO | ||
+ | 08h SLOWDOWN | ||
+ | 09h ANSIGRAB | ||
+ | 0Ah TEE | ||
+ | 0Bh FASTMOUS | ||
+ | 0Ch EXTWILD | ||
+ | 0Dh BREAKOUT | ||
+ | 0Eh STOPDISK | ||
+ | |||
+ | Format of TSR modules: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | (usually only a PSP if file access is required) | ||
+ | 5N BYTEs interrupt list (see below) | ||
+ | BYTE FFh terminator | ||
+ | |||
+ | Format of interrupt list entry: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2F39--BL01------------------------- | ||
+ | INT 2F - Kingswood TSR INTERFACE - REMOVAL CHECK | ||
+ | AH = 39h | ||
+ | BL = 01h | ||
+ | AL = TSR ID number (01h-FFh) (see AH=39h/ | ||
+ | Return: AL = status | ||
+ | 00h not ready to be removed | ||
+ | FFh resident module may be removed by deassigning the interrupts | ||
+ | hooked by the TSR and deallocating the TSR's memory block | ||
+ | AH, | ||
+ | SeeAlso: AX=3900h, | ||
+ | ----------2F39------------------------------- | ||
+ | INT 2F - Kingswood TSR INTERFACE - APPLICATION-SPECIFIC FUNCTION CALLS | ||
+ | AH = 39h | ||
+ | BL = function number (02h-FFh) | ||
+ | AL = TSR ID number (01h-FFh) | ||
+ | CX, | ||
+ | Return: as appropriate for the called function | ||
+ | SeeAlso: AX=3900h, | ||
+ | ----------2F3901BL02------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - OPEN WINDOW | ||
+ | AX = 3901h | ||
+ | BL = 02h | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | Notes: | ||
+ | TSR windows can be opened at any one time. The three windows | ||
+ | are all 40x11 characters, partly overlapping. | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F3901BL03------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - HIDE WINDOWS | ||
+ | AX = 3901h | ||
+ | BL = 03h | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | Notes: Hide any visible TSR windows from view. | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F3901BL04------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - SHOW WINDOWS | ||
+ | AX = 3901h | ||
+ | BL = 04h | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | Notes: | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F3901BL05------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - CLOSE WINDOW | ||
+ | AX = 3901h | ||
+ | BL = 05h | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | Notes: | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F3901BL06------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - SET WINDOW TITLE | ||
+ | AX = 3901h | ||
+ | BL = 06h | ||
+ | DS:SI -> title string | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F3901BL07------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - POSITION CURSOR | ||
+ | AX = 3901h | ||
+ | BL = 07h | ||
+ | CH = Y coordinate (0-10) | ||
+ | CL = X coordinate (0-39) | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | Note: the hardware cursor is always disabled when a TSR window is opened; | ||
+ | this call only sets a text position | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F3901BL08------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - DISPLAY STRING | ||
+ | AX = 3901h | ||
+ | BL = 08h | ||
+ | DS:SI -> string | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | Notes: The text is not clipped. | ||
+ | This routine understands Tab, NewLine and Carriage Return | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F3901BL09------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - SCROLL WINDOW | ||
+ | AX = 3901h | ||
+ | BL = 09h | ||
+ | CL = scroll direction: 00h up, FFh down, 00h clear window | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F3901BL0A------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - SOUND BEEPER | ||
+ | AX = 3901h | ||
+ | BL = 0Ah | ||
+ | DX = sound divisor, or 0 for silence. | ||
+ | | ||
+ | CL = sound length in 18.2 Hz clock ticks | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F3901BL0B------------------------- | ||
+ | INT 2F - Kingswood TSR Windows - ADD OR REMOVE USER | ||
+ | AX = 3901h | ||
+ | BL = 0Bh | ||
+ | CL = number of users increment: +1 if adding a new user | ||
+ | -1 if removing a user | ||
+ | Return: AX = error code (0000h if successful) | ||
+ | Note: the TSR windows resident module may only be removed when the internal | ||
+ | user count is zero | ||
+ | SeeAlso: AH=39h/ | ||
+ | ----------2F4000----------------------------- | ||
+ | INT 2F - Windows 3.x (OS/2 2.x???) - GET VIRTUAL DEVICE DRIVER (VDD) CAPABLTIES | ||
+ | AX = 4000h | ||
+ | Return: AL = 01h does not virtualize video access | ||
+ | 02h virtualizes the video when in text mode | ||
+ | 03h virtualizes the video when in text mode or single plane | ||
+ | graphics modes | ||
+ | 04h virtualizes the video when in text mode, single plane | ||
+ | graphics modes, and VGA multiplane modes | ||
+ | FFh virtualizes the video fully | ||
+ | Note: this function is used by display drivers to find out what capabilities | ||
+ | exist for the VDD driver and also trigger then VDD driver to call | ||
+ | functions 4005h and 4006h. | ||
+ | hardware access to the video registers. | ||
+ | ----------2F4001----------------------------- | ||
+ | INT 2F - OS/2 compatibility box - SWITCHING DOS TO BACKGROUND | ||
+ | AX = 4001h | ||
+ | Note: | ||
+ | and the video driver should save any necessary state | ||
+ | SeeAlso: AX=4002h, | ||
+ | ----------2F4002----------------------------- | ||
+ | INT 2F - OS/2 compatibility box - SWITCHING DOS TO FOREGROUND | ||
+ | AX = 4002h | ||
+ | Note: | ||
+ | and the video driver should restore the previously-saved state | ||
+ | SeeAlso: AX=4001h, | ||
+ | ----------2F4003----------------------------- | ||
+ | INT 2F - Windows 3.x - ENTERING VIDEO DRIVER CRITICAL SECTION | ||
+ | AX = 4003h | ||
+ | Note: This critical section must be exited within 1 second. | ||
+ | SeeAlso: AX=4004h | ||
+ | ----------2F4004----------------------------- | ||
+ | INT 2F - Windows 3.x - EXITING VIDEO DRIVER CRITICAL SECTION | ||
+ | AX = 4004h | ||
+ | SeeAlso: AX=4003h | ||
+ | ----------2F4005----------------------------- | ||
+ | INT 2F - Windows 3.x - SWITCHING DOS TO BACKGROUND | ||
+ | AX = 4005h | ||
+ | Note: | ||
+ | background and the video driver should save any necessary state | ||
+ | information | ||
+ | SeeAlso: AX=4001h, | ||
+ | ----------2F4006----------------------------- | ||
+ | INT 2F - Windows 3.x - SWITCHING DOS TO FOREGROUND | ||
+ | AX = 4006h | ||
+ | Note: | ||
+ | foreground and the video driver should restore any necessary state | ||
+ | information | ||
+ | SeeAlso: AX=4002h, | ||
+ | ----------2F4007----------------------------- | ||
+ | INT 2F - Windows 3.x - ENABLE VDD TRAPPING OF VIDEO REGISTERS | ||
+ | AX = 4007h | ||
+ | ----------2F41------------------------------- | ||
+ | INT 2F - LAN Manager 2.0 DOS Enhanced NETPOPUP.EXE - NETWORK POP-UP SERVICE | ||
+ | AH = 41h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: LAN Manager enhanced mode adds features beyond the standard redirector | ||
+ | file/ | ||
+ | SeeAlso: AX=118Ah, | ||
+ | ----------2F42------------------------------- | ||
+ | INT 2F - LAN Manager 2.0 DOS Enhanced MSRV.EXE - MESSENGER SERVICE | ||
+ | AH = 42h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: LAN Manager enhanced mode adds features beyond the standard redirector | ||
+ | file/ | ||
+ | SeeAlso: AX=118Ah, | ||
+ | ----------2F4300----------------------------- | ||
+ | INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) - INSTALLATION CHECK | ||
+ | AX = 4300h | ||
+ | Return: AL = 80h XMS driver installed | ||
+ | AL <> 80h no driver | ||
+ | Notes: XMS gives access to extended memory and noncontiguous/ | ||
+ | above 640K | ||
+ | this installation check DOES NOT follow the format used by other | ||
+ | software | ||
+ | SeeAlso: AX=4310h | ||
+ | ----------2F4310----------------------------- | ||
+ | INT 2F - EXTENDED MEMORY SPECIFICATION (XMS) - GET DRIVER ADDRESS | ||
+ | AX = 4310h | ||
+ | Return: ES:BX -> driver entry point | ||
+ | Note: | ||
+ | SeeAlso: AX=4300h | ||
+ | |||
+ | Perform a FAR call to the driver entry point with AH set to the function code | ||
+ | AH function | ||
+ | 00h Get XMS version number | ||
+ | | ||
+ | BX = internal revision number | ||
+ | DX = 0001h if HMA (1M to 1M + 64K) exists | ||
+ | 0000h if HMA does not exist | ||
+ | 01h Request High Memory Area (1M to 1M + 64K) | ||
+ | DX = memory in bytes (for TSR or device drivers) | ||
+ | FFFFh if application program | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 02h Release High Memory Area | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 03h Global enable A20, for using the HMA | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 04h Global disable A20 | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 05h Local enable A20, for direct access to extended memory | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 06h Local disable A20 | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 07h Query A20 state | ||
+ | | ||
+ | = 0000h disabled | ||
+ | BL = error code (00h, | ||
+ | 08h Query free extended memory, not counting HMA | ||
+ | BL = 00h (some implementations leave BL unchanged on success) | ||
+ | | ||
+ | DX = total extended memory in K | ||
+ | BL = error code (00h, | ||
+ | 09h Allocate extended memory block | ||
+ | DX = Kbytes needed | ||
+ | | ||
+ | DX = handle for memory block | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 0Ah Free extended memory block | ||
+ | DX = handle of block to free | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 0Bh Move extended memory block | ||
+ | DS:SI -> EMM structure (see below) | ||
+ | Note: if either handle is 0000h, the corresponding offset is | ||
+ | | ||
+ | | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h-82h, | ||
+ | 0Ch Lock extended memory block | ||
+ | DX = handle of block to lock | ||
+ | | ||
+ | DX:BX = 32-bit linear address of locked block | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 0Dh Unlock extended memory block | ||
+ | DX = handle of block to unlock | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 0Eh Get handle information | ||
+ | DX = handle for which to get info | ||
+ | | ||
+ | BH = block' | ||
+ | BL = number of free handles left | ||
+ | DX = block size in K | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 0Fh Reallocate extended memory block | ||
+ | DX = handle of block | ||
+ | BX = new size of block in K | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 10h Request upper memory block (nonEMS memory above 640K) | ||
+ | DX = size of block in paragraphs | ||
+ | | ||
+ | BX = segment address of UMB | ||
+ | DX = actual size of block | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | DX = largest available block | ||
+ | 11h Release upper memory block | ||
+ | DX = segment address of UMB to release | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h,B2h) (see below) | ||
+ | 12h (XMS v3.0) Reallocate upper memory block | ||
+ | DX = segment address of UMB to resize | ||
+ | BX = new size of block in paragraphs | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = error code (80h, | ||
+ | 34h (QEMM 5.11 only, undocumented) ??? | ||
+ | 44h (QEMM 5.11 only, undocumented) ??? | ||
+ | 88h (XMS v3.0) Query free extended memory | ||
+ | | ||
+ | BL = status | ||
+ | 00h success | ||
+ | 80h not implemented (i.e. on a 286 system) | ||
+ | 81h VDISK detected | ||
+ | A0h all extended memory allocated | ||
+ | | ||
+ | | ||
+ | EDX = total Kbytes of extended memory (0 if status A0h) | ||
+ | 89h (XMS v3.0) Allocate any extended memory | ||
+ | EDX = Kbytes needed | ||
+ | | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = status (80h, | ||
+ | 8Eh (XMS v3.0) Get extended EMB handle information | ||
+ | DX = handle | ||
+ | | ||
+ | | ||
+ | CX = number of free handles left | ||
+ | EDX = block size in K | ||
+ | = 0000h failure | ||
+ | | ||
+ | 8Fh (XMS v3.0) Reallocate any extended memory block | ||
+ | DX = unlocked handle | ||
+ | EBX = new size in K | ||
+ | | ||
+ | = 0000h failure | ||
+ | BL = status (80h, | ||
+ | Notes: | ||
+ | the XMS driver need not implement functions 10h through 12h to be | ||
+ | considered compliant with the standard | ||
+ | |||
+ | Format of EMM structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Notes: if source and destination overlap, only forward moves (source base | ||
+ | less than destination base) are guaranteed to work properly | ||
+ | if either handle is zero, the corresponding offset is interpreted | ||
+ | as a real-mode address referring to memory directly addressable | ||
+ | by the processor | ||
+ | |||
+ | Error codes returned in BL: | ||
+ | 00h successful | ||
+ | 80h function not implemented | ||
+ | 81h Vdisk was detected | ||
+ | 82h an A20 error occurred | ||
+ | 8Eh a general driver error | ||
+ | 8Fh unrecoverable driver error | ||
+ | 90h HMA does not exist | ||
+ | 91h HMA is already in use | ||
+ | 92h DX is less than the /HMAMIN= parameter | ||
+ | 93h HMA is not allocated | ||
+ | 94h A20 line still enabled | ||
+ | A0h all extended memory is allocated | ||
+ | A1h all available extended memory handles are allocated | ||
+ | A2h invalid handle | ||
+ | A3h source handle is invalid | ||
+ | A4h source offset is invalid | ||
+ | A5h destination handle is invalid | ||
+ | A6h destination offset is invalid | ||
+ | A7h length is invalid | ||
+ | A8h move has an invalid overlap | ||
+ | A9h parity error occurred | ||
+ | AAh block is not locked | ||
+ | ABh block is locked | ||
+ | ACh block lock count overflowed | ||
+ | ADh lock failed | ||
+ | B0h only a smaller UMB is available | ||
+ | B1h no UMB's are available | ||
+ | B2h UMB segment number is invalid | ||
+ | ----------2F44------------------------------- | ||
+ | INT 2F U - ??? | ||
+ | AH = 44h | ||
+ | AL = function (at least 0Bh, 15h, 17h) | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: AH=86h | ||
+ | ----------2F4500----------------------------- | ||
+ | INT 2F U - Microsoft Profiler (PROF.COM/ | ||
+ | AX = 4500h | ||
+ | Return: AL = 01h if PROF.COM installed | ||
+ | AL = 02h if VPROD.386 installed | ||
+ | SeeAlso: AX=4501h, | ||
+ | ----------2F4501----------------------------- | ||
+ | INT 2F U - Microsoft Profiler (PROF.COM/ | ||
+ | AX = 4501h | ||
+ | BX = CSIPS buffer size in KB (first parameter for ProfSetup) | ||
+ | CX = output limit in KB (second parameter for ProfSetup) | ||
+ | Note: this call is not supported by PROF.COM | ||
+ | SeeAlso: AX=4502h, | ||
+ | ----------2F4502----------------------------- | ||
+ | INT 2F U - Microsoft Profiler (PROF.COM/ | ||
+ | AX = 4502h | ||
+ | BL = sampling rate for PROF.COM (0 < BL <= 13) | ||
+ | (01h = 8192/s, 04h = 1024/s, 08h = 32/s, 0Dh = 1/s) | ||
+ | CX = sampling rate for VPROD.386 | ||
+ | Note: for PROF.COM, this programs the CMOS clock by setting BL+2 as the | ||
+ | low four bits of CMOS register 0Ah. The interruption rate is | ||
+ | 1 SHL (15 - BL) per second. | ||
+ | SeeAlso: AX=4501h, | ||
+ | ----------2F4503----------------------------- | ||
+ | INT 2F U - Microsoft Profiler (PROF.COM/ | ||
+ | AX = 4503h | ||
+ | Notes: | ||
+ | LeftShift + RightShift + Alt | ||
+ | LeftShift + RightShift + Ctrl | ||
+ | for PROF.COM, this call programs the CMOS clock by reading register | ||
+ | 0Ch, and setting bit 6 of register 0Bh. It then makes sure that IRQ8 | ||
+ | is unmasked | ||
+ | SeeAlso: AX=4504h | ||
+ | ----------2F4504----------------------------- | ||
+ | INT 2F U - Microsoft Profiler (PROF.COM/ | ||
+ | AX = 4504h | ||
+ | Notes: | ||
+ | LeftShift + RightShift | ||
+ | for PROF.COM, this programs the CMOS clock by reading register 0Ch | ||
+ | and clearing bit 6 of register 0Bh. It then masks IRQ8. | ||
+ | SeeAlso: AX=4503h, | ||
+ | ----------2F4505----------------------------- | ||
+ | INT 2F U - Microsoft Profiler (PROF.COM/ | ||
+ | AX = 4505h | ||
+ | SeeAlso: AX=4503h, | ||
+ | ----------2F4506----------------------------- | ||
+ | INT 2F U - Microsoft Profiler (PROF.COM/ | ||
+ | AX = 4506h | ||
+ | SeeAlso: AX=4505h, | ||
+ | ----------2F4507----------------------------- | ||
+ | INT 2F U - Microsoft Profiler (PROF.COM/ | ||
+ | AX = 4507h | ||
+ | Note: this call is essentially a " | ||
+ | " | ||
+ | SeeAlso: AX=4504h, | ||
+ | ----------2F4508----------------------------- | ||
+ | INT 2F U - Microsoft Profiler (PROF.COM/ | ||
+ | AX = 4508h | ||
+ | BX = ordinal (or 0000h) | ||
+ | CX = segment | ||
+ | DX = instance (or 0000h) | ||
+ | SI = type (or 0000h) | ||
+ | ES:DI -> ASCIZ module name | ||
+ | Notes: this call is an alternate entry to the profiler' | ||
+ | interface, but only to function 0, for notifying the profiler of | ||
+ | each new segment loaded. | ||
+ | profiler' | ||
+ | with symbol files to provide information in a useful form. | ||
+ | this call does not have a corresponding Windows function | ||
+ | SeeAlso: AX=4500h | ||
+ | ----------2F4601----------------------------- | ||
+ | INT 2F U - DOS 5.0 kernel - ??? | ||
+ | AX = 4601h | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | segment | ||
+ | SeeAlso: AX=4602h | ||
+ | ----------2F4602----------------------------- | ||
+ | INT 2F U - DOS 5.0 kernel - ??? | ||
+ | AX = 4602h | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | caller' | ||
+ | SeeAlso: AX=4601h | ||
+ | ----------2F46------------------------------- | ||
+ | INT 2F U - ??? | ||
+ | AH = 46h | ||
+ | AL = subfunction (03h,04h) | ||
+ | Return: ??? | ||
+ | Note: these two subfunctions are called by MS Windows 3.0 | ||
+ | ----------2F4653CX0002----------------------- | ||
+ | INT 2F - F-PROT v1.x only - F-LOCK.EXE | ||
+ | AX = 4653h | ||
+ | CX = 0002h | ||
+ | BX = subfunction | ||
+ | 0000h installation check | ||
+ | Return: AX = FFFFh | ||
+ | 0001h uninstall | ||
+ | Return: AX,BX,ES destroyed | ||
+ | 0002h disable (v1.08 and below only) | ||
+ | 0003h enable (v1.08 and below only) | ||
+ | Note: | ||
+ | Skulason | ||
+ | SeeAlso: AX=4653h/ | ||
+ | ----------2F4653CX0003----------------------- | ||
+ | INT 2F - F-PROT v1.x only - F-XCHK.EXE | ||
+ | AX = 4653h | ||
+ | CX = 0003h | ||
+ | BX = subfunction | ||
+ | 0000h installation check | ||
+ | Return: AX = FFFFh | ||
+ | 0001h uninstall | ||
+ | Return: AX,BX,ES destroyed | ||
+ | Note: | ||
+ | Skulason | ||
+ | SeeAlso: AX=4653h/ | ||
+ | ----------2F4653CX0004----------------------- | ||
+ | INT 2F - F-PROT v1.x only - F-POPUP.EXE | ||
+ | AX = 4653h | ||
+ | CX = 0004h | ||
+ | BX = subfunction | ||
+ | 0000h installation check | ||
+ | Return: AX = FFFFh | ||
+ | 0001h uninstall | ||
+ | Return: AX,BX,ES destroyed | ||
+ | 0002h disable (v1.08 and below only) | ||
+ | | ||
+ | other registers: ??? | ||
+ | 0003h enable (v1.08 and below only) | ||
+ | | ||
+ | other registers: ??? | ||
+ | Return: AX = key pressed by user | ||
+ | Note: | ||
+ | Fridrik Skulason | ||
+ | SeeAlso: AX=4653h/ | ||
+ | ----------2F4653CX0005----------------------- | ||
+ | INT 2F - F-PROT v1.x only - F-DLOCK.EXE | ||
+ | AX = 4653h | ||
+ | CX = 0005h | ||
+ | BX = subfunction | ||
+ | 0000h installation check | ||
+ | Return: AX = FFFFh | ||
+ | 0001h uninstall | ||
+ | Return: AX,BX,ES destroyed | ||
+ | Note: | ||
+ | Fridrik Skulason | ||
+ | SeeAlso: AX=4653h/ | ||
+ | ----------2F4680----------------------------- | ||
+ | INT 2F - MS Windows v3.0 - INSTALLATION CHECK | ||
+ | AX = 4680h | ||
+ | Return: AX = 0000h MS Windows 3.0 running in real (/R) or standard (/S) mode, | ||
+ | or DOS 5 DOSSHELL active | ||
+ | | ||
+ | mode | ||
+ | Note: not officially documented, but Microsoft has indicated that they | ||
+ | intend to provide an installation check which works in all modes | ||
+ | SeeAlso: AX=1600h | ||
+ | ----------2F4800----------------------------- | ||
+ | INT 2F - DOS v5.0 DOSKEY - INSTALLATION CHECK | ||
+ | AX = 4800h | ||
+ | Return: AL = nonzero if installed | ||
+ | SeeAlso: AX=4810h | ||
+ | ----------2F4810----------------------------- | ||
+ | INT 2F - DOS v5.0 DOSKEY - READ INPUT LINE FROM CONSOLE | ||
+ | AX = 4810h | ||
+ | DS:DX -> line buffer (see INT 21/AH=0Ah) | ||
+ | Return: AX = 0000h if successful | ||
+ | Notes: the first byte (length) of the buffer MUST be 80h, or DOSKEY chains to | ||
+ | the previous handler | ||
+ | if the user's input is a macro name, no text is placed in the buffer | ||
+ | even though AX=0000h on return; the program must immediately issue | ||
+ | this call again to retrieve the expansion of the macro. | ||
+ | if the user enters a special parameter such as $*, this call must | ||
+ | be repeated to retrieve the expansion; on the second call, DOSKEY | ||
+ | overwrites the macro name on the screen with its expansion. | ||
+ | SeeAlso: AX=4800h, | ||
+ | ----------2F4A00CX0000----------------------- | ||
+ | INT 2F U - DOS v5.0 - SINGLE-FLOPPY LOGICAL DRIVE CHANGE NOTIFICATION | ||
+ | AX = 4A00h | ||
+ | CX = 0000h | ||
+ | DH = new drive number | ||
+ | DL = current drive number | ||
+ | Return: CX = FFFFh to skip " | ||
+ | Note: | ||
+ | " | ||
+ | ----------2F4A01----------------------------- | ||
+ | INT 2F - DOS v5.0 - QUERY FREE HMA SPACE | ||
+ | AX = 4A01h | ||
+ | Return: BX = number of bytes available in HMA (0000h if DOS not using HMA) | ||
+ | ES:DI -> start of available HMA area (FFFFh: | ||
+ | SeeAlso: AX=4310h, | ||
+ | ----------2F4A02----------------------------- | ||
+ | INT 2F - DOS v5.0 - ALLOCATE HMA SPACE | ||
+ | AX = 4A02h | ||
+ | BX = number of bytes | ||
+ | Return: ES:DI -> start of allocated HMA block or FFFFh:FFFFh | ||
+ | BX destroyed | ||
+ | Note: this call is not valid unless DOS is loaded in the HMA (DOS=HIGH) | ||
+ | SeeAlso: AX=4A01h | ||
+ | ----------2F4A05----------------------------- | ||
+ | INT 2F U - DOS v5.0 DOSSHELL - ??? | ||
+ | AX = 4A05h | ||
+ | SI = function | ||
+ | 0000h reset??? | ||
+ | 0001h ??? | ||
+ | 0002h ??? | ||
+ | 0003h ??? | ||
+ | 0004h ??? | ||
+ | BL = ??? | ||
+ | 0005h ??? | ||
+ | 0006h get ??? | ||
+ | Return: ES:DI -> ??? | ||
+ | 0007h get ??? | ||
+ | Return: AX = ??? | ||
+ | 0008h get ??? | ||
+ | Return: DX:AX -> ??? | ||
+ | 0009h get ??? | ||
+ | Return: ES = ??? | ||
+ | 000Ah ??? | ||
+ | BL = ??? | ||
+ | ES:DI -> ??? | ||
+ | 000Bh get ??? | ||
+ | Return: AX = ??? | ||
+ | 000Ch ??? | ||
+ | BL = ??? | ||
+ | Return: DX:AX -> ??? | ||
+ | Notes: | ||
+ | listed above | ||
+ | the DOSSWAP.EXE module calls functions 03h, | ||
+ | SeeAlso: AX=4B01h | ||
+ | ----------2F4A06----------------------------- | ||
+ | INT 2F U - ??? - GET MEMORY SIZE | ||
+ | AX = 4A06h | ||
+ | DX = segment following last byte of conventional memory | ||
+ | Return: DX = segment following last byte of memory available for use by DOS | ||
+ | Note: | ||
+ | present three bytes beyond the INT 2F handler; this call overrides | ||
+ | the value returned by INT 12 | ||
+ | SeeAlso: INT 12 | ||
+ | ----------2F4A10----------------------------- | ||
+ | INT 2F - SMARTDRV v4.00+ - API | ||
+ | AX = 4A10h | ||
+ | BX = command | ||
+ | 0000h installation check and hit ratios | ||
+ | Return: AX = BABEh if installed | ||
+ | DX:BX = cache hits | ||
+ | DI:SI = cache misses | ||
+ | CX = ??? | ||
+ | BP = version (4.00 = 0400h) | ||
+ | 0001h reset cache | ||
+ | 0002h flush buffers | ||
+ | 0003h status | ||
+ | BP = drive # (0=A, 1=B, etc.) | ||
+ | DL = subfunction | ||
+ | 00h only get information | ||
+ | 01h turn on read cache | ||
+ | 02h turn off read cache | ||
+ | 03h turn on write cache | ||
+ | 04h turn off write cache | ||
+ | Return: AX = BABEh if OK | ||
+ | DL = status | ||
+ | bit 7 not cached | ||
+ | bit 6 write-through | ||
+ | bit 5 ??? | ||
+ | bits 0-4 drive # (0=A, 1=B...) | ||
+ | DL = FFh if drive does not exist | ||
+ | Note: If the read cache is off, reads will not be cached, | ||
+ | but writes will continue to be cached if the write- | ||
+ | cache is enabled. | ||
+ | 0004h cache size | ||
+ | Return: AX = ??? | ||
+ | BX = largest number of elements | ||
+ | CX = size of elements in bytes | ||
+ | DX = number of elements under Windows | ||
+ | 0005h double-buffer status | ||
+ | BP = drive # (0=A, 1=B...) | ||
+ | Return: AX = BABEh if double-buffered | ||
+ | 0007h ??? | ||
+ | Return: DI = random number??? | ||
+ | 000Ah get table pointer??? | ||
+ | Return: ES:BX -> table of about 10 bytes or 5 words. Seems to | ||
+ | be words pointing to memory addresses | ||
+ | containing info??? (see below) | ||
+ | 1234h signal serious error | ||
+ | pops up a message box saying that a serious error occurred and | ||
+ | to hit R to retry. | ||
+ | SeeAlso: INT 21/ | ||
+ | |||
+ | Format of data table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ----------2F4B------------------------------- | ||
+ | INT 2F - LAN Manager 2.0 DOS Enh NETWKSTA.EXE - NETWORK WORKSTATION REDIRECTOR | ||
+ | AH = 4Bh | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: LAN Manager enhanced mode adds features beyond the standard redirector | ||
+ | file/ | ||
+ | SeeAlso: AX=118Ah, | ||
+ | ----------2F4B01----------------------------- | ||
+ | INT 2F - DOS v5.0 TASK SWITCHER - BUILD CALLOUT CHAIN | ||
+ | AX = 4B01h | ||
+ | CX:DX -> task switcher entry point (see AX=4B02h) | ||
+ | ES:BX = 0000h:0000h | ||
+ | Return: ES:BX -> callback info structure (see below) or 0000h:0000h | ||
+ | Notes: | ||
+ | this function is hooked by clients which require notification of task | ||
+ | switcher activities; the call must first be passed on to the prior | ||
+ | handler with registers unchanged using a simulated interrupt. On | ||
+ | return, the client must build a callback info structure and store | ||
+ | the returned ES:BX in the " | ||
+ | its own callback info structure. | ||
+ | a client program must add itself to the notification chain if it | ||
+ | provides services to other programs; before terminating, | ||
+ | remove itself from the chain by calling the task switcher' | ||
+ | point with AX=0005h (see AX=4B02h) | ||
+ | the task switcher entry point should not be saved, as it is subject to | ||
+ | change and will be provided on any notification call | ||
+ | the Windows 3.1 Standard Mode supports this API | ||
+ | SeeAlso: AX=4B02h | ||
+ | |||
+ | Format of callback info structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | (see AX=4B02h) | ||
+ | |||
+ | Notification function is called with: | ||
+ | AX = function | ||
+ | 0000h switcher initialization | ||
+ | Return: AX = 0000h if OK to load | ||
+ | = nonzero to abort task switcher | ||
+ | 0001h query suspend | ||
+ | BX = session ID | ||
+ | Return: AX = 0000h if OK to switch session | ||
+ | = 0001h if not | ||
+ | 0002h suspend session | ||
+ | BX = session ID | ||
+ | interrupts disabled | ||
+ | Return: AX = 0000h if OK to switch session | ||
+ | = 0001h if not | ||
+ | 0003h activate session | ||
+ | BX = session ID | ||
+ | CX = session status flags | ||
+ | bit 0: set if first activation of session | ||
+ | bits 1-15: reserved (0) | ||
+ | interrupts disabled | ||
+ | Return: AX = 0000h | ||
+ | 0004h session active | ||
+ | BX = session ID | ||
+ | CX = session status flags | ||
+ | bit 0: set if first activation of session | ||
+ | bits 1-15: reserved (0) | ||
+ | Return: AX = 0000h | ||
+ | 0005h create session | ||
+ | BX = session ID | ||
+ | Return: AX = 0000h if OK to create session | ||
+ | = 0001h if not | ||
+ | 0006h destroy session | ||
+ | BX = session ID | ||
+ | Return: AX = 0000h | ||
+ | 0007h switcher termination | ||
+ | BX = flags | ||
+ | bit 0: set if calling switcher is only switcher loaded | ||
+ | bits 1-15: reserved (0) | ||
+ | Return: AX = 0000h | ||
+ | ES:DI -> task switcher entry point (see AX=4B02h) | ||
+ | Notes: | ||
+ | invokes the task switcher, rather than by the task switcher itself; | ||
+ | the entry point supplied to this function is not necessarily the | ||
+ | entry point to the task switcher itself, and may be 0000h: | ||
+ | any client indicates that loading is not possible, all clients will | ||
+ | be called with function 0007h; thus it is possible for a client to | ||
+ | receive a termination notice without a corresponding initialization | ||
+ | notice. | ||
+ | except for functions 0002h and 0003h, the notification handler is | ||
+ | called with interrupts enabled and may make any INT 21h function | ||
+ | call; interrupts must not be enabled in functions 0002h and 0003h | ||
+ | function 0007h may be called with ES:DI = 0000h:0000h if the entry | ||
+ | point is no longer valid | ||
+ | ----------2F4B02BX0000----------------------- | ||
+ | INT 2F - DOS v5.0 TASK SWITCHER - INSTALLATION CHECK | ||
+ | AX = 4B02h | ||
+ | BX = 0000h | ||
+ | ES:DI = 0000h:0000h | ||
+ | Return: ES:DI = 0000h:0000h if task switcher not loaded | ||
+ | ES:DI -> task switcher entry point (see below) if loaded | ||
+ | AX = 0000h | ||
+ | Note: the returned entry point is that for the most-recently loaded task | ||
+ | switcher; the entry points for prior task switchers may be determined | ||
+ | with the "get version" | ||
+ | SeeAlso: AX=4A05h, | ||
+ | |||
+ | Call task switcher entry point with: | ||
+ | AX = 0000h get version | ||
+ | Return: CF clear if successful | ||
+ | AX = 0000h | ||
+ | ES:BX -> task switcher version struct (see below) | ||
+ | CF set if unsupported function | ||
+ | AX = 0001h test memory region | ||
+ | ES:DI -> first byte to be tested | ||
+ | CX = size of region to test | ||
+ | Return: CF clear if successful | ||
+ | AX = memory type of tested region | ||
+ | 0000h global | ||
+ | 0001h global and local | ||
+ | 0002h local (replaced on session switch) | ||
+ | CF set if unsupported function | ||
+ | AX = 0002h suspend switcher | ||
+ | ES:DI -> new task switcher' | ||
+ | Return: CF clear if successful | ||
+ | AX = state | ||
+ | 0000h switcher has been suspended | ||
+ | 0001h switcher not suspended, new switcher must | ||
+ | abort | ||
+ | 0002h switcher not suspended, but new switcher | ||
+ | may run anyway | ||
+ | CF set if unsupported function | ||
+ | AX = 0003h resume switcher | ||
+ | ES:DI -> new task switcher' | ||
+ | Return: CF clear if successful | ||
+ | AX = 0000h | ||
+ | CF set if unsupported function | ||
+ | AX = 0004h hook notification chain | ||
+ | ES:DI -> callback info structure to be added to chain | ||
+ | (see AX=4B01h) | ||
+ | Return: CF clear if successful | ||
+ | AX = 0000h | ||
+ | CF set if unsupported function | ||
+ | AX = 0005h unhook notification chain | ||
+ | ES:DI -> callback info structure to be removed from chain | ||
+ | (see AX=4B01h) | ||
+ | Return: CF clear if successful | ||
+ | AX = 0000h | ||
+ | CF set if unsupported function | ||
+ | AX = 0006h query API support | ||
+ | BX = asynchronous API identifier | ||
+ | Return: CF clear if successful | ||
+ | AX = 0000h | ||
+ | ES:BX -> API info structure (see below) for the | ||
+ | client which provides the highest | ||
+ | level of | ||
+ | CF set if unsupported function | ||
+ | |||
+ | Format of task switcher version structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | bit 0: set if task switcher disabled | ||
+ | bits 1-15: reserved (0) | ||
+ | | ||
+ | (" | ||
+ | | ||
+ | |||
+ | Format of API info structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | 0001h NetBIOS | ||
+ | 0002h 802.2 | ||
+ | 0003h TCP/IP | ||
+ | 0004h LAN Manager named pipes | ||
+ | 0005h Novell NetWare IPX | ||
+ | | ||
+ | | ||
+ | | ||
+ | 0001h minimal support | ||
+ | 0002h API-level support | ||
+ | 0003h switcher compatibility | ||
+ | 0004h seamless compatibility | ||
+ | ----------2F4B03----------------------------- | ||
+ | INT 2F - DOS v5.0 TASK SWITCHER - ALLOCATE SWITCHER ID | ||
+ | AX = 4B03h | ||
+ | ES:DI -> task switcher entry point (see AX=4B02h) | ||
+ | Return: AX = 0000h | ||
+ | BX = switcher ID (0001h-000Fh), | ||
+ | Notes: if a task switcher has determined that it is the first to be loaded, it | ||
+ | must allocate an identifier for itself and provide this function to | ||
+ | all subsequent task switchers; if it is not the first to be loaded, | ||
+ | it must call this function to allocate an ID. The switcher ID is | ||
+ | used as the high four bits of all session identifiers to ensure | ||
+ | unique session IDs. | ||
+ | if no more switcher IDs are available, the new task switcher making the | ||
+ | call must terminate or disable itself | ||
+ | the task switcher providing the identifiers may call the new task | ||
+ | switcher' | ||
+ | this call is available from within DOSSHELL even if the task switcher | ||
+ | is not installed | ||
+ | SeeAlso: AX=4B02h, | ||
+ | ----------2F4B04----------------------------- | ||
+ | INT 2F - DOS v5.0 TASK SWITCHER - FREE SWITCHER ID | ||
+ | AX = 4B04h | ||
+ | BX = switcher ID | ||
+ | ES:DI -> task switcher entry point (see AX=4B02h) | ||
+ | Return: AX = 0000h | ||
+ | BX = status | ||
+ | 0000h successful | ||
+ | other error (invalid ID or ID not allocated) | ||
+ | Notes: | ||
+ | and is providing the support for AX=4B03h and AX=4B04h | ||
+ | the task switcher providing the identifiers may call the terminating | ||
+ | task switcher' | ||
+ | this call is available from within DOSSHELL even if the task switcher | ||
+ | is not installed | ||
+ | SeeAlso: AX=4B02h, | ||
+ | ----------2F4B05----------------------------- | ||
+ | INT 2F - DOS v5.0 DOSSHELL TASK SWITCHER - IDENTIFY INSTANCE DATA | ||
+ | AX = 4B05h | ||
+ | ES:BX = 0000h:0000h | ||
+ | CX:DX -> task switcher entry point (see AX=4B02h) | ||
+ | Return: ES:BX -> startup info structure (see below) or 0000h:0000h | ||
+ | Notes: | ||
+ | clients with instance data should hook this call, pass it through to | ||
+ | the previous handler with unchanged registers using a simulated | ||
+ | interrupt. | ||
+ | structure (see below), store the returned ES:BX in the " | ||
+ | field, and return the address of the created structure in ES:BX | ||
+ | all MSDOS function calls are available from within this call | ||
+ | SeeAlso: AX=1605h, | ||
+ | |||
+ | Format of startup info structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of one instance data record in array: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ----------2F53------------------------------- | ||
+ | INT 2F U - ??? | ||
+ | AH = 53h | ||
+ | AL = subfunction (0Bh, maybe others???) | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: AH=54h,INT 33/AX=002Fh | ||
+ | ----------2F54------------------------------- | ||
+ | INT 2F U - ??? | ||
+ | AH = 54h | ||
+ | AL = subfunction (00h, 01h, maybe others???) | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: AH=53h | ||
+ | ----------2F5453----------------------------- | ||
+ | INT 2F - TesSeRact RAM-RESIDENT PROGRAM INTERFACE | ||
+ | AX = 5453h | ||
+ | BX = subfunction | ||
+ | 00h installation check | ||
+ | CX = 0000h | ||
+ | DS:SI -> 8-char blank-padded name | ||
+ | Return: AX = FFFFh installed | ||
+ | CX = ID number of already-installed copy | ||
+ | = anything else, not installed | ||
+ | CX = ID number for TSR when installed | ||
+ | 01h get user parameters | ||
+ | CX = TSR ID number | ||
+ | Return: AX = 0000h successful | ||
+ | ES:BX -> user parameter block (see below) | ||
+ | = nonzero failed | ||
+ | 02h check if hotkey in use | ||
+ | CL = scan code of hot key | ||
+ | Return: AX = FFFFh hot key conflicts with another TSR | ||
+ | | ||
+ | 03h replace default critical error handler | ||
+ | CX = TSR ID number | ||
+ | DS:SI -> new routine for INT 24h | ||
+ | Return: AX = nonzero, unable to install new handler | ||
+ | 04h get internal data area | ||
+ | CX = TSR ID number | ||
+ | Return: AX = 0000h | ||
+ | ES:BX -> TSR's internal data area (see below) | ||
+ | = nonzero, TSR not found | ||
+ | 05h set multiple hot keys | ||
+ | CX = TSR ID number | ||
+ | DL = number of additional hot keys to allocate | ||
+ | DS:SI -> table of hot keys | ||
+ | BYTE | ||
+ | BYTE | ||
+ | BYTE | ||
+ | Return: AX = nonzero, unable to install hot keys | ||
+ | 06h - 0Fh reserved | ||
+ | 10h enable TSR | ||
+ | CX = TSR ID number | ||
+ | Return: AX = nonzero, unable to enable | ||
+ | 11h disable TSR | ||
+ | CX = TSR ID number | ||
+ | Return: AX = nonzero, unable to disable | ||
+ | 12h unload TSR | ||
+ | CX = TSR ID number | ||
+ | Return: AX = nonzero, invalid TSR number | ||
+ | Note: if any interrupts used by TSR have been grabbed by | ||
+ | another TSR, the TesSeRact routines will wait until | ||
+ | it is safe to remove the indicated TSR from memory | ||
+ | 13h restart TSR | ||
+ | CX = TSR ID number of TSR which was unloaded but is still in | ||
+ | | ||
+ | Return: AX = nonzero, unable to restart TSR | ||
+ | 14h get status word | ||
+ | CX = TSR ID number | ||
+ | Return: AX = FFFFh invalid ID number | ||
+ | = other, successful | ||
+ | BX = bit flags | ||
+ | 15h set status word | ||
+ | CX = TSR ID number | ||
+ | DX = new bit flags | ||
+ | Return: AX = nonzero, unable to set status word | ||
+ | 16h get INDOS state at popup | ||
+ | CX = TSR ID number | ||
+ | Return: AX = 0000h successful | ||
+ | BX = value of INDOS flag | ||
+ | 17h - 1Fh reserved | ||
+ | 20h call user procedure | ||
+ | CX = TSR ID number | ||
+ | ES:DI -> user-defined data | ||
+ | Return: AX = 0000h successful | ||
+ | 21h stuff keystrokes into keyboard buffer | ||
+ | CX = TSR ID number | ||
+ | DL = speed | ||
+ | 00h stuff keystrokes only when buffer is empty | ||
+ | 01h stuff up to four keystrokes per clock tick | ||
+ | 02h stuff up to 15 keystrokes per clock tick | ||
+ | DH = scan code flag | ||
+ | if zero, buffer contains alternating ASCII and scan codes | ||
+ | if nonzero, buffer contains only ASCII codes | ||
+ | SI = number of keystrokes | ||
+ | ES:DI -> buffer to stuff | ||
+ | Return: AX = 0000h success | ||
+ | F0F0h user aborted with ^C or ^Break | ||
+ | other unable to stuff keystrokes | ||
+ | 22h (v1.10) trigger popup | ||
+ | CX = TSR ID number | ||
+ | Return: AX = 0000h success, TSR will either pop up or beep to | ||
+ | | ||
+ | | ||
+ | 23h (v1.10) invoke TSR's background function | ||
+ | CX = TSR ID number | ||
+ | Return: AX = 0000h success | ||
+ | FFFFh not safe to call background function | ||
+ | | ||
+ | 24h - 2Fh reserved | ||
+ | Notes: | ||
+ | (versions 1.x and 2.x only) fully supports the TesSeRact API, as | ||
+ | do the SWAP?? programs by Innovative Data Concepts. | ||
+ | AVATAR.SYS supports functions 00h and 01h (only the first three fields | ||
+ | of the user parameter block) using the name " | ||
+ | SeeAlso: AX=CAFEh | ||
+ | |||
+ | Format of User Parameter Block: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 00h = pop up when shift states match | ||
+ | FFh = no popup (if shift state also FFh) | ||
+ | | ||
+ | FFh = no popup (if scan code also FFh) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of TSR internal data area: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 11 times (for INTs 08h, | ||
+ | DWORD old interrupt vector | ||
+ | BYTE interrupt number | ||
+ | WORD offset in TesSeRact code segment of new interrupt handler | ||
+ | ----------2F5500----------------------------- | ||
+ | INT 2F U - DOS v5.0 - COMMAND.COM INTERFACE | ||
+ | AX = 5500h | ||
+ | Return: AX = 0000h | ||
+ | DS:SI -> entry point table | ||
+ | Notes: used to access the shareable portion of COMMAND.COM, | ||
+ | been moved into the HMA; only the primary COMMAND.COM retains this | ||
+ | portion | ||
+ | procedures called from a dispatcher in COMMAND' | ||
+ | most assume that the segment address of the resident portion is on | ||
+ | the stack and are thus not of general use | ||
+ | ----------2F6282----------------------------- | ||
+ | INT 2F U - PC Tools v7.0+ VDEFEND, DATAMON - SET ??? ADDRESS | ||
+ | AX = 6282h | ||
+ | CX:DX -> ??? or 0000h:0000h | ||
+ | DI = 0000h ??? | ||
+ | FFFFh ??? | ||
+ | other segment of ??? | ||
+ | Return: BX = 0062h | ||
+ | Note: if CX:DX = 0000h:0000h on entry, the ??? address is not changed | ||
+ | (DATAMON only) | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2F6284BX0000----------------------- | ||
+ | INT 2F U - PC Tools v7.0+ DATAMON - INSTALLATION CHECK | ||
+ | AX = 6284h | ||
+ | BX = 0000h | ||
+ | CX = 0000h | ||
+ | Return: AX = segment of resident code | ||
+ | BX = 5555h | ||
+ | CX = 5555h | ||
+ | ----------2F6284BX0001----------------------- | ||
+ | INT 2F U - PC Tools v7.0+ DATAMON - GET ??? | ||
+ | AX = 6284h | ||
+ | BX = 0001h | ||
+ | CX = 0001h | ||
+ | Return: AX:BX -> ??? | ||
+ | CX = BX | ||
+ | ----------2F6284BX0002----------------------- | ||
+ | INT 2F U - PC Tools v7.0+ DATAMON - GET ??? | ||
+ | AX = 6284h | ||
+ | BX = 0002h | ||
+ | CX = 0002h | ||
+ | Return: AX = ??? | ||
+ | BX = ??? | ||
+ | CX = AX | ||
+ | DX = BX | ||
+ | ----------2F6284BX0003----------------------- | ||
+ | INT 2F U - PC Tools v7.0+ DATAMON - SET ??? FLAGS | ||
+ | AX = 6284h | ||
+ | BX = 0003h | ||
+ | CX = flags | ||
+ | bit 12: ??? | ||
+ | 10: ??? | ||
+ | 5: ??? | ||
+ | 3: ??? | ||
+ | DX = flags | ||
+ | bit 15: ??? | ||
+ | ----------2F6400----------------------------- | ||
+ | INT 2F - SCRNSAV2.COM - INSTALLATION CHECK | ||
+ | AX = 6400h | ||
+ | Return: AL = 00h not installed | ||
+ | FFh installed | ||
+ | Note: | ||
+ | SeeAlso: INT 10/AX=5555h | ||
+ | ----------2F7200----------------------------- | ||
+ | INT 2F - SRDISK v1.30 - INSTALLATION CHECK | ||
+ | AX = 7200h | ||
+ | Return: AL = FFh if installed | ||
+ | ES = segment of device driver header (see below) | ||
+ | Note: | ||
+ | |||
+ | Format of device driver header: | ||
+ | Offset Size Description | ||
+ | 00h 10 BYTEs same as standard device driver header (see INT 21/AH=52h) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2F7A00----------------------------- | ||
+ | INT 2F - Novell NetWare - LOW-LEVEL API (IPX) INSTALLATION CHECK | ||
+ | AX = 7A00h | ||
+ | Return: AL = 00h not installed | ||
+ | = FFh installed | ||
+ | ES:DI -> FAR entry point for routines accessed exclusively | ||
+ | through INT 7A in NetWare versions through 2.0a. Call | ||
+ | with same values as INT 7A | ||
+ | SeeAlso: AX=7AFFh/ | ||
+ | ----------2F7A10----------------------------- | ||
+ | INT 2F - Novell NetWare - TBMI v2.0 - GET TBMI STATUS | ||
+ | AX = 7A10h | ||
+ | Return: DH = major TBMI version number | ||
+ | DL = minor TBMI version number | ||
+ | CX = segment address of TBMI resident part | ||
+ | BX = status word of TBMI | ||
+ | bit 0: INT2F intercepted by TBMI | ||
+ | bit 1: INT7A intercepted by TBMI | ||
+ | bit 2: INT64 intercepted by TBMI | ||
+ | bits 3-14: reserved or unused ??? | ||
+ | bit 15: outstanding task ID was detected | ||
+ | Note: TBMI is the Task-Switched Buffer Manager Interface | ||
+ | SeeAlso: AX=7A11h, | ||
+ | ----------2F7A11----------------------------- | ||
+ | INT 2F - Novell NetWare - TBMI v2.0 - GET INT2F HANDLERS | ||
+ | AX = 7A11h | ||
+ | Return: ES:BX -> old INT 2F handler | ||
+ | DS:DX -> TBMI INT 2F handler | ||
+ | SeeAlso: AX=7A10h, | ||
+ | ----------2F7A12----------------------------- | ||
+ | INT 2F - Novell NetWare - TBMI v2.0 - GET INT64 HANDLERS | ||
+ | AX = 7A12h | ||
+ | Return: ES:BX -> old INT 64 handler | ||
+ | DS:DX -> TBMI INT 64 handler | ||
+ | SeeAlso: AX=7A10h, | ||
+ | ----------2F7A13----------------------------- | ||
+ | INT 2F - Novell NetWare - TBMI v2.0 - GET INT7A HANDLERS | ||
+ | AX = 7A13h | ||
+ | Return: ES:BX = old INT 7A handler | ||
+ | DS:DX = TBMI INT 7A handler | ||
+ | SeeAlso: AX=7A10h, | ||
+ | ----------2F7A14----------------------------- | ||
+ | INT 2F - Novell NetWare - TBMI v2.0 - GET STATISTICS | ||
+ | AX = 7A14h | ||
+ | CX = statistic to retrieve | ||
+ | 0000h available diagnostic functions??? | ||
+ | Return: CX = maximum available function??? (000Ch for v2.0) | ||
+ | 0001h buffers in use | ||
+ | Return: CX = TBMI buffers currently in use | ||
+ | 0002h maximum buffers used | ||
+ | Return: CX = maximum number of buffers ever in use | ||
+ | 0003h unavailable buffers | ||
+ | Return: CX = count of unavailable TBMI buffers | ||
+ | 0004h old interrupt usage | ||
+ | Return: CX = TBMI accesses to intercepted old vectors INT 2F, | ||
+ | INT 64, and INT 7A | ||
+ | 0005h far call usage | ||
+ | Return: CX = TBMI accesses to IPX/SPX far call handler (not | ||
+ | including internal accesses) | ||
+ | 0006h task buffering | ||
+ | Return: CX = TBMI task buffering status (enabled/ | ||
+ | disable/ | ||
+ | 0007h current task ID | ||
+ | Return: CX = TBMI current task ID number (0000h if ???) | ||
+ | 0008h outstanding ID count | ||
+ | Return: CX = number of outstanding TBMI IDs | ||
+ | 0009h configured ECBs | ||
+ | Return: CX = number of TBMI Event Control Blocks configured | ||
+ | 000Ah configured data ECBs | ||
+ | Return: CX = number of TBMI data ECBs configured | ||
+ | 000Bh configured sockets | ||
+ | Return: CX = number of TBMI sockets configured (from NETCFG) | ||
+ | 000Ch current sockets | ||
+ | Return: CX = number of TBMI sockets currently in use | ||
+ | SeeAlso: AX=7A10h | ||
+ | ----------2F7A1B----------------------------- | ||
+ | INT 2F - Novell NetWare - TBMI v2.0 - RESERVED??? | ||
+ | AX = 7A1Bh | ||
+ | Note: this call merely performs an IRET | ||
+ | ----------2F7A80----------------------------- | ||
+ | INT 2F - Novell NetWare - shell 3.01d - ??? | ||
+ | AX = 7A80h | ||
+ | Return: nothing | ||
+ | Note: | ||
+ | ----------2F7A81----------------------------- | ||
+ | INT 2F - Novell NetWare - shell 3.01d - ??? | ||
+ | AX = 7A81h | ||
+ | CX:DX -> ??? in shell' | ||
+ | Return: nothing??? | ||
+ | ----------2F7A85----------------------------- | ||
+ | INT 2F - Novell NetWare - shell 3.01 - BROADCAST INFORM | ||
+ | AX = 7A85h | ||
+ | CX = broadcast server number | ||
+ | Return: CX = 0000h if broadcast message handled by another program | ||
+ | CX unchanged if broadcast not handled | ||
+ | ----------2F7AFE----------------------------- | ||
+ | INT 2F - Novell NetWare - shell 3.01d - ??? | ||
+ | AX = 7AFEh | ||
+ | Return: AL = FFh ??? | ||
+ | other ??? | ||
+ | ----------2F7AFFBX0000----------------------- | ||
+ | INT 2F - Novell NetWare - TBMI v2.0 - INSTALLATION CHECK??? | ||
+ | AX = 7AFFh | ||
+ | BX = 0000h | ||
+ | CX = 4E65h (" | ||
+ | DX = 7457h (" | ||
+ | ES:DI -> IPX/SPX special handler (XMS/EMS ???) | ||
+ | Return: AL = FFh if installed | ||
+ | CX = configured sockets (14h) | ||
+ | DS:SI -> data table ??? | ||
+ | ES:DI -> IPX far call handler | ||
+ | Note: for IPX/SPX this call reportedly returns DS:DI pointing to the table | ||
+ | of pointers to service events queue head and tail | ||
+ | SeeAlso: AX=7AFFh/ | ||
+ | ----------2F7AFFBX0001----------------------- | ||
+ | INT 2F - Novell NetWare - TBMI v2.0, shell v3.01d - INSTALLATION CHECK??? | ||
+ | AX = 7AFFh | ||
+ | BX = 0001h | ||
+ | CX = 4E65h (" | ||
+ | DX = 7457h (" | ||
+ | Return: AL = FFh if installed | ||
+ | CX = ??? (8000h) | ||
+ | SI = ??? (or -> ???) (0002h) | ||
+ | ES:DI -> IPX far call handler | ||
+ | ES:DX -> 6-byte data area ??? | ||
+ | SeeAlso: AX=7AFFh/ | ||
+ | ----------2F7F24----------------------------- | ||
+ | INT 2F - Multiplex - ??? | ||
+ | AX = 7F24h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------2F7F26----------------------------- | ||
+ | INT 2F - Multiplex - ??? | ||
+ | AX = 7F26h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | --------------------------------------------- | ||
+ | Interrupt List, part 5 of 7 | ||
+ | This compilation is Copyright (c) 1989, | ||
+ | ----------2F8000----------------------------- | ||
+ | INT 2F - EASY-NET - INSTALLATION CHECK | ||
+ | AX = 8000h | ||
+ | Return: AL = 00h not installed | ||
+ | FFh installed | ||
+ | Note: | ||
+ | ----------2F8000----------------------------- | ||
+ | INT 2F - Nanosoft, Inc. TurboNET server - INSTALLATION CHECK | ||
+ | AX = 8000h | ||
+ | Return: AL = FFh if installed | ||
+ | BX = CS of resident code | ||
+ | CX = ??? (03FCh) | ||
+ | Note: | ||
+ | version may be downloaded from Nanosoft' | ||
+ | SeeAlso: AX=8100h | ||
+ | ----------2F8000DX0000----------------------- | ||
+ | INT 2F - FaxBIOS interface - INSTALLATION CHECK | ||
+ | AX = 8000h | ||
+ | DX = 0000h | ||
+ | DI = 0000h | ||
+ | Return: AL = FFh if installed | ||
+ | DX:DI -> signature " | ||
+ | Note: | ||
+ | whether it is installed, it is necessary to poll all multiplex | ||
+ | numbers for one which returns the above signature | ||
+ | SeeAlso: AH=2Ah, | ||
+ | ----------2F8001----------------------------- | ||
+ | INT 2F - Nanosoft, Inc. TurboNET server - ??? | ||
+ | AX = 8001h | ||
+ | DS:SI -> 16-byte buffer for ??? | ||
+ | Return: AH = status | ||
+ | 00h successful | ||
+ | 01h error | ||
+ | Note: makes NetBIOS calls | ||
+ | ----------2F80FB----------------------------- | ||
+ | INT 2F - FaxBIOS interface - COMMAND SUBMISSION | ||
+ | AX = 80FBh | ||
+ | BX = function number (see below) | ||
+ | DX:DI -> command buffer (see below) | ||
+ | Return: AL = FFh if submitted OK | ||
+ | CX = result code (see below) | ||
+ | Note: | ||
+ | SeeAlso: AX=8000h" | ||
+ | |||
+ | Values for function number: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Values for result code: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of SYS_LOGIN command buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 10h 22 BYTEs manufacturer' | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | bit 0: transmit supported | ||
+ | bit 1: receive supported | ||
+ | bit 2: IOCTL supported | ||
+ | bit 3: IOCTL_DIAL supported | ||
+ | bit 4: IOCTL_ANSWER_FAX supported | ||
+ | bit 5: manual transmit supported | ||
+ | bit 6: optional phone services supported | ||
+ | bit 7: canonical phone objects | ||
+ | bit 8: seam with next supported | ||
+ | | ||
+ | bit 0: low vertical resolution (minimum) | ||
+ | bit 1: high vertical resolution | ||
+ | bit 2: page width 107mm (4.21 in) | ||
+ | bit 3: page width 151mm (5.91 in) | ||
+ | bit 4: page width 215mm (8.46 in) (minimum) | ||
+ | bit 5: page width 255mm (10.04 in) | ||
+ | bit 6: page width 303mm (11.93 in) | ||
+ | bit 7: unused | ||
+ | bit 8: page length 297mm (11.69 in) (minimum) | ||
+ | bit 9: page length 364mm (14.33 in) | ||
+ | bit 10: page length 279mm (11 in) | ||
+ | bit 11: page length unlimited | ||
+ | bit 12: Group 4 resolution 300x300 | ||
+ | bit 13: Group 4 resolution 400x400 | ||
+ | bit 14: able to respond to poll from remote | ||
+ | bit 15: able to poll remote | ||
+ | bit 16: binary file transfer supported | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of SYS_LOGOUT command buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of SYS_GET_FAXAPP_INFO command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | 0Ch 80 BYTEs FaxBIOS data | ||
+ | 5Ch 80 BYTEs default cover | ||
+ | ACh 80 BYTEs default logo | ||
+ | FCh 80 BYTEs default signature | ||
+ | 14Ch 80 BYTEs default font 10 | ||
+ | 19Ch 80 BYTEs default font 165 | ||
+ | 1ECh 80 BYTEs default user font | ||
+ | 23Ch 80 BYTEs default Pdir | ||
+ | 28Ch 80 BYTEs default sort | ||
+ | 2DCh 10 BYTEs default bill | ||
+ | 2E6h 10 BYTEs default route | ||
+ | 2F0h 40 BYTEs default cover sheet form | ||
+ | 318h 34 BYTEs valid dial characters | ||
+ | 33Ah 6 BYTEs local country code | ||
+ | 340h 6 BYTEs local city or area code | ||
+ | 346h 6 BYTEs future expansion | ||
+ | 34Ch WORD structure size | ||
+ | |||
+ | Format of STAT_IO_GET command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 20h 80 BYTEs current file | ||
+ | | ||
+ | D8h 20 BYTEs last name | ||
+ | ECh 20 BYTEs first name | ||
+ | 100h 32 BYTEs company name | ||
+ | 120h 32 BYTEs notes | ||
+ | 140h WORD current envelope ID (if sending) | ||
+ | 142h WORD total pages in transmission (if sending) | ||
+ | 144h 6 BYTEs future expansion | ||
+ | 14h WORD structure size | ||
+ | |||
+ | Format of STAT_FAXBIOS_GET command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 1Eh 80 BYTEs current File | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of PDIR_OPEN command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | 0Ch 80 BYTEs Phone Directory token | ||
+ | 5Ch 80 BYTEs sort order token | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of PDIR_CLOSE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of PDIR_READ_PERSON command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 16h 20 BYTEs last name | ||
+ | 2Ah 20 BYTEs first name | ||
+ | 3Eh 32 BYTEs company | ||
+ | 5Eh 32 BYTEs notes | ||
+ | | ||
+ | | ||
+ | 8Ah 14 BYTEs FAX local number | ||
+ | 98h 14 BYTEs FAX extension | ||
+ | A6h 24 BYTEs reserved | ||
+ | | ||
+ | | ||
+ | CAh 14 BYTEs voice local number | ||
+ | D8h 14 BYTEs voice extension | ||
+ | E6h 24 BYTEs reserved | ||
+ | FEh 10 BYTEs outbound routing information | ||
+ | 108h 10 BYTEs billing information, | ||
+ | 112h DWORD remote FAX capabilities | ||
+ | 116h 21 BYTEs T.30 poll code of FAX number | ||
+ | 12Bh 15 BYTEs reserved | ||
+ | 13Ah 6 BYTEs future expansion | ||
+ | 140h WORD structure size | ||
+ | |||
+ | Format of SCHED_OPEN, SCHED_CANCEL command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of SCHED_ADD_DEST command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 14h 20 BYTEs last name | ||
+ | 28h 20 BYTEs first name | ||
+ | 3Ch 32 BYTEs company | ||
+ | 5Ch 32 BYTEs notes | ||
+ | | ||
+ | | ||
+ | 88h 14 BYTEs FAX local number | ||
+ | 96h 14 BYTEs FAX extension | ||
+ | A4h 24 BYTEs reserved | ||
+ | | ||
+ | | ||
+ | C8h 14 BYTEs voice local number | ||
+ | D6h 14 BYTEs voice extension | ||
+ | E4h 24 BYTEs reserved | ||
+ | FCh 10 BYTEs outbound routing information | ||
+ | 106h 10 BYTEs billing information, | ||
+ | 110h DWORD remote FAX capabilities | ||
+ | 114h 21 BYTEs T.30 poll code of FAX number | ||
+ | 129h 15 BYTEs reserved | ||
+ | 138h 6 BYTEs future expansion | ||
+ | 13Eh WORD structure size | ||
+ | |||
+ | Format of SCHED_ADD_FILE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | 0000h unidentified | ||
+ | 0001h native file format | ||
+ | 0002h ASCII | ||
+ | 0003h FaxBIOS Tiff Class F | ||
+ | 10h 80 BYTEs file name | ||
+ | 60h 80 BYTEs font token | ||
+ | | ||
+ | | ||
+ | 0000h standard 98 lines per inch, 204 dpi | ||
+ | 0001h fine 196 lines per inch, 204 dpi | ||
+ | 0002h Group4 300 dpi | ||
+ | 0003h Group4 400 dpi | ||
+ | | ||
+ | 0000h 279 mm (11 in) | ||
+ | 0001h 297 mm (11.69 in) | ||
+ | 0002h 364 mm (14.33 in) | ||
+ | 0003h unlimited | ||
+ | | ||
+ | 0000h 215 mm (8.46 in) | ||
+ | 0001h 255 mm (10.04 in) | ||
+ | 0002h 303 mm (11.93 in) | ||
+ | 0003h 151 mm (5.91 in) | ||
+ | 0004h 107 mm (4.21 in) | ||
+ | | ||
+ | 0000h only as FAX | ||
+ | 0001h only as file (for non-faxable files) | ||
+ | 0002h as file when possible else FAX | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of SCHED_SET_PARAMS command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | 10h 10 BYTEs priority token | ||
+ | 1Ch 80 BYTEs logo file token | ||
+ | 6Ch 80 BYTEs signature file token | ||
+ | BCh 80 BYTEs cover page token | ||
+ | 10Ch 40 BYTEs Subject text | ||
+ | 134h 40 BYTEs From text | ||
+ | 15Ch WORD user ID | ||
+ | 15Eh 6 BYTEs future expansion | ||
+ | 164h WORD structure size | ||
+ | |||
+ | Format of SCHED_CLOSE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of SLOG_OPEN, SLOG_CLOSE, RLOG_OPEN, RLOG_CLOSE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of GRAPH_GET_FILE_TYPE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | 0Ch 80 BYTEs filename | ||
+ | | ||
+ | 0000h unidentified | ||
+ | 0001h native file format | ||
+ | 0002h ASCII | ||
+ | 0003h FaxBIOS Tiff Class F | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of GRAPH_CREATE_FILE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | 0Ch 80 BYTEs filename | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of GRAPH_CLOSE_FILE, | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of GRAPH_CREATE_PAGE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of GRAPH_WRITE_PAGE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of GRAPH_OPEN_FILE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | 0Ch 80 BYTEs filename | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of GRAPH_GOTO_PAGE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of GRAPH_READ_PAGE command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of IOCTL_ANSWER_FAX command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of IOCTL_DIAL command buffer: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs common data (see SYS_LOGOUT above) | ||
+ | | ||
+ | | ||
+ | | ||
+ | 1Ah 14 BYTEs local number | ||
+ | 28h 14 BYTEs extension | ||
+ | 36h 14 BYTEs reserved | ||
+ | | ||
+ | | ||
+ | ----------2F8100----------------------------- | ||
+ | INT 2F U - Nanosoft, Inc. TurboNET redirector - INSTALLATION CHECK | ||
+ | AX = 8100h | ||
+ | Return: AL = FFh if installed | ||
+ | Note: | ||
+ | version may be downloaded from Nanosoft' | ||
+ | SeeAlso: AX=8000h" | ||
+ | ----------2F8101----------------------------- | ||
+ | INT 2F U - Nanosoft, Inc. TurboNET redirector - ??? | ||
+ | AX = 8101h | ||
+ | Return: AL = ??? | ||
+ | DL = ??? | ||
+ | ----------2F8102----------------------------- | ||
+ | INT 2F U - Nanosoft, Inc. TurboNET redirector - ??? | ||
+ | AX = 8102h | ||
+ | Return: AL = ??? | ||
+ | DL = ??? | ||
+ | ----------2F8103----------------------------- | ||
+ | INT 2F U - Nanosoft, Inc. TurboNET redirector - GET MACHINE NAME??? | ||
+ | AX = 8103h | ||
+ | ES:DI -> 17-byte buffer | ||
+ | Return: buffer filled | ||
+ | ----------2F8104----------------------------- | ||
+ | INT 2F U - Nanosoft, Inc. TurboNET redirector - ??? | ||
+ | AX = 8104h | ||
+ | BL = ??? | ||
+ | BH = ??? | ||
+ | CX = ??? | ||
+ | DX = ??? | ||
+ | DS:SI -> 16-byte buffer containing ??? | ||
+ | Return: AL = 00h ??? | ||
+ | ----------2F8105----------------------------- | ||
+ | INT 2F U - Nanosoft, Inc. TurboNET redirector - ??? | ||
+ | AX = 8105h | ||
+ | CX = ??? (don't change current value if 0000h) | ||
+ | DX = ??? (don't change current value if 0000h) | ||
+ | Return: AL = 00h successful | ||
+ | ----------2F82------------------------------- | ||
+ | INT 2F U - Nanosoft, Inc. TurboNET - ??? | ||
+ | AH = 82h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=8100h | ||
+ | ----------2F8200----------------------------- | ||
+ | INT 2F - RESPLAY - SAMPLE/ | ||
+ | AX = 8200h | ||
+ | DX:DI -> start of sample space | ||
+ | CX:BX = length in bytes | ||
+ | Return: AX = status | ||
+ | 1000h successful | ||
+ | 2000h not initialized (see AX=8210h) | ||
+ | other RESPLAY not installed | ||
+ | Note: | ||
+ | SeeAlso: AX=8201h, | ||
+ | ----------2F8201----------------------------- | ||
+ | INT 2F - RESPLAY - INSTALLATION CHECK | ||
+ | AX = 8201h | ||
+ | Return: AX = 7746h if installed | ||
+ | SeeAlso: AX=8202h | ||
+ | ----------2F8202----------------------------- | ||
+ | INT 2F - RESPLAY - UNINSTALL | ||
+ | AX = 8202h | ||
+ | Return: AX = status | ||
+ | 1000h successful | ||
+ | SeeAlso: AX=8201h | ||
+ | ----------2F8210----------------------------- | ||
+ | INT 2F - RESPLAY - INITIALIZE | ||
+ | AX = 8210h | ||
+ | BL = sound device | ||
+ | 00h printer port LPT1 | ||
+ | 01h printer port LPT2 | ||
+ | 02h prototype board at I/O address 0300h | ||
+ | 03h printer port (alternative LPT1) | ||
+ | 04h internal speaker | ||
+ | BH = sample rate in multiples of 250 Hz (14h to A0h) | ||
+ | CL = direction | ||
+ | 00h playback | ||
+ | 01h sample | ||
+ | Return: AX = status | ||
+ | 1000h successful | ||
+ | 2000h parameter out of range | ||
+ | other RESPLAY not installed | ||
+ | SeeAlso: AX=8200h | ||
+ | ----------2F86------------------------------- | ||
+ | INT 2F U - ??? | ||
+ | AH = 86h | ||
+ | AL = function (at least 06h and 07h) | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: AH=44h | ||
+ | ----------2F8900----------------------------- | ||
+ | INT 2F - WHOA!.COM - INSTALLATION CHECK | ||
+ | AX = 8900h | ||
+ | Return: AL = 00h not installed | ||
+ | = FFh installed | ||
+ | Note: | ||
+ | SeeAlso: AX=8901h, | ||
+ | ----------2F8901----------------------------- | ||
+ | INT 2F - WHOA!.COM - UNINSTALL | ||
+ | AX = 8901h | ||
+ | Return: AL = FDh successful | ||
+ | = FEh error | ||
+ | Note: | ||
+ | SeeAlso: AX=8900h | ||
+ | ----------2F8902----------------------------- | ||
+ | INT 2F - WHOA!.COM - SET DELAY COUNT | ||
+ | AX = 8902h | ||
+ | BX = delay count (larger values slow system down more) | ||
+ | Return: AL = FDh successful | ||
+ | = FEh error | ||
+ | Note: | ||
+ | SeeAlso: AX=8900h | ||
+ | ----------2F9000----------------------------- | ||
+ | INT 2F U - RAID - INSTALLATION CHECK | ||
+ | AX = 9000h | ||
+ | Return: AL = FFh if installed | ||
+ | Note: RAID (Resident AID) is a TSR utility program by Ross Neilson Wentworth | ||
+ | that resides mostly in EMS | ||
+ | ----------2F9001----------------------------- | ||
+ | INT 2F U - RAID - GET ??? | ||
+ | AX = 9001h | ||
+ | Return: DX:AX -> ??? | ||
+ | SeeAlso: AX=9000h | ||
+ | ----------2F9002----------------------------- | ||
+ | INT 2F U - RAID - GET RESIDENT SEGMENT | ||
+ | AX = 9002h | ||
+ | Return: AX = segment of resident (conventional memory) portion | ||
+ | SeeAlso: AX=9000h | ||
+ | ----------2F9003----------------------------- | ||
+ | INT 2F U - RAID - UNINSTALL | ||
+ | AX = 9003h | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=9000h | ||
+ | ----------2F9004----------------------------- | ||
+ | INT 2F U - RAID - GET ??? | ||
+ | AX = 9004h | ||
+ | Return: AX = first available paragraph past end of resident portion??? | ||
+ | CX destroyed | ||
+ | SeeAlso: AX=9000h | ||
+ | ----------2F92------------------------------- | ||
+ | INT 2F - Couriers LAN E-Mail - API | ||
+ | AH = 92h | ||
+ | AL = function | ||
+ | 00h installation check | ||
+ | 01h uninstall | ||
+ | 02h pop down MICRO.EXE notification window | ||
+ | 03h ??? | ||
+ | 04h ??? | ||
+ | 05h ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=9Ch | ||
+ | ----------2F93------------------------------- | ||
+ | INT 2F - InnerMission v1.7+ - INSTALLATION CHECK | ||
+ | AH = 93h | ||
+ | BX = CX = AX | ||
+ | Return: AL = FFh if installed and BX=CX=AX on entry | ||
+ | BX = segment of resident code | ||
+ | = 01h if installed but BX or CX differ from AX | ||
+ | Note: | ||
+ | ----------2F9C------------------------------- | ||
+ | INT 2F - Couriers LAN E-Mail OPERATOR.EXE - API | ||
+ | AH = 9Ch | ||
+ | AL = subfunction | ||
+ | 01h uninstall | ||
+ | Return: ??? | ||
+ | SeeAlso: AH=92h | ||
+ | ----------2FA1--BX0081----------------------- | ||
+ | INT 2F - Ergo DOS extenders - INSTALLATION CHECK | ||
+ | AH = A1h | ||
+ | BX = 0081h | ||
+ | AL = which | ||
+ | FEh OS/ | ||
+ | FFh HummingBoard DOS extender | ||
+ | ES:DI -> 16-byte buffer | ||
+ | Return: if installed, first four bytes of ES:DI buffer are " | ||
+ | Note: since TKERNEL is a licensed version, it is likely that subfunctions | ||
+ | BX=0082h and BX=0084h are present and function identically to the | ||
+ | AX=FBA1h/ | ||
+ | SeeAlso: AX=ED00h, | ||
+ | ----------2FA189----------------------------- | ||
+ | INT 2F U - Biologic HRAMDEV.SYS - API | ||
+ | AX = A189h | ||
+ | BX = subfunction | ||
+ | 0000h set ??? | ||
+ | 0001h remove ??? | ||
+ | 0002h get status ??? | ||
+ | 0003h enable ??? | ||
+ | 0004h disable ??? | ||
+ | 0005h set ??? flag | ||
+ | 0006h clear ??? flag | ||
+ | 0007h set ??? flag | ||
+ | 0008h clear ??? flag | ||
+ | 0009h set ??? | ||
+ | ES:DI -> function-specific arguments | ||
+ | if func 0000h: 20-byte buffer containing ??? | ||
+ | if func 0001h: 20-byte buffer for returned ??? | ||
+ | if func 0002h: 16-byte buffer for returned ??? | ||
+ | if func 0009h: WORD containing ??? | ||
+ | Return: BX = A189h if installed | ||
+ | AH = status | ||
+ | 00h successful | ||
+ | FFh failed or invalid function number | ||
+ | Notes: | ||
+ | provides improved high memory access under MSDOS 5.0 | ||
+ | functions 00h and 01h use a stack of four entries; function 01h always | ||
+ | removes the values stored with the most recent function 00h call | ||
+ | which has not yet been matched with a function 01h call. | ||
+ | ----------2FA900----------------------------- | ||
+ | INT 2F - METZTSR.COM - INSTALLATION CHECK | ||
+ | AX = A900h | ||
+ | CF set | ||
+ | Return: CF clear if resident | ||
+ | AX = 97FFh | ||
+ | CF set if not present | ||
+ | Notes: | ||
+ | saver) inactivity timeout while running a DOSapp under MS Windows. | ||
+ | the default multiplex number is A9h, but may be set to any value from | ||
+ | 80h to FFh with a commandline switch | ||
+ | SeeAlso: AX=A901h, | ||
+ | ----------2FA901----------------------------- | ||
+ | INT 2F - METZTSR.COM - GET TIME OF LAST KEYBOARD ACTIVITY | ||
+ | AX = A901h | ||
+ | CF set | ||
+ | Return: CF clear if successful | ||
+ | AX:DX = BIOS time at which INT 09 was last invoked | ||
+ | CF set if not present | ||
+ | SeeAlso: INT 09,INT 1A/AH=00h | ||
+ | ----------2FA902----------------------------- | ||
+ | INT 2F - METZTSR.COM - SET METZ Ctrl-Alt-Del FLAG | ||
+ | AX = A902h | ||
+ | BL = new value | ||
+ | 00h Ctrl-Alt-Del not allowed | ||
+ | else Ctrl-Alt-Del allowed (startup default is 01h) | ||
+ | CF set | ||
+ | Return: CF clear if successful | ||
+ | AX = 97FFh | ||
+ | CF set if not resident | ||
+ | SeeAlso: AX=A903h | ||
+ | ----------2FA903----------------------------- | ||
+ | INT 2F - METZTSR.COM - GET METZ Ctrl-Alt-Del FLAG | ||
+ | AX = A903h | ||
+ | CF set | ||
+ | Return: CF clear if successful | ||
+ | AX = 97FFh if Ctrl-Alt-Del allowed | ||
+ | AX = 0000h if Ctrl-Alt-Del not allowed | ||
+ | CF set if not resident | ||
+ | SeeAlso: AX=A902h | ||
+ | ----------2FAA00----------------------------- | ||
+ | INT 2F - VIDCLOCK.COM - INSTALLATION CHECK | ||
+ | AX = AA00h | ||
+ | Return: AL = 00h not installed | ||
+ | FFh installed | ||
+ | Note: | ||
+ | ----------2FAB00----------------------------- | ||
+ | INT 2F - Btrieve Multi-User - INSTALLATION CHECK | ||
+ | AX = AB00h | ||
+ | Return: AL = 4Dh if installed | ||
+ | SeeAlso: AX=AB01h, | ||
+ | ----------2FAB01----------------------------- | ||
+ | INT 2F - Btrieve Multi-User - EXECUTE Btrieve OPERATION | ||
+ | AX = AB01h | ||
+ | BX = process ID | ||
+ | DS:DX -> 38-byte parameter record (see INT 7B" | ||
+ | Return: AL = 00h OK | ||
+ | = other retry after calling INT 7F/AX=0200h | ||
+ | SeeAlso: AX=AB00h, | ||
+ | ----------2FAB02----------------------------- | ||
+ | INT 2F - Btrieve Multi-User - GET NEW PROCESS ID | ||
+ | AX = AB02h | ||
+ | Return: AL = 00h succesful | ||
+ | BX = process ID | ||
+ | AL > 00h failed, retry after calling INT 7F/AX=0200h | ||
+ | SeeAlso: AX=AB00h, | ||
+ | ----------2FAC00----------------------------- | ||
+ | INT 2F - DOS 4.01+ GRAPHICS.COM - INSTALLATION CHECK | ||
+ | AX = AC00h | ||
+ | Return: AX = FFFFh | ||
+ | ES:DI -> ??? (graphics data?) (not documented) | ||
+ | Note: this installation check was moved here to avoid the conflict with the | ||
+ | CD-ROM extensions that occurred in DOS 4.00 | ||
+ | SeeAlso: AX=1500h" | ||
+ | ----------2FAD00----------------------------- | ||
+ | INT 2F U - DOS 3.3+ DISPLAY.SYS internal - INSTALLATION CHECK | ||
+ | AX = AD00h | ||
+ | Return: AL = FFh if installed | ||
+ | BX = ??? (0100h in MS-DOS 3.30, PCDOS 4.01) | ||
+ | Note: DOS 5.0 DISPLAY.SYS chains to previous handler if AL is not one of the | ||
+ | subfunctions listed here | ||
+ | ----------2FAD01----------------------------- | ||
+ | INT 2F U - DOS 3.3+ DISPLAY.SYS internal - SET ??? | ||
+ | AX = AD01h | ||
+ | BX = ??? | ||
+ | Return: ??? | ||
+ | CF set on error | ||
+ | ----------2FAD02----------------------------- | ||
+ | INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ??? | ||
+ | AX = AD02h | ||
+ | Return: BX = ??? (value set with AX=AD01h) | ||
+ | ----------2FAD03----------------------------- | ||
+ | INT 2F U - DOS 3.3+ DISPLAY.SYS internal - GET ??? | ||
+ | AX = AD03h | ||
+ | ES:DI -> user buffer | ||
+ | CX = size of buffer | ||
+ | Return: CF set if buffer too small | ||
+ | CF clear if successful | ||
+ | ----------2FAD04----------------------------- | ||
+ | INT 2F U - DOS 4.x only DISPLAY.SYS internal - ??? | ||
+ | AX = AD04h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FAD10----------------------------- | ||
+ | INT 2F U - DOS 4+ DISPLAY.SYS internal - INSTALLATION CHECK??? | ||
+ | AX = AD10h | ||
+ | ??? | ||
+ | Return: AX = FFFFh | ||
+ | BX = ??? (0100h in PCDOS 4.01) | ||
+ | ----------2FAD40----------------------------- | ||
+ | INT 2F - DOS 4.0 - ??? | ||
+ | AX = AD40h | ||
+ | DX = ??? | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------2FAD80----------------------------- | ||
+ | INT 2F - DOS 3.3+ KEYB.COM internal - INSTALLATION CHECK | ||
+ | AX = AD80h | ||
+ | Return: AL = FFh if installed | ||
+ | BX = version number (BH = major, BL = minor) | ||
+ | ES:DI -> internal data (see below) | ||
+ | Note: MSDOS 3.30, PCDOS 4.01, and MSDOS 5.00 all report version 1.00. | ||
+ | |||
+ | Format of KEYB internal data: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---DOS 3.3--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---DOS 4.01--- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of code page table list entries: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of translation data: | ||
+ | Offset Size Description | ||
+ | | ||
+ | 02h N-2 BYTEs ??? | ||
+ | ----------2FAD81----------------------------- | ||
+ | INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD CODE PAGE | ||
+ | AX = AD81h | ||
+ | BX = code page (see INT 21/ | ||
+ | Return: CF set on error | ||
+ | AX = 0001h (code page not available) | ||
+ | CF clear if successful | ||
+ | Notes: | ||
+ | documented for DOS 5+, but undocumented for earlier versions | ||
+ | SeeAlso: AX=AD82h | ||
+ | ----------2FAD82----------------------------- | ||
+ | INT 2F - DOS 3.3+ KEYB.COM - SET KEYBOARD MAPPING | ||
+ | AX = AD82h | ||
+ | BL = new state | ||
+ | 00h US keyboard (Control-Alt-F1) | ||
+ | FFh foreign keyboard (Control-Alt-F2) | ||
+ | Return: CF set on error (BL not 00h or FFh) | ||
+ | CF clear if successful | ||
+ | Note: | ||
+ | SeeAlso: AX=AD81h, | ||
+ | ----------2FAD83----------------------------- | ||
+ | INT 2F - DOS 5.0 KEYB.COM - GET KEYBOARD MAPPING | ||
+ | AX = AD83h | ||
+ | Return: BL = current state | ||
+ | 00h US keyboard | ||
+ | FFh foreign keyboard | ||
+ | SeeAlso: AX=AD82h | ||
+ | ----------2FAE00DXFFFF----------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - INSTALLATION CHECK | ||
+ | AX = AE00h | ||
+ | DX = FFFFh | ||
+ | CH = FFh | ||
+ | CL = length of command line tail (4DOS v4.0) | ||
+ | DS:BX -> command line buffer (see below) | ||
+ | DS:SI -> command name buffer (see below) | ||
+ | DI = 0000h (4DOS v4.0) | ||
+ | Return: AL = FFh if this command is a TSR extension to COMMAND.COM | ||
+ | AL = 00h if the command should be executed as usual | ||
+ | Notes: This call provides a mechanism for TSRs to install permanent | ||
+ | extensions to the command repertoire of COMMAND.COM. It appears | ||
+ | that COMMAND.COM makes this call before executing the current | ||
+ | command line, and does not execute it itself if the return is FFh. | ||
+ | APPEND hooks this call, to allow subsequent APPEND commands to | ||
+ | execute without re-running APPEND | ||
+ | |||
+ | Format of command line buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | N BYTEs command line text, terminated by 0Dh | ||
+ | |||
+ | Format of command name buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ----------2FAE01DXFFFF----------------------- | ||
+ | INT 2F U - DOS 3.3+ internal - INSTALLABLE COMMAND - EXECUTE | ||
+ | AX = AE01h | ||
+ | DX = FFFFh | ||
+ | CH = 00h | ||
+ | CL = length of command name (4DOS v4.0) | ||
+ | DS:SI -> command name buffer (see AX=AE00h) | ||
+ | DS:BX -> command line buffer (see AX=AE00h) | ||
+ | Return: DS:SI buffer updated | ||
+ | if length byte is nonzero, the following bytes contain the uppercase | ||
+ | internal command to execute and the command line buffer contains the | ||
+ | command' | ||
+ | Notes: this call requests execution of the command which a previous call to | ||
+ | AX=AE00h indicated was resident | ||
+ | APPEND hooks this call | ||
+ | ----------2FB000----------------------------- | ||
+ | INT 2F - DOS 3.3+ GRAFTABL.COM - INSTALLATION CHECK | ||
+ | AX = B000h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | = 01h not installed, not OK to install | ||
+ | = FFh installed | ||
+ | Notes: | ||
+ | documented for DOS 5.0, but undocumented in prior versions | ||
+ | SeeAlso: AX=B001h | ||
+ | ----------2FB001----------------------------- | ||
+ | INT 2F - DOS 3.3+ GRAFTABL.COM - GET GRAPHICS FONT TABLE | ||
+ | AX = B001h | ||
+ | DS:BX -> DWORD buffer for address of 8x8 font table | ||
+ | Return: buffer filled | ||
+ | AL = FFh | ||
+ | Note: PCDOS 3.30/4.01 set the font table offset to 0130h, MSDOS 3.30 to 0030h | ||
+ | SeeAlso: AX=B000h | ||
+ | ----------2FB400----------------------------- | ||
+ | INT 2F - IBM PC3270 EMULATION PROG v3 - INSTALLATION CHECK | ||
+ | AX = B400h | ||
+ | Return: AL = FFh if installed | ||
+ | ----------2FB401----------------------------- | ||
+ | INT 2F - IBM PC3270 EMULATION PROG v3 - GET HOST BUFFER ADDRESS | ||
+ | AX = B401h | ||
+ | Return: ES -> host screen buffer (PC ASCII format) | ||
+ | ES unchanged if communications not started | ||
+ | ----------2FB402----------------------------- | ||
+ | INT 2F - IBM PC3270 EMULATION PROG v3 - ??? | ||
+ | AX = B402h | ||
+ | BX = ??? | ||
+ | Return: ??? | ||
+ | ----------2FB403----------------------------- | ||
+ | INT 2F - IBM PC3270 EMULATION PROG v3 - ??? | ||
+ | AX = B403h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FB404----------------------------- | ||
+ | INT 2F - IBM PC3270 EMULATION PROG v3 - ??? | ||
+ | AX = B404h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FB405----------------------------- | ||
+ | INT 2F - IBM PC3270 EMULATION PROG v3 - ??? | ||
+ | AX = B405h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FB700----------------------------- | ||
+ | INT 2F - APPEND - INSTALLATION CHECK | ||
+ | AX = B700h | ||
+ | Return: AL = status | ||
+ | 00h not installed | ||
+ | FFh installed | ||
+ | Note: MSDOS 3.30 APPEND refuses to install itself when run inside TopView or | ||
+ | a TopView-compatible environment | ||
+ | ----------2FB701----------------------------- | ||
+ | INT 2F U - APPEND - ??? | ||
+ | AX = B701h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: MSDOS 3.30 APPEND displays " | ||
+ | ----------2FB702----------------------------- | ||
+ | INT 2F - APPEND - VERSION CHECK | ||
+ | AX = B702h | ||
+ | Return: AX = FFFFh if not DOS 4.0 APPEND (also if DOS 5.0 APPEND) | ||
+ | AL = major version number | ||
+ | AH = minor version number, otherwise | ||
+ | SeeAlso: AX=B710h | ||
+ | ----------2FB703----------------------------- | ||
+ | INT 2F U - DOS 3.3, DOS 5.0 APPEND - HOOK INT 21 | ||
+ | AX = B703h | ||
+ | ES:DI -> INT 21 handler APPEND should chain to | ||
+ | Return: ES:DI -> APPEND' | ||
+ | Note: each invocation of this function toggles a flag which APPEND uses to | ||
+ | determine whether to chain to the user handler or the original | ||
+ | INT 21 | ||
+ | ----------2FB704----------------------------- | ||
+ | INT 2F - DOS 3.3+ APPEND - GET APPEND PATH | ||
+ | AX = B704h | ||
+ | Return: ES:DI -> active APPEND path (128 bytes max) | ||
+ | ----------2FB706----------------------------- | ||
+ | INT 2F - DOS 4+ APPEND - GET APPEND FUNCTION STATE | ||
+ | AX = B706h | ||
+ | Return: BX = APPEND state | ||
+ | bit 0: set if APPEND enabled | ||
+ | bits 1-11 reserved | ||
+ | bit 12: (DOS 5.0) set if APPEND applies directory search even if a | ||
+ | drive has been specified | ||
+ | bit 13: set if /PATH flag active | ||
+ | bit 14: set if /E flag active (environment var APPEND exists) | ||
+ | bit 15: set if /X flag active | ||
+ | ----------2FB707----------------------------- | ||
+ | INT 2F - DOS 4+ APPEND - SET APPEND FUNCTION STATE | ||
+ | AX = B707h | ||
+ | BX = APPEND state bits (see AX=B706h) | ||
+ | ----------2FB710----------------------------- | ||
+ | INT 2F U - DOS 3.3+ APPEND - GET VERSION INFO | ||
+ | AX = B710h | ||
+ | Return: AX = current APPEND state (see AX=B706h) | ||
+ | BX = ??? (0000h in MSDOS 3.30 and 5.00) | ||
+ | CX = ??? (0000h in MSDOS 3.30 and 5.00) | ||
+ | DL = major version | ||
+ | DH = minor version | ||
+ | SeeAlso: AX=B702h | ||
+ | ----------2FB711----------------------------- | ||
+ | INT 2F - DOS 4+ APPEND - SET RETURN FOUND NAME STATE | ||
+ | AX = B711h | ||
+ | Note: if the next INT 21h call (and ONLY the next) is function 3Dh, 43h, or | ||
+ | 6Ch (also 4B03h and 4Eh if /X active), the fully qualified filename is | ||
+ | written over top of the filename passed to the INT 21h call. The | ||
+ | application must provide a sufficiently large buffer. | ||
+ | reset after the next INT 21h call processed by APPEND. | ||
+ | BUG: DOS 4.0 APPEND reportedly overwrites DS:DX instead of DS:SI for | ||
+ | INT 21/AH=6Ch | ||
+ | SeeAlso: INT 21/AH=4Eh | ||
+ | ----------2FB800----------------------------- | ||
+ | INT 2F - network - INSTALLATION CHECK | ||
+ | AX = B800h | ||
+ | Return: AL = status | ||
+ | 00h not installed | ||
+ | nonzero installed | ||
+ | BX = installed component flags (test in this order!) | ||
+ | bit 6 | ||
+ | bit 2 | ||
+ | bit 7 | ||
+ | bit 3 | ||
+ | ----------2FB803----------------------------- | ||
+ | INT 2F - network - GET NETWORK EVENT POST HANDLER | ||
+ | AX = B803h | ||
+ | Return: ES:BX -> event post handler (see AX=B804h) | ||
+ | SeeAlso: AX=B804h, | ||
+ | ----------2FB804----------------------------- | ||
+ | INT 2F - network - SET NETWORK EVENT POST HANDLER | ||
+ | AX = B804h | ||
+ | ES:BX -> new event post handler | ||
+ | Notes: used in conjunction with AX=B803h to hook into the network event post | ||
+ | routine | ||
+ | The specified handler is called on any network event. | ||
+ | defined: message received and critical network error. | ||
+ | SeeAlso: AX=B803h, | ||
+ | |||
+ | Values post routine is called with: | ||
+ | AX = 0000h single block message | ||
+ | DS:SI -> ASCIZ originator name | ||
+ | DS:DI -> ASCIZ destination name | ||
+ | ES:BX -> text header (see below) | ||
+ | AX = 0001h start multiple message block | ||
+ | CX = block group ID | ||
+ | DS:SI -> ASCIZ originator name | ||
+ | DS:DI -> ASCIZ destination name | ||
+ | AX = 0002h multiple block text | ||
+ | CX = block group ID | ||
+ | ES:BX -> text header (see below) | ||
+ | AX = 0003h end multiple block message | ||
+ | CX = block group ID | ||
+ | AX = 0004h message aborted due to error | ||
+ | CX = block group ID | ||
+ | AX = 0101h server received badly formatted network request | ||
+ | Return: AX = FFFFh (PC LAN will process error) | ||
+ | AX = 0102h unexpected network error | ||
+ | ES:BX -> NCB (see INT 5C) | ||
+ | AX = 0103h server received INT 24 error | ||
+ | other registers as for INT 24, except AH is in BH | ||
+ | Return: as below, but only 0000h and FFFFh allowed | ||
+ | Return: AX = response code | ||
+ | 0000h user post routine processed message | ||
+ | 0001h PC LAN will process message, but message window not displayed | ||
+ | FFFFh PC LAN will process message | ||
+ | |||
+ | Format of text header: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | Note: all CRLF sequences in message text are replaced by 14h | ||
+ | ----------2FB807----------------------------- | ||
+ | INT 2F - Network - GET NetBIOS NAME NUMBER OF MACHINE NAME | ||
+ | AX = B807h | ||
+ | Return: CH = NetBIOS name number of the machine name | ||
+ | SeeAlso: INT 21/AX=5E00h | ||
+ | ----------2FB808----------------------------- | ||
+ | INT 2F U - Network - RELINK KEYBOARD HANDLER | ||
+ | AX = B908h | ||
+ | ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09 | ||
+ | Notes: this call replaces the address to which RECEIVER.COM chains on an | ||
+ | INT 09 without preserving the original value. This allows a prior | ||
+ | handler to unlink, but does not allow a new handler to be added | ||
+ | such that RECEIVER gets the INT 09 first unless it completely takes | ||
+ | over INT 09 and never chains. | ||
+ | called by DOS 3.2 KEYBxx.COM | ||
+ | SeeAlso: AX=B908h | ||
+ | ----------2FB809----------------------------- | ||
+ | INT 2F - LANtastic Network, NetWare Lite - VERSION CHECK | ||
+ | AX = B809h | ||
+ | Return: AH = major version | ||
+ | AL = minor version (decimal) | ||
+ | ----------2FB900----------------------------- | ||
+ | INT 2F - PC Network RECEIVER.COM - INSTALLATION CHECK | ||
+ | AX = B900h | ||
+ | Return: AL = 00h if not installed | ||
+ | FFh if installed | ||
+ | ----------2FB901----------------------------- | ||
+ | INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM INT 2F HANDLER ADDRESS | ||
+ | AX = B901h | ||
+ | Return: AL = ??? | ||
+ | ES:BX -> RECEIVER.COM INT 2F handler | ||
+ | Note: | ||
+ | INT 2F handlers which have been added since RECEIVER.COM was | ||
+ | installed | ||
+ | ----------2FB903----------------------------- | ||
+ | INT 2F - PC Network RECEIVER.COM - GET RECEIVER.COM POST ADDRESS | ||
+ | AX = B903h | ||
+ | Return: ES:BX -> POST handler | ||
+ | SeeAlso: AX=B803h, | ||
+ | ----------2FB904----------------------------- | ||
+ | INT 2F - PC Network RECEIVER.COM - SET RECEIVER.COM POST ADDRESS | ||
+ | AX = B904h | ||
+ | ES:BX -> new POST handler | ||
+ | SeeAlso: AX=B804h, | ||
+ | ----------2FB905----------------------------- | ||
+ | INT 2F - PC Network RECEIVER.COM - GET FILENAME | ||
+ | AX = B905h | ||
+ | DS:BX -> 128-byte buffer for filename 1 | ||
+ | DS:DX -> 128-byte buffer for filename 2 | ||
+ | Return: buffers filled from RECEIVER.COM internal buffers | ||
+ | Note: use of filenames is unknown, but one appears to be for storing messages | ||
+ | SeeAlso: AX=B906h | ||
+ | ----------2FB906----------------------------- | ||
+ | INT 2F - PC Network RECEIVER.COM - SET FILENAME | ||
+ | AX = B906h | ||
+ | DS:BX -> 128-byte buffer for filename 1 | ||
+ | DS:DX -> 128-byte buffer for filename 2 | ||
+ | Return: RECEIVER.COM internal buffers filled from user buffers | ||
+ | Note: use of filenames is unknown, but one appears to be for storing messages | ||
+ | SeeAlso: AX=B905h | ||
+ | ----------2FB908----------------------------- | ||
+ | INT 2F - PC Network RECEIVER.COM - UNLINK KEYBOARD HANDLER | ||
+ | AX = B908h | ||
+ | ES:BX -> INT 09 handler RECEIVER should call after it finishes INT 09 | ||
+ | Note: this call replaces the address to which RECEIVER.COM chains on an | ||
+ | INT 09 without preserving the original value. This allows a prior | ||
+ | handler to unlink, but does not allow a new handler to be added | ||
+ | such that RECEIVER gets the INT 09 first. | ||
+ | SeeAlso: AX=B808h | ||
+ | ----------2FBC00----------------------------- | ||
+ | INT 2F - Windows 3.0, DOS 5.0 EGA.SYS - INSTALLATION CHECK | ||
+ | AX = BC00h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | = 01h not installed, not OK to install | ||
+ | = FFh installed | ||
+ | BX = 5456h (" | ||
+ | Note: | ||
+ | parameter to any value between 80h and FFh | ||
+ | SeeAlso: AX=BC06h, | ||
+ | ----------2FBC06----------------------------- | ||
+ | INT 2F U - MS Windows 3.0, DOS 5.0 EGA.SYS - GET VERSION INFO | ||
+ | AX = BC06h | ||
+ | Return: BX = 5456h (" | ||
+ | CH = major version | ||
+ | CL = minor version | ||
+ | DL = revision | ||
+ | SeeAlso: AX=BC00h, | ||
+ | ----------2FBE00----------------------------- | ||
+ | INT 2F - REDVIEW - INSTALLATION CHECK | ||
+ | AX = BE00h | ||
+ | Return: AL = FFh if installed | ||
+ | Note: | ||
+ | copies data sent to standard output to standard error when the | ||
+ | former has been redirected to a file, thus allowing the data to | ||
+ | be seen on the screen at the same time it is captured in a file | ||
+ | ----------2FBF00----------------------------- | ||
+ | INT 2F - PC LAN PROGRAM REDIRIFS.EXE internal - INSTALLATION CHECK | ||
+ | AX = BF00h | ||
+ | Return: AL = FFh if installed | ||
+ | ----------2FBF01----------------------------- | ||
+ | INT 2F U - PC LAN PROGRAM REDIRIFS.EXE internal - ??? | ||
+ | AX = BF01h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FBF80----------------------------- | ||
+ | INT 2F - PC LAN PROG REDIR.SYS internal - SET REDIRIFS ENTRY POINT | ||
+ | AX = BF80h | ||
+ | ES:DI -> FAR entry point to IFS handler in REDIRIFS | ||
+ | Return: AL = FFh if installed | ||
+ | ES:DI -> internal workspace | ||
+ | Note: all future IFS calls to REDIR.SYS are passed to the ES:DI entry point | ||
+ | ----------2FC000----------------------------- | ||
+ | INT 2F - Novell ODI Link Support Layer (LSL.COM) - INSTALLATION CHECK | ||
+ | AX = C000h | ||
+ | Return: AL = FFh | ||
+ | ES:BX -> call entry point | ||
+ | ES:SI -> signature string " | ||
+ | Note: | ||
+ | for itself in that range, and installs using the first free multiplex | ||
+ | number in the range if not already loaded. | ||
+ | ----------2FC050----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - INSTALLATION CHECK | ||
+ | AX = C050h | ||
+ | Return: AL = 51h if installed | ||
+ | Notes: | ||
+ | by Reidar Gresseth and Chris Hook | ||
+ | AH=C0h is the default multiplex number, but may be reconfigured to | ||
+ | any value from C0h to C9h | ||
+ | SeeAlso: AX=C051h | ||
+ | ----------2FC052----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - UNINSTALL | ||
+ | AX = C052h | ||
+ | DX:BX = address to return to on successful uninstall | ||
+ | Return: at specified address if successful | ||
+ | AL = 53h on error | ||
+ | Note: | ||
+ | SeeAlso: AX=C050h | ||
+ | ----------2FC054----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - GET ??? | ||
+ | AX = C054h | ||
+ | Return: AL = ??? | ||
+ | Note: | ||
+ | SeeAlso: AX=C057h | ||
+ | ----------2FC055----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - SET BLANKING INTERVAL | ||
+ | AX = C055h | ||
+ | BX = new interval in clock ticks | ||
+ | ----------2FC056----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - SET ??? | ||
+ | AX = C056h | ||
+ | BL = ??? | ||
+ | ----------2FC057----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - SET ??? | ||
+ | AX = C057h | ||
+ | BL = ??? | ||
+ | SeeAlso: AX=C054h | ||
+ | ----------2FC058----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - SET ??? | ||
+ | AX = C058h | ||
+ | BL = ??? | ||
+ | ----------2FC059----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - CLEAR ??? | ||
+ | AX = C059h | ||
+ | Note: | ||
+ | SeeAlso: AX=C05Ah | ||
+ | ----------2FC05A----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - SET ??? | ||
+ | AX = C05Ah | ||
+ | BL = ??? | ||
+ | Note: sets flag cleared by AX=C059h then stores BL | ||
+ | SeeAlso: AX=C059h | ||
+ | ----------2FC05B----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - SET ??? | ||
+ | AX = C05Bh | ||
+ | BL = ??? | ||
+ | ----------2FC05C----------------------------- | ||
+ | INT 2F U - Explosiv 2.00 - SET ??? | ||
+ | AX = C05Ch | ||
+ | BL = ??? | ||
+ | ----------2FC900BP0000----------------------- | ||
+ | INT 2F U - ThunderByte??? | ||
+ | AX = C900h | ||
+ | BP = 0000h | ||
+ | Return: AL = FFh if installed | ||
+ | BP >= 0014h | ||
+ | Note: | ||
+ | SeeAlso: AX=C987h, | ||
+ | ----------2FC987----------------------------- | ||
+ | INT 2F U - ThunderByte??? | ||
+ | AX = C987h | ||
+ | BX:DX -> filename | ||
+ | BX:CX -> virus name | ||
+ | Return: AX = status | ||
+ | 0000h successful??? | ||
+ | Note: | ||
+ | SeeAlso: AX=CA00h | ||
+ | ----------2FC9FF----------------------------- | ||
+ | INT 2F - STACKMAN - INSTALLATION BROADCAST | ||
+ | AX = C9FFh | ||
+ | BL = BCD version number | ||
+ | CX = number of stacks | ||
+ | DX = stack size in bytes | ||
+ | Notes: | ||
+ | its API is available | ||
+ | the installation check consists of testing for the string " | ||
+ | offset 0Ah from the INT B4 handler | ||
+ | SeeAlso: INT B4" | ||
+ | ----------2FCA00BX5442----------------------- | ||
+ | INT 2F - TBSCANX - INSTALLATION CHECK | ||
+ | AX = CA00h | ||
+ | BX = 5442h (' | ||
+ | Return: AL = 00h not installed | ||
+ | = FFh installed | ||
+ | BX = 7462h (' | ||
+ | Note: | ||
+ | may perform virus checks on themselves, other program files, or their | ||
+ | data files by invoking the TBSCANX API. | ||
+ | SeeAlso: AX=4653h, | ||
+ | ----------2FCA01----------------------------- | ||
+ | INT 2F - TBSCANX - GET STATUS | ||
+ | AX = CA01h | ||
+ | Return: AH = BCD version number (v2.2+) | ||
+ | = CAh for versions before 2.2 | ||
+ | AL = state (00h = disabled, 01h = enabled) | ||
+ | CX = number of signatures which will be searched | ||
+ | ---v2.0--- | ||
+ | BX = EMS handle, 0000h if not using EMS | ||
+ | ---v2.3+--- | ||
+ | BX = segment of swap area, 0000h if not swapped | ||
+ | DX = EMS or XMS handle (XMS handle if BX=0000h), FFFFh if not using EMS | ||
+ | SeeAlso: AX=CA02h | ||
+ | ----------2FCA02----------------------------- | ||
+ | INT 2F - TBSCANX - SET STATE | ||
+ | AX = CA02h | ||
+ | BL = new state (00h = disabled, 01h = enabled) | ||
+ | SeeAlso: AX=CA01h | ||
+ | ----------2FCA03----------------------------- | ||
+ | INT 2F - TBSCANX - SCAN BUFFER | ||
+ | AX = CA03h | ||
+ | CX = size of buffer | ||
+ | DS:DX -> buffer containing data to scan | ||
+ | Return: CF clear if no virus signatures found | ||
+ | BX,ES destroyed | ||
+ | CF set if signature found | ||
+ | ES:BX -> ASCIZ virus name (v2.3+) | ||
+ | DS:DX -> ASCIZ virus name (v2.0) | ||
+ | AX,CX,DX destroyed (v2.3+) | ||
+ | all other registers except CS:IP and SS:SP destroyed (v2.0) | ||
+ | SeeAlso: AX=CA04h | ||
+ | ----------2FCA04----------------------------- | ||
+ | INT 2F - TBSCANX - SCAN FILE | ||
+ | AX = CA04h | ||
+ | DS:DX -> filename | ||
+ | Return: CF clear if no virus signatures found | ||
+ | BX,ES destroyed | ||
+ | CF set if signature found | ||
+ | ES:BX -> ASCIZ virus name | ||
+ | AX,CX,DX destroyed | ||
+ | Note: this function requires at least 4K free memory | ||
+ | SeeAlso: AX=CA03h | ||
+ | ----------2FCAFEBX0000----------------------- | ||
+ | INT 2F U - THELP v3.0 - INSTALLATION CHECK | ||
+ | AX = CAFEh | ||
+ | BX = 0000h | ||
+ | Return: BX = segment of resident code if installed | ||
+ | = 0000h if not installed | ||
+ | SeeAlso: AX=5453h | ||
+ | ----------2FCB00----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - INSTALLATION CHECK | ||
+ | AX = CB00h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | 01h not installed, not OK to install | ||
+ | FFh installed | ||
+ | Note: AH = CBh is the default identifier, but may be reconfigured | ||
+ | SeeAlso: AH=2Ah, | ||
+ | ----------2FCB01----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - SUBMIT A TASK | ||
+ | AX = CB01h | ||
+ | DS:DX -> ASCIZ name of task control file | ||
+ | Return: AX >= 0: event handle | ||
+ | < 0: error code | ||
+ | Note: files needed for an event must be kept until task is complete or error | ||
+ | SeeAlso: AX=CB0Bh, | ||
+ | |||
+ | Error codes (AH = class, AL = subcode, value passed back is 2's complement): | ||
+ | Class 00h --- FAX warnings | ||
+ | Subcode 00h no error | ||
+ | 02h bad scanline count | ||
+ | 03h page sent with errors, could not retransmit | ||
+ | 04h received data lost | ||
+ | 05h invalid or missing logo file | ||
+ | 06h filename does not match nonstandard format (NSF) header | ||
+ | 07h file size does not match NSF header | ||
+ | Class 01h --- DOS warnings (data was sent) | ||
+ | Subcode 01h invalid function | ||
+ | 05h access denied | ||
+ | 06h invalid handle | ||
+ | others see INT 21/AH=59h | ||
+ | Class 02h --- fatal errors (data not sent) | ||
+ | Subcode 00h multiplex handler failed | ||
+ | 01h unknown command | ||
+ | 02h bad event handle | ||
+ | 03h FIND NEXT attempted before FIND FIRST | ||
+ | 04h no more events | ||
+ | 07h invalid queue type | ||
+ | 08h bad control file | ||
+ | 09h communication board busy | ||
+ | 0Ah invalid command parameter | ||
+ | 0Bh can' | ||
+ | 0Ch file exists | ||
+ | 80h unknown task type | ||
+ | 81h bad phone number | ||
+ | 82h bad .PCX file header | ||
+ | 83h unexpected EOF | ||
+ | 84h unexpected disconnect | ||
+ | 85h too many dialing retries | ||
+ | 86h no file specified for send | ||
+ | 87h communication board timeout | ||
+ | 88h received too many pages (>1023) of data | ||
+ | 89h manual connect initiated too long ago | ||
+ | 8Ah hardware command set error | ||
+ | 8Bh bad NonStandard Format (NSF) header file | ||
+ | Class 03h --- fatal DOS errors | ||
+ | Subcode 02h file not found | ||
+ | 03h path not found | ||
+ | others see INT 21/AH=59h | ||
+ | Class 04h --- FAX errors | ||
+ | Subcode 01h remote unit not Group 3 compatible | ||
+ | 02h remote unit did not send capabilities | ||
+ | 03h other FAX machine incompatible | ||
+ | 04h other FAX incapable of file transfers | ||
+ | 05h exceeded retrain or FAX resend limit | ||
+ | 06h line noise or failure to agree on bit rate | ||
+ | 07h remote disconnected after receiving data | ||
+ | 08h no response from remote after sending data | ||
+ | 09h remote' | ||
+ | 0Ah no dial tone (v1.2+) | ||
+ | 0Bh invalid response from remote unit after sending data | ||
+ | 0Dh phone line dead or remote unit disconnected | ||
+ | 0Eh timeout while waiting for secondary dial tone (v1.2+) | ||
+ | 11h invalid command from remote after receiving data | ||
+ | 15h tried to receive from incompatible hardware | ||
+ | 5Ch received data overflowed input buffer | ||
+ | 5Dh remote unexpectedly stopped sending data | ||
+ | 5Eh other FAX machine jammed (no data sent) | ||
+ | 5Fh remote took too long to send fax scan line | ||
+ | 63h can' | ||
+ | 64h user canceled event | ||
+ | Class 05h --- application-specific (v1.2+) | ||
+ | ---Intel FAXPOP.EXE | ||
+ | Subcode 00h tried to send while in graphics mode | ||
+ | 01h insufficient disk space | ||
+ | 02h internal buffer overflow | ||
+ | Class 06h --- CAS implementation-specific (v1.2+) | ||
+ | ----------2FCB02----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - ABORT CURRENT EVENT | ||
+ | AX = CB02h | ||
+ | Return: AX >= 0: event handle of aborted event | ||
+ | < 0: error code (see AX=CB01h) | ||
+ | Note: | ||
+ | SeeAlso: AX=CB08h, | ||
+ | ----------2FCB05----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - FIND FIRST QUEUE ENTRY | ||
+ | AX = CB05h | ||
+ | CX = status of events to find | ||
+ | 0000h successful completion | ||
+ | 0001h waiting to be processed | ||
+ | 0002h number has been dialed | ||
+ | 0003h connection established, | ||
+ | 0004h connection established, | ||
+ | 0005h event aborted | ||
+ | FFFFh find any event, regardless of status | ||
+ | other negative values, match error code | ||
+ | DH = direction | ||
+ | 00h chronological order, earliest to latest | ||
+ | 01h reverse chronological order, latest to earliest | ||
+ | DL = queue to search | ||
+ | 00h task queue | ||
+ | 01h receive queue | ||
+ | 02h log queue | ||
+ | Return: AX = 0000h successful | ||
+ | BX = event handle for found event | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | SeeAlso: AX=CB06h, | ||
+ | ----------2FCB06----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - FIND NEXT QUEUE ENTRY | ||
+ | AX = CB06h | ||
+ | DL = queue to search | ||
+ | 00h task queue | ||
+ | 01h receive queue | ||
+ | 02h log queue | ||
+ | Return: AX = 0000h successful | ||
+ | BX = event handle for found event | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | Note: | ||
+ | SeeAlso: AX=CB05h | ||
+ | ----------2FCB07----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - OPEN FILE | ||
+ | AX = CB07h | ||
+ | BX = event handle from find (AL=05h, | ||
+ | CX = receive file number (ignored for task queue and log queue) | ||
+ | 0000h open receive control file | ||
+ | N open Nth received data file | ||
+ | DL = queue | ||
+ | 00h task queue | ||
+ | 01h receive queue control file or received file, as given by CX | ||
+ | 02h log queue | ||
+ | 03h group file in task queue (v1.2+) | ||
+ | 04h group file in log queue (v1.2+) | ||
+ | Return: AX = 0000h successful | ||
+ | BX = DOS file handle for requested file | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | Note: the returned file handle has been opened in read-only mode and should | ||
+ | be closed with INT 21/AH=3Eh after use | ||
+ | SeeAlso: AX=CB01h, | ||
+ | ----------2FCB08----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - DELETE FILE | ||
+ | AX = CB08h | ||
+ | BX = event handle | ||
+ | CX = receive file number | ||
+ | 0000h delete ALL received files and receive control file | ||
+ | N delete Nth received file | ||
+ | DL = queue | ||
+ | 00h delete control file in task queue and corresponding group file | ||
+ | if it exists | ||
+ | 01h delete file in receive queue, as given by CX | ||
+ | 02h delete control file in log queue (individual deletions not | ||
+ | recommended, | ||
+ | group file if it exists | ||
+ | Return: AX = 0000h successful | ||
+ | < 0 error code (see AX=CB01h)\ | ||
+ | SeeAlso: AX=CB02h, | ||
+ | ----------2FCB09----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - DELETE ALL FILES IN Q | ||
+ | AX = CB09h | ||
+ | DL = queue | ||
+ | 00h delete all control files in task queue, including all group | ||
+ | files | ||
+ | 01h delete all files in receive queue | ||
+ | 02h delete all control files in log queue, including all group | ||
+ | files | ||
+ | Return: AX = 0000h successful | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | SeeAlso: AX=CB08h | ||
+ | ----------2FCB0A----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - GET EVENT DATE | ||
+ | AX = CB0Ah | ||
+ | BX = event handle | ||
+ | DL = queue | ||
+ | 00h task queue | ||
+ | 01h receive queue | ||
+ | 02h log queue | ||
+ | Return: AX = 0000h successful | ||
+ | CX = year | ||
+ | DH = month | ||
+ | DL = day | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | SeeAlso: AX=CB0Bh, | ||
+ | ----------2FCB0B----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - SET TASK DATE | ||
+ | AX = CB0Bh | ||
+ | BX = event handle (task event only) | ||
+ | CX = year | ||
+ | DH = month | ||
+ | DL = day | ||
+ | Return: AX = 0000h successful | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | Note: | ||
+ | causes it to execute immediately | ||
+ | SeeAlso: AX=CB01h, | ||
+ | ----------2FCB0C----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - GET EVENT TIME | ||
+ | AX = CB0Ch | ||
+ | BX = event handle | ||
+ | DL = queue | ||
+ | 00h task queue | ||
+ | 01h receive queue | ||
+ | 02h log queue | ||
+ | Return: AX = 0000h successful | ||
+ | CH = hour | ||
+ | CL = minute | ||
+ | DH = second | ||
+ | DL = 00h | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | SeeAlso: AX=CB0Ah, | ||
+ | ----------2FCB0D----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - SET TASK TIME | ||
+ | AX = CB0Dh | ||
+ | BX = event handle (task events only) | ||
+ | CH = hour | ||
+ | CL = minute | ||
+ | DH = second | ||
+ | DL unused | ||
+ | Return: AX = 0000h successful | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | Note: | ||
+ | causes it to execute immediately | ||
+ | SeeAlso: AX=CB0Bh, | ||
+ | ----------2FCB0E----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - GET EXTERNAL DATA BLOCK | ||
+ | AX = CB0Eh | ||
+ | DS:DX -> 256-byte buffer | ||
+ | Return: AX = 0000h successful | ||
+ | buffer filled | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | |||
+ | Format of external data block: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | 02h 68 BYTEs ASCIZ path to directory containing CAS software, ends in slash | ||
+ | 46h 13 BYTEs ASCIZ name of current phonebook (in CAS directory) | ||
+ | 53h 13 BYTEs ASCIZ name of current logo file (in CAS directory) | ||
+ | 60h 32 BYTEs ASCIZ default sender name | ||
+ | 80h 21 BYTEs ASCIZ CCITT identification of fax device | ||
+ | 95h 107 BYTEs reserved | ||
+ | ----------2FCB0F----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - GET/SET AUTORECEIVE | ||
+ | AX = CB0Fh | ||
+ | DL = subfunction | ||
+ | 00h get current autoreceive state | ||
+ | 01h set autoreceive state | ||
+ | DH = number of rings before answer, 00h = never | ||
+ | Return: AX = 0000h autoreceive disabled | ||
+ | = N | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | ----------2FCB10----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - GET CURRENT EVENT STATUS | ||
+ | AX = CB10h | ||
+ | DS:DX -> 512-byte buffer | ||
+ | Return: AX = 0000h successful | ||
+ | BX = event handle of current event or negative error code if | ||
+ | no current event | ||
+ | buffer filled | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | SeeAlso: AX=CB02h, | ||
+ | |||
+ | Format of status area: | ||
+ | Offset Size Description | ||
+ | | ||
+ | 00h send | ||
+ | 01h receive | ||
+ | 02h polled send | ||
+ | 03h polled receive | ||
+ | 04h to 7Fh reserved | ||
+ | FFh serious hardware error | ||
+ | | ||
+ | 00h 200x200 dpi, FAX mode | ||
+ | 01h 100x200 dpi, FAX mode | ||
+ | 02h file transfer mode | ||
+ | 03h to 7Fh reserved | ||
+ | | ||
+ | 0000h completed successfully | ||
+ | 0001h waiting | ||
+ | 0002h number dialed | ||
+ | 0003h connected, sending | ||
+ | 0004h connected, receiving | ||
+ | 0005h aborted | ||
+ | 0006h to 007Fh reserved | ||
+ | 0080h to 7FFFh application-specific events | ||
+ | 8000h to FFFFh error codes | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 0Ch 47 BYTEs ASCIZ phone number to call | ||
+ | 3Bh 64 BYTEs ASCIZ application-specific tag string | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 00h don't transmit cover page | ||
+ | 01h transmit cover page | ||
+ | 02h to 7Fh reserved | ||
+ | | ||
+ | 8Ch 78 BYTEs reserved (zeros) | ||
+ | DAh 21 BYTEs ASCIZ remote FAX's CCITT identification | ||
+ | EFH 32 BYTEs ASCIZ destination name | ||
+ | 10Fh 32 BYTEs ASCIZ sender name | ||
+ | 12Fh 80 BYTEs filename of PCX logo file (max 1780x800 pixels) | ||
+ | 17Fh 128 BYTEs file transfer record for current event (see below) | ||
+ | |||
+ | Format of file transfer record: | ||
+ | Offset Size Description | ||
+ | | ||
+ | 00h ASCII | ||
+ | 01h PCX | ||
+ | 02h DCX | ||
+ | 03h to 7Fh reserved | ||
+ | | ||
+ | 00h = 80 columns by 66 lines (11 inches) | ||
+ | 01h = 132 columns by 88 lines (11 inches) | ||
+ | 02h to 7Fh reserved | ||
+ | | ||
+ | 00h untouched | ||
+ | 01h opened | ||
+ | 02h moved | ||
+ | 03h deleted | ||
+ | 04h not yet received | ||
+ | 05h to 7Fh reserved | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 0Fh 80 BYTEs ASCIZ filename | ||
+ | | ||
+ | if page length below set to 01h through 7Fh, this value | ||
+ | specifies additional 1/8 inch increments to page length | ||
+ | | ||
+ | 00h = 11 inches | ||
+ | 01h to 7Fh = page length is this number of inches plus value of | ||
+ | 1/8 inch field above | ||
+ | 80h to FEh reserved | ||
+ | FFh = ASCII pages ending with formfeed | ||
+ | 61h 31 BYTEs reserved (zeros) | ||
+ | ----------2FCB11----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - GET QUEUE STATUS | ||
+ | AX = CB11h | ||
+ | DL = queue to get status of | ||
+ | 00h task queue | ||
+ | 01h receive queue | ||
+ | 02h log queue | ||
+ | 03h send events (v1.2+) | ||
+ | 04h receive events (v1.2+) | ||
+ | Return: AX >= 0 total number of changes made to queue, modulo 32768 | ||
+ | BX = number of control files currently in queue | ||
+ | CX = number of received files (zero for task and log queues) | ||
+ | AX < 0 error code (see AX=CB01h) | ||
+ | SeeAlso: AX=CB12h | ||
+ | ----------2FCB11DL03------------------------- | ||
+ | INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF SEND EVENTS | ||
+ | AX = CB11h | ||
+ | DL = 03h | ||
+ | Return: AX = number of successful sends since resident manager started | ||
+ | BX = number of unsuccessful sends, including warnings | ||
+ | SeeAlso: AX=CB11h/ | ||
+ | ----------2FCB11DL04------------------------- | ||
+ | INT 2F - Communicating Applications Spec v1.2+ - GET NUMBER OF RECEIVE EVENTS | ||
+ | AX = CB11h | ||
+ | DL = 04h | ||
+ | Return: AX = number of received file events since resident manager started | ||
+ | BX = number of received FAX events | ||
+ | SeeAlso: AX=CB11h/ | ||
+ | ----------2FCB12----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - GET HARDWARE STATUS | ||
+ | AX = CB12h | ||
+ | DS:DX -> 128-byte status buffer | ||
+ | Return: AX = 0000h successful | ||
+ | buffer filled with hardware-dependent status information | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | SeeAlso: AX=CB10h, | ||
+ | |||
+ | Format of status buffer for Intel Connection CoProcessor: | ||
+ | Offset Size Description | ||
+ | | ||
+ | bit 7: hardware busy sending or receiving | ||
+ | bit 6: last page of data | ||
+ | bit 5: no data on current page | ||
+ | bit 4: retransmit request for current page being transmitted | ||
+ | bit 3: NSF mode active | ||
+ | bits 2-0: reserved | ||
+ | | ||
+ | | ||
+ | bit 7: Connection CoProcessor has documents to send | ||
+ | bits 6-0: number of pages in buffer | ||
+ | | ||
+ | | ||
+ | | ||
+ | bit 7: originating call | ||
+ | bit 6: FAX message to be sent | ||
+ | bit 5: on line | ||
+ | bit 4: ring detected and receive enabled | ||
+ | bit 3: buffer dumped on receive | ||
+ | bits 2-0: hardware sequence state | ||
+ | 000 idle | ||
+ | 001 dial | ||
+ | 010 answer | ||
+ | 011 transmit | ||
+ | 100 receive | ||
+ | 101 pre-message | ||
+ | 110 post-message | ||
+ | 111 disconnect | ||
+ | | ||
+ | bit 7: reserved | ||
+ | bits 6-4: baud rate | ||
+ | 000 = 300 baud (V.21 SDLC or HDLC mode) | ||
+ | 100 = 2400 baud (V.27 ter) | ||
+ | 101 = 4800 baud (V.27 ter) | ||
+ | 110 = 7200 baud (V.29) | ||
+ | 111 = 9600 baud (V.29) | ||
+ | bits 3-0: reserved, should be 0110 | ||
+ | | ||
+ | | ||
+ | bit 7: modem option installed | ||
+ | bit 6: Connection CoProcessor has control of DAA (not latched) | ||
+ | bit 5: on line (not latched) | ||
+ | bit 4: ring detected (not latched) | ||
+ | bit 3: data in command buffer (not latched) | ||
+ | bit 2: set if using DMA channel 1, clear if using DMA channel 3 | ||
+ | bit 1: line length compensation bit 1 set (not latched) | ||
+ | bit 0: line length compensation bit 0 set (not latched) | ||
+ | | ||
+ | bit 7: reserved | ||
+ | bit 6: unused | ||
+ | bit 5: spare switch open | ||
+ | bit 4: FAX ADR1 switch open | ||
+ | bit 3: FAX ADR0 switch open | ||
+ | bit 2: alternate interrupt switch open | ||
+ | bit 1: COM SEL 1 switch open | ||
+ | bit 0: COM SEL 0 switch open | ||
+ | Note: valid combinations of bits 0-2 are | ||
+ | 000 | ||
+ | 001 | ||
+ | 010 | ||
+ | 011 | ||
+ | 110 | ||
+ | 111 | ||
+ | | ||
+ | bit 7: reserved | ||
+ | bit 6: auxiliary relay forced ON | ||
+ | bit 5: modem select relay forced ON | ||
+ | bit 4: offhook relay forced ON | ||
+ | bit 3: 9600 bps enabled | ||
+ | bit 2: 7200 bps enabled | ||
+ | bit 1: 4800 bps enabled | ||
+ | bit 0: 2400 bps enabled | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 1Eh 21 BYTEs ASCIZ CCITT identification | ||
+ | 33h 77 BYTEs reserved | ||
+ | |||
+ | Format of status buffer for Intel SatisFAXtion board: | ||
+ | Offset Size Description | ||
+ | | ||
+ | bit 7: busy in T.30 CCITT fax protocol | ||
+ | bit 6: data on current page/file (only used for block xfers) | ||
+ | bit 5: retransmission of last page requested | ||
+ | bit 4: in file transfer mode | ||
+ | bit 3: data in buffer | ||
+ | bit 2: data buffer dumped on receive | ||
+ | bit 1: 200x100 dpi resolution instead of 200x200 dpi | ||
+ | bit 0: data modem in use, FAX image modem not available | ||
+ | | ||
+ | bit 7: reserved | ||
+ | bit 6: handset jack active, data and FAX modems not available | ||
+ | bits 5-3: current bit rate | ||
+ | 000 300 bps (V.21 HDLC) | ||
+ | 100 2400 bps (V.27 ter) | ||
+ | 101 4800 bps (V.27 ter) | ||
+ | 110 7200 bps (V.29) | ||
+ | 111 9600 bps (V.29) | ||
+ | bits 2-0: T.30 CCITT protocol state | ||
+ | 000 idle | ||
+ | 001 dialing | ||
+ | 010 answering | ||
+ | 011 transmitting | ||
+ | 100 receiving | ||
+ | 101 pre-message | ||
+ | 110 post-message | ||
+ | 111 disconnect | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 15h 13 BYTEs ASCIZ transfer agent name | ||
+ | | ||
+ | 27h 13 BYTEs ASCIZ resident loader name | ||
+ | | ||
+ | 39h 21 BYTEs ASCIZ remote CSID | ||
+ | 4Eh 13 BYTEs ASCIZ resident manager name | ||
+ | | ||
+ | 60h 32 BYTEs reserved | ||
+ | Note: the Intel Connection CoProcessor and SatisFAXtion may be distinguished | ||
+ | by examining the byte at offset 14h | ||
+ | ----------2FCB13DL00------------------------- | ||
+ | INT 2F - Communicating Applications Specification - GET DIAGNOSTICS RESULTS | ||
+ | AX = CB13h | ||
+ | DL = 00h | ||
+ | Return: AX = 0040h in progress | ||
+ | >= 0 | ||
+ | < 0 | ||
+ | SeeAlso: AX=CB13h/ | ||
+ | |||
+ | Intel Connection CoProcessor failure codes: | ||
+ | bit 3: 9600 bps FAX modem module failed | ||
+ | bit 2: SDLC chip failed | ||
+ | bit 1: RAM failed | ||
+ | bit 0: ROM checksum failed | ||
+ | |||
+ | Intel SatisFAXtion failure codes: | ||
+ | bit 1: 2400 bps data modem failed | ||
+ | bit 0: 9600 bps FAX modem failed | ||
+ | ----------2FCB13DL01------------------------- | ||
+ | INT 2F - Communicating Applications Specification - START DIAGNOSTICS | ||
+ | AX = CB13h | ||
+ | DL = 01h | ||
+ | Return: AX = 0000h successfully started | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | SeeAlso: AX=CB13h/ | ||
+ | ----------2FCB14----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - MOVE RECEIVED FILE | ||
+ | AX = CB14h | ||
+ | BX = event handle | ||
+ | CX = receive file number | ||
+ | 0001h first received file | ||
+ | | ||
+ | DS:DX -> ASCIZ string specifying new name for file (must not exist) | ||
+ | Return: AX = 0000h successful | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | ----------2FCB15----------------------------- | ||
+ | INT 2F - Communicating Applications Specification - SUBMIT FILE TO SEND | ||
+ | AX = CB15h | ||
+ | DS:DX -> variable-length data area (see below) | ||
+ | Return: AX >= 0 event handle | ||
+ | < 0 error code (see AX=CB01h) | ||
+ | SeeAlso: AX=CB01h | ||
+ | |||
+ | Format of data area: | ||
+ | Offset Size Description | ||
+ | | ||
+ | 00h = 200x200 dpi, fax mode | ||
+ | 01h = 100x200 dpi, fax mode | ||
+ | 02h = file transfer mode | ||
+ | 03h to 7Fh reserved | ||
+ | | ||
+ | 00h = 80 columns | ||
+ | 01h = 132 columns | ||
+ | 02h to 7Fh reserved | ||
+ | | ||
+ | | ||
+ | 06h 32 BYTEs ASCIZ destination name | ||
+ | 26h 80 BYTEs ASCIZ name of file to send | ||
+ | 76h 47 BYTEs ASCIZ phone number to dial | ||
+ | A5h 64 BYTEs ASCIZ application-specific tag string | ||
+ | | ||
+ | | ||
+ | 00h don't send cover page | ||
+ | 01h send cover page | ||
+ | 02h to 7Fh reserved | ||
+ | E7h 23 BYTEs reserved (zeros) | ||
+ | FEh variable ASCIZ string containing text of cover page (if cover page flag | ||
+ | set to 01h) | ||
+ | ----------2FCB16BX1234----------------------- | ||
+ | INT 2F - Communicating Applications Spec v1.2+ - UNLOAD RESIDENT MANAGER | ||
+ | AX = CB16h | ||
+ | BX = 1234h | ||
+ | CX = 5678h | ||
+ | DX = 9ABCh | ||
+ | Return: AX = 0000h successful | ||
+ | < 0 error code | ||
+ | SeeAlso: AX=CB00h | ||
+ | ----------2FCB17----------------------------- | ||
+ | INT 2F - Communicating Applications Spec v1.2+ - SET COVER PAGE STATUS | ||
+ | AX = CB17h | ||
+ | BX = event handle | ||
+ | CL = cover page status | ||
+ | 00h not read | ||
+ | 01h read by user | ||
+ | Return: AX = 0000h successful | ||
+ | < 0 error code | ||
+ | ----------2FCB80----------------------------- | ||
+ | INT 2F - Intel SatisFAXtion CASMGR - ??? | ||
+ | AX = CB80h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FCB81----------------------------- | ||
+ | INT 2F - Intel SatisFAXtion CASMGR - ??? | ||
+ | AX = CB81h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FCB82----------------------------- | ||
+ | INT 2F - Intel SatisFAXtion CASMGR - ??? | ||
+ | AX = CB82h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FCBDC----------------------------- | ||
+ | INT 2F - Comwave Microfax Specification - GET STATUS ARRAY | ||
+ | AX = CBDCh | ||
+ | BL = 56h | ||
+ | BH = line number (starts with 1) | ||
+ | CX:DX -> 32-byte status buffer or 80 character string | ||
+ | Return: AX = number of cards installed, or FFFFh on error | ||
+ | Program: Comwave manufacturers the Microfax line of fax cards which are a high- | ||
+ | performance multi-card FAX solution for OEMs. | ||
+ | Note: | ||
+ | SeeAlso: AX=CBDDh, | ||
+ | ----------2FCBDD----------------------------- | ||
+ | INT 2F - Comwave Microfax Specification - COMMAND SUBMISSION | ||
+ | AX = CBDDh | ||
+ | BL = 56h | ||
+ | BH = ? | ||
+ | CX:DX -> command to execute | ||
+ | Return: AX = status | ||
+ | 0000h success | ||
+ | FFFFh on error | ||
+ | SeeAlso: AH=2Ah, | ||
+ | ----------2FCC--SI5453----------------------- | ||
+ | INT 2F U - Qualitas Qcach v4.00 | ||
+ | AH = CCh | ||
+ | SI = 5453h or 7473h | ||
+ | AL = ??? | ||
+ | DL = 00h or ??? | ||
+ | Return: SI = 7473h | ||
+ | ??? | ||
+ | ----------2FCD00----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - INSTALLATION CHECK | ||
+ | AX = CD00h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | 01h not installed, not OK to install | ||
+ | FFh installed | ||
+ | SeeAlso: AX=CD02h" | ||
+ | ----------2FCD00----------------------------- | ||
+ | INT 2F - SWELL.EXE - INSTALLATION CHECK | ||
+ | AX = CD00h | ||
+ | Return: AX = 00FFh installed | ||
+ | BH = major version | ||
+ | BL = minor version | ||
+ | Note: | ||
+ | process with INT 21/AH=4Bh | ||
+ | ----------2FCD01----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - SET DEVICE NAME | ||
+ | AX = CD01h | ||
+ | CX:BX -> ASCIZ character device name (" | ||
+ | Return: AL = 00h successful | ||
+ | CX:BX -> internal character device name | ||
+ | = 80h error | ||
+ | ----------2FCD01----------------------------- | ||
+ | INT 2F - SWELL.EXE - SUSPEND ONCE | ||
+ | AX = CD01h | ||
+ | Return: AX = 0000h | ||
+ | SeeAlso: AX=CD02h" | ||
+ | ----------2FCD02----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - GET VERSION NUMBER | ||
+ | AX = CD02h | ||
+ | Return: AL = 00h/01h successful | ||
+ | BH = major version number (BCD) | ||
+ | BL = minor version number (BCD) | ||
+ | = 80h error | ||
+ | Note: if return AL = 01h, the IPI supports network redirection | ||
+ | SeeAlso: AX=CD00h" | ||
+ | ----------2FCD02----------------------------- | ||
+ | INT 2F - SWELL.EXE - SUSPEND | ||
+ | AX = CD02h | ||
+ | Return: AX = 0000h | ||
+ | SeeAlso: AX=CD03h" | ||
+ | ----------2FCD03----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - SELECT SCAN LINE | ||
+ | AX = CD03h | ||
+ | BX = scan line | ||
+ | CX = requested density in dots per inch (300, 600, or 1200) | ||
+ | Return: AL = 00h succesful | ||
+ | CX = density at which scan line was mapped | ||
+ | ES:DI -> start of scan line | ||
+ | AL = 80h unsuccessful | ||
+ | = 81h scan line out of range | ||
+ | = 82h unsupported scan line density | ||
+ | = 83h out of memory | ||
+ | SeeAlso: AX=CD04h" | ||
+ | ----------2FCD03----------------------------- | ||
+ | INT 2F - SWELL.EXE - ACTIVATE | ||
+ | AX = CD03h | ||
+ | Return: AX = 0000h | ||
+ | SeeAlso: AX=CD02h" | ||
+ | ----------2FCD04----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - MOVE BITMAP TO SCANLINE | ||
+ | AX = CD04h | ||
+ | CX:BX -> structure (see below) | ||
+ | Return: AL = 00h successful | ||
+ | = 80h unsuccessful | ||
+ | = 81h scan line out of range | ||
+ | = 82h unsupported scan line density | ||
+ | = 83h out of memory | ||
+ | = 84h unrecognized source | ||
+ | = 85h initialization error | ||
+ | SeeAlso: AX=CD03h" | ||
+ | |||
+ | Format of structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2FCD04----------------------------- | ||
+ | INT 2F - SWELL.EXE - TURN OFF VERBOSE MODE | ||
+ | AX = CD04h | ||
+ | Return: AX = 0000h | ||
+ | SeeAlso: AX=CD05h" | ||
+ | ----------2FCD05----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - PRINT PAGE | ||
+ | AX = CD05h | ||
+ | Return: AL = 00h successful | ||
+ | = 80h unsuccessful | ||
+ | Note: page image is retained, so multiple calls will print multiple copies of | ||
+ | the page | ||
+ | SeeAlso: AX=CD06h" | ||
+ | ----------2FCD05----------------------------- | ||
+ | INT 2F - SWELL.EXE - TURN ON VERBOSE MODE | ||
+ | AX = CD05h | ||
+ | Return: AX = 0000h | ||
+ | SeeAlso: AX=CD04h" | ||
+ | ----------2FCD06----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - CLEAR PAGE | ||
+ | AX = CD06h | ||
+ | Return: AL = 00h successful | ||
+ | = 80h unsuccessful | ||
+ | Note: | ||
+ | SeeAlso: AX=CD09h" | ||
+ | ----------2FCD06----------------------------- | ||
+ | INT 2F - SWELL.EXE - UNINSTALL | ||
+ | AX = CD06h | ||
+ | Return: AX = 0000h uninstalled | ||
+ | = 8002h programs still swapped, not uninstalled | ||
+ | ----------2FCD07----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - reserved | ||
+ | AX = CD07h | ||
+ | ----------2FCD07----------------------------- | ||
+ | INT 2F - SWELL.EXE - GET INFO | ||
+ | AX = CD07h | ||
+ | ES:BX -> 32-byte buffer for info | ||
+ | Return: AX = 0000h successful | ||
+ | ES:BX buffer filled | ||
+ | = 8001h buffer wrong size | ||
+ | |||
+ | Format of info buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 06h 26 BYTEs unused??? | ||
+ | ----------2FCD08----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - SCREEN IMAGE | ||
+ | AX = CD08h | ||
+ | CX:BX -> structure (see below) | ||
+ | Return: AL = 00h successful | ||
+ | = 80h unsuccessful | ||
+ | = 81h scan line out of range | ||
+ | = 82h unsupported scan line density | ||
+ | = 83h out of memory | ||
+ | = 84h unrecognized source | ||
+ | = 85h initialization error | ||
+ | SeeAlso: AX=CD05h" | ||
+ | |||
+ | Format of structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2FCD08----------------------------- | ||
+ | INT 2F - SWELL.EXE - UNUSED | ||
+ | AX = CD08h | ||
+ | Return: AX = FFFFh (error) | ||
+ | ----------2FCD09----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - LOAD SCREEN | ||
+ | AX = CD09h | ||
+ | CX:BX -> structure (see below) | ||
+ | Return: AL = 00h successful | ||
+ | = 80h unsuccessful | ||
+ | SeeAlso: AX=CD06h" | ||
+ | |||
+ | Format of structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | 44h (' | ||
+ | 4Ch (' | ||
+ | | ||
+ | | ||
+ | currently, | ||
+ | | ||
+ | currently coerced to nearest of -45, 0, 45, or 90 | ||
+ | ----------2FCD09----------------------------- | ||
+ | INT 2F - SWELL.EXE - TURN OFF " | ||
+ | AX = CD09h | ||
+ | Return: AX = 0000h | ||
+ | SeeAlso: AX=CD0Ah" | ||
+ | ----------2FCD0A----------------------------- | ||
+ | INT 2F - Intel Image Processing Interface - LOAD PALETTE | ||
+ | AX = CD0Ah | ||
+ | CX:BX -> palette structure (see below) | ||
+ | Return: AL = 00h successful | ||
+ | = 80h unsuccessful | ||
+ | SeeAlso: AX=CD09h" | ||
+ | |||
+ | Format of palette structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ----------2FCD0A----------------------------- | ||
+ | INT 2F - SWELL.EXE - TURN ON " | ||
+ | AX = CD0Ah | ||
+ | Return: AX = 0000h | ||
+ | SeeAlso: AX=CD09h" | ||
+ | ----------2FD000----------------------------- | ||
+ | INT 2F - MDEBUG display driver - GET DRIVER STATUS | ||
+ | AX = D000h | ||
+ | Return: CF set on error | ||
+ | all other registers must be unchanged) | ||
+ | CF clear if successful | ||
+ | AL = FFh | ||
+ | AH = driver semaphor | ||
+ | 00h driver is not active | ||
+ | 01h driver is active | ||
+ | BX = CS of the driver | ||
+ | CX = driver version (CH = major, CL = minor, must be >= 013Ch) | ||
+ | DL = buffer semaphor | ||
+ | 00h driver is not pending | ||
+ | 01h driver is pending between functions 02h and 03h | ||
+ | DH = show semaphor | ||
+ | 00h driver is not pending | ||
+ | 01h driver is pending between functions 04h and 05h | ||
+ | Notes: | ||
+ | including a memory monitor, an interpreter and a disassembler | ||
+ | MDEBUG can use any two consecutive multiplex numbers between C0h and | ||
+ | FFh; the default is D0h for the display driver and D1h for the | ||
+ | command driver (see INT 60/ | ||
+ | numbers used) | ||
+ | this function MUST be reentrant, as MDEBUG calls it after every popup | ||
+ | before any other actions. | ||
+ | registers if the display is in an unsupported mode or in a mode | ||
+ | MDEBUG supports itself, e.g. a normal text mode with at least 80x25 | ||
+ | characters (i.e. 80x43 or 132x44 (v1.60+)). In this case MDEBUG will | ||
+ | not call any of the other functions for this popup session. | ||
+ | MDEBUG will not call the other functions if the returned version is | ||
+ | less than the actual version of MDEBUG. | ||
+ | if the driver is reentrant, DL and DH should be 00h | ||
+ | SeeAlso: AX=D001h, | ||
+ | ----------2FD000----------------------------- | ||
+ | INT 2F - ZWmous - INSTALLATION CHECK | ||
+ | AX = D000h | ||
+ | Return: AX = 5A57h (" | ||
+ | BX = segment of resident code | ||
+ | Note: | ||
+ | with many non-mouse applications by entering the letter under the | ||
+ | mouse cursor on button presses | ||
+ | SeeAlso: INT 33/AX=0003h | ||
+ | ----------2FD000----------------------------- | ||
+ | INT 2F - Lotus CD/ | ||
+ | AX = D000h | ||
+ | Return: AL = FF if CD/ | ||
+ | BX = 4D44h (" | ||
+ | CX = Windows mode word (from INT 2F/ | ||
+ | DX = bitmap identifying all loaded CD/ | ||
+ | Notes: INT 2F/AH=D0h is used by CD/ | ||
+ | resident redirector TSR and a transient program that controls the | ||
+ | TSR's CD-ROM drive emulation (volume attachments, | ||
+ | At present there is only one CD/ | ||
+ | SeeAlso: AX=D002h" | ||
+ | ----------2FD001----------------------------- | ||
+ | INT 2F - MDEBUG display driver - INITIALIZE DRIVER | ||
+ | AX = D001h | ||
+ | Return: CF set on error | ||
+ | AL = driver semaphor | ||
+ | AH = buffer semaphor | ||
+ | Notes: | ||
+ | 00h. The function should reset all internal data and the status of | ||
+ | the driver. If this function returns an error, MDEBUG will not call | ||
+ | the other functions in this popup session. | ||
+ | MDEBUG can use any two consecutive multiplex numbers between C0h and | ||
+ | FFh; the default is D0h for the display driver and D1h for the | ||
+ | command driver | ||
+ | SeeAlso: AX=D000h | ||
+ | ----------2FD002----------------------------- | ||
+ | INT 2F - MDEBUG display driver - SAVE GRAPHIC DATA | ||
+ | AX = D002h | ||
+ | Return: CF set on error | ||
+ | CF clear if successful | ||
+ | display memory saved and display switched to one of the text modes | ||
+ | 02h, 03h or 07h. | ||
+ | Note: | ||
+ | displaying its windows. | ||
+ | SeeAlso: AX=D000h, | ||
+ | ----------2FD002BX4D44----------------------- | ||
+ | INT 2F - Multiplex - Lotus CD/ | ||
+ | AX = D002h | ||
+ | BX = 4D44h | ||
+ | DX = bitmap identifying one loaded CD/ | ||
+ | Return: ES:DI -> data area owned by TSR | ||
+ | Note: the format of the data area changes with each minor revision, so it | ||
+ | cannot be counted on | ||
+ | SeeAlso: AX=D000h" | ||
+ | ----------2FD003----------------------------- | ||
+ | INT 2F - MDEBUG display driver - RESTORE GRAPHIC DATA | ||
+ | AX = D003h | ||
+ | Return: CF set on error | ||
+ | CF clear if successful | ||
+ | display restored to the mode it was in before calling AX=D002h and | ||
+ | the display memory is restored | ||
+ | Note: | ||
+ | it exits to normal DOS. | ||
+ | SeeAlso: AX=D000h, | ||
+ | ----------2FD004----------------------------- | ||
+ | INT 2F - MDEBUG display driver - SHOW SAVED DATA | ||
+ | AX = D004h | ||
+ | Return: CF set on error | ||
+ | CF clear if successful | ||
+ | display switched to mode it was in before calling AX=D002h and the | ||
+ | display memory is restored | ||
+ | Note: This function needn' | ||
+ | SeeAlso: AX=D000h, | ||
+ | ----------2FD005----------------------------- | ||
+ | INT 2F - MDEBUG display driver - SWITCH BACK TO TEXT SCREEN | ||
+ | AX = D005h | ||
+ | Return: CF set on error | ||
+ | CF clear if successful | ||
+ | display restored to mode it was in before calling AX=D004h | ||
+ | Note: This function needn' | ||
+ | SeeAlso: AX=D000h, | ||
+ | ----------2FD0------------------------------- | ||
+ | INT 2F - MDEBUG display driver - RESERVED FUNCTION NUMBERS | ||
+ | AH = D0h | ||
+ | AL = 06h-7Fh | ||
+ | Note: these functions are reserved for future use | ||
+ | ----------2FD0------------------------------- | ||
+ | INT 2F - MDEBUG display driver - USER DEFINED FUNCTION NUMBERS | ||
+ | AH = D0h | ||
+ | AL = 80h-FFh | ||
+ | Note: these functions numbers are reserved for user defined features (e.g. | ||
+ | communication between the transient und resident parts of the driver) | ||
+ | ----------2FD100----------------------------- | ||
+ | INT 2F - MDEBUG command driver - GET STATUS | ||
+ | AX = D100h | ||
+ | BX = version of MDEBUG (BH = major, BL = minor) | ||
+ | CX = command driver counter | ||
+ | ---v1.60+--- | ||
+ | DS:SI -> MDEBUG identification table (see below) | ||
+ | ES = segment of display memory used by MDEBUG | ||
+ | DI = size of video mode used by MDEBUG | ||
+ | (high byte = lines, low byte = columns) | ||
+ | Return: DL = FFh | ||
+ | BX = version number of the driver if it is less than the version in BX, | ||
+ | else unchanged | ||
+ | CX incremented | ||
+ | Notes: | ||
+ | including a memory monitor, an interpreter, | ||
+ | called by MDEBUG at start of popup session; if the version number | ||
+ | returned in BX is less than 1.52 (1.60 for MDEBUG v1.70), MDEBUG will | ||
+ | not call any of the other functions during this popup session | ||
+ | MDEBUG can use any two consecutive multiplex numbers between C0h and | ||
+ | FFh; the default is D0h for the display driver and D1h for the | ||
+ | command driver (see INT 60/ | ||
+ | actually used) | ||
+ | this function must end with a far call to the old INT 2F handler after | ||
+ | changing the registers | ||
+ | this function MUST be reentrant | ||
+ | command drivers must also declare the following data at the given | ||
+ | offsets in the code segment | ||
+ | 100h | ||
+ | 103h BYTE NOP-command (90h) | ||
+ | 104h 26 BYTEs signature " | ||
+ | 11Eh 12 BYTEs name of driver, e.g. " | ||
+ | each driver must have a unique name | ||
+ | MDEBUG will pass every key and command to the command driver(s) before | ||
+ | checking for a valid internal command | ||
+ | SeeAlso: AX=D000h, | ||
+ | |||
+ | Format of MDEBUG identification table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2FD101----------------------------- | ||
+ | INT 2F - MDEBUG command driver - INITIALIZE DRIVER | ||
+ | AX = D101h | ||
+ | CX = command driver counter | ||
+ | Return: DL = FFh if successful | ||
+ | CX incremented | ||
+ | else error: all registers unchanged | ||
+ | Note: this function must end with a far call to the old INT 2F handler after | ||
+ | changing the registers | ||
+ | this function must be reentrant | ||
+ | ----------2FD102----------------------------- | ||
+ | INT 2F - MDEBUG command driver - EXECUTE INTERPRETER COMMAND | ||
+ | AX = D102h | ||
+ | BL = first character of the interpreter command | ||
+ | BH = last character of the interpreter command (or blank) | ||
+ | DS:SI -> parameter for the interpreter command as ASCIZ string | ||
+ | DS:DI -> MDEBUG data structure (see below) | ||
+ | Return: AL = FFh | ||
+ | CF set on error | ||
+ | AH = error number | ||
+ | 01h syntax error | ||
+ | 02h first shell of the command.com is activ | ||
+ | 03h esc pressed | ||
+ | 04h break pressed | ||
+ | 05h DOS is busy | ||
+ | 06h command ended | ||
+ | 07h division by zero | ||
+ | 08h invalid display driver | ||
+ | 09h invalid command driver | ||
+ | 0Ah error 8 and 9 | ||
+ | 0Bh unknown error | ||
+ | 0Ch new error | ||
+ | DS:SI -> ASCIZ error message (max 30 characters) | ||
+ | else unknown error | ||
+ | CF clear if successful | ||
+ | AH = return code | ||
+ | 00h continue processing the command line | ||
+ | 01h leave MDEBUG popup session | ||
+ | 02h leave MDEBUG popup session and automatically popup again | ||
+ | if the InDOS flag is zero | ||
+ | 03h not used (same as 00h) | ||
+ | 04h not used (same as 00h) | ||
+ | 05h put new command line into the input buffer, | ||
+ | DS:SI -> new command line (ASCIZ string, max 66 chars) | ||
+ | 06h process new command line | ||
+ | DS:SI -> new command line (ASCIZ string, max 66 chars) | ||
+ | else unknown status, but continue processing commmand line | ||
+ | Note: this function must end with a far call to the old INT 2F handler (with | ||
+ | registers unchanged) if the driver does not support the interpreter | ||
+ | command in BX. Otherwise, the driver must not chain to the old | ||
+ | INT 2F. | ||
+ | |||
+ | Format of MDEBUG data structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 3Ah 12 WORDs saved register values on last popup entry (for <F8> key) | ||
+ | (original register values at popup entry of MDEBUG) | ||
+ | AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags | ||
+ | 52h 12 WORDs saved register values on last popup exit (for < | ||
+ | AX, BX, CX, DX, SI, DI, DS, ES, BP, SS, SP, flags | ||
+ | | ||
+ | | ||
+ | | ||
+ | first monitor window | ||
+ | | ||
+ | first monitor window | ||
+ | | ||
+ | first monitor segment | ||
+ | | ||
+ | monitor window | ||
+ | | ||
+ | | ||
+ | ----------2FD103----------------------------- | ||
+ | INT 2F - MDEBUG command driver - EXECUTE KEY IN THE MONITOR | ||
+ | AX = D103h | ||
+ | BX = key code (like result of an interrupt 16h call) | ||
+ | CX = 0 -> the cursor is in the ASCII column of the monitor | ||
+ | CX = 1 -> the cursor is in one of the hex fields of the monitor | ||
+ | DS:SI -> MDEBUG data structure (see AX=D102h) | ||
+ | ES:DI -> actual byte in the monitor | ||
+ | Return: AL = FFh | ||
+ | AH = return code | ||
+ | 00h key processed, read next key | ||
+ | 01h leave MDEBUG popup session | ||
+ | 02h leave MDEBUG popup session and automatically popup again if DOS | ||
+ | is not busy | ||
+ | 03h signal an error (beep) | ||
+ | 04h driver has redefined the key, proceed with the new key | ||
+ | BX = new key code | ||
+ | MDEBUG will not pass the new key to the command driver(s) | ||
+ | else treat like code 00h | ||
+ | Note: this function must end with a far call to the old INT 2F handler (with | ||
+ | registers unchanged) if the driver does not support the key in BX. | ||
+ | Otherwise, the driver must not chain to the old INT 2F. | ||
+ | SeeAlso: AX=D104h | ||
+ | ----------2FD104----------------------------- | ||
+ | INT 2F - MDEBUG command driver - EXECUTE KEY IN THE INTERPRETER | ||
+ | AX = D104h | ||
+ | DS:SI -> MDEBUG data structure (see AX=D102h) | ||
+ | Return: AL = FFh | ||
+ | AH = return code | ||
+ | 00h key processed, read next key | ||
+ | 01h leave MDEBUG popup session | ||
+ | 02h leave MDEBUG popup session and automactically popup again if | ||
+ | DOS is not busy | ||
+ | 03h signal an error (beep) | ||
+ | 04h driver has redefined the key, proceed with the new key | ||
+ | BX = new key code | ||
+ | MDEBUG won't pass the new key to the command driver(s) | ||
+ | 05h put new command line into the input buffer | ||
+ | DS:SI -> new command line (ASCIZ string, max 66 chars) | ||
+ | 06h process new command line | ||
+ | DS:SI -> new command line (ASCIZ string, max 66 chars) | ||
+ | else treat like code 00h | ||
+ | Note: this function must end with a far call to the old INT 2F handler if the | ||
+ | driver does not support the key in BX. Otherwise, the driver must | ||
+ | not chain to the old INT 2F. | ||
+ | SeeAlso: AX=D103h | ||
+ | ----------2FD1------------------------------- | ||
+ | INT 2F - MDEBUG command driver - RESERVED FUNCTIONS | ||
+ | AH = D1h | ||
+ | AL = 05h-0Ah | ||
+ | Note: these functions are reserved for future use | ||
+ | ----------2FD110----------------------------- | ||
+ | INT 2F - MDEBUG command driver - GET ADDRESS OF THE OLD INT 2F | ||
+ | AX = D110h | ||
+ | Return: DL = FFh | ||
+ | ES:BX -> next program in the chain for INT 2F | ||
+ | CX = code segment of this driver | ||
+ | DI = offset of driver identification table (see below) (v1.60+) | ||
+ | Notes: only called by the transient part of the driver | ||
+ | must be reentrant and the driver must not chain this function to the | ||
+ | old INT 2F | ||
+ | |||
+ | Format of the driver identification table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | ^- Note: ASCII 129,German U-umlaut | ||
+ | | ||
+ | each driver must have a unique name | ||
+ | ----------2FD111----------------------------- | ||
+ | INT 2F - MDEBUG command driver - START DRIVER | ||
+ | AX = D111h | ||
+ | Return: DL = FFh | ||
+ | Notes: only called by the transient part of the driver to inform the resident | ||
+ | part that it is installed | ||
+ | the function must be reentrant and the driver mustn' | ||
+ | function to the old INT 2F | ||
+ | SeeAlso: AX=D101h, | ||
+ | ----------2FD112----------------------------- | ||
+ | INT 2F - MDEBUG command driver - END DRIVER | ||
+ | AX = D112h | ||
+ | Return: DL = FFh | ||
+ | Notes: only called by the transient part of the driver to inform the resident | ||
+ | part that it will be released after this function | ||
+ | the function must be reentrant and the driver mustn' | ||
+ | function to the old INT 2F | ||
+ | SeeAlso: AX=D101h, | ||
+ | ----------2FD1------------------------------- | ||
+ | INT 2F - MDEBUG command driver - RESERVED FUNCTIONS | ||
+ | AH = D1h | ||
+ | AL = 13h-7Fh | ||
+ | Note: these functions are reserved for future use | ||
+ | ----------2FD1------------------------------- | ||
+ | INT 2F - MDEBUG command driver - USER DEFINED FUNCTIONS | ||
+ | AH = D1h | ||
+ | AL = 80h-FFh | ||
+ | Note: these functions are reserved for user defined features (e.g. | ||
+ | communication between the transient und resident parts of the driver) | ||
+ | ----------2FD200BX5144----------------------- | ||
+ | INT 2F U - Quarterdeck - QEMM/ | ||
+ | AX = D200h | ||
+ | BX = 5144h (" | ||
+ | CX = 4D45h (" | ||
+ | DX = 4D30h (" | ||
+ | Return: AL = FFh installed | ||
+ | if BX,CX,DX registers were as specified on entry: | ||
+ | BX = 4D45h (" | ||
+ | CX = 4D44h (" | ||
+ | DX = 5652h (" | ||
+ | Notes: | ||
+ | through FFh, then C0h through D1h | ||
+ | for AL <> 0, if the BX/CX/DX values don't match a the identifier of a | ||
+ | Quarterdeck product, it just chains to the previous INT 2F handler | ||
+ | ----------2FD201BX4849----------------------- | ||
+ | INT 2F U - Quarterdeck - GET QD HIMEM PRESENCE | ||
+ | AX = D201h | ||
+ | BX = 4849h (" | ||
+ | CX = 4D45h (" | ||
+ | DX = 4D51h (" | ||
+ | Return: BX = 4F4Bh (" | ||
+ | ES:DI -> HIMEM entry point | ||
+ | Notes: | ||
+ | through FFh, then C0h through D1h | ||
+ | SeeAlso: AX=D201h/ | ||
+ | ----------2FD201BX4849----------------------- | ||
+ | INT 2F U - Quarterdeck - QEMM/QRAM v5.0+ - GET HIRAM MEMORY CHAIN | ||
+ | AX = D201h | ||
+ | BX = 4849h (" | ||
+ | CX = 5241h (" | ||
+ | DX = 4D30h (" | ||
+ | Return: BX = 4F4Bh (" | ||
+ | CX = segment of start of HIRAM chain | ||
+ | DX = QEMM/QRAM code segment | ||
+ | Notes: | ||
+ | through FFh, then C0h through D1h | ||
+ | QEMM and QRAM both responded the same | ||
+ | the HIRAM memory chain has the same format as the regular DOS 4.0 | ||
+ | memory chain (see INT 21/AH=52h), except that XMS Upper Memory Blocks | ||
+ | have the block header program name field set to " | ||
+ | " | ||
+ | are locked out regions such as video memory and ROMs. | ||
+ | ----------2FD201BX4D41----------------------- | ||
+ | INT 2F U - Quarterdeck - MANIFEST v1.0+ - INSTALLATION CHECK | ||
+ | AX = D201h | ||
+ | BX = 4D41h (" | ||
+ | CX = 4E49h (" | ||
+ | DX = 4645h (" | ||
+ | Return: BX = 5354h (" | ||
+ | Note: | ||
+ | through FFh, then C0h through D1h | ||
+ | ----------2FD201BX4D45----------------------- | ||
+ | INT 2F U - Quarterdeck - DVDOS4GX.DVR - ??? | ||
+ | AX = D201h | ||
+ | BX = 4D45h (" | ||
+ | CX = 5155h (" | ||
+ | DX = 5044h (" | ||
+ | Return: ??? | ||
+ | Notes: | ||
+ | under AX=D200h | ||
+ | called by QEMM 6.03 | ||
+ | ----------2FD201BX5145----------------------- | ||
+ | INT 2F U - Quarterdeck - QEMM v5.0+ - INSTALLATION CHECK | ||
+ | AX = D201h | ||
+ | BX = 5145h (" | ||
+ | CX = 4D4Dh (" | ||
+ | DX = 3432h (" | ||
+ | Return: BX = 4F4Bh (" | ||
+ | ES:DI -> QEMM API entry point (see INT 67/AH=3Fh) | ||
+ | Notes: | ||
+ | through FFh, then C0h through D1h | ||
+ | this call is not available under QEMM v6.00 unless Windows3 support | ||
+ | has been disabled with the NW3 switch to QEMM386.SYS | ||
+ | SeeAlso: AX=D201h/ | ||
+ | ----------2FD201BX5649----------------------- | ||
+ | INT 2F U - Quarterdeck - VIDRAM v5.0+ - INSTALLATION CHECK | ||
+ | AX = D201h | ||
+ | BX = 5649h (" | ||
+ | CX = 4452h (" | ||
+ | DX = 414dh (" | ||
+ | Return: BX = 4F4Bh (" | ||
+ | ES:DI -> VIDRAM entry point | ||
+ | Note: | ||
+ | through FFh, then C0h through D1h | ||
+ | |||
+ | Call VIDRAM entry point with: | ||
+ | AH = 00h get status | ||
+ | Return: AL = VIDRAM state (see below) | ||
+ | BL = bit 0: ??? | ||
+ | bits 1-7 not used | ||
+ | BH = flags??? | ||
+ | bit 4: high RAM exists in video area??? | ||
+ | CL = current monitor (01h = mono, 80h = color) | ||
+ | SI = current top of memory (paragraph)??? | ||
+ | DI = segment of ??? | ||
+ | AH = 01h setup | ||
+ | AL = VIDRAM state (00h off, 01h no EGA graphics, 02h no graph) | ||
+ | BL = bit 0: ??? | ||
+ | bits 1-7 not used | ||
+ | BH = flags??? | ||
+ | CL = monitor (01h = monochrome, 80h = color) | ||
+ | SI = new top of memory (paragraph)??? | ||
+ | AH = 02h get ??? | ||
+ | Return: ES:DI -> ??? data | ||
+ | Return: CF set on error | ||
+ | CF clear if successful | ||
+ | ----------2FD300BX4562----------------------- | ||
+ | INT 2F U - TeleReplica - INSTALLATION CHECK | ||
+ | AX = D300h | ||
+ | BX = 4562h | ||
+ | CX = 2745h | ||
+ | DX = serial port I/O base address??? (03F8h for v3.9) | ||
+ | Return: SI = segment of resident code | ||
+ | AX = 251Dh | ||
+ | BX = DF21h | ||
+ | CX = F321h | ||
+ | DX = ??? | ||
+ | ----------2FD3CB----------------------------- | ||
+ | INT 2F U - LapLink Quick Connect v6 - API | ||
+ | AX = D3CBh | ||
+ | CX = function | ||
+ | 0002h get ??? | ||
+ | Return: BX:AX -> ??? | ||
+ | CL = ??? | ||
+ | CH = ??? | ||
+ | DX = ??? | ||
+ | DI = COM1 I/O port??? | ||
+ | SI = COM2 I/O port??? | ||
+ | 0003h initialization??? | ||
+ | 0004h ??? | ||
+ | 0005h initialization??? | ||
+ | 0006h reset/clear ??? | ||
+ | Return: AX = 0000h | ||
+ | ES:DI -> next byte after ??? cleared by this call | ||
+ | 0007h initialization??? | ||
+ | 0008h uninstall | ||
+ | Return: BX = status | ||
+ | 0000h successful | ||
+ | FFFFh incomplete, stub remains in memory | ||
+ | Return: CX = 534Bh (except function 0002h) | ||
+ | ----------2FD44D----------------------------- | ||
+ | INT 2F - 4DOS.COM v2.1+ - API | ||
+ | AX = D44Dh | ||
+ | BH = function | ||
+ | 00h installation check | ||
+ | Return: AX = 44DDh | ||
+ | BL = minor version number | ||
+ | BH = major version number | ||
+ | CX = PSP segment address for current invocation | ||
+ | DL = 4DOS shell number (0 for the first (root) shell, | ||
+ | | ||
+ | 01h (internal, v2.1-3.03) terminate current copy of 4DOS | ||
+ | Return: nothing | ||
+ | (internal, | ||
+ | Return: ES:BX -> data area (see below) | ||
+ | 02h ??? | ||
+ | DX = ??? | ||
+ | ---v2.1-3.03 only--- | ||
+ | 03h EXEC program | ||
+ | CX:DX -> EXEC record | ||
+ | FEh deallocate shell number (passed through to root shell) | ||
+ | ??? | ||
+ | FFh allocate shell number (passed through to root shell) | ||
+ | Note: bug in v3.00 will crash system if unrecognized value in BH | ||
+ | SeeAlso: AX=D44Eh, | ||
+ | |||
+ | Format of EXEC record: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of 4DOS v4.0 data area: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ??? | ||
+ | ----------2FD44E----------------------------- | ||
+ | INT 2F - 4DOS v3.0+ - AWAITING USER INPUT | ||
+ | AX = D44Eh | ||
+ | ---4DOS v3.01+--- | ||
+ | BX = 0000h 4DOS is ready to display prompt | ||
+ | = 0001h 4DOS has displayed the prompt, about to accept user input | ||
+ | Return: handler must preserve SI, DI, BP, SP, DS, ES, and SS | ||
+ | Note: v3.00 only makes the call corresponding to BX=0001h, does not set BX | ||
+ | SeeAlso: AX=D44Dh | ||
+ | ----------2FD44FBX0000----------------------- | ||
+ | INT 2F - 4DOS v4.0+ - KSTACK.COM - INSTALLATION CHECK | ||
+ | AX = D44Fh | ||
+ | BX = 0000h | ||
+ | Return: AX = 44DDh if installed | ||
+ | SeeAlso: AX=D44Fh/ | ||
+ | ----------2FD44FBX0001----------------------- | ||
+ | INT 2F - 4DOS v4.0+ - KSTACK.COM - PLACE KEYSTROKES INTO KEYSTACK | ||
+ | AX = D44Fh | ||
+ | BX = 0001h | ||
+ | CX = number of keystrokes (01h-FFh) | ||
+ | DS:DX -> keystroke list (one word per keystroke) | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | nonzero failed | ||
+ | BX,CX,DX destroyed | ||
+ | Notes: the keystrokes are the exact values to return from subsequent calls to | ||
+ | INT 16 with AH=00h, | ||
+ | 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. | ||
+ | SeeAlso: AX=D44Fh/ | ||
+ | ----------2FD600----------------------------- | ||
+ | INT 2F - HEART.COM - INSTALLATION CHECK | ||
+ | AX = D600h | ||
+ | Return: AX = 0303h (two hearts) if installed | ||
+ | ES:DI -> buffer (see below) | ||
+ | Note: | ||
+ | Once the host program has identified the address of the data area, it | ||
+ | can change this to indicate safe/ | ||
+ | The entries for the color table are in char/attrib form. Every two | ||
+ | entries form a pair which is alternated between 68 times a minute. | ||
+ | The first half of the table is for color videos, the second mono. | ||
+ | Within each half, the first half is for the safe chars, and the | ||
+ | second for the critical chars. | ||
+ | |||
+ | Format of buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | bit 0: program is in critical section, so flash double | ||
+ | exclamation mark | ||
+ | bit 1: program is in safe code, so flash the heart character | ||
+ | | ||
+ | of second line) | ||
+ | ----------2FD600----------------------------- | ||
+ | INT 2F U - VEDIT VSWAP - INSTALLATION CHECK | ||
+ | AX = D600h | ||
+ | Return: AL = D6h if installed | ||
+ | Note: VSWAP is the resident portion of VEDIT' | ||
+ | VEDIT is a programmer' | ||
+ | SeeAlso: AX=D601h, | ||
+ | ----------2FD601----------------------------- | ||
+ | INT 2F U - VEDIT VSWAP - ??? | ||
+ | AX = D601h | ||
+ | BL = subfunction number??? | ||
+ | Return: BL = return code ??? | ||
+ | ES = resident portion' | ||
+ | DX = resident portion' | ||
+ | SeeAlso: AX=D600h" | ||
+ | ----------2FD602----------------------------- | ||
+ | INT 2F U - VEDIT VSWAP - EXEC PROGRAM WITH SWAP | ||
+ | AX = D602h | ||
+ | other registers set as for INT 21/AX=4B00h | ||
+ | Return: CF set on error | ||
+ | AL = error code | ||
+ | 82h = failure due to ??? | ||
+ | CF clear on success | ||
+ | SeeAlso: AX=D600h" | ||
+ | ----------2FD701----------------------------- | ||
+ | INT 2F - BANYAN VINES v4+ - GET BANV INTERRUPT NUMBER | ||
+ | AX = D701h | ||
+ | Return: AX = 0000h installed | ||
+ | BX = interrupt number (60h to 66h) | ||
+ | | ||
+ | Note: if AX is nonzero, VINES 3.x or earlier may be installed, thus it is | ||
+ | necessary to examine the four bytes preceding the handlers for | ||
+ | INT 60 through INT 66 for the string " | ||
+ | SeeAlso: AX=D702h, | ||
+ | ----------2FD702----------------------------- | ||
+ | INT 2F U - BANYAN VINES v4+ - PCPRINT interface | ||
+ | AX = D702h | ||
+ | BX = function | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=D701h, | ||
+ | ----------2FD703----------------------------- | ||
+ | INT 2F U - BANYAN VINES v4+ - MAIL interface | ||
+ | AX = D703h | ||
+ | BX = function | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=D702h, | ||
+ | ----------2FD704----------------------------- | ||
+ | INT 2F U - BANYAN VINES v4+ - Streettalk Directory Assistance interface | ||
+ | AX = D704h | ||
+ | BX = function | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=D703h, | ||
+ | ----------2FD800----------------------------- | ||
+ | INT 2F - Novell NetWare Lite - CLIENT.EXE - INSTALLATION CHECK | ||
+ | AX = D800h | ||
+ | Return: AL = FFh if installed | ||
+ | DX = version number??? (0100h in 1.00) | ||
+ | BX = data segment of resident copy??? | ||
+ | ES:DI = FAR entry point for API routines | ||
+ | Load BX = function number and call for various | ||
+ | functions. Functions 00h - 10h supported in 1.00. | ||
+ | SeeAlso: AX=7A00h, | ||
+ | ----------2FD880----------------------------- | ||
+ | INT 2F - Novell NetWare Lite - SERVER.EXE - INSTALLATION CHECK | ||
+ | AX = D880h | ||
+ | Return: AL = FFh if installed | ||
+ | DX = version number??? (0100h in 1.00) | ||
+ | BX = Data segment of resident copy??? | ||
+ | CL = 01h if SERVER is active | ||
+ | = 00h if SERVER is disabled | ||
+ | SeeAlso: AX=7A00h, | ||
+ | ----------2FDA00----------------------------- | ||
+ | INT 2F - ZyXEL ZFAX - INSTALLATION CHECK | ||
+ | AX = DA00h | ||
+ | Return: AH = enabled state (00h = enabled, 01h = disabled) | ||
+ | AL = 5Ah installed | ||
+ | Note: ZFAX is the bundled FAX software which comes with the ZyXEL model | ||
+ | fax modems. | ||
+ | SeeAlso: AX=CBDCh, | ||
+ | ----------2FDA01----------------------------- | ||
+ | INT 2F - ZyXEL ZFAX - UNINSTALL | ||
+ | AX = DA01h | ||
+ | Return: AL = 00h Success | ||
+ | 01h Failure | ||
+ | SeeAlso: AX=DA00h | ||
+ | ----------2FDA02----------------------------- | ||
+ | INT 2F - ZyXEL ZFAX - DISABLE | ||
+ | AX = DA02h | ||
+ | Return: AL = 00h | ||
+ | SeeAlso: AX=DA03h | ||
+ | ----------2FDA03----------------------------- | ||
+ | INT 2F - ZyXEL ZFAX - ENABLE | ||
+ | AX = DA03h | ||
+ | Return: AL = 00h | ||
+ | SeeAlso: AX=DA02h | ||
+ | ----------2FDA55----------------------------- | ||
+ | INT 2F U - TRAP.COM - INSTALLATION CHECK | ||
+ | AX = DA55h | ||
+ | DL = interrupt number | ||
+ | DH = ??? | ||
+ | Return: if installed | ||
+ | AH = interrupt number | ||
+ | AL = ??? | ||
+ | ES:BX -> ??? | ||
+ | Notes: TRAP is an interrupt call tracer by Patrick Phillipot/ | ||
+ | a separate copy of TRAP is loaded for each interrupt to be traced; thus | ||
+ | the interrupt number is part of the installation check | ||
+ | ----------2FDC00----------------------------- | ||
+ | INT 2F - GOLD.COM - INSTALLATION CHECK | ||
+ | AX = DC00h | ||
+ | Return: AL = 00h not installed | ||
+ | = FFh installed | ||
+ | Note: GOLD is a TSR by Bob Eager which makes the NumLock key return the code | ||
+ | for F1; the purpose is to improve Kermit' | ||
+ | ----------2FDC01----------------------------- | ||
+ | INT 2F - GOLD.COM - GET STATE | ||
+ | AX = DC01h | ||
+ | Return: AL = status | ||
+ | 00h off | ||
+ | 01h on | ||
+ | SeeAlso: AX=DC00h, | ||
+ | ----------2FDC02----------------------------- | ||
+ | INT 2F - GOLD.COM - SET STATE | ||
+ | AX = DC02h | ||
+ | DL = new state | ||
+ | 00h off | ||
+ | 01h on | ||
+ | Return: AL = 00h (OK) | ||
+ | SeeAlso: AX=DC01h | ||
+ | ----------2FDD------------------------------- | ||
+ | INT 2F - SoftCom programs - API | ||
+ | AH = DDh | ||
+ | AL = FEh get info | ||
+ | Return: ES:BX -> TSR info list (see below) | ||
+ | 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 | ||
+ | |||
+ | Format of TSR info list: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2FDE00BX4445----------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - INSTALLATION CHECK | ||
+ | AX = DE00h | ||
+ | BX = 4445h (" | ||
+ | CX = 5844h (" | ||
+ | DX = 4931h (" | ||
+ | Return: AL = FFh if installed (even if other registers do not match) | ||
+ | if BX,CX, and DX were as specified on entry, | ||
+ | BX = 4845h (" | ||
+ | CX = 5245h (" | ||
+ | DX = 4456h (" | ||
+ | Notes: | ||
+ | programs should check for XDI starting at DEh to FFh, then C0h to DDh | ||
+ | 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 | ||
+ | ----------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 | ||
+ | ----------2FDE01BX5242----------------------- | ||
+ | INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, | ||
+ | AX = DE01h | ||
+ | BX = 5242h (" | ||
+ | CX:DX = program identifier | ||
+ | 656F7000h (" | ||
+ | Return: AX = 5242h (" | ||
+ | ES:BX -> data or entry point | ||
+ | CX = version number (CH = major, CL = minor) | ||
+ | |||
+ | 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. | ||
+ | ----------2FDE01BX7474----------------------- | ||
+ | INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, | ||
+ | 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 (" | ||
+ | DL destroyed | ||
+ | Note: | ||
+ | shell/ | ||
+ | ----------2FDE01BX7575----------------------- | ||
+ | INT 2F - DESQview v2.26+ XDI - CUSTOM SUBFUNCTION, | ||
+ | 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 " | ||
+ | SI = number of records in process info array | ||
+ | | ||
+ | ES:DI -> process info array (see below) | ||
+ | 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: | ||
+ | Daniel J. Bodoh | ||
+ | for v1.00, function 0003h allocates common memory, which the caller | ||
+ | must deallocate after reading the process information; | ||
+ | currently used records are placed in the buffer | ||
+ | for v1.10+, function 0003h merely returns a pointer to the internal | ||
+ | array of process information; | ||
+ | array while inside a critical section (see INT 15/ | ||
+ | those records with bit 7 of the first byte set are valid. | ||
+ | |||
+ | Format of information for one process (v1.00): | ||
+ | Offset Size Description | ||
+ | | ||
+ | bit 7: process slot is valid | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of information for one process (v1.10-v2.00): | ||
+ | Offset Size Description | ||
+ | | ||
+ | bit 7: valid record | ||
+ | 6: (v2.00+) record is allocated; if bit 7 clear, process | ||
+ | is " | ||
+ | 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) | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Note: all times are in 1/100s for v1.10, in 1/18s for v1.11+ | ||
+ | ----------2FDE01BXFFFE----------------------- | ||
+ | INT 2F U - DESQview v2.26+ XDI - DVXMS.DVR - ??? | ||
+ | AX = DE01h | ||
+ | BX = FFFEh | ||
+ | CX = 4D47h (" | ||
+ | DX = 0052h (0," | ||
+ | Return: AL = FFh | ||
+ | DX = 584Dh | ||
+ | ----------2FDE02----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - DV INITIALIZATION COMPLETE | ||
+ | AX = DE02h | ||
+ | BX = mapping context of DESQview | ||
+ | DX = handle of DESQview system task | ||
+ | SeeAlso: AX=DE03h | ||
+ | Note: | ||
+ | ----------2FDE03----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - DV TERMINATION | ||
+ | AX = DE03h | ||
+ | BX = mapping context of DESQview | ||
+ | DX = handle of DESQview system task | ||
+ | SeeAlso: AX=DE02h | ||
+ | Notes: | ||
+ | DESQview makes this call when it is exiting, but before unhooking any | ||
+ | interrupt vectors | ||
+ | ----------2FDE04----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - ADD PROCESS | ||
+ | AX = DE04h | ||
+ | BX = mapping context of new process | ||
+ | DX = handle of process | ||
+ | Return: nothing | ||
+ | Notes: XMS XDI handler (installed by default) allocates a 22-byte record | ||
+ | (see below) from " | ||
+ | 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 | ||
+ | |||
+ | Format of XMS XDI structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | (FAR jump to next field) | ||
+ | | ||
+ | (consists of a FAR CALL followed by RETF) | ||
+ | ----------2FDE05----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - REMOVE PROCESS | ||
+ | AX = DE05h | ||
+ | BX = mapping context of process | ||
+ | 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 | ||
+ | ----------2FDE06----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - CREATE TASK | ||
+ | AX = DE06h | ||
+ | BX = mapping context of process containing task | ||
+ | DX = handle of new task | ||
+ | Notes: | ||
+ | all DOS, BIOS, and DV API calls are valid in handler | ||
+ | ----------2FDE07----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - TERMINATE TASK | ||
+ | AX = DE07h | ||
+ | BX = mapping context of process containing task | ||
+ | DX = handle of task | ||
+ | Notes: | ||
+ | all DOS, BIOS, and DV API calls except those generating a task switch | ||
+ | are valid in handler | ||
+ | ----------2FDE08----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - SAVE STATE | ||
+ | AX = DE08h | ||
+ | BX = mapping context of task being switched from | ||
+ | DX = handle of task being switched from | ||
+ | Notes: | ||
+ | driver should pass this call to previous handler after processing it | ||
+ | ----------2FDE09----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - RESTORE STATE | ||
+ | AX = DE09h | ||
+ | BX = mapping context of task being switched to | ||
+ | DX = handle of task being switched to | ||
+ | Notes: | ||
+ | driver should pass this call to previous handler before processing it | ||
+ | ----------2FDE0A----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - CHANGE KEYBOARD FOCUS | ||
+ | AX = DE0Ah | ||
+ | BX = mapping context of task receiving focus | ||
+ | DX = handle of running task | ||
+ | Notes: | ||
+ | this call often occurs inside a keyboard interrupt | ||
+ | ----------2FDE0B----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device 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 | ||
+ | ----------2FDE0C----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - SWAP OUT PROCESS | ||
+ | AX = DE0Ch | ||
+ | BX = mapping context of task being swapped out | ||
+ | DX = handle of DESQview system task | ||
+ | Note: | ||
+ | ----------2FDE0D----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device Interface - SWAP IN PROCESS | ||
+ | AX = DE0Dh | ||
+ | BX = mapping context of process just swapped in | ||
+ | DX = handle of DESQview system task | ||
+ | Note: | ||
+ | ----------2FDE0E----------------------------- | ||
+ | INT 2F - DESQview v2.26+ External Device 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: | ||
+ | ----------2FDF--BX4448----------------------- | ||
+ | INT 2F U - HyperDisk v4.20+ - INSTALLATION CHECK | ||
+ | AH = DFh | ||
+ | BX = 4448h (' | ||
+ | Return: AL = FFh if installed | ||
+ | CX = 5948h (' | ||
+ | BX:DX -> ??? in resident portion if BX=4448h on entry | ||
+ | Note: | ||
+ | SeeAlso: INT 13/AX=8EEDh | ||
+ | ----------2FE300----------------------------- | ||
+ | INT 2F - ANARKEY.COM - INSTALLATION CHECK | ||
+ | AX = E300h | ||
+ | Return: AL = 00h not installed | ||
+ | FEh if installed but suspended (v3.0+) | ||
+ | FFh installed | ||
+ | Notes: | ||
+ | E3h is the default function number, but can be set to any value from | ||
+ | C0h to FFh | ||
+ | SeeAlso: AX=E301h, | ||
+ | ----------2FE301----------------------------- | ||
+ | INT 2F U - ANARKEY.COM v2+ - GET ??? | ||
+ | AX = E301h | ||
+ | Return: DX:BX -> ??? | ||
+ | SeeAlso: AX=E300h | ||
+ | |||
+ | Format of returned data structure for ANARKEY v2.0: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of returned data structure for ANARKEY v3+: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2FE302----------------------------- | ||
+ | INT 2F U - ANARKEY.COM v3+ - ??? | ||
+ | AX = E302h | ||
+ | BL = ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=E300h | ||
+ | ----------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 | ||
+ | ----------2FE304----------------------------- | ||
+ | INT 2F U - ANARKEY.COM v2+ - ??? | ||
+ | AX = E304h | ||
+ | BL = ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=E300h | ||
+ | ----------2FE305----------------------------- | ||
+ | INT 2F U - ANARKEY.COM v3+ - ENABLE/ | ||
+ | AX = E305h | ||
+ | BL = new state | ||
+ | 01h suspended | ||
+ | 00h enabled | ||
+ | SeeAlso: AX=E300h | ||
+ | ----------2FE306----------------------------- | ||
+ | INT 2F U - ANARKEY.COM v4.0 - GET ??? | ||
+ | AX = E306h | ||
+ | Return: AX = ??? | ||
+ | SeeAlso: AX=E300h | ||
+ | ----------2FE307----------------------------- | ||
+ | INT 2F U - ANARKEY.COM v4.0 - GET ??? | ||
+ | AX = E307h | ||
+ | Return: AX = ??? | ||
+ | BL = ??? | ||
+ | SeeAlso: AX=E300h | ||
+ | ----------2FE44D----------------------------- | ||
+ | INT 2F - NDOS - API | ||
+ | AX = E44Dh | ||
+ | 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, | ||
+ | ----------2FE44EBX0000----------------------- | ||
+ | INT 2F - NDOS - AWAITING USER INPUT | ||
+ | AX = E44Eh | ||
+ | BX = 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 | ||
+ | ----------2FED00----------------------------- | ||
+ | INT 2F - Phar Lap DOS EXTENDERS - INSTALLATION CHECK | ||
+ | AX = ED00h | ||
+ | BL = DOS extender | ||
+ | 01h 286dosx v1.3+ (Software Development Kit) | ||
+ | 02h 286dosx v1.3+ (Run-Time Kit) | ||
+ | 03h 386dosx v4.0+ (SDK) | ||
+ | 04h 386dosx v4.0+ (RTK) | ||
+ | Return: AL = status | ||
+ | 00h not installed | ||
+ | FFh installed | ||
+ | SI = 5048h (" | ||
+ | DI = 4152h (" | ||
+ | CH = major version number | ||
+ | CL = minor version number | ||
+ | DX = flags | ||
+ | bit 0: running under DPMI | ||
+ | 1: running under Phar Lap VMM | ||
+ | SeeAlso: AH=A1h, | ||
+ | ----------2FEE00----------------------------- | ||
+ | INT 2F - GRIDLOC.EXE - INSTALLATION CHECK | ||
+ | AX = EE00h | ||
+ | Return: AL = FFh if installed | ||
+ | Note: | ||
+ | ----------2FF000----------------------------- | ||
+ | INT 2F U - 4MAP - INSTALLATION CHECK | ||
+ | AX = F000h | ||
+ | Return: AX = 00FFh | ||
+ | Notes: | ||
+ | 4MAP is a keybinding program for 4DOS (see AX=D44Dh) by Ho-Ping Tseng | ||
+ | ----------2FF001----------------------------- | ||
+ | INT 2F U - 4MAP - GET KEY MAPPINGS | ||
+ | AX = F001h | ||
+ | Return: ES:BX -> key mappings | ||
+ | SeeAlso: AX=F000h | ||
+ | ----------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, | ||
+ | ----------2FF003----------------------------- | ||
+ | INT 2F U - 4MAP - INSERT CHARACTER INTO ??? | ||
+ | AX = F003h | ||
+ | BL = character to insert | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | 0001h buffer full | ||
+ | SeeAlso: AX=F000h, | ||
+ | ----------2FF1------------------------------- | ||
+ | INT 2F U - MIN-MEM v2.11 - INSTALLATION CHECK | ||
+ | AH = F1h | ||
+ | AL <> F1h | ||
+ | Return: AL = F1h if installed | ||
+ | Note: | ||
+ | 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. | ||
+ | ----------2FF100----------------------------- | ||
+ | INT 2F - DOS EXTENDER INSTALLATION CHECK | ||
+ | AX = F100h | ||
+ | Return: AL = FFh if DOS extender present | ||
+ | SI = 444Fh (" | ||
+ | DI = 5358h (" | ||
+ | Note: | ||
+ | SeeAlso: AH=A1h, | ||
+ | ----------2FF700----------------------------- | ||
+ | INT 2F - AUTOPARK.COM - INSTALLATION CHECK | ||
+ | AX = F700h | ||
+ | Return: AL = 00h not installed | ||
+ | FFh installed | ||
+ | Note: | ||
+ | ----------2FF701----------------------------- | ||
+ | INT 2F - AUTOPARK.COM - SET PARKING DELAY | ||
+ | AX = F701h | ||
+ | BX:CX = 32-bit count of 55ms timer ticks | ||
+ | ----------2FFB------------------------------- | ||
+ | INT 2F - Multiplex - RESERVED BY BORLAND INTERNATIONAL | ||
+ | AH = FBh | ||
+ | ----------2FFB00----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - INSTALLATION CHECK | ||
+ | AX = FB00h | ||
+ | Return: AX = 00FFh if installed | ||
+ | Note: | ||
+ | SeeAlso: INT 10/ | ||
+ | ----------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" | ||
+ | ----------2FFB01----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - ??? | ||
+ | AX = FB01h | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FFB01----------------------------- | ||
+ | INT 2F U - Jot-It! v1.50 - GET USER NAME | ||
+ | AX = FB01h | ||
+ | Return: DX:BX -> ASCIZ user name | ||
+ | SeeAlso: AX=FB02h" | ||
+ | ----------2FFB02----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - ??? | ||
+ | AX = FB02h | ||
+ | Return: AH = ??? | ||
+ | AL = ??? | ||
+ | ----------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" | ||
+ | ----------2FFB03----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - GET NEXT ??? | ||
+ | AX = FB03h | ||
+ | Return: AX = ??? | ||
+ | ----------2FFB03----------------------------- | ||
+ | INT 2F U - Jot-It! v1.50 - UNINSTALL | ||
+ | AX = FB03h | ||
+ | Return: resident code removed from memory | ||
+ | Note: | ||
+ | being unhooked (08h, | ||
+ | SeeAlso: AX=FB00h" | ||
+ | ----------2FFB------------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - SET ??? | ||
+ | AH = FBh | ||
+ | AL = 04h-08h | ||
+ | Return: AX = 0000h | ||
+ | ----------2FFB------------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - SET ??? | ||
+ | AH = FBh | ||
+ | AL = 09h-0Fh (???, 0Eh = COM1, 0Fh = COM2) | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | ----------2FFB------------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - SET ??? | ||
+ | AH = FBh | ||
+ | AL = 10h-1Fh | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------2FFB20----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - SET ??? FLAGS | ||
+ | AX = FB20h | ||
+ | BL = flags to set | ||
+ | SeeAlso: AX=FB21h" | ||
+ | ----------2FFB21----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - CLEAR ??? FLAGS | ||
+ | AX = FB21h | ||
+ | BL = flags to clear | ||
+ | SeeAlso: AX=FB20h" | ||
+ | ----------2FFB22----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - SET ??? | ||
+ | AX = FB22h | ||
+ | BL = ??? | ||
+ | Note: | ||
+ | ----------2FFB28----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - ??? | ||
+ | AX = FB28h | ||
+ | BX = ??? | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=FB29h" | ||
+ | ----------2FFB29----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - ??? | ||
+ | AX = FB29h | ||
+ | BX = ??? | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=FB28h" | ||
+ | ----------2FFB------------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - SET ??? | ||
+ | AH = FBh | ||
+ | AL = 2Bh-34h | ||
+ | BX = ??? | ||
+ | ----------2FFB35----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - SET ??? | ||
+ | AX = FB35h | ||
+ | BL = ??? | ||
+ | ----------2FFB36----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - SET ??? | ||
+ | AX = FB36h | ||
+ | BL = ??? | ||
+ | ----------2FFB37----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - SET ??? | ||
+ | AX = FB37h | ||
+ | BL = ??? | ||
+ | Note: | ||
+ | ----------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 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 | ||
+ | ----------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/ | ||
+ | ----------2FFB42BX0002----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ALLOCATE MEMORY | ||
+ | AX = FB42h | ||
+ | BX = 0002h | ||
+ | ES:SI -> memory block info (see below) | ||
+ | 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/ | ||
+ | |||
+ | Format of memory block info: | ||
+ | Offset Size Description | ||
+ | | ||
+ | bit 0: set if data segment rather than code segment | ||
+ | bit 1: information valid | ||
+ | bit 2: set if DOS memory block rather than DPMI memory block | ||
+ | bit 4: ??? | ||
+ | bit 15: set if no LDT selectors for memory block??? | ||
+ | | ||
+ | ---DPMI memory block--- | ||
+ | | ||
+ | ---DOS memory block--- | ||
+ | | ||
+ | | ||
+ | --- | ||
+ | | ||
+ | | ||
+ | | ||
+ | ---if flags bit 0 clear--- | ||
+ | | ||
+ | | ||
+ | ---if flags bit 0 set--- | ||
+ | | ||
+ | | ||
+ | ----------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: | ||
+ | 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/ | ||
+ | ----------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, | ||
+ | Note: the filename may also be terminated by a CR rather than a NUL under the | ||
+ | BC++ 3.0 version of DPMILOAD | ||
+ | |||
+ | Values for status: | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------2FFB42BX0005----------------------- | ||
+ | INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NAME | ||
+ | AX = FB42h | ||
+ | BX = 0005h | ||
+ | CX = selector of DPMILOAD data (see below) | ||
+ | DS:DX -> ASCIZ or CR-terminated name of ??? (case ignored) | ||
+ | Return: DX = status (see AX=FB42h/ | ||
+ | 0000h successful | ||
+ | AX:BX -> ??? FAR function (called with two words on top of stk) | ||
+ | else | ||
+ | BX destroyed | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | |||
+ | Format of DPMILOAD data: | ||
+ | Offset Size Description | ||
+ | 00h 12 BYTEs ??? | ||
+ | | ||
+ | 0Eh 14 BYTEs ??? | ||
+ | | ||
+ | 1Eh 25 BYTEs ??? | ||
+ | | ||
+ | bit 4: data valid??? | ||
+ | | ||
+ | | ||
+ | 3Eh 12 BYTEs ??? | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ??? | ||
+ | |||
+ | Format of name list entry [array]: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of 6-byte objects: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of memory control record: | ||
+ | Offset Size Description | ||
+ | 00h 20 BYTEs memory block info (see AX=FB42h/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 1Eh 14 BYTEs ??? | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Note: the pointers at offsets 2Ch and 30h form a doubly-linked list, as do | ||
+ | the pointers at offsets 34h and 38h | ||
+ | ----------2FFB42BX0006----------------------- | ||
+ | INT 2F PU - Borland C++ DPMILOAD.EXE - GET ADDRESS OF ??? BY NUMBER | ||
+ | AX = FB42h | ||
+ | BX = 0006h | ||
+ | CX = selector of DPMILOAD data (see AX=FB42h/ | ||
+ | DX = 1-based index into array of ??? 6-byte objects | ||
+ | Return: DX = status (see AX=FB42h/ | ||
+ | 0000h successful | ||
+ | AX:BX -> ??? FAR function (called with two words on top of stk) | ||
+ | else | ||
+ | BX destroyed | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------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. | ||
+ | ----------2FFB42BX0007----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 0007h | ||
+ | CX = selector of DPMILOAD data (see AX=FB42h/ | ||
+ | ??? | ||
+ | Return: DX = status (see AX=FB42h/ | ||
+ | 0000h successful | ||
+ | AX = ??? | ||
+ | ----------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/ | ||
+ | ----------2FFB42BX0008----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - FREE MEMORY BLOCK | ||
+ | AX = FB42h | ||
+ | BX = 0008h | ||
+ | ES:SI -> memory block info (see AX=FB42h/ | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------2FFB42BX0009----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - RESIZE MEMORY BLOCK | ||
+ | AX = FB42h | ||
+ | BX = 0009h | ||
+ | ES:SI -> memory block info (see AX=FB42h/ | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------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/ | ||
+ | ----------2FFB42BX000B----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - UNUSED | ||
+ | AX = FB42h | ||
+ | BX = 000Bh | ||
+ | ----------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 AX=FB42h/ | ||
+ | Return: DX = status??? | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------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 INT 31/ | ||
+ | Return: CX = status | ||
+ | 0000h successful | ||
+ | 0001h failed | ||
+ | SeeAlso: INT 31/AX=0300h | ||
+ | ----------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 AX=FB42h/ | ||
+ | name, 0000h on error | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------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 AX=FB42h/ | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------2FFB42BX0010----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - CONVERT SEGMENT TO SELECTOR | ||
+ | AX = FB42h | ||
+ | BX = 0010h | ||
+ | DX = segment number | ||
+ | Return: CX = status (see also AX=FB42h/ | ||
+ | 0000h successful | ||
+ | DX = selector number for descriptor | ||
+ | 0008h failed | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------2FFB42BX0011----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 0011h | ||
+ | CX = selector of DPMILOAD data (see AX=FB42h/ | ||
+ | ??? | ||
+ | Return: DX = status (see also AX=FB42h/ | ||
+ | 0000h successful | ||
+ | AX:BX -> ??? name | ||
+ | 0002h invalid selector | ||
+ | FFFEh ??? error | ||
+ | ----------2FFB42BX0012----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 0012h | ||
+ | CX = selector for ??? | ||
+ | Return: CX = selector for ??? | ||
+ | ----------2FFB42BX0013----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 0013h | ||
+ | CX = selector of DPMILOAD data (see AX=FB42h/ | ||
+ | DX = 1-based index of ??? | ||
+ | Return: CX = status (see also AX=FB42h/ | ||
+ | 0000h successful | ||
+ | BX = ??? or 0000h | ||
+ | 0002h invalid selector | ||
+ | FFF9h ??? error | ||
+ | ----------2FFB42BX0014----------------------- | ||
+ | INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 0014h ??? | ||
+ | CX = 0001h | ||
+ | Return: BX = 0000h | ||
+ | Note: | ||
+ | real or V86 mode | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------2FFB42BX0015----------------------- | ||
+ | INT 2F RU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 0015h uninstall | ||
+ | CX = 0001h | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | real or V86 mode | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------2FFB42BX0016----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ??? | ||
+ | AX = FB42h | ||
+ | BX = 0016h | ||
+ | CX = selector of DPMILOAD data (see AX=FB42h/ | ||
+ | Return: DX = status (see also AX=FB42h/ | ||
+ | 0000h successful | ||
+ | CX = ??? | ||
+ | ----------2FFB42BX0017----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 0017h | ||
+ | CX = ??? | ||
+ | DX = ??? | ||
+ | ??? | ||
+ | Return: DX = status (0000h, | ||
+ | ----------2FFB42BX0018----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - SET ??? | ||
+ | AX = FB42h | ||
+ | BX = 0018h | ||
+ | CX = ??? | ||
+ | ----------2FFB42BX0019----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 0019h | ||
+ | CX = selector for ??? | ||
+ | ??? | ||
+ | Return: DX = status (see also AX=FB42h/ | ||
+ | 0000h successful | ||
+ | CX = selector for ??? | ||
+ | ----------2FFB42BX001A----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 001Ah | ||
+ | CX = selector for ??? | ||
+ | ??? | ||
+ | Return: DX = status (see also AX=FB42h/ | ||
+ | 0000h successful | ||
+ | 0004h failed | ||
+ | CX:BX -> ??? | ||
+ | ----------2FFB42BX001B----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 001Bh | ||
+ | CX = selector of DPMILOAD data (see AX=FB42h/ | ||
+ | DX = offset of ??? | ||
+ | Return: DX = status (see also AX=FB42h/ | ||
+ | 0000h successful | ||
+ | BX = selector for ??? | ||
+ | CX = selector for ??? | ||
+ | 0002h invalid selector | ||
+ | ----------2FFB42BX001C----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 001Ch | ||
+ | ES = selector for DPMILOAD data (see AX=FB42h/ | ||
+ | CX = 1-based index of ??? | ||
+ | DX = 1-based index of ??? | ||
+ | Return: DX = status (0000h, | ||
+ | ----------2FFB42BX001D----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ??? | ||
+ | AX = FB42h | ||
+ | BX = 001Dh | ||
+ | Return: CX:DX = ??? | ||
+ | ----------2FFB42BX001E----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 001Eh | ||
+ | CX = ??? | ||
+ | ??? | ||
+ | Return: DX = status (see also AX=FB42h/ | ||
+ | 0000h successful | ||
+ | FFF7h ??? error | ||
+ | CX:BX -> ??? | ||
+ | ----------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 AX=FB42h/ | ||
+ | 0000h on error | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------2FFB42BX0020----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - NULL FUNCTION??? | ||
+ | AX = FB42h | ||
+ | BX = 0020h | ||
+ | Return: DX = ??? (always 0000h) | ||
+ | ----------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/ | ||
+ | 0000h successful | ||
+ | AX:BX = selector: | ||
+ | FFF2h unable to get exception handler vector | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------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: | ||
+ | Return: DX = status (0000h, | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------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/ | ||
+ | 0000h successful | ||
+ | CX = real-mode segment number | ||
+ | FFF2h descriptor has invalid base address for real-mode segment | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------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/ | ||
+ | AX:BX = selector: | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------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: | ||
+ | Return: DX = status (0000h, | ||
+ | SeeAlso: AX=FB42h/ | ||
+ | ----------2FFB42BX0026----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - ??? | ||
+ | AX = FB42h | ||
+ | BX = 0026h | ||
+ | CX = selector of DPMILOAD data (see AX=FB42h/ | ||
+ | DX = 1-based index of ??? | ||
+ | ??? | ||
+ | Return: DX = status (0000h, | ||
+ | 0000h successful | ||
+ | BX = offset of ??? within data structure | ||
+ | ----------2FFB42BX0027----------------------- | ||
+ | INT 2F PU - Borland C++ 3.0 DPMILOAD.EXE - GET ??? | ||
+ | AX = FB42h | ||
+ | BX = 0027h | ||
+ | CX = selector of DPMILOAD data (see AX=FB42h/ | ||
+ | DX = offset of ??? | ||
+ | Return: DX = status (see also AX=FB42h/ | ||
+ | 0000h successful | ||
+ | BX = ??? | ||
+ | ----------2FFB42BX0080----------------------- | ||
+ | INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE | ||
+ | AX = FB42h | ||
+ | BX = 0080h | ||
+ | ??? | ||
+ | Return: AX = ??? | ||
+ | ??? | ||
+ | ----------2FFB42BX0081----------------------- | ||
+ | INT 2F U - ??? - CALLED BY Borland C++ 3.0 DPMILOAD.EXE | ||
+ | AX = FB42h | ||
+ | BX = 0081h | ||
+ | ??? | ||
+ | Return: AX = ??? | ||
+ | ??? | ||
+ | ----------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 | ||
+ | ----------2FFB64----------------------------- | ||
+ | INT 2F U - AutoBraille v1.1A - GET ??? | ||
+ | AX = FB64h | ||
+ | Return: AX = ??? (0006h seen) | ||
+ | Note: | ||
+ | ----------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 " | ||
+ | Note: | ||
+ | present only in Borland C++ 2.0; with version 3.0, the DOS extender | ||
+ | was moved into DPMILOAD. | ||
+ | SeeAlso: AH=A1h, | ||
+ | SeeAlso: INT 21/ | ||
+ | ----------2FFBA1BX0082----------------------- | ||
+ | INT 2F U - TKERNEL (Borland DOS extender) - GET ENTRY POINT | ||
+ | AX = FBA1h | ||
+ | BX = 0082h | ||
+ | ES:DI -> response buffer (see below) | ||
+ | Return: ES:DI buffer filled | ||
+ | SeeAlso: AX=FBA1h/ | ||
+ | |||
+ | Format of response buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | |||
+ | Call entry point with: | ||
+ | AX = function number | ||
+ | 0000h initialize??? | ||
+ | STACK: | ||
+ | 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 ??? | ||
+ | DWORD -> program arguments (counted string plus CR) | ||
+ | DWORD -> environment for protected-mode executable | ||
+ | (terminated with two consecutive NULs) | ||
+ | DWORD -> WORD buffer for ??? | ||
+ | Return: | ||
+ | STACK unchanged | ||
+ | 0004h get descriptor | ||
+ | STACK: | ||
+ | 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 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: | ||
+ | DWORD -> WORD (call) max iterations of ??? | ||
+ | (return) 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 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 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: | ||
+ | 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: | ||
+ | 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: | ||
+ | 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 | ||
+ | | ||
+ | STACK: | ||
+ | 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: | ||
+ | Return: AX = selector or 0000h if invalid | ||
+ | STACK unchanged | ||
+ | 0012h get physical address | ||
+ | STACK: | ||
+ | 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: | ||
+ | 0014h copy protected-mode memory to conventional memory, with ??? | ||
+ | STACK: | ||
+ | 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 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: | ||
+ | DWORD -> ??? or 0000h:0000h | ||
+ | Return: AX = 0000h | ||
+ | STACK unchanged | ||
+ | 0017h allocate real-mode procedure??? | ||
+ | STACK: | ||
+ | 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 " | ||
+ | 001Ah get ??? | ||
+ | Return: AX = ??? (0148h seen) | ||
+ | 001Bh free real-mode procedure??? | ||
+ | STACK: | ||
+ | Return: ??? | ||
+ | STACK unchanged | ||
+ | 001Ch check whether packets from protected mode task pending | ||
+ | Return: AX = 0001h if packets pending, 0000h if not | ||
+ | 001Dh set ??? | ||
+ | STACK: | ||
+ | Return: AX,BX destroyed | ||
+ | STACK unchanged | ||
+ | 001Eh ??? | ||
+ | STACK: | ||
+ | DWORD -> data structure (see 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) ??? | ||
+ | (return) offset of this data structure (BUG?) | ||
+ | 001Fh set ??? | ||
+ | STACK: | ||
+ | Return: AX destroyed | ||
+ | STACK unchanged | ||
+ | 0020h ??? | ||
+ | STACK: | ||
+ | Return: AX = ??? | ||
+ | STACK unchanged | ||
+ | 0021h ??? | ||
+ | STACK: | ||
+ | WORD ??? | ||
+ | WORD ??? | ||
+ | Return: AX = ??? | ||
+ | STACK unchanged | ||
+ | 0022h ??? | ||
+ | STACK: | ||
+ | DWORD -> 4-byte buffer for results | ||
+ | Return: AX = ??? | ||
+ | STACK unchanged | ||
+ | 0023h ??? | ||
+ | STACK: | ||
+ | Return: AX = ??? | ||
+ | STACK unchanged | ||
+ | 0024h set ??? | ||
+ | STACK: | ||
+ | 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, | ||
+ | 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, | ||
+ | returns CF set on error, | ||
+ | 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 | ||
+ | ----------2FFBA1BX0084----------------------- | ||
+ | INT 2F U - TKERNEL (Borland DOS extender) - UNINSTALL | ||
+ | AX = FBA1h | ||
+ | BX = 0084h | ||
+ | ES:DI -> response buffer (see below) | ||
+ | Return: ES:DI buffer filled | ||
+ | SeeAlso: AX=FBA1h/ | ||
+ | |||
+ | Format of response buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | 0001h failed (INT 2F hooked by another program) | ||
+ | unchanged if successful | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------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 below) | ||
+ | SeeAlso: INT 80/ | ||
+ | |||
+ | Format of entry point data structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | 08h 24 BYTEs ??? | ||
+ | | ||
+ | |||
+ | Call driver entry point with: | ||
+ | AL = function | ||
+ | 07h speak a string | ||
+ | data buffer (see above) contains: | ||
+ | BYTE | ||
+ | N BYTEs string to speak | ||
+ | ----------2FFE00DI4E55----------------------- | ||
+ | INT 2F U - NORTON UTILITIES 5.0+ TSRs - INSTALLATION CHECK/ | ||
+ | AX = FE00h | ||
+ | DI = 4E55h (" | ||
+ | SI = TSR identifier | ||
+ | 4346h (" | ||
+ | 4353h (" | ||
+ | 4443h (" | ||
+ | 444Dh (" | ||
+ | 4653h (" | ||
+ | Return: SI = TSR reply | ||
+ | lowercase version of SI on entry (i.e. SI OR 2020h) | ||
+ | AH = status | ||
+ | 00h installed but disabled internally | ||
+ | 01h installed and enabled | ||
+ | AL = status | ||
+ | 00h NCACHE-x or DISKREET installed | ||
+ | 01h FILESAVE / EP / DISKMON v6 installed | ||
+ | 45h DISKMON v5 installed | ||
+ | BX = length of *.INI file (DISKMON and FILESAVE/EP only) (see below) | ||
+ | CX = segment of resident portion | ||
+ | FFFFh if completely loaded high (NCACHE) | ||
+ | ---FILESAVE/ | ||
+ | DL = ??? (apparently always 00h) | ||
+ | ---DISKMON--- | ||
+ | DX = ??? (apparently always 1AE6h [v5] / 1B86h [v6]) | ||
+ | Note: the value returned in CX is incorrect for NCACHE 6.00 | ||
+ | SeeAlso: AX=FE01h, | ||
+ | |||
+ | Format of DISKMON.INI file: | ||
+ | Offset Size Description | ||
+ | -6Ch 108 BYTEs (in memory copy only) | ||
+ | list of filenames which are always protected: | ||
+ | IBMBIO.COM/ | ||
+ | MIO.SYS/ | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 01h system area | ||
+ | 02h files | ||
+ | 03h system area and files | ||
+ | 04h entire disk | ||
+ | | ||
+ | 05h 27 BYTEs filename extension list (9 entries) | ||
+ | (lowercase, | ||
+ | 20h 240 BYTEs filename list (20 entries) | ||
+ | (lowercase, | ||
+ | Note: | ||
+ | CX:052Fh -> copy in installed TSR (v6) | ||
+ | |||
+ | Format of FILESAVE.INI / EP.INI file: | ||
+ | Offset Size Description | ||
+ | 00h 26 BITs drive list (bit set: file protection on, cleared: off): | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 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) | ||
+ | | ||
+ | | ||
+ | | ||
+ | Note: | ||
+ | CX:03F5h -> copy in installed TSR (v6.0) | ||
+ | ----------2FFE01DI4E55----------------------- | ||
+ | INT 2F U - NORTON UTILITIES 5.0+ TSRs - ENABLE | ||
+ | AX = FE01h | ||
+ | DI = 4E55h (" | ||
+ | SI = TSR identifier (see AX=FE00h) | ||
+ | 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/ | ||
+ | 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, | ||
+ | ----------2FFE02DI4E55----------------------- | ||
+ | INT 2F U - NORTON UTILITIES 5.0+ TSRs - DISABLE | ||
+ | AX = FE02h | ||
+ | DI = 4E55h (" | ||
+ | SI = TSR identifier (see AX=FE00h) | ||
+ | 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) | ||
+ | Note: (see AX=FE01h) | ||
+ | SeeAlso: AX=FE00h, | ||
+ | ----------2FFE03DI4E55----------------------- | ||
+ | INT 2F U - NORTON UTILITIES 5.0+ TSRs - internal - ??? | ||
+ | AX = FE03h | ||
+ | DI = 4E55h (" | ||
+ | SI = TSR identifier (see AX=FE00h) | ||
+ | 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 | ||
+ | reportedly dangerous | ||
+ | SeeAlso: AX=FE00h | ||
+ | ----------2FFE04DI4E55----------------------- | ||
+ | INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ??? | ||
+ | AX = FE04h | ||
+ | DI = 4E55h (" | ||
+ | SI = TSR identifier (see AX=FE00h) | ||
+ | Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h) | ||
+ | AX = status | ||
+ | 0008h successful??? | ||
+ | SeeAlso: AX=FE00h | ||
+ | ----------2FFE05DI4E55----------------------- | ||
+ | INT 2F U - NORTON UTILITIES 5.0+ DISKMON, FILESAVE / EP - internal - ??? | ||
+ | AX = FE05h | ||
+ | DI = 4E55h (" | ||
+ | SI = TSR identifier (see AX=FE00h) | ||
+ | Return: SI = TSR reply (lowercase version of entry SI, i.e. SI or 2020h) | ||
+ | AX = status | ||
+ | 000Ah successful??? | ||
+ | Note: | ||
+ | SeeAlso: AX=FE00h | ||
+ | ----------2FFF00----------------------------- | ||
+ | INT 2F - Topware Network Operating System - INSTALLATION CHECK | ||
+ | AX = FF00h | ||
+ | Return: AL = 00h not installed, OK to install | ||
+ | = 01h not installed, not OK to install | ||
+ | = FFh installed | ||
+ | SeeAlso: AX=FF01h, | ||
+ | ----------2FFF01----------------------------- | ||
+ | INT 2F - Topware Network Operating System - GET VERSION | ||
+ | AX = FF01h | ||
+ | Return: AX = version | ||
+ | SeeAlso: AX=FF00h | ||
+ | ----------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 | ||