You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6210 lines
244 KiB
6210 lines
244 KiB
Interrupt List, part 11 of 18
|
|
Copyright (c) 1989-1999,2000 Ralf Brown
|
|
--------D-26---------------------------------
|
|
INT 26 - DOS 1+ - ABSOLUTE DISK WRITE (except partitions > 32M)
|
|
AL = drive number (00h = A:, 01h = B:, etc)
|
|
CX = number of sectors to write (not FFFFh)
|
|
DX = starting logical sector number (0000h - highest sector on drive)
|
|
DS:BX -> data to write
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AH = status (see #02547)
|
|
AL = error code (same as passed to INT 24 in DI)
|
|
AX = 0207h if more than 64K sectors on drive -- use new-style call
|
|
may destroy all other registers except segment registers
|
|
Notes: original flags are left on stack, and must be popped by caller
|
|
this call bypasses the DOS filesystem, though DOS 5+ invalidates any
|
|
disk buffers referencing sectors which are written with this call
|
|
examination of CPWIN386.CPL indicates that if this call fails with
|
|
error 0408h on an old-style (<32M) call, one should retry the
|
|
call with the high bit of the drive number in AL set
|
|
Novell DOS 7 decides whether the old-style or new-style (>32M) version
|
|
of INT 26 must be used solely on the basis of the partition's size,
|
|
thus forcing use of the new-style call even for data in the first
|
|
32M of the partition
|
|
Windows98 will display an error message and deliberately hang the
|
|
system on attempted write to any hard disk if neither bit 7 of the
|
|
Extended Drive Info byte nor bit 6 of "DOS_FLAG" (List-of-Lists+60h)
|
|
is set
|
|
Although all registers except segment registers may be destroyed
|
|
some software depends on some of the registers being preserved.
|
|
For example some Flash disk drivers requires that DX is not trashed.
|
|
DR-DOS 7.03 takes care of this.
|
|
BUGS: DOS 3.1 through 3.3 set the word at ES:[BP+1Eh] to FFFFh if AL is an
|
|
invalid drive number
|
|
DR DOS 3.41 will return with a jump instead of RETF, leaving the
|
|
wrong number of bytes on the stack; use the huge-partition version
|
|
(INT 26/CX=FFFFh) for all partition sizes under DR DOS 3.41
|
|
DR DOS 6.0 original releases 05/1991 & 08/1991 reported wrong error
|
|
codes for "drive not ready" and "write protect". This was fixed
|
|
with the DR DOS BDOS patch "PAT321" (1992/02/19, XDIR /C: 947Bh)
|
|
and later "full" rebuilds (see INT21/AX=4452h for details).
|
|
SeeAlso: INT 13/AH=03h,INT 25,INT 26/CX=FFFFh,INT 21/AX=7305h,INT 21/AH=91h"PTS"
|
|
--------D-26----CXFFFF-----------------------
|
|
INT 26 - DOS 3.31+ - ABSOLUTE DISK WRITE (32M-2047M hard-disk partition)
|
|
CX = FFFFh
|
|
AL = drive number (0=A, 1=B, etc)
|
|
DS:BX -> disk write packet (see #02552)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AH = status (see #02547)
|
|
AL = error code (same as passed to INT 24 in DI)
|
|
may destroy all other registers except segment registers
|
|
Notes: partition is potentially >32M (and requires this form of the call) if
|
|
bit 1 of the device attribute word in the device driver is set
|
|
original flags are left on stack, and must be removed by caller
|
|
this call bypasses the DOS filesystem, though DOS 5+ invalidates any
|
|
disk buffers referencing sectors which are written with this call
|
|
for FAT32 drives (which may be up to 2TB in size), use INT 21/AX=7305h
|
|
Windows98 will display an error message and deliberately hang the
|
|
system on attempted write to any hard disk if neither bit 7 of the
|
|
Extended Drive Info byte nor bit 6 of "DOS_FLAG" (List-of-Lists+60h)
|
|
is set
|
|
SeeAlso: INT 13/AH=03h,INT 25/CX=FFFFh,INT 26,INT 21/AX=7305h
|
|
|
|
Format of disk write packet:
|
|
Offset Size Description (Table 02552)
|
|
00h DWORD sector number
|
|
04h WORD number of sectors to read
|
|
06h DWORD transfer address
|
|
SeeAlso: #02548
|
|
--------G-26---------------------------------
|
|
INT 26 - COMTROL HOSTESS i/ISA DEBUGGER - ENTER/EXIT EXTENDED ADDRESSING MODE
|
|
???
|
|
Return: ???
|
|
SeeAlso: INT 23"COMTROL",INT 27"COMTROL"
|
|
--------D-27---------------------------------
|
|
INT 27 - DOS 1+ - TERMINATE AND STAY RESIDENT
|
|
DX = number of bytes to keep resident (max FFF0h)
|
|
CS = segment of PSP
|
|
Return: never
|
|
Notes: this is an obsolete call
|
|
INT 22, INT 23, and INT 24 are restored from the PSP
|
|
does not close any open files
|
|
the minimum number of bytes which will remain resident is 110h for
|
|
DOS 2.x and 60h for DOS 3.0+; there is no minimum for DOS 1.x, which
|
|
implements this service in COMMAND.COM rather than the DOS kernel
|
|
SeeAlso: INT 21/AH=31h
|
|
--------G-27---------------------------------
|
|
INT 27 - COMTROL HOSTESS i/ISA DEBUGGER - INVOKE REMOTE TURBO DEBUGGER KERNEL
|
|
???
|
|
Return: ???
|
|
Desc: invoke a copy of the remote Turbo Debugger kernel on the Hostess i
|
|
controller
|
|
SeeAlso: INT 20"COMTROL",INT 26"COMTROL"
|
|
--------D-28---------------------------------
|
|
INT 28 C - DOS 2+ - DOS IDLE INTERRUPT
|
|
SS:SP = top of MS-DOS stack for I/O functions
|
|
Return: all registers preserved
|
|
Desc: This interrupt is invoked each time one of the DOS character input
|
|
functions loops while waiting for input. Since a DOS call is in
|
|
progress even though DOS is actually idle during such input waits,
|
|
hooking this function is necessary to allow a TSR to perform DOS
|
|
calls while the foreground program is waiting for user input. The
|
|
INT 28h handler may invoke any INT 21h function except functions
|
|
00h through 0Ch.
|
|
Notes: under DOS 2.x, the critical error flag (the byte immediately after the
|
|
InDOS flag) must be set in order to call DOS functions 50h/51h from
|
|
the INT 28h handler without destroying the DOS stacks.
|
|
calls to INT 21/AH=3Fh,40h from within an INT 28 handler may not use a
|
|
handle which refers to CON
|
|
at the time of the call, the InDOS flag (see INT 21/AH=34h) is normally
|
|
set to 01h; if larger, DOS is truly busy and should not be reentered
|
|
the default handler is an IRET instruction
|
|
supported in OS/2 compatibility box
|
|
the _MS-DOS_Programmer's_Reference_ for DOS 5.0 incorrectly documents
|
|
this interrupt as superseded
|
|
the performance of NetWare Lite servers (and probably other peer-to-
|
|
peer networks) can be dramatically improved by calling INT 28
|
|
frequently from an application's idle loop
|
|
SeeAlso: INT 21/AH=34h,INT 2A/AH=84h,INT 2F/AX=1680h
|
|
--------U-289999-----------------------------
|
|
INT 28 u - PCXDUMP v9.00+ - INSTALLATION CHECK
|
|
AX = 9999h
|
|
Return: AX = AAAAh if installed
|
|
CX = version number * 100 (example: 03A2h = 930 = v9.30)
|
|
DL = interrupt used by the dump function (see #02553)
|
|
(00h if call not available)
|
|
BX = CS of PCXDUMP's INT 28 handler (undocumented)
|
|
ES = segment of PCXDUMP's memory block (v9.30, undocumented)
|
|
Program: PCXDUMP is a shareware screen grabber saving in PCX format
|
|
Notes: if DL<>00h a dump can be requested by calling INT DL as shown
|
|
below (the user can choose the interrupt number at installation
|
|
time); if DL=00h the dump function can be called only by hotkeys
|
|
(this is the default)
|
|
|
|
(Table 02553)
|
|
Call PCXDUMP screen-dump function with:
|
|
INT xx
|
|
AX = 1234h
|
|
BX = dump type
|
|
0000h Color dump
|
|
0001h Immediate color dump
|
|
0002h Black/White dump
|
|
0003h Immediate B/W dump
|
|
0004h Inverted B/W dump
|
|
0005h Gray scaled dump
|
|
0006h Inverted gray scaled dump
|
|
0007h Text screen dump to text file
|
|
0008h Text screen dump to ansi file
|
|
Return: nothing
|
|
Notes: if BX=0001h, 0003h, 0007h or 0008h the whole screen will be
|
|
dumped; the other valid values will draw a selection frame
|
|
on the screen except in text modes (text modes allow only
|
|
full screen dumps)
|
|
this function doesn't perform the dump, it only requests it;
|
|
the dump will be performed after a few milliseconds if it's
|
|
safe to do so, thus the author recommends putting a 60 ms delay
|
|
after this call
|
|
--------D-29---------------------------------
|
|
INT 29 C - DOS 2+ - FAST CONSOLE OUTPUT
|
|
AL = character to display
|
|
Return: nothing
|
|
BX may be destroyed by some versions of DOS 3.3
|
|
Notes: automatically called when writing to a device with bit 4 of its device
|
|
driver header set (see also INT 21/AH=52h)
|
|
COMMAND.COM v3.2 and v3.3 compare the INT 29 vector against the INT 20
|
|
vector and assume that ANSI.SYS is installed if the segment is larger
|
|
the default handler under DOS 2.x and 3.x simply calls INT 10/AH=0Eh
|
|
the default handler under DESQview 2.2 understands the <Esc>[2J
|
|
screen-clearing sequence, calls INT 10/AH=0Eh for all others
|
|
SeeAlso: INT 21/AH=52h,INT 2F/AX=0802h,INT 79"AVATAR.SYS"
|
|
--------U-29E60DCL0E-------------------------
|
|
INT 29 - ShowGFX - INSTALLATION CHECK
|
|
AX = E60Dh
|
|
CL = 0Eh
|
|
DX = C0DEh
|
|
Return: DX = DEC0h
|
|
Program: ShowGFX is a PCBoard graphics driver by Solar Designer
|
|
--------N-2A00-------------------------------
|
|
INT 2A - NETWORK - INSTALLATION CHECK
|
|
AH = 00h
|
|
Return: AH <> 00h if installed
|
|
CF set if NetWare v2.15 NetBIOS emulator installed
|
|
Note: supported by PC LAN Program, LAN Manager, LANtastic, NetWare, 10NET,
|
|
etc.
|
|
SeeAlso: INT 5C"NetBIOS"
|
|
--------N-2A0000-----------------------------
|
|
INT 2A - AT&T Starlan Extended NetBIOS (var length names) - INSTALLATION CHECK
|
|
AX = 0000h
|
|
Return: AH = DDh
|
|
SeeAlso: INT 5B"Extended NetBIOS"
|
|
--------N-2A01-------------------------------
|
|
INT 2A - NETWORK (Microsoft,LANtastic) - EXECUTE NETBIOS REQUEST,NO ERROR RETRY
|
|
AH = 01h
|
|
ES:BX -> NCB (see #03249 at INT 5C"NetBIOS")
|
|
Return: AL = NetBIOS error code
|
|
AH = status
|
|
00h no error
|
|
01h error occurred
|
|
SeeAlso: AH=04h,AX=0500h,INT 5B"Extended NetBIOS",INT 5C"NetBIOS"
|
|
--------N-2A02-------------------------------
|
|
INT 2A - NETWORK (Microsoft) - SET NET PRINTER MODE
|
|
AH = 02h
|
|
???
|
|
Return: ???
|
|
--------N-2A0300-----------------------------
|
|
INT 2A - NETWORK - CHECK DIRECT I/O
|
|
AX = 0300h
|
|
DS:SI -> ASCIZ device name (may be full path or only drive specifier--
|
|
must include the colon)
|
|
Return: CF clear if direct physical addressing (INT 13,INT 25) permissible
|
|
CF set if access via files only
|
|
Notes: do not use direct disk accesses if this function returns CF set or the
|
|
device is redirected (INT 21/AX=5F02h)
|
|
use AH=00h to determine whether the network is installed; if not,
|
|
direct physical access is allowed
|
|
may take some time to execute, so programs which need to check
|
|
frequently should save the result of the first call
|
|
this function is called by the DOS kernel on INT 25 and INT 26
|
|
supported by PC LAN Program, LAN Manage, LANtastic, NetWare, 10NET,
|
|
etc.
|
|
SeeAlso: INT 13/AH=02h,INT 13/AH=03h,INT 25,INT 26,INT 21/AX=5F02h
|
|
--------N-2A04-------------------------------
|
|
INT 2A - NETWORK - EXECUTE NetBIOS REQUEST
|
|
AH = 04h
|
|
AL = error retry
|
|
00h automatically retry request on errors 09h, 12h, and 21h
|
|
(see #03248 at INT 5C"NetBIOS")
|
|
01h no retry
|
|
02h ???
|
|
ES:BX -> Network Control Block (see #03249 at INT 5C"NetBIOS")
|
|
Return: AX = 0000h if successful
|
|
AH = 01h on error
|
|
AL = error code
|
|
Notes: invokes either INT 5B or INT 5C as appropriate
|
|
supported by PC LAN Program, LANtastic, LAN Manager, NetWare, 10NET,
|
|
etc.
|
|
NetWare 2.15 NetBIOS emulator returns CF clear if successful, CF set
|
|
on error
|
|
PC LAN Program defines any non-zero return value in AH as an error
|
|
indicator for subfunction 00h, and any non-zero return value in AX
|
|
as an error indicator for subfunction 01h
|
|
SeeAlso: AH=00h,AH=01h,AX=0500h,INT 5B"Extended NetBIOS",INT 5C"NetBIOS"
|
|
--------N-2A0500-----------------------------
|
|
INT 2A - NETWORK - GET NETWORK RESOURCE AVAILABILITY
|
|
AX = 0500h
|
|
Return: AX reserved
|
|
BX = number of network names available
|
|
CX = number of network control blocks available
|
|
DX = number of network sessions available
|
|
Notes: supported by PC LAN Program, LAN Manager, LANtastic, NetWare, 10NET,
|
|
etc.
|
|
the application should call this function before using any network
|
|
resources, and maintain its own count to avoid exceeding the
|
|
network's resource limits
|
|
SeeAlso: AH=00h,AH=01h,AH=04h,INT 5C"NetBIOS"
|
|
--------N-2A06-------------------------------
|
|
INT 2A - NETBIOS, LANtastic - NETWORK PRINT-STREAM CONTROL
|
|
AH = 06h
|
|
AL = function
|
|
01h set concatenation mode
|
|
all printer output put in one job until return to DOS prompt
|
|
02h set truncation mode (default)
|
|
printer open/close or BIOS/DOS output switch starts new job
|
|
03h flush printer output and start new print job
|
|
Return: CF set on error
|
|
AX = error code
|
|
CF clear if successful
|
|
Notes: subfunction 03h is equivalent to Ctrl/Alt/keypad-*
|
|
supported by PC LAN Program, LANtastic, NetWare, 10NET, etc.
|
|
LANtastic v4.x no longer supports this call
|
|
this function sets the printer mode for all redirected printers
|
|
SeeAlso: INT 21/AX=5D08h,INT 21/AX=5D09h,INT 2F/AX=1125h
|
|
--------N-2A07-------------------------------
|
|
INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
|
|
AH = 07h
|
|
???
|
|
Return: ???
|
|
Program: PC Network is an early networking package which was renamed the
|
|
IBM PC Local Area Network Program (PC LAN Program) as of v1.10
|
|
SeeAlso: AH=86h
|
|
--------N-2A2001-----------------------------
|
|
INT 2A - MS Networks or NETBIOS - ???
|
|
AX = 2001h
|
|
???
|
|
Return: ???
|
|
Note: intercepted by DESQview 2.x
|
|
--------N-2A2002-----------------------------
|
|
INT 2A - NETWORK - ???
|
|
AX = 2002h
|
|
???
|
|
Return: ???
|
|
Note: called by MS-DOS 3.30-6.00 APPEND
|
|
--------N-2A2003-----------------------------
|
|
INT 2A - NETWORK - ???
|
|
AX = 2003h
|
|
???
|
|
Return: ???
|
|
Note: called by MS-DOS 3.30-6.00 APPEND
|
|
--------N-2A4147DX0000-----------------------
|
|
INT 2A U - NetSoft DOS-NET v1.20+ - INSTALLATION CHECK
|
|
AX = 4147h ('AG')
|
|
DX = 0000h
|
|
Return: DX = 4147h if installed
|
|
DS:SI -> configuration data (see #02554)
|
|
Program: DOS-NET is a shareware networking package by Albert Graham
|
|
Note: this call is supported by CLIENT.COM, SERVER.COM, ROUTER.COM, and
|
|
NETDOS.COM
|
|
SeeAlso: INT 65/DX=4147h,INT 65/DX=4741h
|
|
|
|
Format of DOS-NET v1.20 configuration data area:
|
|
Offset Size Description (Table 02554)
|
|
00h BYTE ???
|
|
01h BYTE interrupt number used by DOS-NET APIs
|
|
02h WORD function number to place in AX for above interrupt
|
|
04h BYTE minor version as two BCD digits (e.g. 20h for v1.20)
|
|
05h BYTE major version number (01h for v1.20)
|
|
06h 2 BYTEs ???
|
|
08h WORD ??? (used by ARCNET.COM)
|
|
bit 15: ??? (set by MACTEST.COM)
|
|
0Ah WORD ??? (used by NDIS.COM and ODI.COM)
|
|
0Ch 22 BYTEs ???
|
|
24h DWORD -> ??? function (set by PROTECT.COM)
|
|
28h 12 BYTEs ???
|
|
34h DWORD -> ??? function (set by FASTVIEW.COM)
|
|
38h DWORD -> ??? function (set by FASTVIEW.COM)
|
|
58h DWORD -> ??? (offsets 04h and 1Ah from value are used by NETFILES)
|
|
???
|
|
7Ch WORD ???
|
|
7Eh WORD ??? (may be high half of a DWORD at 7Ch)
|
|
???
|
|
A8h DWORD -> ??? (used by SM.COM)
|
|
???
|
|
114h WORD ???
|
|
116h WORD ??? (may be high half of a DWORD at 114h)
|
|
???
|
|
1BDh BYTE ??? flags
|
|
bit 0: ???
|
|
bit 6: ???
|
|
???
|
|
1E1h BYTE ???
|
|
???
|
|
208h WORD ??? (used by SM.COM, MACTEST)
|
|
282h WORD ???
|
|
284h 2 BYTEs ???
|
|
286h WORD ??? flags
|
|
bit 0: ???
|
|
???
|
|
31Eh WORD ???
|
|
320h WORD ??? (used by NDIS.COM and ODI.COM)
|
|
322h 8 BYTEs ???
|
|
32Ah WORD ??? (used by NDIS.COM and ODI.COM)
|
|
???
|
|
33Eh 4 BYTEs ??? (used by ODI.COM)
|
|
342h N BYTEs ??? (used by NDIS.COM)
|
|
???
|
|
3CFh BYTE ??? flags
|
|
bit 2: ???
|
|
3D2h BYTE installed-component flags
|
|
bit 0: PROTECT installed
|
|
bit 1: NETCACHE installed
|
|
bit 3: SM.COM installed
|
|
bit 7: NETDEBUG installed
|
|
3D3h BYTE installed-component flags
|
|
bit 0: NETFILES installed
|
|
bit 6: FASTVIEW installed
|
|
???
|
|
3FFh BYTE ??? (used by NDIS.COM)
|
|
400h BYTE ???
|
|
401h BYTE ??? (used by SM.COM)
|
|
402h BYTE ??? (used by SM.COM)
|
|
???
|
|
448h BYTE ???
|
|
449h BYTE ??? (used by MACTEST)
|
|
44Ah BYTE ??? (used by PROTECT)
|
|
44Bh BYTE ???
|
|
44Ch BYTE ???
|
|
44Dh BYTE ??? (used by SM.COM)
|
|
44Eh BYTE ??? (used by SM.COM, MACTEST)
|
|
???
|
|
--------N-2A7802-----------------------------
|
|
INT 2A - NETWORK - PC LAN PROG v1.31+ - GET LOGGED ON USER NAME
|
|
AX = 7802h
|
|
ES:DI -> 8-byte buffer to be filled
|
|
Return: AL = 00h if no user logged on to Extended Services
|
|
AL <> 00h if user logged on to Extended Services
|
|
buffer at ES:DI filled with name, padded to 8 chars with blanks.
|
|
--------D-2A80-------------------------------
|
|
INT 2A CU - NETWORK - BEGIN DOS CRITICAL SECTION
|
|
AH = 80h
|
|
AL = critical section number (00h-0Fh) (see #02555)
|
|
Notes: normally hooked to avoid interrupting a critical section, rather than
|
|
called
|
|
the handler should ensure that none of the critical sections are
|
|
reentered, usually by suspending a task which attempts to reenter
|
|
an active critical section
|
|
the DOS kernel does not invoke critical sections 01h and 02h unless it
|
|
is patched. DOS 3.1+ contains a zero-terminated list of words
|
|
beginning at offset -11 from the Swappable Data Area
|
|
(see #01687 at INT 21/AX=5D06h); each word contains the offset within
|
|
the DOS data segment of a byte which must be changed from C3h (RET)
|
|
to 50h (PUSH AX) under DOS 3.x or from 00h to a nonzero value under
|
|
DOS 4.0+ to enable use of critical sections. For DOS 4.0+, all
|
|
words in this list point at the byte at offset 0D0Ch.
|
|
MS Windows patches the DOS kernel's calls to INT 2A/AH=80h-81h into
|
|
far calls to its own handler, and does not reflect the calls back
|
|
to INT 2A unless SYSTEM.INI contains ReflectDOSInt2A=1 or
|
|
ModifyDOSInt2A=0 in the [386Enh] section
|
|
Novell NETX does not issue INT 2A/AH=80h and INT 2A/AH=81h calls when
|
|
it intercepts INT 21 calls and processes them itself
|
|
SeeAlso: AH=81h,AH=82h,AX=8700h,INT 21/AX=5D06h,INT 21/AX=5D0Bh
|
|
|
|
(Table 02555)
|
|
Values for DOS critical section number:
|
|
01h DOS kernel, SHARE.EXE, DOSMGR
|
|
apparently for maintaining the integrity of DOS/SHARE/NET
|
|
data structures
|
|
02h DOS kernel, DOSMGR
|
|
ensures that no multitasking occurs while DOS is calling an
|
|
installable device driver
|
|
05h network redirector
|
|
06h DOS 4.x only IFSFUNC
|
|
08h ASSIGN.COM
|
|
0Ah MSCDEX, CORELCDX
|
|
0Fh IBM PC LAN server (while intercepting INT 10/AH=06h,07h,0Eh)
|
|
--------D-2A81-------------------------------
|
|
INT 2A CU - NETWORK - END DOS CRITICAL SECTION
|
|
AH = 81h
|
|
AL = critical section number (00h-0Fh) (see #02555)
|
|
Notes: normally hooked rather than called
|
|
the handler should reawaken any tasks which were suspended due to an
|
|
attempt to enter the specified critical section
|
|
MS Windows patches the DOS kernel's calls to INT 2A/AH=80h-81h into
|
|
far calls to its own handler, and does not reflect the calls back
|
|
to INT 2A unless SYSTEM.INI contains ReflectDOSInt2A=1 or
|
|
ModifyDOSInt2A=0 in the [386Enh] section
|
|
SeeAlso: AH=80h,AH=82h,AX=8700h
|
|
--------D-2A82-------------------------------
|
|
INT 2A CU - NETWORK - END DOS CRITICAL SECTIONS 0 THROUGH 7
|
|
AH = 82h
|
|
Notes: called by the INT 21h function dispatcher for function 0 and functions
|
|
greater than 0Ch except 59h, and on process termination
|
|
the handler should reawaken any tasks which were suspended due to an
|
|
attempt to enter one of the critical sections 0 through 7
|
|
SeeAlso: AH=81h
|
|
--------N-2A84-------------------------------
|
|
INT 2A CU - NETWORK - KEYBOARD BUSY LOOP
|
|
AH = 84h
|
|
Notes: similar to DOS's INT 28h, called from inside the DOS keyboard input
|
|
loop (i.e. INT 21/AH=07h or INT 21/AH=08h) to allow the network
|
|
software to process requests
|
|
Novell DOS 7+ calls this function with AX=8400h from inside of
|
|
the keyboard input loop.
|
|
SeeAlso: INT 28
|
|
--------N-2A86-------------------------------
|
|
INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
|
|
AH = 86h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AH=07h,AH=C4h
|
|
--------P-2A8700-----------------------------
|
|
INT 2A CU - PRINT - BEGIN BACKGROUND PRINTING
|
|
AX = 8700h
|
|
CF clear
|
|
Return: CF clear if OK to print in background now
|
|
CF set if background printing not allowed at this time
|
|
Desc: used to inform interested programs that PRINT is about to start its
|
|
background processing, and allow those programs to postpone the
|
|
processing if necessary
|
|
Notes: when PRINT gains control and wants to begin printing, it calls this
|
|
function. If CF is clear on return, PRINT begins its background
|
|
processing, and calls AX=8701h when it is done. If CF is set on
|
|
return, PRINT will relinquish control immediately, and will not
|
|
call AX=8701h
|
|
PCVENUS (an early network shell by IBM and CMU) hooks this call to
|
|
prevent background printing while its own code is active
|
|
SeeAlso: AH=80h,AH=81h,AX=8701h
|
|
--------P-2A8701-----------------------------
|
|
INT 2A CU - PRINT - END BACKGROUND PRINTING
|
|
AX = 8701h
|
|
Desc: used to inform interested programs that PRINT has completed its
|
|
background processing
|
|
Note: called by PRINT after it has performed some background printing; not
|
|
called if AX=8700h returned with CF set.
|
|
SeeAlso: AX=8700h
|
|
--------N-2A89-------------------------------
|
|
INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
|
|
AH = 89h
|
|
AL = ??? (ASSIGN uses 08h)
|
|
???
|
|
Return: ???
|
|
--------I-2A90-------------------------------
|
|
INT 2A U - IBM PC 3270 EMULATION PROGRAM - ???
|
|
AH = 90h
|
|
???
|
|
Return: ???
|
|
Note: the LANtastic redirector and SERVER.EXE use this function with AL=01h,
|
|
03h-07h,0Ch-11h
|
|
--------N-2AC2-------------------------------
|
|
INT 2A U - Network - ???
|
|
AH = C2h
|
|
AL = subfunction
|
|
07h ???
|
|
08h ???
|
|
BX = 0001h
|
|
???
|
|
Return: ???
|
|
Note: this function is called by the DOS 3.30-6.00 APPEND
|
|
--------N-2AC4-------------------------------
|
|
INT 2A U - PC Network v1.00 - RECEIVER.COM - ???
|
|
AH = C4h
|
|
AL = subfunction
|
|
07h ???
|
|
08h ???
|
|
BX = ???
|
|
???
|
|
Return: ???
|
|
SeeAlso: AH=86h
|
|
--------N-2AD800-----------------------------
|
|
INT 2A U - Novell NetWare Lite - SERVER - DOS CRITICAL SECTION DISABLE
|
|
AX = D800h
|
|
Return: nothing
|
|
Desc: sets ??? flag, and sets ??? to initial value
|
|
Note: called by CLIENT for communication between client and server
|
|
SeeAlso: AX=D801h,AX=D850h
|
|
--------N-2AD801-----------------------------
|
|
INT 2A U - Novell NetWare Lite - SERVER - DOS CRITICAL SECTION ENABLE
|
|
AX = D801h
|
|
Return: nothing
|
|
Desc: clears the ??? flag set by AX=D800h
|
|
Note: called by CLIENT for communication between client and server
|
|
SeeAlso: AX=D800h,AX=D850h
|
|
--------N-2AD850-----------------------------
|
|
INT 2A U - Novell NetWare Lite - CLIENT - START SERVER CRITICAL SECTION
|
|
AX = D850h
|
|
Return: nothing
|
|
Desc: increments an internal byte-sized counter
|
|
Note: this function is intercepted by DV/X 1.10 PEERSERV.DVR and the
|
|
Advanced NetWare 4.0 DOS Requester
|
|
SeeAlso: AX=D851h
|
|
--------N-2AD851-----------------------------
|
|
INT 2A U - Novell NetWare Lite - CLIENT - END SERVER CRITICAL SECTION
|
|
AX = D851h
|
|
Return: nothing
|
|
Desc: resets an internal byte-sized counter to zero
|
|
Note: this function is intercepted by DV/X 1.10 PEERSERV.DVR and the
|
|
Advanced NetWare 4.0 DOS Requester
|
|
SeeAlso: AX=D850h
|
|
--------N-2AD852-----------------------------
|
|
INT 2A U - Novell NetWare - DOS Requester v1.03 - SERVER LOADED
|
|
AX = D852h
|
|
Return: ???
|
|
Note: calls the NetWare Lite SERVER installation check, and sets ??? pointer
|
|
SeeAlso: AX=D853h,INT 2F/AX=D880h
|
|
--------N-2AD853-----------------------------
|
|
INT 2A U - Novell NetWare - DOS Requester v1.03 - SERVER UNLOADED
|
|
AX = D853h
|
|
Return: ???
|
|
Note: clears the pointer set by AX=D852h
|
|
SeeAlso: AX=D852h
|
|
--------N-2AE0-------------------------------
|
|
INT 2A U - PC Network 1.00 - ???
|
|
AH = E0h
|
|
AL = subfunction??? (01h,02h, maybe others)
|
|
???
|
|
Return: ???
|
|
Note: called by PCNet 1.00 NET.COM, a shell program from which others are run
|
|
--------N-2AFF90-----------------------------
|
|
INT 2A - PC/TCP PREDIR.EXE - ???
|
|
AX = FF90h
|
|
Return: AX = ???
|
|
Note: PREDIR.EXE is the network printer redirector included as part of the
|
|
PC/TCP system by FTP Software, Inc.
|
|
--------N-2AFF91-----------------------------
|
|
INT 2A - PC/TCP PREDIR.EXE - ???
|
|
AX = FF91h
|
|
BX = ???
|
|
Return: AX = status???
|
|
--------N-2AFF92-----------------------------
|
|
INT 2A - PC/TCP PREDIR.EXE - INSTALLATION CHECK
|
|
AX = FF92h
|
|
Return: AX = 0000h if installed
|
|
BX = redirected printer port (FFFFh if no printers redirected)
|
|
CX = version (CH = major, CL = minor)
|
|
Note: PREDIR.EXE is the network printer redirector included as part of the
|
|
PC/TCP system by FTP Software, Inc.
|
|
--------N-2AFF93-----------------------------
|
|
INT 2A - PC/TCP PREDIR.EXE - ???
|
|
AX = FF93h
|
|
Return: AX = ???
|
|
--------N-2AFF94-----------------------------
|
|
INT 2A - PC/TCP PREDIR.EXE - ???
|
|
AX = FF94h
|
|
BX = ???
|
|
CX = ???
|
|
DX = ???
|
|
Return: AX = ???
|
|
Note: PREDIR.EXE is the network printer redirector included as part of the
|
|
PC/TCP system by FTP Software, Inc.
|
|
--------N-2AFF95-----------------------------
|
|
INT 2A - PC/TCP PREDIR.EXE - GET CONFIGURATION STRINGS
|
|
AX = FF95h
|
|
CX = what to get
|
|
0000h ??? (returned pointer to "C:\COMMAND.COM")
|
|
0001h spooling program
|
|
0002h ???
|
|
0003h spool file name
|
|
0004h swap file name
|
|
Return: AX = status
|
|
0000h successful
|
|
BX:DX -> ASCIZ configuration string
|
|
--------N-2AFF96-----------------------------
|
|
INT 2A - PC/TCP PREDIR.EXE - SET PRINT JOB TERMINATION CONFIGURATION
|
|
AX = FF96h
|
|
CX = what to set
|
|
0000h ???
|
|
0001h print-on-hotkey state
|
|
0002h print-on-exit state
|
|
0003h print job timeout in clock ticks
|
|
0004h print-on-EOF state
|
|
BX = new value (0000h disabled, 0001h enabled except for timeout)
|
|
Return: AX = ???
|
|
SeeAlso: AX=FF97h
|
|
Note: PREDIR.EXE is the network printer redirector included as part of the
|
|
PC/TCP system by FTP Software, Inc.
|
|
--------N-2AFF97-----------------------------
|
|
INT 2A - PC/TCP PREDIR.EXE - GET PRINT JOB TERMINATION CONFIGURATION
|
|
AX = FF97h
|
|
CX = what to get
|
|
0000h ???
|
|
0001h print-on-hotkey state
|
|
0002h print-on-exit state
|
|
0003h print job timeout in clock ticks
|
|
0004h print-on-EOF state
|
|
Return: AX = status
|
|
0000h successful
|
|
BX = old value (0000h disabled, 0001 enabled except for timeout)
|
|
SeeAlso: AX=FF96h
|
|
--------D-2B---------------------------------
|
|
INT 2B - DOS 2+ - RESERVED
|
|
Note: this vector is not used in MS-DOS versions <= 6.22, and points at an
|
|
IRET instruction
|
|
--------D-2B---------------------------------
|
|
INT 2B - IBM ROM-DOS v4.0 - ???
|
|
AH = function
|
|
00h ??? (modifies data in IBMBIO.COM)
|
|
01h internal operations
|
|
02h ???
|
|
AL = index (00h-0Ch)
|
|
Return: AX = ??? or (CMOS 2Dh and CMOS 2Eh)
|
|
03h get ??? data
|
|
Return: AX = (CMOS 2Dh and CMOS 2Eh)
|
|
BX = FFFFh
|
|
other does nothing
|
|
Note: function 03h is called by ROMSHELL.COM; if BX != 0, then the ES:DI from
|
|
INT 2F/AX=1982h points at valid data
|
|
SeeAlso: INT 2F/AX=1982h
|
|
--------D-2C---------------------------------
|
|
INT 2C - DOS 2+ - RESERVED
|
|
Note: this vector is not used in DOS versions <= 6.00, and points at an IRET
|
|
--------O-2C---------------------------------
|
|
INT 2C - STARLITE architecture - KERNEL API
|
|
Note: STARLITE is an architecture by General Software for a series of MS-DOS
|
|
compatible operating systems (OEM DOS, NETWORK DOS, and SMP DOS) to
|
|
be released in 1991. The interrupt number is subject to change
|
|
before the actual release.
|
|
--------m-2C---------------------------------
|
|
INT 2C R - Cloaking - CALL PROTECTED-MODE PASSALONG CHAIN
|
|
Notes: when this interrupt is invoked in V86 mode, RM386 will invoke the first
|
|
in a chain of protected-mode handlers, and will only pass execution
|
|
to the V86-mode INT 2C handler if none of the handlers in the
|
|
passalong chain handle the call instead. This is the method by which
|
|
the real-mode stub of a cloaked application communicates with the
|
|
protected-mode portion.
|
|
the cloaking host calls the passalong chain with EAX=58494E33h ('WIN3')
|
|
when MS Windows starts up and with EAX=334E4958h ('3NIW') when
|
|
Windows shuts down; between these two broadcasts, the additional
|
|
Windows-only Cloaking services are available
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
|
|
memory manager included in Helix Software's Netroom
|
|
SeeAlso: INT 2C/AX=0009h,INT 2F/AX=4310h"Cloaking"
|
|
--------m-2C0000-----------------------------
|
|
INT 2C P - Cloaking - ALLOCATE GDT SELECTOR
|
|
AX = 0000h
|
|
EBX = base address
|
|
CL = access mode byte
|
|
CH = extended access mode byte (omit limit field)
|
|
EDX = segment limit
|
|
Return: CF clear if successful
|
|
AX = selector
|
|
CF set on error
|
|
AX = error code (see #02556)
|
|
Notes: this INT 2C interface is used by Netroom's DPMI.EXE v3.00
|
|
to access extended memory, set the base address to the desired
|
|
physical address plus 400000h (4M)
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
|
|
memory manager included in Helix Software's Netroom
|
|
SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=0004h,AX=0005h,INT 31/AH=57h,#00501
|
|
|
|
(Table 02556)
|
|
Values for Cloaking error code:
|
|
0001h no more selectors
|
|
0002h not a GDT ring 0 selector
|
|
0003h invalid selector (out of range, not user selector)
|
|
0004h selector not allocated
|
|
--------m-2C0001-----------------------------
|
|
INT 2C P - Cloaking - FREE GDT SELECTOR
|
|
AX = 0001h
|
|
SI = selector
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02556)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0000h,INT 2F/AX=4310h"Cloaking"
|
|
--------m-2C0002-----------------------------
|
|
INT 2C P - Cloaking - SET SEGMENT BASE ADDRESS
|
|
AX = 0002h
|
|
SI = selector
|
|
EBX = new physical base addres
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02556)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0000h,AX=0003h,AX=0004h,INT 31/AX=0007h,#00501
|
|
--------m-2C0003-----------------------------
|
|
INT 2C P - Cloaking - SET SEGMENT LIMIT
|
|
AX = 0003h
|
|
SI = selector
|
|
EBX = new limit
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02556)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0000h,AX=0002h,AX=0004h,INT 31/AX=0008h
|
|
--------m-2C0004-----------------------------
|
|
INT 2C P - Cloaking - SET SEGMENT ACCESS MODE
|
|
AX = 0004h
|
|
SI = selector
|
|
CL = new access mode byte (see #00502)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02556)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0005h,INT 31/AX=0009h
|
|
--------m-2C0005-----------------------------
|
|
INT 2C P - Cloaking - SET SEGMENT EXTENDED ACCESS MODE
|
|
AX = 0005h
|
|
SI = selector
|
|
CL = new extended access mode byte (limit field ignored) (see #02557)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02556)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0004h,INT 31/AX=0009h
|
|
|
|
Bitfields for extended access mode byte:
|
|
Bit(s) Description (Table 02557)
|
|
7 4K granularity instead of byte granularity
|
|
6 32-bit code segment
|
|
5 reserved (0)
|
|
4 segment available to system
|
|
SeeAlso: #00505
|
|
--------m-2C0006-----------------------------
|
|
INT 2C P - Cloaking - GET PROTECTED-MODE INTERRUPT VECTOR
|
|
AX = 0006h
|
|
CL = vector (00h-7Fh)
|
|
Return: CF clear
|
|
DX:EBX -> current interrupt handler
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0007h,INT 31/AX=0204h
|
|
--------m-2C0007-----------------------------
|
|
INT 2C P - Cloaking - SET PROTECTED-MODE INTERRUPT VECTOR
|
|
AX = 0007h
|
|
CL = vector (00h-7Fh)
|
|
DX:EBX -> interrupt handler
|
|
Return: CF clear
|
|
Notes: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
the IDT entry's type remains unchanged
|
|
SeeAlso: AX=0006h,INT 31/AX=0205h
|
|
--------m-2C0008-----------------------------
|
|
INT 2C P - Cloaking - GET PASSALONG ADDRESS
|
|
AX = 0008h
|
|
Return: CF clear
|
|
DX:EBX = current passalong address
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0009h,AX=002Ch,INT 2F/AX=4310h"Cloaking"
|
|
--------m-2C0009-----------------------------
|
|
INT 2C P - Cloaking - SET PASSALONG ADDRESS
|
|
AX = 0009h
|
|
DX:EBX = new value for passalong address (see #02558)
|
|
Return: CF clear
|
|
Notes: when an INT 2C instruction is executed in V86 mode, the Cloaking host
|
|
calls the passalong address. The handler should check whether the
|
|
upcall is of interest to it, and if not it should jump to the old
|
|
passalong address (retrieved with AX=0008h before the handler was
|
|
installed). The final handler should return with CF clear to cause
|
|
the interrupt to be reflected back to V86 mode if none of the
|
|
passalong handlers is triggered
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0008h,AX=002Dh,INT 2C"PASSALONG CHAIN"
|
|
|
|
(Table 02558)
|
|
Values Cloaking passalong address is called with:
|
|
EAX = CS:IP of byte following INT 2C instruction invoking passalong
|
|
SS:EBX -> caller registers (see #02559)
|
|
CF clear
|
|
others undefined
|
|
Return: CF clear: pass along to V86-mode INT 2C handler
|
|
CF set: return immediately to V86 mode
|
|
|
|
Format of Cloaking caller registers:
|
|
Offset Size Description (Table 02559)
|
|
00h DWORD EDI
|
|
04h DWORD ESI
|
|
08h DWORD EBP
|
|
0Ch DWORD reserved (ESP from PUSHAD instruction)
|
|
10h DWORD EBX
|
|
14h DWORD EDX
|
|
18h DWORD ECX
|
|
1Ch DWORD EAX
|
|
20h DWORD error code
|
|
24h DWORD EIP
|
|
28h WORD CS
|
|
2Ah WORD padding
|
|
2Ch DWORD EFLAGS
|
|
30h DWORD ESP
|
|
34h WORD SS
|
|
36h WORD padding
|
|
--remainder not available if protected-mode ring3 trap---
|
|
38h WORD ES
|
|
3Ah WORD padding
|
|
3Ch WORD DS
|
|
3Eh WORD padding
|
|
40h WORD FS
|
|
42h WORD padding
|
|
44h WORD GS
|
|
46h WORD padding
|
|
--------m-2C000A-----------------------------
|
|
INT 2C P - Cloaking - GET BASE ADDRESS OF GDT SELECTOR
|
|
AX = 000Ah
|
|
SI = selector
|
|
Return: CF clear if successful
|
|
EBX = segment base address
|
|
CF set on error
|
|
AX = error code (see #02556)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
|
|
memory manager included in Helix Software's Netroom
|
|
SeeAlso: AX=0000h,AX=0002h,AX=000Bh
|
|
--------m-2C000B-----------------------------
|
|
INT 2C P - Cloaking - GET SELECTOR LIMIT
|
|
AX = 000Bh
|
|
SI = selector
|
|
Return: CF clear if successful
|
|
EBX = segment base address
|
|
CF set on error
|
|
AX = error code (see #02556)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=000Ah,INT 2F/AX=4310h"Cloaking"
|
|
--------m-2C---------------------------------
|
|
INT 2C P - RM386 v6.00 - CLOAKING - RESERVED FOR CLOAKED BIOS USE UNDER WINDOWS
|
|
AX = function (000Ch-001Fh)
|
|
--------m-2C000F-----------------------------
|
|
INT 2C P - Cloaking v1.01 - "Simulate_Shell_Event"
|
|
AX = 000Fh
|
|
ECX = event code (see #02560)
|
|
DX = subfunction for event
|
|
EDX high word = boost value (see #02561)
|
|
SI:EDI -> completion procedure
|
|
Return: CF clear if successful (event scheduled)
|
|
CF set on error
|
|
Note: this function is only available while MS Windows is running
|
|
SeeAlso: AX=0011h,AX=0012h,INT 2F/AX=1605h,INT 2F/AX=4310h"Cloaking"
|
|
|
|
(Table 02560)
|
|
Values for Cloaking shell event code:
|
|
0414h Hot key event
|
|
subevent 0000h: Alt-Space
|
|
subevent 0001h: Alt-Enter
|
|
subevent 0002h: Dir-VM
|
|
0415h Switch context
|
|
subevent 0000h for DOS VM context, nonzero for System VM context
|
|
0416h Clipboard event
|
|
0417h Termination event
|
|
subevent 0000h for normal termination, nonzero for error
|
|
0418h Display message
|
|
subevent 0000h for normal message, nonzero for system model ASAP
|
|
0419h Crash
|
|
041Ah Paste complete
|
|
subevent 0000h: normal
|
|
subevent 0001h: cancelled by user
|
|
subevent 0002h: cancelled
|
|
041Bh Contention event
|
|
041Ch Screen switch
|
|
subevent 0000h: forward
|
|
subevent 0001h: back
|
|
041Dh Filesystem change
|
|
041Eh Check Focus
|
|
041Fh Panic
|
|
|
|
Bitfields for boost value:
|
|
Bit(s) Description (Table 02561)
|
|
0 boost system VM until focus changes
|
|
1 boost system VM on Switcher screen
|
|
2 boost system VM until response
|
|
3 boost system VM during clipboard activity
|
|
4 boost system VM during print screen
|
|
5 boost system VM during update
|
|
--------m-2C0011-----------------------------
|
|
INT 2C P - Cloaking v1.01 - "Switch_VMs_and_Call_back"
|
|
AX = 0011h
|
|
EBX = handle of VM to be made active
|
|
SI:EDI -> 32-bit FAR completion procedure
|
|
Return: CF clear if successful (scheduled)
|
|
CF set on error
|
|
Notes: this function is only available while MS Windows is running
|
|
the completion procedure is called with CF clear if the specified
|
|
VM has been made active, or with CF set on error
|
|
SeeAlso: AX=000Fh,AX=0012h
|
|
--------m-2C0012-----------------------------
|
|
INT 2C P - Cloaking v1.01 - "Query_Current_VM"
|
|
AX = 0012h
|
|
Return: CF clear
|
|
EBX = handle of active VM
|
|
ESI = handle of system VM
|
|
ECX = VM status flags (see #02562)
|
|
EDX = shell flags (see #02563)
|
|
Note: this function is only available while MS Windows is running in enhanced
|
|
mode
|
|
SeeAlso: AX=000Fh,AX=0011h,AX=0013h
|
|
|
|
Bitfields for VM status flags:
|
|
Bit(s) Description (Table 02562)
|
|
0 in exclusive mode
|
|
1 runs in background
|
|
2 being created
|
|
3 suspended
|
|
4 not executable
|
|
5 executing in protected mode
|
|
6 contains PM application
|
|
7 32-bit PM application
|
|
8 called from VxD
|
|
9 high priority background
|
|
10 blocked on semaphore
|
|
11 awakening
|
|
12 has pageable V86
|
|
13 has locked V86
|
|
14 is scheduled
|
|
15 idle
|
|
16 closing
|
|
|
|
Bitfields for shell flags:
|
|
Bit(s) Description (Table 02563)
|
|
2 windowed
|
|
5 Alt-Tab reserved
|
|
6 Alt-Esc reserved
|
|
7 Alt-Space reserved
|
|
8 Alt-PrtSc reserved
|
|
9 Alt-Enter reserved
|
|
10 Alt-PrtSc reserved
|
|
11 PrtSc reserved
|
|
12 polling enabled
|
|
13 no HMA
|
|
14 has shortcut key
|
|
15 locked EMS handles
|
|
16 locked XMS handles
|
|
17 fast paste enabled
|
|
18 locked V86 memory
|
|
30 close-on-exit enabled
|
|
--------m-2C0013-----------------------------
|
|
INT 2C P - Cloaking v1.01 - "Issue_System_Modal_Message"
|
|
AX = 0013h
|
|
EDX = message box flags (see #02564)
|
|
DS:ECX -> ASCIZ message text
|
|
DS:EDI -> ASCIZ caption
|
|
Return: CF clear
|
|
EAX = response code
|
|
Note: this function is only available while MS Windows is running in enhanced
|
|
mode
|
|
SeeAlso: AX=000Fh,AX=0012h
|
|
|
|
Bitfields for message box flags:
|
|
Bit(s) Description (Table 02564)
|
|
3-0 response codes (see #02565)
|
|
7-4 icon codes
|
|
1 = Warning hand
|
|
2 = exclamation mark
|
|
4 = asterisk
|
|
9-8 default response (0 = first button, 1 = second, 2 = third)
|
|
12 message is system model
|
|
15 don't change focus
|
|
29 hang with interrupts enabled
|
|
30 do not window
|
|
31 execute ASAP
|
|
|
|
(Table 02565)
|
|
Values for response codes:
|
|
00h OK
|
|
01h OK, Cancel
|
|
02h Abort, Retry, Ignore
|
|
03h Yes, No, Cancel
|
|
04h Yes, No
|
|
05h Retry, Cancel
|
|
--------m-2C001D-----------------------------
|
|
INT 2C P - Cloaking v1.01 - GET INT 2C API HANDLER ENTRY POINT
|
|
AX = 001Dh
|
|
Return: CF clear
|
|
DX:EBX = selector:offset of Cloaking host INT 2C handler
|
|
Desc: get the Cloaking host's entry point to bypass any other programs
|
|
which may have hooked INT 2C in protected mode
|
|
Note: the returned entry point must be called with a simulated INT, i.e.
|
|
a PUSHD must precede the far call to the handler
|
|
SeeAlso: INT 2F/AX=4310h"Cloaking"
|
|
--------m-2C001E-----------------------------
|
|
INT 2C P - Cloaking v1.01 - CLEAR CRITICAL SECTION
|
|
AX = 001Eh
|
|
Return: CF clear
|
|
Desc: allow MS Windows to switch to another VM after having prevented it
|
|
by invoking a critical section
|
|
SeeAlso: AX=001Fh,INT 15/AX=101Ch,INT 2F/AX=1682h
|
|
--------m-2C001F-----------------------------
|
|
INT 2C P - Cloaking v1.01 - SET CRITICAL SECTION
|
|
AX = 001Fh
|
|
Return: CF clear
|
|
Desc: prevent MS Windows from switching to another VM
|
|
SeeAlso: AX=001Eh,INT 15/AX=101Bh,INT 2F/AX=1681h
|
|
--------m-2C0020-----------------------------
|
|
INT 2C P - Cloaking - GET SIZE OF PROTECTED-MODE STATE
|
|
AX = 0020h
|
|
Return: EAX = number of bytes required for storing state
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0021h,AX=0022h
|
|
--------m-2C0021-----------------------------
|
|
INT 2C P - Cloaking - SAVE PROTECTED-MODE STATE
|
|
AX = 0021h
|
|
ES:EDI -> buffer for protected-mode state
|
|
Return: CF clear
|
|
buffer filled
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0020h,AX=0022h
|
|
--------m-2C0022-----------------------------
|
|
INT 2C P - Cloaking - RESTORE PROTECTED-MODE STATE
|
|
AX = 0022h
|
|
DS:ESI -> buffer containing previously-saved protected-mode state
|
|
Return: CF clear if successful
|
|
state restored
|
|
CF set on error (invalid buffer contents)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0020h,AX=0021h
|
|
--------m-2C0023-----------------------------
|
|
INT 2C P - Cloaking - ISSUE PROTECTED-MODE XMS CALL
|
|
AX = 0023h
|
|
Notes: not currently implemented--NOP in RM386 v6.00
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
--------m-2C0024-----------------------------
|
|
INT 2C P - Cloaking - SET V86-MODE STACK
|
|
AX = 0024h
|
|
DX:EBX = new value for V86-mode SS:ESP
|
|
Return: nothing
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
--------m-2C0025-----------------------------
|
|
INT 2C P - Cloaking - CALL V86-MODE PROCEDURE
|
|
AX = 0025h
|
|
DS:EBX -> client register structure (see #02559)
|
|
Return: CF clear if successful
|
|
client register structure updated
|
|
CF set if no more nested procedure call space available
|
|
Notes: this call uses the V86-mode stack supplied in the client structure, and
|
|
calls the routine specified by CS:IP in the client structure
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0026h,AX=0027h,INT 31/AX=0301h
|
|
--------m-2C0026-----------------------------
|
|
INT 2C P - Cloaking - CALL V86-MODE INTERRUPT HANDLER
|
|
AX = 0026h
|
|
DS:EBX -> client register structure (see #02559)
|
|
CX = interrupt number
|
|
Return: CF clear if successful
|
|
client register structure updated
|
|
CF set if no more nested procedure call space available
|
|
Notes: this call uses the V86-mode stack supplied in the client structure
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0025h,AX=0027h,INT 31/AX=0300h
|
|
--------m-2C0027-----------------------------
|
|
INT 2C P - Cloaking - CHAIN TO V86-MODE INTERRUPT HANDLER
|
|
AX = 0027h
|
|
DS:EBX -> client register structure (see #02559)
|
|
Return: CF clear if successful
|
|
client register structure updated
|
|
CF set if no more nested procedure call space available
|
|
Notes: this call uses the V86-mode stack supplied in the client structure,
|
|
and jumps to the address specified by CS:IP in the client structure
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0025h,AX=0026h
|
|
--------m-2C0028-----------------------------
|
|
INT 2C P - Cloaking - GET ESP0 FROM TSS
|
|
AX = 0028h
|
|
Return: CF clear
|
|
EAX = TSS's ESP0
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00, the
|
|
memory manager included in Helix Software's Netroom
|
|
--------m-2C0029-----------------------------
|
|
INT 2C P - Cloaking - SET SECONDARY STACK
|
|
AX = 0029h
|
|
DX:EBX = new value for SS:ESP of ring 3 secondary stack
|
|
Return: CF clear
|
|
Desc: inform RM386 of the ring 3 interrupt stack location
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
--------m-2C002A-----------------------------
|
|
INT 2C P - Cloaking - SET 8259 IRQ BASE VECTORS
|
|
AX = 002Ah
|
|
BL = base vector of master interrupt controller
|
|
CL = base vector of slave interrupt controller
|
|
Notes: this call merely informs RM386 that the caller has changed the
|
|
interrupt mappings
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: INT 67/AX=DE0Bh
|
|
--------m-2C002BCH81-------------------------
|
|
INT 2C P - Cloaking - PROTECTED-MODE VIRTUAL DMA SERVICES
|
|
AX = 002Bh
|
|
CH = 81h
|
|
CL = subfunction (02h-0Ch)
|
|
other registers as appropriate for subfunction
|
|
Return: varies by function
|
|
CF set on error
|
|
Notes: these functions are equivalent to the INT 4B/AX=81xxh subfunctions
|
|
with the same numbers
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: INT 4B/AX=8102h,INT 4B/AX=810Ch
|
|
--------m-2C002C-----------------------------
|
|
INT 2C P - Cloaking - GET PORT-TRAPPING PASSALONG
|
|
AX = 002Ch
|
|
Return: CF clear
|
|
DX:EBX = current I/O trapping passalong address
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0008h,AX=002Dh
|
|
--------m-2C002D-----------------------------
|
|
INT 2C P - Cloaking - SET PORT-TRAPPING PASSALONG
|
|
AX = 002Dh
|
|
DX:EBX = new I/O trapping passalong address (see #02566)
|
|
Return: CF clear
|
|
Notes: RM386 calls the passalong address whenever an access to a monitored
|
|
I/O port is attempted; the handler should check whether it is a port
|
|
that it is interested in, and if not call the previous passalong
|
|
address (which was retrieved with AX=002Ch before installing the
|
|
new handler)
|
|
this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=0009h,AX=002Ch,INT 67/AX=5DEAh
|
|
|
|
(Table 02566)
|
|
Values Cloaking port-trapping passalong address is called with:
|
|
EAX = CS:IP of faulting instruction (unless executing in protected-mode
|
|
ring 3)
|
|
SS:EBX -> caller register structure (see #02559)
|
|
check EFLAGS V86-mode bit for type
|
|
CX = first two bytes of I/O instruction which was trapped
|
|
DX = port to which I/O is being performed
|
|
CF clear
|
|
Return: CF clear if RM386 should perform I/O operation
|
|
CF set if I/O should be skipped
|
|
Note: RM386 skips the trapped I/O instruction, so the passalong handler
|
|
should not modify the client CS:EIP
|
|
--------m-2C002E-----------------------------
|
|
INT 2C P - Cloaking - TRAP I/O PORT
|
|
AX = 002Eh
|
|
DX = port number to trap
|
|
Return: CF clear if successful
|
|
CF set on error (port out of range or reserved)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=002Fh,AX=0030h
|
|
--------m-2C002F-----------------------------
|
|
INT 2C PU - Cloaking - UNTRAP I/O PORT
|
|
AX = 002Fh
|
|
DX = port number for which to cancel trapping
|
|
Return: CF clear if successful
|
|
CF set on error (port out of range or reserved)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=002Eh,AX=0030h
|
|
--------m-2C0030-----------------------------
|
|
INT 2C PU - Cloaking - GET TRAPPING STATE OF SPECIFIED PORT
|
|
AX = 0030h
|
|
DX = port number
|
|
Return: CF clear if successful
|
|
BX = current state (0000h not trapped, 0001h trapped)
|
|
CF set on error (port out of range or reserved)
|
|
Note: this function was first introduced with RM386 (RAM-MAN/386) v6.00
|
|
SeeAlso: AX=002Eh,AX=002Fh
|
|
--------m-2C0031-----------------------------
|
|
INT 2C PU - RM386 v6.00 - BUG
|
|
AX = 0031h
|
|
Program: RM386 (RAM-MAN/386) is the memory manager included in Helix
|
|
Software's Netroom
|
|
Note: due to a fencepost error, RM386 v6.00 will branch unpredictably if
|
|
invoked with this function
|
|
--------m-2C0031-----------------------------
|
|
INT 2C P - Cloaking v1.01 - ALLOCATE V86 CALLBACK
|
|
AX = 0031h
|
|
DX:EBX = CS:EIP of protected-mode routine to be invoked by callback
|
|
Return: CF clear if successful
|
|
EBX = CS:IP of V86-mode callback handler
|
|
CF set on error
|
|
SeeAlso: AX=0032h
|
|
--------m-2C0032-----------------------------
|
|
INT 2C P - Cloaking v1.01 - FREE V86 CALLBACK
|
|
AX = 0032h
|
|
EBX = CS:IP of V86-mode callback handler
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code
|
|
0005h invalid callback address
|
|
0006h callback already free
|
|
SeeAlso: AX=0032h
|
|
--------m-2C0033-----------------------------
|
|
INT 2C P - Cloaking v1.01 - REGISTER CLOAKING CLIENT
|
|
AX = 0033h
|
|
DS:EDX -> client registration structure (see #02567)
|
|
Return: CF clear if successful
|
|
CF set on error (linked list corrupt)
|
|
SeeAlso: AX=0034h,#02778 at INT 2F/AX=4310h"Cloaking"
|
|
|
|
Format of client registration structure:
|
|
Offset Size Description (Table 02567)
|
|
00h PWORD link to next structure
|
|
06h PWORD link to previous structure
|
|
0Ch 2 BYTEs client version (major, minor)
|
|
0Eh 20 BYTEs client name
|
|
22h DWORD physical address of client start
|
|
26h DWORD client's total size in bytes
|
|
Note: the link area should not be modified once the structure has been
|
|
used for the registration call
|
|
--------m-2C0034-----------------------------
|
|
INT 2C P - Cloaking v1.01 - UNREGISTER CLOAKING CLIENT
|
|
AX = 0034h
|
|
DS:EDX -> client registration structure (see #02567)
|
|
Return: CF clear if successful
|
|
CF set on error (linked list corrupt)
|
|
Note: the client must unregister before freeing the XMS block containing
|
|
its registration structure(s)
|
|
SeeAlso: AX=0033h,#02778 at INT 2F/AX=4310h"Cloaking"
|
|
--------D-2D---------------------------------
|
|
INT 2D - DOS 2+ - RESERVED
|
|
Note: this vector is not used in DOS versions <= 6.00, and points at an IRET
|
|
BUG: RM386 v6.00-6.02 (as distributed with Helix's Netroom v3.x) contains
|
|
a stack bug in its protected-mode INT 2D handler which causes a crash
|
|
when INT 2D is invoked from V86 mode
|
|
--------t-2D---------------------------------
|
|
INT 2D - ALTERNATE MULTIPLEX INTERRUPT SPECIFICATION (AMIS) [v3.6]
|
|
AH = multiplex number
|
|
AL = function
|
|
00h installation check
|
|
01h get private entry point
|
|
02h uninstall
|
|
03h request popup
|
|
04h determine chained interrupts
|
|
05h get hotkey list
|
|
06h get device-driver information
|
|
07h-0Fh reserved for future enhancements
|
|
Return: AL = 00h (not implemented)
|
|
other application-dependent
|
|
other registers vary by function (also see individual entries below)
|
|
Return: varies by function
|
|
Notes: programs should not use fixed multiplex numbers; rather, a program
|
|
should scan all multiplex numbers from 00h to FFh, remembering the
|
|
first unused multiplex in case the program is not yet installed.
|
|
For multiplex numbers which are in use, the program should compare
|
|
the first 16 bytes of the signature string to determine whether it
|
|
is already installed on that multiplex number. If not previously
|
|
installed, it should use the first free multiplex number.
|
|
functions other than 00h are not valid unless a program is installed
|
|
on the selected multiplex number
|
|
to be considered fully compliant with version 3.6 of the specification,
|
|
programs must implement at least functions 00h, 02h (no resident
|
|
uninstall code required), and 04h (return value 04h). TSRs that
|
|
provide hotkeys with which the user can activate them must also
|
|
implement function 05h. TSRs which provide DOS device drivers must
|
|
also implement function 06h. The absolute minimum fully-compliant
|
|
implementation has an overhead of 64 bytes (80 bytes with function
|
|
05h) plus 22 bytes per hooked interrupt (for the interrupt sharing
|
|
protocol header and hook list entry).
|
|
the signature string and description may be used by memory mappers
|
|
to display the installed programs
|
|
to be considered fully compliant, users of this specification must
|
|
adhere to the IBM interrupt sharing protocol (see #02568), which will
|
|
permit removal of TSRs in arbitrary order and interrupt handler
|
|
reordering. All TSRs following this specification should be
|
|
removable unless they are loaded from CONFIG.SYS, though they need
|
|
not keep the code for removing themselves resident; it is acceptable
|
|
for a separate program to perform the interrupt unhooking and
|
|
memory-freeing steps of removal.
|
|
A sample public-domain implementation including example TSRs and
|
|
utility programs may be found in a separate package distributed as
|
|
AMISLnnn.ZIP (AMISL092.ZIP as of this writing).
|
|
Please let me know if you choose to follow this proposal. The
|
|
signature and a list of the private API calls you use would be
|
|
appreciated, as well.
|
|
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
|
|
SeeAlso: INT 2D/AL=05h,INT 2D/AL=06h,INT 2F"NOTES"
|
|
|
|
Format of interrupt sharing protocol interrupt handler entry point:
|
|
Offset Size Description (Table 02568)
|
|
00h 2 BYTEs short jump to actual start of interrupt handler, immediately
|
|
following this data block (EBh 10h)
|
|
02h DWORD address of next handler in chain
|
|
06h WORD signature 424Bh
|
|
08h BYTE EOI flag
|
|
00h software interrupt or secondary hardware interrupt handler
|
|
80h primary hardware interrupt handler (will issue EOI to
|
|
interrupt controller)
|
|
09h 2 BYTEs short jump to hardware reset routine
|
|
must point at a valid FAR procedure (may be just RETF)
|
|
0Bh 7 BYTEs reserved (0) by IBM for future expansion
|
|
Note: when chaining to the prior handler, the interrupt handler must perform
|
|
an indirect jump/call using the address at offset 02h in the
|
|
ISP header. This permits another AMIS TSR to hook itself into
|
|
the chain at a position other than as the first handler to receive
|
|
an interrupt.
|
|
SeeAlso: INT F1/AH=01h"Common ISDN API",INT F1/AH=06h"CAPI",#04068
|
|
--------t-2D--00-----------------------------
|
|
INT 2D - AMIS v3.0+ - INSTALLATION CHECK
|
|
AL = 00h
|
|
AH = multiplex number for program
|
|
Return: AL = 00h if free
|
|
AL = FFh if multiplex number in use
|
|
CX = binary version number (CH = major, CL = minor)
|
|
DX:DI -> signature string (see #02569) identifying the program
|
|
using the multiplex number
|
|
SeeAlso: INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
|
|
SeeAlso: INT 2D/AL=06h
|
|
Index: installation check;Alternate Multiplex Interrupt Specification
|
|
Index: installation check;AMIS|installation check;FASTMOUS
|
|
Index: installation check;SPELLER|installation check;Monitor
|
|
Index: installation check;NOLPT|installation check;NOTE
|
|
Index: installation check;RBkeyswp|installation check;SWITCHAR
|
|
Index: installation check;VGABLANK|installation check;EATMEM
|
|
Index: installation check;RECALL|installation check;XPTR2
|
|
|
|
Format of AMIS signature string:
|
|
Offset Size Description (Table 02569)
|
|
00h 8 BYTEs blank-padded manufacturer's name (possibly abbreviated)
|
|
08h 8 BYTEs blank-padded product name
|
|
10h 64 BYTEs ASCIZ product description (optional, may be a single 00h)
|
|
Note: it is not necessary to reserve a full 64 bytes for the description,
|
|
just enough to store the actual ASCIZ string
|
|
SeeAlso: #02570
|
|
|
|
(Table 02570)
|
|
Values for AMIS signatures known to be in use:
|
|
'Byrial J' 'EKLAVO ' permits keyboard entry of Esperanto accented letters
|
|
'CoveSoft' 'Burnout+' shareware screen saver Burnout Plus
|
|
'Crynwr ' 'SPELLER ' TSR spelling-checker
|
|
'CPH1995 ' 'CDTSR ' resident CD-Audio player
|
|
'CPH1996 ' 'DSAPI '
|
|
'CSJewell' 'Modula3L' Curtis Jewell's Modula-3 compiler (non-TSR)
|
|
'Cubbi...' 'ASCII...' Example ASCII code view/enter TSR by Sergey Zubkov
|
|
'Cubbi...' 'ScrnGrab' Example screen grabber by Sergey Zubkov
|
|
'DAISYCHA' 'INDRIVER' Advanced Parallel Port daisy chain driver (vendor name
|
|
in product description field, if desired)
|
|
(see also INT 2D/AL=DCh)
|
|
'DTown SD' 'DTU ' DTown Software Development's DTown Utilities
|
|
(see also INT 2D/AL=20h)
|
|
'ECLIPSE ' 'PLUMP ' Eclipse Software's printer and plotter spooler
|
|
'GraySoft' 'GIPC ' GraySoft's Inter-Process Communications driver
|
|
'heathh ' 'Monitor '
|
|
'Helge O ' TSRs by Helge Olav Helgesen
|
|
'IVALM SK' 'lmkey ' Russian keyboard driver by Sergey Khabarov
|
|
'IVALM SK' 'lmrus ' Russian screen driver by Sergey Khabarov
|
|
'J. Berry' 'RATSR ' RemoteAccess Network Manager workstation module
|
|
'JWB ' 'RAMLIGHT' James Birdsall's on-screen RAMdisk activity indicator
|
|
'M Better' 'iHPFS ' Marcus Better's HPFS filesystem driver for DOS
|
|
'M. Paul ' 'FREEVER ' DOS version-faking TSR by Matthias Paul
|
|
'Nildram ' 'ST ' Screen Thief graphics screen grabber
|
|
'NoBrain ' 'FlatReal' Flat real mode monitor by Sergei Shtylyov
|
|
'NoBrain ' 'Grabber ' Frame grabber drivers by Sergei Shtylyov
|
|
'NoBrain ' 'SqrModes' TSR providing some non-standard video modes
|
|
by Sergei Shtylyov
|
|
'Pino Nav' 'ALTMENU ' activate any program's menu bar by pressing Alt key
|
|
'Pino Nav' 'Keybit ' Pino Navato's KEYBIT Lite Italian keyboard driver v4+
|
|
'PowrQuot' 'CAPRILOG'
|
|
'PowrQuot' 'CAPRITSR'
|
|
'PowrQuot' 'CAPRIWIN'
|
|
'R-Ware ' 'dLite ' run-time data decompression TSR
|
|
'Ralf B ' 'disaXXYY' RBdisabl -- disable key scancode XX w/ shift states YY
|
|
'Ralf B ' 'DUALVGA ' dual-VGA support, screen blanker, and DPMS driver
|
|
'Ralf B ' 'FASTMOUS' example TSR included with sample AMIS library code
|
|
'Ralf B ' 'NoBreak ' disable Ctrl-@, Ctrl-C, and Ctrl-Break keys
|
|
'Ralf B ' 'NOLPT n ' example TSR -- turn LPTn into bit-bucket
|
|
'Ralf B ' 'NOTE ' example TSR -- popup note-taker
|
|
'Ralf B ' 'RBclock ' RBclock -- on-screen real-time clock
|
|
'Ralf B ' 'RBclockE' RBclock -- on-screen elapsed-time clock
|
|
'Ralf B ' 'RBdvorak' Dvorak keyboard mapping w/ opt Esc/~, LCtrl/CapsLk swap
|
|
'Ralf B ' 'RBkcount' display count of keystrokes on screen
|
|
'Ralf B ' 'RBkeyswp' RBkeyswap v3.0+ -- swap Esc/~ and LCtrl/CapsLock keys
|
|
'Ralf B ' 'RBnoboot' disable Ctrl-Alt-Del key combination
|
|
'Ralf B ' 'ShftCaps' require Shift-CapsLock to turn on CapsLock
|
|
'Ralf B ' 'ShftNumL' require Shift-NumLock to turn off NumLock
|
|
'Ralf B ' 'SWITCHAR' example TSR -- add switchar() support removed from DOS5
|
|
'Ralf B ' 'VGABLANK' VGA-only screen blanker
|
|
'Ralf B ' 'WINTAME ' yield CPU when program in Win95 DOS box is idle
|
|
'Sally IS' 'Mdisk ' removeable, resizeable RAMdisk
|
|
'Sally IS' 'Scr2Tex ' screen dumper with output in (La)Tex format
|
|
'SRT ' 'STOPBOOT' reboot preventer by Steve Talbot
|
|
'Thaco ' 'NEST ' Eirik Pedersen's programmer's delimiter matcher
|
|
'TifaWARE' 'EATMEM ' George A. Theall's public domain memory restrictor for
|
|
testing programs (v1.1+)
|
|
'TifaWARE' 'RECALL ' public domain commandline editor and history (v1.2+)
|
|
'Todd ' 'XPTR2 ' PC-to-Transputer interface by Todd Radel
|
|
'WlkngOwl' 'NoiseSYS' NOISE.SYS random-number generator
|
|
SeeAlso: #02569
|
|
--------t-2D--01-----------------------------
|
|
INT 2D - AMIS v3.0+ - GET PRIVATE ENTRY POINT
|
|
AL = 01h
|
|
AH = multiplex number for program
|
|
Return: AL = 00h if all API calls via INT 2D
|
|
AL = FFh if entry point supported
|
|
DX:BX -> entry point for bypassing interrupt chain
|
|
Note: this function is not valid unless a program is installed on the
|
|
specified multiplex number; use INT 2D/AL=00h to check
|
|
SeeAlso: INT 2D/AL=00h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
|
|
SeeAlso: INT 2D/AL=06h
|
|
Index: entry point;Alternate Multiplex Interrupt|entry point;AMIS
|
|
--------t-2D--02-----------------------------
|
|
INT 2D - AMIS v3.0+ - UNINSTALL
|
|
AL = 02h
|
|
AH = multiplex number for program
|
|
DX:BX = return address for successful uninstall (may be ignored by TSR)
|
|
Return: AL = status
|
|
00h not implemented (makes TSR non-compliant with specification)
|
|
01h unsuccessful
|
|
02h can not uninstall yet, will do so when able
|
|
03h safe to remove, but no resident uninstaller
|
|
(TSR still enabled)
|
|
BX = segment of memory block with resident code
|
|
04h safe to remove, but no resident uninstaller
|
|
(TSR now disabled)
|
|
BX = segment of memory block with resident code
|
|
05h not safe to remove now, try again later
|
|
06h disabled, but can not be removed from memory
|
|
because loaded from CONFIG.SYS
|
|
07h safe to remove, but no resident device-driver
|
|
uninstaller. Caller must unlink device
|
|
drivers from DOS device chain as well as
|
|
unhooking interrupts and freeing memory
|
|
BX = segment of memory block with resident code
|
|
FFh successful
|
|
return at DX:BX with AX destroyed if successful and TSR honors
|
|
specific return address
|
|
Note: this function is not valid unless a program is installed on the
|
|
specified multiplex number; use INT 2D/AL=00h to check
|
|
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=03h,INT 2D/AL=04h,INT 2D/AL=05h
|
|
SeeAlso: INT 2D/AL=06h
|
|
Index: uninstall;Alternate Multiplex Interrupt Specification|uninstall;AMIS
|
|
--------t-2D--03-----------------------------
|
|
INT 2D - AMIS v3.0+ - REQUEST POP-UP
|
|
AL = 03h
|
|
AH = multiplex number for program
|
|
Return: AL = status
|
|
00h not implemented or TSR is not a pop-up
|
|
01h can not pop up at this time, try again later
|
|
02h can not pop up yet, will do so when able
|
|
03h already popped up
|
|
04h unable to pop up, user intervention required
|
|
BX = standard reason code
|
|
0000h unknown failure
|
|
0001h interrupt chain passes through memory
|
|
which must be swapped out to pop up
|
|
0002h swap-in failed
|
|
CX = application's reason code if nonzero
|
|
FFh TSR popped up and was exited by user
|
|
BX = return value
|
|
0000h no return value
|
|
0001h TSR unloaded
|
|
0002h-00FFh reserved
|
|
0100h-FFFFh application-dependent
|
|
Note: this function is not valid unless a program is installed on the
|
|
specified multiplex number; use INT 2D/AL=00h to check
|
|
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=04h,INT 2D/AL=05h
|
|
SeeAlso: INT 2D/AL=06h
|
|
--------t-2D--04-----------------------------
|
|
INT 2D - AMIS v3.0+ - DETERMINE CHAINED INTERRUPTS
|
|
AL = 04h
|
|
AH = multiplex number for program
|
|
BL = interrupt number (except 2Dh)
|
|
Return: AL = status
|
|
00h not implemented (makes TSR non-compliant with specification)
|
|
01h (obsolete) unable to determine
|
|
02h (obsolete) interrupt hooked
|
|
03h (obsolete) interrupt hooked, address returned
|
|
DX:BX -> TSR's interrupt BL handler
|
|
04h list of hooked interrupts returned
|
|
DX:BX -> interrupt hook list (see #02571)
|
|
FFh interrupt not hooked
|
|
Notes: BL is ignored if the TSR returns AL=04h; in that case, the caller
|
|
needs to scan the return list rather than making additional calls
|
|
to this function. If the return is not 00h or 04h, then the caller
|
|
must cycle through the remaining interrupt numbers it wishes to
|
|
check.
|
|
return values 01h through 03h may not be used by AMIS v3.6-compliant
|
|
programs; they are included here solely for compatibility with
|
|
version 3.3, though they were probably never used in any
|
|
implementation
|
|
for return values 01h through 03h, since INT 2D is known to be hooked,
|
|
the resident code need not test for BL=2Dh (to minimize its size),
|
|
and the return value is therefore undefined in that case.
|
|
this function is not valid unless a program is installed on the
|
|
specified multiplex number; use INT 2D/AL=00h to check
|
|
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=05h
|
|
SeeAlso: INT 2D/AL=06h
|
|
|
|
Format of AMIS interrupt hook list [array]:
|
|
Offset Size Description (Table 02571)
|
|
00h BYTE interrupt number (last entry in array is 2Dh)
|
|
01h WORD offset within hook list's segment of the interrupt handler
|
|
this will point at the initial short jump of the interrupt
|
|
sharing protocol header (see #02568)
|
|
SeeAlso: #02572
|
|
--------t-2D--05-----------------------------
|
|
INT 2D - AMIS v3.5+ - GET HOTKEYS
|
|
AL = 05h
|
|
AH = multiplex number for program
|
|
Return: AL = status
|
|
00h not implemented
|
|
FFh supported
|
|
DX:BX -> hotkey list (see #02572)
|
|
Notes: this function is not valid unless a program is installed on the
|
|
specified multiplex number; use INT 2D/AL=00h to check
|
|
programs which provide hotkeys are required to provide this function
|
|
to be fully compliant with this specification
|
|
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
|
|
SeeAlso: INT 2D/AL=06h
|
|
|
|
Format of AMIS hotkey list:
|
|
Offset Size Description (Table 02572)
|
|
00h BYTE type of hotkey checking (see #02573)
|
|
01h BYTE number of hotkeys (may be zero if TSR can disable hotkeys)
|
|
02h 6N BYTEs array of hotkey definitions
|
|
(one per hotkey, first should be primary hotkey)
|
|
Offset Size Description
|
|
00h BYTE hotkey scan code (00h/80h if shift states only)
|
|
hotkey triggers on release if bit 7 set
|
|
01h WORD required shift states (see #02574)
|
|
03h WORD disallowed shift states (see #02574)
|
|
05h BYTE hotkey flags (see #02575)
|
|
Notes: except for bit 7, the shift states correspond exactly to the return
|
|
values from INT 16/AH=12h. A set bit in the required states word
|
|
indicates that the corresponding shift state must be active when the
|
|
hotkey's scan code is received for the hotkey to be recognized; a
|
|
clear bit means that the corresponding state may be ignored. A set
|
|
bit in the disallowed shift states word indicates that the
|
|
corresponding shift state must be inactive.
|
|
for the disallowed-states word, if one of the "either" bits is set,
|
|
then both the corresponding left bit and right bit must be set
|
|
examples:
|
|
Ctrl-Alt-Del monitoring: 53h 000Ch 0003h 06h
|
|
Alt-key tap (DESQview): B8h 0000h 0007h 08h
|
|
Shf-Shf-N (NOTE.COM): 31h 0003h 000Ch 00h
|
|
Index: hotkeys;AMIS
|
|
SeeAlso: #00006
|
|
|
|
Bitfields for type of AMIS hotkey checking:
|
|
Bit(s) Description (Table 02573)
|
|
0 checks before chaining INT 09
|
|
1 checks after chaining INT 09
|
|
2 checks before chaining INT 15/AH=4Fh
|
|
3 checks after chaining INT 15/AH=4Fh
|
|
4 checks on INT 16/AH=00h,01h,02h
|
|
5 checks on INT 16/AH=10h,11h,12h
|
|
6 checks on INT 16/AH=20h,21h,22h
|
|
7 reserved (0)
|
|
SeeAlso: #02572
|
|
|
|
Bitfields for AMIS shift states:
|
|
Bit(s) Description (Table 02574)
|
|
0 right shift pressed
|
|
1 left shift pressed
|
|
2 either control key pressed
|
|
3 either Alt key pressed
|
|
4 ScrollLock active
|
|
5 NumLock active
|
|
6 CapsLock active
|
|
7 either shift key pressed
|
|
8 left control key pressed
|
|
9 left Alt key pressed
|
|
10 right control key pressed
|
|
11 right Alt key pressed
|
|
12 ScrollLock pressed
|
|
13 NumLock pressed
|
|
14 CapsLock pressed
|
|
15 SysReq key pressed
|
|
Notes: if bit 2 is set, either control key may be pressed for the hotkey; if
|
|
bits 8 and 10 are both set, then both control keys must be pressed.
|
|
Similarly for bits 3 and 9/11, as well as 7 and 0/1.
|
|
the SysReq key is often labeled SysRq
|
|
SeeAlso: #02572,#02575
|
|
|
|
Bitfields for AMIS hotkey flags:
|
|
Bit(s) Description (Table 02575)
|
|
0 hotkey chained before processing
|
|
1 hotkey chained after processing
|
|
2 others should pass through this hotkey so that it can be monitored
|
|
3 hotkey will not activate if other keys pressed/released before hotkey
|
|
press is completed
|
|
4 this key is remapped into some other key
|
|
5 this key is conditionally chained (sometimes passed on, sometimes
|
|
swallowed)
|
|
6-7 reserved (0)
|
|
SeeAlso: #02572,#02574
|
|
--------t-2D--06-----------------------------
|
|
INT 2D - AMIS v3.6 - GET DEVICE-DRIVER INFORMATION
|
|
AL = 06h
|
|
AH = multiplex number for program
|
|
Return: AL = number of device driver headers supplied by prog.
|
|
AH = device-driver flags (see #02576)
|
|
DX:BX -> first device driver header (see #01646)
|
|
Program: AMIS is the Alternate Multiplex Interrupt Specification promulgated
|
|
by Ralf Brown
|
|
Notes: if AL=00h, AH,BX,DX are meaningless and may be destroyed
|
|
this function is not valid unless a program is installed on the
|
|
specified multiplex number; use INT 2D/AL=00h to check
|
|
programs which provide device drivers are required to support this
|
|
function to be considered fully compliant with v3.6+ of the
|
|
specification
|
|
SeeAlso: INT 2D/AL=00h,INT 2D/AL=01h,INT 2D/AL=02h,INT 2D/AL=03h,INT 2D/AL=04h
|
|
SeeAlso: INT 2D/AL=05h
|
|
|
|
Bitfields for AMIS device-driver information flags:
|
|
Bit(s) Description (Table 02576)
|
|
0 program loaded from CONFIG.SYS, and thus can not be removed from memory
|
|
(leave clear if unable to determine)
|
|
1 device driver headers have not been linked into DOS device chain
|
|
2 reentrant device driver(s)
|
|
--------N-2D--10-----------------------------
|
|
INT 2D - RATSR 2.0+ - GET STATUS
|
|
AL = 10h
|
|
AH = AMIS multiplex number for RATSR
|
|
Return: AL = status
|
|
01h listening (no connection)
|
|
02h receiving \
|
|
03h sending > station being monitored
|
|
04h initializing receive /
|
|
AH = keyboard lock status (00h unlocked, 01h locked)
|
|
Program: RATSR is a utility by James Berry provided with
|
|
RemoteAccess/Professional, a commercial bulletin board system, that
|
|
allows remote control of a station over a network
|
|
SeeAlso: INT 2D"AMIS"
|
|
--------d-2D--10-----------------------------
|
|
INT 2D - dLite 1.0+ - GET PARAMETER BLOCK ADDRESS
|
|
AL = 10h
|
|
AH = AMIS multiplex number for dLite
|
|
Return: CF clear if successful
|
|
ES:BX -> parameter block (see #02577)
|
|
CF set on error
|
|
Program: dLite is a shareware TSR by Rainer Schuetze which transparently
|
|
expands compressed files when they are read
|
|
SeeAlso: AL=11h"dLite",AL=12h"dLite",INT 21/AX=FEDCh"PCMANAGE"
|
|
|
|
Format of dLite parameter block:
|
|
Offset Size Description (Table 02577)
|
|
00h BYTE TSR flags (see #02578)
|
|
01h WORD maximum number of programs needing original filesize
|
|
03h WORD current number of programs needing original filesize
|
|
05h WORD maximum number of files that can be handled by dLite (should
|
|
be the same as FILES= in CONFIG.SYS)
|
|
07h WORD offset (in the same segment as the parameter block) of the
|
|
table of programs needing the original filesize (8 bytes
|
|
each, without path or extension, uppercase, and zero \
|
|
terminated if shorter than 8 bytes)
|
|
|
|
Bitfields for dLite TSR flags:
|
|
Bit(s) Description (Table 02578)
|
|
0 deny FCB access
|
|
1 dLite sleeping rather than activated
|
|
2 always indicate original filesize when reading directory entries,
|
|
rather than only for specified programs
|
|
3-7 reserved
|
|
SeeAlso: #02577
|
|
--------V-2D--10-----------------------------
|
|
INT 2D - Burnout Plus v3.00 - GET STATE/CONTROL INFORMATION
|
|
AL = 10h
|
|
AH = AMIS multiplex number for Burnout Plus
|
|
Return: AL = 01h
|
|
BX = Burnout Plus status (see #02579)
|
|
CX = record of features loaded (see #02580)
|
|
ES:DI -> Burnout Plus control structure (see #02581)
|
|
Program: Burnout Plus is a DOS screen saver from Cove Software
|
|
SeeAlso: INT 14/AX=AA01h,INT 2D"AMIS"
|
|
Index: screen saver;Burnout Plus
|
|
|
|
Bitfields for Burnout Plus status:
|
|
Bit(s) Description (Table 02579)
|
|
0 screen is blanked
|
|
1 MS Windows is active (Burnout Plus deactivated)
|
|
2-15 reserved
|
|
|
|
Bitfields for Burnout Plus features loaded/features enabled:
|
|
Bit(s) Description (Table 02580)
|
|
0 mouse activity monitor
|
|
1 passkey support
|
|
2 password support
|
|
3 continuous clear
|
|
4 software blanking
|
|
5 video activity monitor
|
|
6 disk activity monitor
|
|
7 activating keystroke suppression
|
|
SeeAlso: #02581
|
|
|
|
Format of Burnout Plus control structure:
|
|
Offset Size Description (Table 02581)
|
|
00h BYTE size of structure in bytes
|
|
01h WORD Burnout Plus version
|
|
03h WORD screen blanking reset count in clock ticks
|
|
05h WORD current countdown value in clock ticks
|
|
07h BYTE type of timeout specification
|
|
08h BYTE instant-blank hotkey
|
|
09h WORD extended status information (see #02582)
|
|
the bits for password, passkey, and software blanking are
|
|
ignored and cannot be enabled or disabled externally
|
|
0Bh WORD features enabled (see #02580)
|
|
Note: all fields except the first two may be modified by external programs
|
|
to affect the operation of Burnout Plus
|
|
Index: hotkeys;Burnout Plus
|
|
|
|
Bitfields for extended Burnout Plus status information:
|
|
Bit(s) Description (Table 02582)
|
|
0 Burnout Plus disabled
|
|
1 force screen to blank on next clock tick
|
|
2 restore screen if currently blanked
|
|
3-15 reserved
|
|
Note: 1 and 2 are automatically cleared by Burnout Plus after blanking
|
|
or restoring the screen
|
|
SeeAlso: #02581
|
|
--------V-2D--10-----------------------------
|
|
INT 2D U - Screen Thief v1.00 - FREE HIGH MEMORY BUFFERS
|
|
AL = 10h
|
|
AH = AMIS multiplex number for Screen Thief
|
|
Return: nothing
|
|
Program: Screen Thief is a graphics screen grabber
|
|
Note: releases any code and data stored in EMS, DOS UMBs, or XMS UMBs, but
|
|
does not release the low-memory stub; this may be used to effect a
|
|
partial uninstall if INT 2D/AL=02h fails
|
|
SeeAlso: INT D8"Screen Thief"
|
|
--------i-2D--10-----------------------------
|
|
INT 2D U - RAMLIGHT v1.0 - GET MONITORING INFORMATION
|
|
AL = 10h
|
|
AH = AMIS multiplex number for RAMLIGHT
|
|
Return: ES:BX -> array of fake device driver headers used in monitoring
|
|
CX = number of drives being monitored???
|
|
--------U-2D--10-----------------------------
|
|
INT 2D - DTown Utilities v1.40+ - EXTENDED API INSTALLATION CHECK
|
|
AL = 10h
|
|
Return: AL = FFh
|
|
BL = extended API availability (00h no, 01h API is loaded)
|
|
SeeAlso: INT 2D/AL=11h"DTown",INT 2D/AL=20h,INT 2D/AL=50h
|
|
--------s-2D--10-----------------------------
|
|
INT 2D - CDTSR - GET INTERNAL VARIABLE TABLE
|
|
AL = 10h
|
|
AH = AMIS multiplex number for CDTSR
|
|
Return: CX:DX -> CDTSR internal variable structure (see #02583)
|
|
Program: CDTSR is a resident audio CD player by Colin Hill
|
|
SeeAlso: INT 2D/AL=11h"CDTSR",INT 2D/AL=12h"CDTSR",INT 2D/AL=13h"CDTSR"
|
|
|
|
Format of CDTSR internal variable structure:
|
|
Offset Size Description (Table 02583)
|
|
00h BYTE hotkey scan code (see #00006)
|
|
01h BYTE hotkey shift states
|
|
02h BYTE flag: repeat
|
|
03h BYTE flag: custom repeat
|
|
04h BYTE flag: background polling
|
|
05h DWORD (read-only) internal timing variable
|
|
09h DWORD current track play position, in frames
|
|
0Dh DWORD current disk play position, in frames
|
|
11h BYTE number of entries in track program
|
|
12h BYTE index into track program currently playing (FFh if not playing)
|
|
13h 100 BYTEs track program (each byte contains one track number)
|
|
77h BYTE saved cursor end scan line
|
|
78h BYTE saved cursor start scan line
|
|
79h BYTE currently playing track
|
|
7Ah BYTE CD driver media-change flag
|
|
7Bh WORD video base segment during last popup
|
|
7Dh WORD video page offset during last popup
|
|
7Fh BYTE currently-selected track
|
|
80h DWORD begin of custom repeat, in frames
|
|
84h DWORD end of custom repeat, in frames
|
|
88h WORD track program index of top list item
|
|
--------K-2D--10-----------------------------
|
|
INT 2D - KEYBIT Lite v5+ - GET POINTER TO STATUS BYTE
|
|
AL = 10h
|
|
AH = AMIS multiplex number for KEYBIT Lite
|
|
Return: DX:BX -> status byte (see #02584)
|
|
Program: KEYBIT Lite is an enhanced Italian keyboard driver by Pino Navato.
|
|
SeeAlso: INT 2D"AMIS"
|
|
|
|
Bitfields for KEYBIT Lite status byte:
|
|
Bit(s) Description (Table 02584)
|
|
7 KEYBIT Lite active
|
|
6 E-mail support active
|
|
5-0 reserved
|
|
Notes: E-mail support is one of the original features of KEYBIT Lite. It is
|
|
the automatic conversion of the 8-bits ASCII chars produced by some
|
|
keys available on Italian keyboards to couples of 7-bits chars.
|
|
Message editors should always enable e-mail support, they should also
|
|
restore its original status before exiting.
|
|
The user can change both status bits by hotkeys.
|
|
--------K-2D--10-----------------------------
|
|
INT 2D - ALTMENU - GET POINTER TO KEY CODE
|
|
AL = 10h
|
|
AH = AMIS multiplex number for signature 'Pino Nav' 'ALTMENU '
|
|
Return: DX:BX -> WORD key code to insert in keyboard buffer on Alt-key tap
|
|
Program: Pino Navato's freeware ALTMENU permits activating the menu bar of
|
|
any program by pressing the Alt key alone.
|
|
Notes: The value in the key code word will be returned in AX by a call to
|
|
INT 16/AH=00h after the Alt key is pressed by itself
|
|
ALTMENU may be disabled by setting the key code equal to 0000h
|
|
SeeAlso: INT 16/AH=00h,INT 2D"AMIS"
|
|
--------d-2D--11-----------------------------
|
|
INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET ORIGINAL SIZE
|
|
AL = 11h
|
|
AH = AMIS multiplex number for dLite
|
|
BX = file handle
|
|
Return: CF clear if successful
|
|
DX:AX = size of uncompressed file
|
|
CF set on error (not dPressed file)
|
|
SeeAlso: AL=10h"dLite",AL=12h"dLite"
|
|
--------U-2D--11-----------------------------
|
|
INT 2D - DTown Utilities v1.40+ - UTILITY INSTALLATION CHECK
|
|
AL = 11h
|
|
BL = function
|
|
00h get number of installed utilities
|
|
Return: BL = number of utilities
|
|
01h get installed utilities
|
|
DX:DI -> buffer containing one byte for each utility
|
|
Return: DX:DI buffer filled with flags (0=no,1=yes) indicating
|
|
whether the corresponding utility is loaded
|
|
Return: AL = FFh if supported
|
|
Note: this function is only available if the extended API has been installed
|
|
in the resident portion
|
|
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h
|
|
--------s-2D--11-----------------------------
|
|
INT 2D - CDTSR - REPROGRAM CDTSR
|
|
AL = 11h
|
|
AH = AMIS multiplex number for CDTSR
|
|
Return: nothing
|
|
Program: CDTSR is a resident audio CD player by Colin Hill
|
|
Desc: reprograms CDTSR based on the values in the internal variable
|
|
structure (see #02583), which may have been changed by an application
|
|
SeeAlso: INT 2D/AL=10h"CDTSR",INT 2D/AL=12h"CDTSR",INT 2D/AL=13h"CDTSR"
|
|
--------d-2D--12-----------------------------
|
|
INT 2D - dLite 1.0+ - CHECK FOR dPressed FILE AND GET COMPRESSED SIZE
|
|
AL = 12h
|
|
AH = AMIS multiplex number for dLite
|
|
BX = file handle
|
|
Return: CF clear if successful
|
|
DX:AX = size of compressed file
|
|
CF set on error (not dPressed file)
|
|
SeeAlso: AL=10h"dLite",AL=11h"dLite"
|
|
--------s-2D--12-----------------------------
|
|
INT 2D - CDTSR - DISABLE POPUP
|
|
AL = 12h
|
|
AH = AMIS multiplex number for CDTSR
|
|
Return: nothing
|
|
SeeAlso: INT 2D/AL=10h"CDTSR",INT 2D/AL=11h"CDTSR",INT 2D/AL=13h"CDTSR"
|
|
--------U-2D--12-----------------------------
|
|
INT 2D - FREEVER - GET ORIGINAL DOS VERSION INFO
|
|
AL = 12h
|
|
AH = AMIS multiplex number for FREEVER
|
|
Return: AL = FFh if successful
|
|
BH = major DOS version
|
|
BL = minor DOS version
|
|
CH = DOS version flag
|
|
CL = OEM number
|
|
DH = major DR DOS version number (FFh if unknown)
|
|
DL = minor DR DOS version number (FFh if unknown)
|
|
Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
|
|
to SETVER for any DOS-compatible OS, written by Matthias Paul
|
|
SeeAlso: INT 2D/AL=13h"FREEVER",INT 2D/AL=14h"FREEVER",INT 2D/AL=17h"FREEVER"
|
|
--------s-2D--13-----------------------------
|
|
INT 2D - CDTSR - ENABLE POPUP
|
|
AL = 13h
|
|
AH = AMIS multiplex number for CDTSR
|
|
Return: nothing
|
|
Program: CDTSR is a resident audio CD player by Colin Hill
|
|
SeeAlso: INT 2D/AL=10h"CDTSR",INT 2D/AL=11h"CDTSR",INT 2D/AL=12h"CDTSR"
|
|
--------U-2D--13-----------------------------
|
|
INT 2D - FREEVER - SET VERSION NUMBERS
|
|
AL = 13h
|
|
AH = AMIS multiplex number for FREEVER
|
|
BH = new major DOS version
|
|
BL = new minor DOS version
|
|
CH = new DOS version flag
|
|
CL = new DOS revision number
|
|
DH = new OEM number
|
|
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=15h"FREEVER",INT 2D/AL=17h"FREEVER"
|
|
--------U-2D--14-----------------------------
|
|
INT 2D - FREEVER - ENABLE TSR
|
|
AL = 14h
|
|
AH = AMIS multiplex number for FREEVER
|
|
Return: AL = FFh if successful
|
|
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=15h"FREEVER",INT 2D/AL=16h"FREEVER"
|
|
--------U-2D--15-----------------------------
|
|
INT 2D - FREEVER - DISABLE TSR
|
|
AL = 15h
|
|
AH = AMIS multiplex number for FREEVER
|
|
Return: AL = FFh if successful
|
|
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=14h"FREEVER",INT 2D/AL=16h"FREEVER"
|
|
--------U-2D--16-----------------------------
|
|
INT 2D - FREEVER - GET TSR STATUS
|
|
AL = 16h
|
|
AH = AMIS multiplex number for FREEVER
|
|
Return: AL = FFh if successful
|
|
BL = status
|
|
01h resident and active
|
|
02h resident and inactive
|
|
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=15h"FREEVER",INT 2D/AL=17h"FREEVER"
|
|
--------U-2D--17-----------------------------
|
|
INT 2D - FREEVER - GET TaskMAX STATUS AT INSTALLATION
|
|
AL = 17h
|
|
AH = AMIS multiplex number for FREEVER
|
|
Return: AL = FFh if successful
|
|
BL = status
|
|
00h if TaskMAX not loaded before SETDRVER
|
|
FFh if TaskMAX was loaded before SETDRVER
|
|
Program: FREEVER is an AMIS-conformant freeware DOS version-faking TSR similar
|
|
to SETVER for any DOS-compatible OS, written by Matthias Paul
|
|
SeeAlso: INT 2D/AL=12h"FREEVER",INT 2D/AL=14h"FREEVER",INT 2D/AL=16h"FREEVER"
|
|
--------U-2D--20-----------------------------
|
|
INT 2D - DTown Utilities v1.40+ - GET POP-UP HANDLER ADDRESS
|
|
AL = 20h
|
|
Return: AL = FFh if available
|
|
DX:DI -> DTU popup-handler
|
|
Program: DTown Utilities is a freeware programmer's utility TSR by Jeroen van
|
|
Disseldorp
|
|
Note: this function is only available if the extended API has been installed
|
|
in the resident portion
|
|
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=21h,INT 2D/AL=50h,INT 2D/AL=51h
|
|
SeeAlso: INT 03"DTown"
|
|
--------U-2D--21-----------------------------
|
|
INT 2D - DTown Utilities v1.40+ - POP UP
|
|
AL = 21h
|
|
BL = which utility to bring up
|
|
00h active utility
|
|
01h help screen
|
|
0Ah ASCII table
|
|
0Bh memory view
|
|
0Ch CPU status
|
|
0Dh calculator
|
|
0Eh miscellaneous
|
|
0Fh file viewer
|
|
10h disassembler
|
|
Return: AL = status
|
|
00h already active
|
|
FFh popped up successfully
|
|
BX = 0000h
|
|
Note: this function is only available if the extended API has been installed
|
|
in the resident portion
|
|
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h,INT 2D/AL=50h
|
|
--------U-2D--50-----------------------------
|
|
INT 2D - DTown Utilities v1.40+ - MEMORY VIEW SET ADDRESS
|
|
AL = 50h
|
|
CX:DX = new address for start of memory view utility's display
|
|
Note: this function is only available if the extended API has been installed
|
|
in the resident portion
|
|
Return: AL = FFh if supported
|
|
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h,INT 2D/AL=21h,INT 2D/AL=51h
|
|
--------U-2D--51-----------------------------
|
|
INT 2D - DTown Utilities v1.40+ - MEMORY VIEW SET REFERENCE
|
|
AL = 51h
|
|
BL = reference ("bookmark") number
|
|
CX:DX = new address for reference
|
|
Return: AL = status
|
|
00h invalid index
|
|
FFh reference set
|
|
Note: this function is only available if the extended API has been installed
|
|
in the resident portion
|
|
Program: DTown Utilities is a shareware programmer's utility TSR by Jeroen van
|
|
Disseldorp
|
|
SeeAlso: INT 2D/AL=10h"DTown",INT 2D/AL=20h,INT 2D/AL=50h
|
|
--------b-2D--DC-----------------------------
|
|
INT 2D C - DAISY.SYS - BROADCAST: CHAIN RESCANNED
|
|
AL = DCh
|
|
AH = AMIS multiplex number for signature 'DAISYCHA' 'INDRIVER'
|
|
DL = LPT Port Rescanned
|
|
Program: DAISY.SYS is a daisy chain manager for parallel port peripherals
|
|
conforming to the IEEE 1284.3 Committee's daisy chain specification.
|
|
Desc: This Broadcast is sent whenever daisy chain IDs are reassigned to
|
|
warn parallel port device drivers that their daisy chain ID may
|
|
have been changed.
|
|
Note: This function is a callout from DAISY.SYS, NOT a call into DAISY.SYS
|
|
SeeAlso: INT 17/AX=0200h"Enhanced Parallel Port",#00633,#02570
|
|
--------l-2E---------------------------------
|
|
INT 2E U - DOS 2+ - PASS COMMAND TO COMMAND INTERPRETER FOR EXECUTION
|
|
DS:SI -> commandline to execute (see #02585)
|
|
Return: all registers except CS:IP destroyed
|
|
AX = status (4DOS v4.0)
|
|
0000h successful
|
|
FFFFh error before processing command (not enough memory, etc)
|
|
other error number returned by command
|
|
Notes: this call allows execution of arbitrary commands (including COMMAND.COM
|
|
internal commands) without loading another copy of COMMAND.COM
|
|
if COMMAND.COM is the user's command interpreter, the primary copy
|
|
executes the command; this allows the master environment to be
|
|
modified by issuing a "SET" command, but changes in the master
|
|
environment will not become effective until all programs descended
|
|
from the primary COMMAND.COM terminate
|
|
since COMMAND.COM processes the string as if typed from the keyboard,
|
|
the transient portion needs to be present, and the calling program
|
|
must ensure that sufficient memory to load the transient portion can
|
|
be allocated by DOS if necessary
|
|
results are unpredictable if invoked by a program run from a batch file
|
|
because this call is not reentrant and COMMAND.COM uses the same
|
|
internal variables when processing a batch file
|
|
hooked but ignored by 4DOS v3.0 COMMAND.COM replacement unless SHELL2E
|
|
has been loaded
|
|
the MS-DOS 5 Programmer's Reference calls this "Reload Transient"
|
|
|
|
Format of DOS commandline:
|
|
Offset Size Description (Table 02585)
|
|
00h BYTE length of command string, not counting trailing CR
|
|
01h var command string
|
|
N BYTE 0Dh (CR)
|
|
--------O-2E---------------------------------
|
|
INT 2E UP - Windows NT - NATIVE API
|
|
EAX = function number (see #02586)
|
|
EDX = address of parameter block
|
|
Return: ???
|
|
|
|
(Table 02586)
|
|
Values for Windows NT NTOS function number:
|
|
000h AcceptConnectPort (24 bytes of parameters)
|
|
001h AccessCheck (32 bytes of parameters)
|
|
002h AccessCheckAndAuditAlarm (44 bytes of parameters)
|
|
003h AddAtom (8 bytes of parameters)
|
|
004h AdjustGroupsToken (24 bytes of parameters)
|
|
005h AdjustPrivilegesToken (24 bytes of parameters)
|
|
006h AlertResumeThread (8 bytes of parameters)
|
|
007h AlertThread (4 bytes of parameters)
|
|
008h AllocateLocallyUniqueId (4 bytes of parameters)
|
|
009h AllocateUuids (12 bytes of parameters)
|
|
00Ah AllocateVirtualMemory (24 bytes of parameters)
|
|
00Bh CallbackReturn (12 bytes of parameters)
|
|
00Ch CancelIoFile (8 bytes of parameters)
|
|
00Dh CancelTimer (8 bytes of parameters)
|
|
00Eh ClearEvent (4 bytes of parameters)
|
|
00Fh Close (4 bytes of parameters)
|
|
010h CloseObjectAuditAlarm (12 bytes of parameters)
|
|
011h CompleteConnectPort (4 bytes of parameters)
|
|
012h ConnectPort (32 bytes of parameters)
|
|
013h Continue (8 bytes of parameters)
|
|
014h CreateDirectoryObject (12 bytes of parameters)
|
|
015h CreateEvent (20 bytes of parameters)
|
|
016h CreateEventPair (12 bytes of parameters)
|
|
017h CreateFile (44 bytes of parameters)
|
|
018h CreateIoCompletion (16 bytes of parameters)
|
|
019h CreateKey (28 bytes of parameters)
|
|
01Ah CreateMailslotFile (32 bytes of parameters)
|
|
01Bh CreateMutant (16 bytes of parameters)
|
|
01Ch CreateNamedPipeFile (56 bytes of parameters)
|
|
01Dh CreatePagingFile (16 bytes of parameters)
|
|
01Eh CreatePort (20 bytes of parameters)
|
|
01Fh CreateProcess (32 bytes of parameters)
|
|
020h CreateProfile (36 bytes of parameters)
|
|
021h CreateSection (28 bytes of parameters)
|
|
022h CreateSemaphore (20 bytes of parameters)
|
|
023h CreateSymbolicLinkObject (16 bytes of parameters)
|
|
024h CreateThread (32 bytes of parameters)
|
|
025h CreateTimer (16 bytes of parameters)
|
|
026h CreateToken (52 bytes of parameters)
|
|
027h DelayExecution (8 bytes of parameters)
|
|
028h DeleteAtom (4 bytes of parameters)
|
|
029h DeleteFile (4 bytes of parameters)
|
|
02Ah DeleteKey (4 bytes of parameters)
|
|
02Bh DeleteObjectAuditAlarm (12 bytes of parameters)
|
|
02Ch DeleteValueKey (8 bytes of parameters)
|
|
02Dh DeviceIoControlFile (40 bytes of parameters)
|
|
02Eh DisplayString (4 bytes of parameters)
|
|
02Fh DuplicateObject (28 bytes of parameters)
|
|
030h DuplicateToken (24 bytes of parameters)
|
|
031h EnumerateKey (24 bytes of parameters)
|
|
032h EnumerateValueKey (24 bytes of parameters)
|
|
033h ExtendSection (8 bytes of parameters)
|
|
034h FindAtom (8 bytes of parameters)
|
|
035h FlushBuffersFile (8 bytes of parameters)
|
|
036h FlushInstructionCache (12 bytes of parameters)
|
|
037h FlushKey (4 bytes of parameters)
|
|
038h FlushVirtualMemory (16 bytes of parameters)
|
|
039h FlushWriteBuffer (no parameters)
|
|
03Ah FreeVirtualMemory (16 bytes of parameters)
|
|
03Bh FsControlFile (40 bytes of parameters)
|
|
03Ch GetContextThread (8 bytes of parameters)
|
|
03Dh GetPlugPlayEvent (16 bytes of parameters)
|
|
03Eh GetTickCount (no parameters)
|
|
03Fh ImpersonateClientOfPort (8 bytes of parameters)
|
|
040h ImpersonateThread (12 bytes of parameters)
|
|
041h InitializeRegistry (4 bytes of parameters)
|
|
042h ListenPort (8 bytes of parameters)
|
|
043h LoadDriver (4 bytes of parameters)
|
|
044h LoadKey (8 bytes of parameters)
|
|
045h LoadKey2 (12 bytes of parameters)
|
|
046h LockFile (40 bytes of parameters)
|
|
047h LockVirtualMemory (16 bytes of parameters)
|
|
048h MakeTemporaryObject (4 bytes of parameters)
|
|
049h MapViewOfSection (40 bytes of parameters)
|
|
04Ah NotifyChangeDirectoryFile (36 bytes of parameters)
|
|
04Bh NotifyChangeKey (40 bytes of parameters)
|
|
04Ch OpenDirectoryObject (12 bytes of parameters)
|
|
04Dh OpenEvent (12 bytes of parameters)
|
|
04Eh OpenEventPair (12 bytes of parameters)
|
|
04Fh OpenFile (24 bytes of parameters)
|
|
050h OpenIoCompletion (12 bytes of parameters)
|
|
051h OpenKey (12 bytes of parameters)
|
|
052h OpenMutant (12 bytes of parameters)
|
|
053h OpenObjectAuditAlarm (48 bytes of parameters)
|
|
054h OpenProcess (16 bytes of parameters)
|
|
055h OpenProcessToken (12 bytes of parameters)
|
|
056h OpenSection (12 bytes of parameters)
|
|
057h OpenSemaphore (12 bytes of parameters)
|
|
058h OpenSymbolicLinkObject (12 bytes of parameters)
|
|
059h OpenThread (16 bytes of parameters)
|
|
05Ah OpenThreadToken (16 bytes of parameters)
|
|
05Bh OpenTimer (12 bytes of parameters)
|
|
05Ch PlugPlayControl (16 bytes of parameters)
|
|
05Dh PrivilegeCheck (12 bytes of parameters)
|
|
05Eh PrivilegedServiceAuditAlarm (20 bytes of parameters)
|
|
05Fh PrivilegeObjectAuditAlarm (24 bytes of parameters)
|
|
060h ProtectVirtualMemory (20 bytes of parameters)
|
|
061h PulseEvent (8 bytes of parameters)
|
|
062h QueryInformationAtom (20 bytes of parameters)
|
|
063h QueryAttributesFile (8 bytes of parameters)
|
|
064h QueryDefaultLocale (8 bytes of parameters)
|
|
065h QueryDirectoryFile (44 bytes of parameters)
|
|
066h QueryDirectoryObject (28 bytes of parameters)
|
|
067h QueryEaFile (36 bytes of parameters)
|
|
068h QueryEvent (20 bytes of parameters)
|
|
069h QueryFullAttributesFile (8 bytes of parameters)
|
|
06Ah QueryInformationFile (20 bytes of parameters)
|
|
06Bh QueryIoCompletion (20 bytes of parameters)
|
|
06Ch QueryInformationPort (20 bytes of parameters)
|
|
06Dh QueryInformationProcess (20 bytes of parameters)
|
|
06Eh QueryInformationThread (20 bytes of parameters)
|
|
06Fh QueryInformationToken (20 bytes of parameters)
|
|
070h QueryIntervalProfile (8 bytes of parameters)
|
|
071h QueryKey (20 bytes of parameters)
|
|
072h QueryMultipleValueKey (24 bytes of parameters)
|
|
073h QueryMutant (20 bytes of parameters)
|
|
074h QueryObject (20 bytes of parameters)
|
|
075h QueryOleDirectoryFile (44 bytes of parameters)
|
|
076h QueryPerformanceCounter (8 bytes of parameters)
|
|
077h QuerySection (20 bytes of parameters)
|
|
078h QuerySecurityObject (20 bytes of parameters)
|
|
079h QuerySemaphore (20 bytes of parameters)
|
|
07Ah QuerySymbolicLinkObject (12 bytes of parameters)
|
|
07Bh QuerySystemEnvironmentValue (16 bytes of parameters)
|
|
07Ch QuerySystemInformation (16 bytes of parameters)
|
|
07Dh QuerySystemTime (4 bytes of parameters)
|
|
07Eh QueryTimer (20 bytes of parameters)
|
|
07Fh QueryTimerResolution (12 bytes of parameters)
|
|
080h QueryValueKey (24 bytes of parameters)
|
|
081h QueryVirtualMemory (24 bytes of parameters)
|
|
082h QueryVolumeInformationFile (20 bytes of parameters)
|
|
083h QueueApcThread (20 bytes of parameters)
|
|
084h RaiseException (12 bytes of parameters)
|
|
085h RaiseHardError (24 bytes of parameters)
|
|
086h ReadFile (36 bytes of parameters)
|
|
087h ReadFileScatter (36 bytes of parameters)
|
|
088h ReadRequestData (24 bytes of parameters)
|
|
089h ReadVirtualMemory (20 bytes of parameters)
|
|
08Ah RegisterThreadTerminatePort (4 bytes of parameters)
|
|
08Bh ReleaseMutant (8 bytes of parameters)
|
|
08Ch ReleaseSemaphore (12 bytes of parameters)
|
|
08Dh RemoveIoCompletion (20 bytes of parameters)
|
|
08Eh ReplaceKey (12 bytes of parameters)
|
|
08Fh ReplyPort (8 bytes of parameters)
|
|
090h ReplyWaitReceivePort (16 bytes of parameters)
|
|
091h ReplyWaitReplyPort (8 bytes of parameters)
|
|
092h RequestPort (8 bytes of parameters)
|
|
093h RequestWaitReplyPort (12 bytes of parameters)
|
|
094h ResetEvent (8 bytes of parameters)
|
|
095h RestoreKey (12 bytes of parameters)
|
|
096h ResumeThread (8 bytes of parameters)
|
|
097h SaveKey (8 bytes of parameters)
|
|
098h SetIoCompletion (20 bytes of parameters)
|
|
099h SetContextThread (8 bytes of parameters)
|
|
09Ah SetDefaultHardErrorPort (4 bytes of parameters)
|
|
09Bh SetDefaultLocale (8 bytes of parameters)
|
|
09Ch SetEaFile (16 bytes of parameters)
|
|
09Dh SetEvent (8 bytes of parameters)
|
|
09Eh SetHighEventPair (4 bytes of parameters)
|
|
09Fh SetHighWaitLowEventPair (4 bytes of parameters)
|
|
0A0h ??? (??? bytes of parameters)
|
|
0A1h SetInformationFile (20 bytes of parameters)
|
|
0A2h SetInformationKey (16 bytes of parameters)
|
|
0A3h SetInformationObject (16 bytes of parameters)
|
|
0A4h SetInformationProcess (16 bytes of parameters)
|
|
0A5h SetInformationThread (16 bytes of parameters)
|
|
0A6h SetInformationToken (16 bytes of parameters)
|
|
0A7h SetIntervalProfile (8 bytes of parameters)
|
|
0A8h SetLdtEntries (24 bytes of parameters)
|
|
0A9h SetLowEventPair (4 bytes of parameters)
|
|
0AAh SetLowWaitHighEventPair (4 bytes of parameters)
|
|
0ABh ??? (??? bytes of parameters)
|
|
0ACh SetSecurityObject (12 bytes of parameters)
|
|
0ADh SetSystemEnvironmentValue (8 bytes of parameters)
|
|
0AEh SetSystemInformation (12 bytes of parameters)
|
|
0AFh SetSystemPowerState (12 bytes of parameters)
|
|
0B0h SetSystemTime (8 bytes of parameters)
|
|
0B1h SetTimer (28 bytes of parameters)
|
|
0B2h SetTimerResolution (12 bytes of parameters)
|
|
0B3h SetValueKey (24 bytes of parameters)
|
|
0B4h SetVolumeInformationFile (20 bytes of parameters)
|
|
0B5h ShutdownSystem (4 bytes of parameters)
|
|
0B6h SignalAndWaitForSingleObject (16 bytes of parameters)
|
|
0B7h StartProfile (4 bytes of parameters)
|
|
0B8h StopProfile (4 bytes of parameters)
|
|
0B9h SuspendThread (8 bytes of parameters)
|
|
0BAh SystemDebugControl (24 bytes of parameters)
|
|
0BBh TerminateProcess (8 bytes of parameters)
|
|
0BCh TerminateThread (8 bytes of parameters)
|
|
0BDh TestAlert (no parameters)
|
|
0BEh UnloadDriver (4 bytes of parameters)
|
|
0BFh UnloadKey (4 bytes of parameters)
|
|
0C0h UnlockFile (20 bytes of parameters)
|
|
0C1h UnlockVirtualMemory (16 bytes of parameters)
|
|
0C2h UnmapViewOfSection (8 bytes of parameters)
|
|
0C3h VdmControl (8 bytes of parameters)
|
|
0C4h WaitForMultipleObjects (20 bytes of parameters)
|
|
0C5h WaitForSingleObject (12 bytes of parameters)
|
|
0C6h WaitHighEventPair (4 bytes of parameters)
|
|
0C7h WaitLowEventPair (4 bytes of parameters)
|
|
0C8h WriteFile (36 bytes of parameters)
|
|
0C9h WriteFileGather (36 bytes of parameters)
|
|
0CAh WriteRequestData (24 bytes of parameters)
|
|
0CBh WriteVirtualMemory (20 bytes of parameters)
|
|
0CCh W32Call (20 bytes of parameters)
|
|
0CDh CreateChannel (8 bytes of parameters)
|
|
0CEh ListenChannel (8 bytes of parameters)
|
|
0CFh OpenChannel (8 bytes of parameters)
|
|
0D0h ReplyWaitSendChannel (12 bytes of parameters)
|
|
0D1h SendWaitReplyChannel (16 bytes of parameters)
|
|
0D2h SetContextChannel (4 bytes of parameters)
|
|
0D3h YieldExecution (no parameters)
|
|
--------l-2E----BXE22E-----------------------
|
|
INT 2E - 4DOS v2.x-3.03 SHELL2E.COM - UNINSTALL
|
|
BX = E22Eh
|
|
DS:SI -> zero byte
|
|
Return: if successful, SHELL2E terminates itself with INT 21/AH=4Ch
|
|
----------2F---------------------------------
|
|
INT 2F - Multiplex - NOTES
|
|
AH = identifier of program which is to handle the interrupt
|
|
00h-3Fh reserved for IBM (for DOS)
|
|
40h-7Fh reserved for Microsoft (for DOS)
|
|
80h-B7h reserved for IBM
|
|
B8h-BFh reserved for networks
|
|
C0h-FFh reserved for applications
|
|
AL is the function code
|
|
This is a general mechanism for verifying the presence of a TSR and
|
|
communicating with it. When searching for a free identifier code for AH
|
|
using the installation check (AL=00h), the calling program should set
|
|
BX/CX/DX to 0000h and must not depend on any registers other than CS:IP
|
|
and SS:SP to be valid on return, since numerous programs now use additional
|
|
registers on input and/or output for the installation check.
|
|
Notes: Since the multiplex chain is growing so long, and beginning to
|
|
experience multiplex number collisions, I have proposed an alternate
|
|
multiplex interrupt on INT 2D. If you decide to use the alternate
|
|
multiplex, please let me know.
|
|
DOS and some other programs return values in the flags register, so
|
|
any TSR which chains by calling the previous handler rather than
|
|
jumping to it should ensure that the returned flags are preserved
|
|
and passed back to the original caller
|
|
SeeAlso: INT 2D"ALTERNATE MULTIPLEX"
|
|
--------t-2F---------------------------------
|
|
INT 2F - BMB Compuscience Canada Utilities Interface - INSTALLATION CHECK
|
|
AH = xx (dynamically assigned based upon a search for a multiplex
|
|
number which doesn't answer installed)
|
|
AL = 00h installation check
|
|
ES:DI = EBEBh:BEBEh
|
|
Return: AL = 00h not installed
|
|
01h not installed, not OK to install
|
|
FFh installed; if ES:DI was EBEBh:BEBEh on entry, ES:DI will point
|
|
to a string of the form 'MMMMPPPPPPPPvNNNN' where MMMM is a
|
|
short form of the manufacturer's name, PPPPPPPP is a product
|
|
name and NNNN is the product's version number
|
|
--------t-2F---------------------------------
|
|
INT 2F - Ross Wentworth's Turbo Pascal POPUP LIBRARY
|
|
AH = programmer-selected multiplex number
|
|
AL = function
|
|
00h installation check
|
|
Return: AL = FFh if installed
|
|
01h get TSR interrupt vectors
|
|
Return: DX:AX -> vector table (see #02587)
|
|
02h get TSR code segment
|
|
Return: AX = code segment for all interrupt handlers
|
|
03h call user exit routine and release TSR's memory
|
|
04h get signature string
|
|
Return: DX:AX -> counted string containing signature
|
|
05h get TSR's INT 2F handler
|
|
Return: DX:AX -> INT 2F handler
|
|
06h enable/disable TSR
|
|
BL = new state (00h disabled, 01h enabled)
|
|
07h activate TSR (popup if not disabled)
|
|
08h get hotkeys
|
|
BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
|
|
Return: AX = hotkey (AH = keyflags, AL = scancode)
|
|
09h set hotkey
|
|
BL = which hotkey (00h = hotkey 1, 01h = hotkey 2)
|
|
CX = new hotkey (CH = keyflags, CL = scancode)
|
|
0Ah-1Fh reserved
|
|
Index: installation check;Ross Wentworth POPUP library
|
|
Index: hotkeys;Ross Wentworth POPUP library
|
|
|
|
Format of POPUP vector table entry:
|
|
Offset Size Description (Table 02587)
|
|
00h BYTE vector number (00h = end of table)
|
|
01h DWORD original vector
|
|
05h WORD offset of interrupt handler in TSR's code segment
|
|
--------t-2F---------------------------------
|
|
INT 2F - CiriSOFT Spanish University of Valladolid TSR's Interface
|
|
AH = xx (dynamically assigned based upon a search for a multiplex
|
|
number from C0h to FFh which doesn't answer installed)
|
|
AL = 00h installation check
|
|
ES:DI = 1492h:1992h
|
|
Return: AL = 00h not installed
|
|
01h not installed, not OK to install
|
|
FFh installed; and if ES:DI was 1492h:1992h on entry, ES:DI will
|
|
point to author_name_ver table (see #02588)
|
|
AH = FFh
|
|
Note: this interface permits advanced communication with TSRs: it is possible
|
|
to make a generic uninstall utility, advanced TSR relocator programs
|
|
in order to fit fragmented memory areas, etc.
|
|
See also: INT 2D"AMIS",INT 2F"Compuscience"
|
|
Index: installation check;CiriSOFT TSR interface
|
|
Index: uninstall;CiriSOFT TSR interface
|
|
|
|
Format of CiriSOFT author_name_ver table:
|
|
Offset Size Description (Table 02588)
|
|
-16 WORD segment of the start of the resident TSR code (CS in programs
|
|
with PSP, XMS upper memory segment if installed as UMB...)
|
|
-14 WORD offset of the start of the resident TSR code (frequently 100h
|
|
in *.COM programs and 0 in upper memory TSR's).
|
|
-12 WORD memory used by TSR (in paragraphs). Knowing the memory area
|
|
used by TSR is possible to determine if hooked vectors are
|
|
still pointing it (and if it is safe to uninstall).
|
|
-10 BYTE characteristics byte (see #02589)
|
|
-9 BYTE number of multiplex entry used (redefinition available). Note
|
|
that the TSR must use THIS variable in it's INT 2Fh handler.
|
|
-8 WORD offset to vector_area table (see #02590)
|
|
-6 WORD offset to extra_area table (see #02591,#02589 [bit 7])
|
|
-4 4 BYTEs signature string "*##*"
|
|
00h var "AUTHOR:PROGRAM_NAME:VERSION",0 (variable length, this area
|
|
is used in order to determine if the TSR is already resident
|
|
and it's version code; the ':' char is used as delimiter)
|
|
|
|
Bitfields for CiriSOFT characteristics byte:
|
|
Bit(s) Description (Table 02589)
|
|
0-2 type
|
|
000 normal program (with PSP)
|
|
001 upper XMS memory block (needed HIMEM.SYS function to free memory
|
|
when uninstalling)
|
|
010 device driver (*.SYS)
|
|
011 device driver in EXE format
|
|
1xx others (reserved)
|
|
3-6 reserved
|
|
7 set if extra_table defined and supported (see #02591)
|
|
SeeAlso: #02588
|
|
|
|
Format of CiriSOFT vector_area table:
|
|
Offset Size Description (Table 02590)
|
|
-1 BYTE number of vectors intercepted by TSR
|
|
00h BYTE first vector number
|
|
01h DWORD first vector pointer before installing the TSR
|
|
05h BYTE second vector number
|
|
06h DWORD second vector pointer before installing the TSR
|
|
0Ah ... (and so on)
|
|
Note: the TSR must use these variables to invoke the previous interrupt
|
|
handler routines
|
|
SeeAlso: #02588
|
|
|
|
Format of extra_area table (needed only to improve relocation feature):
|
|
Offset Size Description (Table 02591)
|
|
00h WORD offset to external_ctrl table (see #02592)
|
|
0000h if not supported
|
|
02h WORD reserved for future use (0)
|
|
SeeAlso: #02588
|
|
|
|
Format of CiriSOFT external_ctrl table:
|
|
Offset Size Description (Table 02592)
|
|
00h BYTE bit 0: TSR is relocatable (no absolute segment references)
|
|
01h WORD offset to a variable which can activate/inhibit the TSR
|
|
---And if bit 0 in offset 00h is off:
|
|
03h DWORD pointer to ASCIZ pathname for executable file which supports
|
|
/SR parameter (silent installation & inhibit)
|
|
07h DWORD pointer to first variable to initialize on the copy reloaded
|
|
from the previous TSR still resident
|
|
0Bh DWORD pointer to last variable (all variables packed in one block)
|
|
--------c-2F00-------------------------------
|
|
INT 2F U - DOS 2.x only PRINT.COM - SUBMIT FILE FOR PRINTING
|
|
AH = 00h
|
|
DS:DX -> opened FCB (see #01345 at INT 21/AX=0Fh)
|
|
Return: AH = number of files currently in print queue
|
|
AL = status
|
|
00h file successfully added
|
|
01h queue is full
|
|
ES:BX -> print queue (10 FCBs; first byte of FFh indicates unused)
|
|
ES:DX -> currently-printing FCB (if DX=FFFFh, none printing)
|
|
Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler
|
|
values in AH other than 00h or 01h cause PRINT to return the number of
|
|
files in the queue in AH
|
|
SeeAlso: AH=01h"PRINT",AX=0102h
|
|
--------P-2F00-------------------------------
|
|
INT 2F U - PSPRINT - PRINT JOB CONTROL
|
|
AH = 00h
|
|
???
|
|
Return: ???
|
|
--------c-2F0080-----------------------------
|
|
INT 2F - DOS 3.1+ PRINT - GIVE PRINT A TIME SLICE
|
|
AX = 0080h
|
|
Return: after PRINT executes
|
|
Notes: PRINT returns AL=01h if AH=00h but AL is not 80h on entry
|
|
this function is not supported by the Novell DOS 7 PRINT.COM
|
|
--------N-2F00D8-----------------------------
|
|
INT 2F - Personal NetWare - VLM - ???
|
|
AX = 00D8h
|
|
???
|
|
Return: ???
|
|
Note: hooked by one of the .VLMs loaded by VLM.EXE v1.10, but apparently a
|
|
NOP
|
|
--------c-2F01-------------------------------
|
|
INT 2F U - DOS 2.x only PRINT.COM - REMOVE FILE FROM PRINT QUEUE
|
|
AH = 01h
|
|
DS:DX -> FCB (see #01345 at INT 21/AH=0Fh) for file to be canceled
|
|
Return: AH = number of files currently in print queue
|
|
AL = 00h (successful)
|
|
ES:BX -> print queue (10 FCBs; first byte of FFh indicates unused)
|
|
ES:DX -> currently-printing FCB (if DX=FFFFh, none printing)
|
|
Notes: DOS 2.x PRINT.COM does not chain to previous INT 2F handler
|
|
values in AH other than 00h or 01h cause PRINT to return the number of
|
|
files in the queue in AH
|
|
SeeAlso: AH=00h"PRINT.COM",AX=0103h
|
|
--------c-2F0100-----------------------------
|
|
INT 2F - DOS 3.0+ PRINT - INSTALLATION CHECK
|
|
AX = 0100h
|
|
Return: AL = status
|
|
00h not installed
|
|
01h not installed, but not OK to install
|
|
FFh installed
|
|
AH = 00h (Novell DOS 7)
|
|
SeeAlso: AX=0101h
|
|
--------c-2F0100SI20D6-----------------------
|
|
INT 2F U - PrintCache 3.1 PRINT.COM - INSTALLATION CHECK
|
|
AX = 0100h
|
|
SI = 20D6h
|
|
DI = 8761h
|
|
Return: AX = 00FFh if installed
|
|
DI = 0001h if PrintCache's PRINT.COM installed and magic values match
|
|
SI = resident code segment
|
|
Program: PrintCache PRINT.COM is a DOS PRINT replacement included in
|
|
LaserTools' PrintCache memory/disk-based print spooler package
|
|
Note: if either of SI or DI differ from the indicated magic values, only AX
|
|
will be modified on return, for compatibility with DOS PRINT
|
|
SeeAlso: AX=0101h/SI=20D6h,AX=C000h"PCACHE"
|
|
--------c-2F0101-----------------------------
|
|
INT 2F - DOS 3.0+ PRINT - SUBMIT FILE FOR PRINTING
|
|
AX = 0101h
|
|
DS:DX -> submit packet (see #02593)
|
|
Return: CF clear if successful
|
|
AL = status
|
|
01h added to queue
|
|
9Eh now printing
|
|
CF set on error
|
|
AX = error code (see #02594,#01680 at INT 21/AH=59h/BX=0000h)
|
|
SeeAlso: AX=0102h
|
|
|
|
Format of PRINT submit packet:
|
|
Offset Size Description (Table 02593)
|
|
00h BYTE level (must be 00h)
|
|
01h DWORD pointer to ASCIZ filename (no wildcards)
|
|
|
|
(Table 02594)
|
|
Values for PRINT error code:
|
|
0001h invalid function
|
|
0002h file not found
|
|
0003h path not found
|
|
0004h out of file handles
|
|
0005h access denied
|
|
0008h print queue full
|
|
0009h spooler busy
|
|
000Ch name too long
|
|
000Fh invalid drive
|
|
--------c-2F0101SI20D6-----------------------
|
|
INT 2F U - PrintCache v3.1 PRINT.COM - SUBMIT FILE FOR PRINTING
|
|
AX = 0101h
|
|
SI = 20D6h
|
|
DI = 8761h
|
|
DS:DX -> submit packet (see #02593)
|
|
CL = print options
|
|
bit 4: use default options
|
|
Return: CF clear if successful
|
|
AL = status
|
|
01h added to queue
|
|
9Eh now printing
|
|
CF set on error
|
|
AX = error code (see #02594)
|
|
Program: PrintCache PRINT.COM is a DOS PRINT replacement included in
|
|
LaserTools' PrintCache memory/disk-based print spooler package
|
|
Note: if either SI or DI differs from the indicated magic values on entry,
|
|
PrintCache will use the default print options for the file for
|
|
compatibility with DOS PRINT
|
|
SeeAlso: AX=0100h/SI=20D6h,AX=0101h,AH=00h"PRINT",AX=0107h"PrintCache"
|
|
--------c-2F0102-----------------------------
|
|
INT 2F - DOS 3.0+ PRINT - REMOVE FILE FROM PRINT QUEUE
|
|
AX = 0102h
|
|
DS:DX -> ASCIZ filename (wildcards allowed)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02594)
|
|
SeeAlso: AX=0101h,AX=0103h,AH=01h"PRINT"
|
|
--------c-2F0103-----------------------------
|
|
INT 2F - DOS 3.0+ PRINT - CANCEL ALL FILES IN PRINT QUEUE
|
|
AX = 0103h
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02594)
|
|
SeeAlso: AX=0102h
|
|
--------c-2F0104-----------------------------
|
|
INT 2F - DOS 3.0+ PRINT - FREEZE PRINT QUEUE TO READ JOB STATUS
|
|
AX = 0104h
|
|
Return: CF clear if successful
|
|
DX = error count since status last read
|
|
DS:SI -> print queue
|
|
CF set on error
|
|
AX = error code (see #02594)
|
|
Desc: get the list of print jobs, temporarily suspending PRINT's activities
|
|
to avoid changing the list while it is being examined
|
|
Notes: the print queue is an array of 64-byte ASCIZ filenames terminated by
|
|
an empty filename; the first name is the file currently being printed
|
|
printing is stopped until AX=0105h is called to prevent the queue
|
|
from changing while the filenames are being read
|
|
SeeAlso: AX=0101h,AX=0105h
|
|
--------c-2F0105-----------------------------
|
|
INT 2F - DOS 3.0+ PRINT - RESTART PRINT QUEUE AFTER STATUS READ
|
|
AX = 0105h
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02594)
|
|
Desc: restart PRINT's activities once an application finishes examining the
|
|
print queue
|
|
SeeAlso: AX=0104h
|
|
--------c-2F0106-----------------------------
|
|
INT 2F - DOS 3.3+ PRINT - GET PRINTER DEVICE
|
|
AX = 0106h
|
|
Return: CF set if files in print queue
|
|
AX = error code 0008h (queue full)
|
|
DS:SI -> device driver header (see #01646)
|
|
CF clear if print queue empty
|
|
AX = 0000h
|
|
Desc: determine which device, if any, PRINT is currently using for output
|
|
Notes: undocumented prior to the release of MS-DOS 5.0
|
|
this function can be used to allow a program to avoid printing to the
|
|
printer on which PRINT is currently performing output
|
|
SeeAlso: AX=0104h
|
|
--------c-2F0107-----------------------------
|
|
INT 2F U - PrintCache v3.1 PRINT.COM - SET TRAILING FORM FEEDS
|
|
AX = 0107h
|
|
CL bit 0: output form feed between print jobs
|
|
Return: AL destroyed
|
|
SeeAlso: AX=0100h/SI=20D6h,AX=0101h/SI=20D6h
|
|
--------N-2F0200-----------------------------
|
|
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - INSTALLATION CHECK
|
|
AX = 0200h
|
|
Return: AL = FFh if installed
|
|
Desc: determine whether the PC LAN Program redirector is installed
|
|
SeeAlso: AX=0201h,AX=0203h
|
|
--------N-2F0201-----------------------------
|
|
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
|
|
AX = 0201h
|
|
Return: nothing???
|
|
Notes: this function is called by the DOS 3.3+ PRINT.COM
|
|
AX=0202h appears to be the opposite function
|
|
these functions are supposedly used to signal opening and closing of
|
|
printers
|
|
SeeAlso: AX=0202h
|
|
--------N-2F0202-----------------------------
|
|
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
|
|
AX = 0202h
|
|
???
|
|
Return: nothing???
|
|
Notes: this function is called by the DOS 3.3+ PRINT.COM
|
|
these functions are supposedly used to signal opening and closing of
|
|
printers
|
|
SeeAlso: AX=0201h
|
|
--------N-2F0203-----------------------------
|
|
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
|
|
AX = 0203h
|
|
Return: nothing???
|
|
Notes: this function is called by the DOS 3.3+ PRINT.COM
|
|
AX=0204h appears to be the opposite function
|
|
these functions are supposedly used to signal opening and closing of
|
|
printers
|
|
SeeAlso: AX=0200h,AX=0204h
|
|
--------N-2F0204-----------------------------
|
|
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
|
|
AX = 0204h
|
|
???
|
|
Return: nothing???
|
|
Notes: this function is called by the DOS 3.3+ PRINT.COM
|
|
AX=0203h appears to be the opposite function
|
|
these functions are supposedly used to signal opening and closing of
|
|
printers
|
|
SeeAlso: AX=0200h,AX=0203h
|
|
--------N-2F---------------------------------
|
|
INT 2F U - PC LAN PROGRAM REDIR/REDIRIFS internal - ???
|
|
AX = 02xxh
|
|
???
|
|
Return: ???
|
|
--------l-2F0500-----------------------------
|
|
INT 2F U - DOS 3.0+ CRITICAL ERROR HANDLER - INSTALLATION CHECK
|
|
AX = 0500h
|
|
Return: AL = status
|
|
00h not installed, OK to install
|
|
01h not installed, can't install
|
|
FFh installed
|
|
BX destroyed (MSCDEX v2.21-2.25)
|
|
CF clear (MSCDEX v2.21-2.25)
|
|
Desc: determine whether a critical error message override is installed
|
|
Note: this set of functions allows a user program to partially or completely
|
|
override the default critical error handler's message in COMMAND.COM
|
|
SeeAlso: AH=05h,INT 24
|
|
--------l-2F05-------------------------------
|
|
INT 2F CU - DOS 3.0+ CRITICAL ERROR HANDLER - EXPAND ERROR INTO STRING
|
|
AH = 05h
|
|
---DOS 3.x---
|
|
AL = extended error code (not zero)
|
|
---DOS 4.0+ ---
|
|
AL = error type
|
|
01h DOS extended error code
|
|
02h parameter error
|
|
BX = error code
|
|
Return: CF clear if successful
|
|
ES:DI -> ASCIZ error message (read-only)
|
|
AL = completion state
|
|
00h message requires completion with device name, drive, etc.
|
|
01h message is complete as returned
|
|
CF set if error code can't be converted to string
|
|
AX,DI,ES destroyed
|
|
other flags corrupted
|
|
Notes: called at start of COMMAND.COM's default critical error handler if
|
|
installed by a user program, allowing partial or complete overriding
|
|
of the default error messages
|
|
subfunction 02h is called by many DOS 4 external programs
|
|
DR DOS's COMMAND.COM appends additional info ("0 files copied") to the
|
|
returned string
|
|
SeeAlso: AX=0500h,AX=122Eh,INT 24
|
|
--------U-2F0600-----------------------------
|
|
INT 2F - DOS 3.0+ ASSIGN - INSTALLATION CHECK
|
|
AX = 0600h
|
|
Return: AL = status
|
|
00h not installed
|
|
01h not installed, but not OK to install
|
|
FFh installed
|
|
Notes: ASSIGN is not a TSR in DR DOS 5.0; it is internally replaced by SUBST
|
|
(see INT 21/AH=52h)
|
|
undocumented prior to the release of DOS 5.0
|
|
SeeAlso: AX=0601h,INT 21/AH=52h
|
|
--------U-2F0601-----------------------------
|
|
INT 2F U - DOS 3.0+ ASSIGN - GET DRIVE ASSIGNMENT TABLE
|
|
AX = 0601h
|
|
Return: ES = segment of ASSIGN work area and assignment table
|
|
Note: the 26 bytes starting at ES:0103h specify which drive each of A: to Z:
|
|
is mapped to. Initially set to 01h 02h 03h....
|
|
SeeAlso: AX=0600h,AX=AF14h"WinDOS"
|
|
--------D-2F0800-----------------------------
|
|
INT 2F U - DRIVER.SYS support - INSTALLATION CHECK
|
|
AX = 0800h
|
|
Return: AL = status
|
|
00h not installed, OK to install
|
|
01h not installed, not OK to install
|
|
FFh installed
|
|
Desc: determine whether the internal support code used by DRIVER.SYS is
|
|
present; it is always present in DOS 3.2+
|
|
Note: supported by DR DOS 5.0 and Novell DOS 7
|
|
--------D-2F0801-----------------------------
|
|
INT 2F U - DRIVER.SYS support - ADD NEW BLOCK DEVICE
|
|
AX = 0801h
|
|
DS:DI -> drive data table (see #02601,#02602,#02603)
|
|
Return: AX,BX,SI,ES destroyed
|
|
Notes: moves down internal list of drive data tables, copying and modifying
|
|
the drive description flags word for tables referencing same physical
|
|
drive
|
|
the data table is appended to the chain of tables
|
|
supported by DR DOS 5.0 and Novell DOS 7
|
|
SeeAlso: AX=0803h
|
|
--------D-2F0802-----------------------------
|
|
INT 2F U - DRIVER.SYS support - EXECUTE DEVICE DRIVER REQUEST
|
|
AX = 0802h
|
|
ES:BX -> device driver request header (see #02597)
|
|
Return: request header updated as per requested operation
|
|
STACK: WORD original flags from INT call (left by RETF in device
|
|
driver, at least in DOS 5.0-6.22)
|
|
Notes: supported by DR DOS 5.0
|
|
DOS 3.2 executes this function on any AL value from 02h through F7h;
|
|
DOS 4.0+ executes this function on AL=02h and AL=04h-F7h
|
|
the command codes (see #02595) and structures described below apply
|
|
to all drivers which support the appropriate commands; this call is
|
|
just one of a number of ways in which a device driver request may
|
|
be invoked
|
|
supported by Novell DOS 7
|
|
SeeAlso: AX=0800h,AX=0801h,AX=0803h,AX=1510h,INT 21/AH=52h,INT 21/AH=99h
|
|
SeeAlso: INT 21/AH=9Ah
|
|
|
|
(Table 02595)
|
|
Values for device driver command code:
|
|
00h (0) INIT
|
|
01h (1) MEDIA CHECK (block devices)
|
|
02h (2) BUILD BPB (block devices)
|
|
03h (3) IOCTL INPUT
|
|
04h (4) INPUT
|
|
05h (5) NONDESTRUCTIVE INPUT, NO WAIT (character devices)
|
|
06h (6) INPUT STATUS (character devices)
|
|
07h (7) INPUT FLUSH (character devices)
|
|
08h (8) OUTPUT
|
|
09h (9) OUTPUT WITH VERIFY
|
|
0Ah (10) OUTPUT STATUS (character devices)
|
|
0Bh (11) OUTPUT FLUSH (character devices)
|
|
0Ch (12) IOCTL OUTPUT
|
|
0Dh (13) (DOS 3.0+) DEVICE OPEN
|
|
0Eh (14) (DOS 3.0+) DEVICE CLOSE
|
|
0Fh (15) (DOS 3.0+) REMOVABLE MEDIA (block devices)
|
|
10h (16) (DOS 3.0+) OUTPUT UNTIL BUSY (character devices)
|
|
11h (17) (European MS-DOS 4.0) STOP OUTPUT (console screen drivers only)
|
|
12h (18) (European MS-DOS 4.0) RESTART OUTPUT (console screen drivers only)
|
|
13h (19) (DOS 3.2+) GENERIC IOCTL
|
|
14h (20) (DOS 4.0, KKCFUNC) DEVICE RESTORE (character device)
|
|
15h (21) (European MS-DOS 4.0) RESET UNCERTAIN MEDIA FLAG
|
|
16h (22) (DOS 4.0) unknown???
|
|
17h (23) (DOS 3.2+) GET LOGICAL DEVICE
|
|
18h (24) (DOS 3.2+) SET LOGICAL DEVICE
|
|
19h (25) (DOS 5.0+) CHECK GENERIC IOCTL SUPPORT
|
|
80h (128)(CD-ROM,DRFAT32) READ LONG
|
|
81h (129)(CD-ROM) reserved
|
|
82h (130)(CD-ROM,DRFAT32) READ LONG PREFETCH
|
|
83h (131)(CD-ROM,DRFAT32) SEEK
|
|
84h (132)(CD-ROM) PLAY AUDIO
|
|
85h (133)(CD-ROM) STOP AUDIO
|
|
86h (134)(CD-ROM,DRFAT32) WRITE LONG
|
|
87h (135)(CD-ROM,DRFAT32) WRITE LONG VERIFY
|
|
88h (136)(CD-ROM) RESUME AUDIO
|
|
|
|
Bitfields for device request status:
|
|
Bit(s) Description (Table 02596)
|
|
15 error
|
|
14-11 reserved
|
|
10 ??? set by DOS kernel on entry to some driver calls
|
|
9 busy
|
|
8 done (may be clear on return under European MS-DOS 4.0)
|
|
7-0 error code if bit 15 set (see #02598)
|
|
|
|
Format of device driver request header:
|
|
Offset Size Description (Table 02597)
|
|
00h BYTE length of request header
|
|
01h BYTE subunit within device driver
|
|
02h BYTE command code (see #02595)
|
|
03h WORD status (filled in by device driver) (see #02596)
|
|
---DOS---
|
|
05h 4 BYTEs reserved (unused in DOS 2.x and 3.x)
|
|
09h DWORD (European MS-DOS 4.0 only) pointer to next request header in
|
|
device's request queue
|
|
(other versions) reserved (unused in DOS 2.x and 3.x)
|
|
---STARLITE architecture---
|
|
05h DWORD pointer to next request header
|
|
09h 4 BYTEs reserved
|
|
---command code 00h---
|
|
0Dh BYTE (ret) number of units
|
|
0Eh DWORD (call) pointer to DOS device helper function (see #02599)
|
|
(European MS-DOS 4.0 only)
|
|
(call) pointer past end of memory available to driver (DOS 5+)
|
|
(ret) address of first free byte following driver
|
|
12h DWORD (call) pointer to commandline arguments
|
|
(ret) pointer to BPB array (block drivers) or
|
|
0000h:0000h (character drivers)
|
|
16h BYTE (DOS 3.0+) drive number for first unit of block driver (0=A)
|
|
---European MS-DOS 4.0---
|
|
17h DWORD pointer to function to save registers on stack
|
|
---DOS 5+ ---
|
|
17h WORD (ret) error-message flag
|
|
0001h MS-DOS should display error msg on init failure
|
|
---command code 01h---
|
|
0Dh BYTE media descriptor
|
|
0Eh BYTE (ret) media status
|
|
00h don't know
|
|
01h media has not changed
|
|
FFh media has been changed
|
|
0Fh DWORD (ret, DOS 3.0+) pointer to previous volume ID if the
|
|
OPEN/CLOSE/RM bit in device header is set and disk changed
|
|
Note: some drives (or controllers???) forget the change line
|
|
status if another drive is accessed afterwards. The
|
|
DOS IO.SYS layer takes care of this by not relying
|
|
on the reported change line status when the change
|
|
line is not active and a different drive is accessed,
|
|
instead it reports "don't know" to the DOS kernel.
|
|
---command code 02h---
|
|
0Dh BYTE media descriptor
|
|
0Eh DWORD transfer address
|
|
-> scratch sector if NON-IBM FORMAT bit in device header set
|
|
-> first FAT sector otherwise
|
|
12h DWORD pointer to BPB (set by driver) (see #01663 at INT 21/AH=53h)
|
|
---command codes 03h,0Ch---
|
|
(see also INT 21/AX=4402h"DOS 2+",INT 21/AX=4403h"DOS")
|
|
0Dh BYTE media descriptor (block devices only)
|
|
0Eh DWORD transfer address
|
|
12h WORD (call) number of bytes to read/write
|
|
(ret) actual number of bytes read or written
|
|
---command codes 04h,08h,09h (except Compaq DOS 3.31, DR DOS 6)---
|
|
0Dh BYTE media descriptor (block devices only)
|
|
0Eh DWORD transfer address
|
|
12h WORD byte count (character devices) or sector count (block devices)
|
|
14h WORD starting sector number (block devices only)
|
|
16h DWORD (DOS 3.0+) pointer to volume ID if error 0Fh returned
|
|
1Ah DWORD (DOS 4.0+) 32-bit starting sector number (block devices with
|
|
device attribute word bit 1 set only) if starting sector
|
|
number above is FFFFh (see INT 21/AH=52h)
|
|
---command codes 04h,08h,09h (Compaq DOS 3.31, DR DOS 6)---
|
|
0Dh BYTE media descriptor (block devices only)
|
|
0Eh DWORD transfer address
|
|
12h WORD byte count (character devices) or sector count (block devices)
|
|
14h DWORD 32-bit starting sector number (block devices only)
|
|
Note: to reliably determine which variant of the request block for
|
|
functions 04h,08h,09h has been passed to the driver, check
|
|
the length field as well as the word at offset 14h. If the
|
|
length is 1Eh and 14h=FFFFh, use the DWORD at 1Ah as the
|
|
starting sector number; if the length is 18h, use the DWORD
|
|
at 14h; otherwise, use the WORD at 14h.
|
|
---command code 05h---
|
|
0Dh BYTE byte read from device if BUSY bit clear on return
|
|
---command codes 06h,07h,0Ah,0Bh,0Dh,0Eh,0Fh---
|
|
no further fields
|
|
---command code 10h---
|
|
0Dh BYTE unused
|
|
0Eh DWORD transfer address
|
|
12h WORD (call) number of bytes to write
|
|
(ret) actual number of bytes written
|
|
---command codes 11h,12h---
|
|
0Dh BYTE reserved
|
|
---command code 14h---
|
|
no further fields
|
|
Note: This is at least true for KKCFUNC.SYS' "device restore".
|
|
KKCFUNC.SYS checks that INT 2Fh in the IVT still points
|
|
to KKCFUNC's own INT 2Fh entry point. In this case it
|
|
restores the original INT 2Fh vector, as recorded at device
|
|
init, into the IVT.
|
|
SeeAlso: INT 2F/AH=4Dh
|
|
---command code 15h---
|
|
no further fields
|
|
---command codes 13h,19h---
|
|
0Dh BYTE category code
|
|
00h-7Fh reserved for Microsoft
|
|
00h unknown
|
|
01h COMn: (serial) (DOS 3.3+)
|
|
02h reserved for terminal control
|
|
03h CON (DOS 3.3+)
|
|
04h reserved for keyboard control
|
|
05h LPTn:
|
|
07h mouse (European MS-DOS 4.0)
|
|
08h disk
|
|
48h FAT32 disk control (MS-DOS 7.10+)
|
|
80h-FFh reserved for OEM/user-defined
|
|
9Eh (STARLITE) Media Access Control driver
|
|
EDh (DR PalmDOS) login security
|
|
SeeAlso: #01558
|
|
0Eh BYTE function code
|
|
00h (STARLITE) MAC Bind request
|
|
0Fh WORD copy of DS at time of IOCTL call (apparently unused in DOS 3.3)
|
|
SI contents (European MS-DOS 4.0)
|
|
11h WORD offset of device driver header (see #01646)
|
|
DI contents (European MS-DOS 4.0)
|
|
13h DWORD pointer to parameter block from INT 21/AX=440Ch or AX=440Dh
|
|
---command codes 80h,82h---
|
|
0Dh BYTE addressing mode
|
|
00h HSG (default)
|
|
01h Phillips/Sony Red Book
|
|
0Eh DWORD transfer address (ignored for command 82h)
|
|
12h WORD number of sectors to read
|
|
(if 0 for command 82h, request is an advisory seek)
|
|
14h DWORD starting sector number
|
|
logical sector number in HSG mode
|
|
frame/second/minute/unused in Red Book mode
|
|
(HSG sector = minute * 4500 + second * 75 + frame - 150)
|
|
18h BYTE data read mode
|
|
00h cooked (2048 bytes per frame)
|
|
01h raw (2352 bytes per frame, including EDC/ECC)
|
|
19h BYTE interleave size (number of sectors stored consecutively)
|
|
1Ah BYTE interleave skip factor
|
|
(number of sectors between consecutive portions)
|
|
---command code 83h---
|
|
0Dh BYTE addressing mode
|
|
00h HSG (default)
|
|
01h Phillips/Sony Red Book
|
|
0Eh DWORD transfer address (ignored)
|
|
12h WORD number of sectors to read (ignored)
|
|
14h DWORD starting sector number (see also above)
|
|
---command code 84h---
|
|
0Dh BYTE addressing mode
|
|
00h HSG (default)
|
|
01h Phillips/Sony Red Book
|
|
0Eh DWORD starting sector number (see also above)
|
|
12h DWORD number of sectors to play
|
|
---command codes 85h,88h---
|
|
no further fields
|
|
---command codes 86h,87h---
|
|
0Dh BYTE addressing mode
|
|
00h HSG (default)
|
|
01h Phillips/Sony Red Book
|
|
0Eh DWORD transfer address (ignored in write mode 0)
|
|
12h WORD number of sectors to write
|
|
14h DWORD starting sector number (also see above)
|
|
18h BYTE write mode
|
|
00h mode 0 (write all zeros)
|
|
01h mode 1 (default) (2048 bytes per sector)
|
|
02h mode 2 form 1 (2048 bytes per sector)
|
|
03h mode 2 form 2 (2336 bytes per sector)
|
|
19h BYTE interleave size (number of sectors stored consecutively)
|
|
1Ah BYTE interleave skip factor
|
|
(number of sectors between consecutive portions)
|
|
|
|
(Table 02598)
|
|
Values for device driver error code:
|
|
00h write-protect violation
|
|
01h unknown unit
|
|
02h drive not ready
|
|
03h unknown command
|
|
04h CRC error
|
|
05h bad drive request structure length
|
|
06h seek error
|
|
07h unknown media
|
|
08h sector not found
|
|
09h printer out of paper
|
|
0Ah write fault
|
|
0Bh read fault
|
|
0Ch general failure
|
|
0Dh reserved
|
|
0Eh (CD-ROM) media unavailable
|
|
0Fh invalid disk change
|
|
|
|
(Table 02599)
|
|
Call European MS-DOS 4.0 device helper function with:
|
|
DL = function
|
|
00h "SchedClock" called on each timer tick
|
|
AL = tick interval in milliseconds
|
|
01h "DevDone" device I/O complete
|
|
ES:BX -> request header
|
|
Note: must update status word first; may be called from
|
|
an interrupt handler
|
|
02h "PullRequest" pull next request from queue
|
|
DS:SI -> DWORD pointer to start of device's request queue
|
|
Return: ZF clear if pending request
|
|
ES:BX -> request header
|
|
ZF set if no more requests
|
|
03h "PullParticular" remove specific request from queue
|
|
DS:SI -> DWORD pointer to start of device's request queue
|
|
ES:BX -> request header
|
|
Return: ZF set if request header not found
|
|
04h "PushRequest" push the request onto the queue
|
|
DS:SI -> DWORD pointer to start of device's request queue
|
|
ES:BX -> request header
|
|
interrupts disabled
|
|
05h "ConsInputFilter" keyboard input check
|
|
AX = character (high byte 00h if PC ASCII character)
|
|
Return: ZF set if character should be discarded
|
|
ZF clear if character should be handled normally
|
|
Note: called by keyboard interrupt handler so DOS can scan
|
|
for special input characters
|
|
06h "SortRequest" push request in sorted order by starting sector
|
|
DS:SI -> DWORD pointer to start of device's request queue
|
|
ES:BX -> request header
|
|
interrupts disabled
|
|
07h "SigEvent" send signal on keyboard event
|
|
AH = event identifier
|
|
Return: AL,FLAGS destroyed
|
|
09h "ProcBlock" block on event
|
|
AX:BX = event identifier (typically a pointer)
|
|
CX = timeout in ms or 0000h for never
|
|
DH = interruptable flag (nonzero if pause may be interrupted)
|
|
interrupts disabled
|
|
Return: after corresponding ProcRun call
|
|
CF clear if event wakeup, set if unusual wakeup
|
|
ZF set if timeout wakeup, clear if interrupted
|
|
AL = wakeup code, nonzero if unusual wakeup
|
|
interrupts enabled
|
|
BX,CX,DX destroyed
|
|
Note: block process and schedules another to run
|
|
0Ah "ProcRun" unblock process
|
|
AX:BX = event identifier (typically a pointer)
|
|
Return: AX = number of processes awakened
|
|
ZF set if no processes awakened
|
|
BX,CX,DX destroyed
|
|
0Bh "QueueInit" initialize/clear character queue
|
|
DS:BX -> character queue structure (see #02600)
|
|
Note: the queue size field must be set before calling
|
|
0Dh "QueueWrite" put a character in the queue
|
|
DS:BX -> character queue (see #02600)
|
|
AL = character to append to end of queue
|
|
Return: ZF set if queue is full
|
|
ZF clear if character stored
|
|
0Eh "QueueRead" get a character from the queue
|
|
DS:BX -> character queue (see #02600)
|
|
Return: ZF set if queue is empty
|
|
ZF clear if characters in queue
|
|
AL = first character in queue
|
|
10h "GetDOSVar" return pointer to DOS variable
|
|
AL = index of variable
|
|
03h current process ID
|
|
BX = index into variable if AL specifies an array
|
|
CX = expected length of variable
|
|
Return: CF clear if successful
|
|
DX:AX -> variable
|
|
CF set on error
|
|
AX,DX destroyed
|
|
BX,CX destroyed
|
|
Note: the variables may not be modified
|
|
14h "Yield" yield CPU if higher-priority task ready to run
|
|
Return: FLAGS destroyed
|
|
1Bh "CritEnter" begin system critical section
|
|
DS:BX -> semaphore (6 BYTEs, initialized to zero)
|
|
Return: AX,BX,CX,DX destroyed
|
|
1Ch "CritLeave" end system critical section
|
|
DS:BX -> semaphore (6 BYTEs, initialized to zero)
|
|
Return: AX,BX,CX,DX destroyed
|
|
Note: must be called in the context of the process which
|
|
called CritEnter on the semaphore
|
|
Note: the DWORD pointing at the request queue must be allocated by the driver
|
|
and initialized to 0000h:0000h. It always points at the next request
|
|
to be executed
|
|
|
|
Format of European MS-DOS 4.0 character queue:
|
|
Offset Size Description (Table 02600)
|
|
00h WORD size of queue in bytes
|
|
02h WORD index of next character out
|
|
04h WORD count of characters in the queue
|
|
06h N BYTEs queue buffer
|
|
--------D-2F0803-----------------------------
|
|
INT 2F U - DOS 4.0+ DRIVER.SYS support - GET DRIVE DATA TABLE LIST
|
|
AX = 0803h
|
|
Return: DS:DI -> first drive data table in list (see #02601,#02602,#02603)
|
|
Note: not available under DR DOS 5.0, but supported by Novell DOS 7 (using
|
|
the MS-DOS 4+ data table format)
|
|
SeeAlso: AX=0801h
|
|
|
|
Format of DOS 3.30 drive data table:
|
|
Offset Size Description (Table 02601)
|
|
00h DWORD pointer to next table (offset FFFFh if last table)
|
|
04h BYTE physical unit number (for INT 13)
|
|
05h BYTE logical drive number (0=A:)
|
|
06h 19 BYTEs BIOS Parameter Block (see also INT 21/AH=53h)
|
|
Offset Size Description
|
|
00h WORD bytes per sector
|
|
02h BYTE sectors per cluster, FFh if unknown
|
|
03h WORD number of reserved sectors
|
|
05h BYTE number of FATs
|
|
06h WORD number of root dir entries
|
|
08h WORD total sectors
|
|
0Ah BYTE media descriptor, 00h if unknown
|
|
0Bh WORD sectors per FAT
|
|
0Dh WORD sectors per track
|
|
0Fh WORD number of heads
|
|
11h WORD number of hidden sectors
|
|
19h BYTE flags
|
|
bit 6: 16-bit FAT instead of 12-bit FAT
|
|
1Ah WORD number of DEVICE OPEN calls without corresponding DEVICE CLOSE
|
|
1Ch 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for
|
|
fixed media)
|
|
27h BYTE terminating null for volume label???
|
|
28h BYTE device type (see #01561 at INT 21/AX=440Dh"DOS 3.2+")
|
|
29h WORD bit flags describing drive (see #02604)
|
|
2Bh WORD number of cylinders
|
|
2Dh 19 BYTEs BIOS Parameter Block for highest capacity supported
|
|
40h 3 BYTEs ???
|
|
43h 9 BYTEs filesystem type???, default = "NO NAME "
|
|
(apparently only MS-DOS 3.30 fixed media, nulls for removable
|
|
media and PC-DOS 3.30)
|
|
4Ch BYTE least-significant byte of last-accessed cylinder number
|
|
---removable media---
|
|
4Dh DWORD time of last access in clock ticks (FFFFFFFFh if never)
|
|
---fixed media---
|
|
4Dh WORD partition (FFFFh = primary, 0001h = extended)
|
|
4Fh WORD absolute cylinder number of partition's start on physical
|
|
drive (always FFFFh if primary partition)
|
|
SeeAlso: #02602,#02603
|
|
|
|
Format of COMPAQ DOS 3.31 drive data table:
|
|
Offset Size Description (Table 02602)
|
|
00h DWORD pointer to next table (offset FFFFh if last table)
|
|
04h BYTE physical unit number (for INT 13)
|
|
05h BYTE logical drive number (0=A:)
|
|
06h 25 BYTEs BIOS Parameter Block (see #02603)
|
|
1Fh 6 BYTEs reserved fields from BPB above???
|
|
25h BYTE flags
|
|
bit 6: 16-bit FAT instead of 12-bit FAT
|
|
bit 5: large volume???
|
|
26h WORD device-open count???
|
|
28h 11 BYTEs volume label or "NO NAME " if none (always "NO NAME" for
|
|
fixed media)
|
|
33h BYTE terminating null for volume label
|
|
34h BYTE device type (see #01561 at INT 21/AX=440Dh"DOS 3.2+")
|
|
35h WORD bit flags describing drive (see #02604)
|
|
37h WORD number of cylinders
|
|
39h 25 BYTEs BIOS parameter block for highest capacity drive supports
|
|
52h 6 BYTEs ??? apparently always zeros
|
|
58h BYTE least-significant byte of last-accessed cylinder number
|
|
---removable media---
|
|
59h DWORD time of last access in clock ticks (FFFFFFFFh if never)
|
|
---fixed media---
|
|
59h WORD partition (FFFFh = primary, 0001h = extended)
|
|
5Bh WORD absolute cylinder number of partition's start on physical
|
|
drive (always FFFFh if primary partition)
|
|
SeeAlso: #02601,#02603
|
|
|
|
Format of DOS 4.0-7.0 drive data table:
|
|
Offset Size Description (Table 02603)
|
|
00h DWORD pointer to next table (offset FFFFh if last table)
|
|
04h BYTE physical unit number (for INT 13)
|
|
05h BYTE logical drive number (0=A:)
|
|
06h 25 BYTEs BIOS Parameter Block (see also INT 21/AH=53h)
|
|
Offset Size Description
|
|
00h WORD bytes per sector
|
|
02h BYTE sectors per cluster, FFh if unknown
|
|
03h WORD number of reserved sectors
|
|
05h BYTE number of FATs
|
|
06h WORD number of root dir entries
|
|
08h WORD total sectors (refer to offset 15h if zero)
|
|
0Ah BYTE media descriptor, 00h if unknown
|
|
0Bh WORD sectors per FAT
|
|
0Dh WORD sectors per track
|
|
0Fh WORD number of heads
|
|
11h DWORD number of hidden sectors
|
|
15h DWORD total sectors if WORD at 08h is zero
|
|
1Fh BYTE flags
|
|
bit 6: 16-bit FAT instead of 12-bit
|
|
bit 7: unsupportable disk (all accesses will return Not Ready)
|
|
20h WORD device-open count
|
|
22h BYTE device type (see #01561 at INT 21/AX=440Dh"DOS 3.2+")
|
|
23h WORD bit flags describing drive (see #02604)
|
|
25h WORD number of cylinders (for partition only, if hard disk)
|
|
27h 25 BYTEs BIOS Parameter Block for default (highest) capacity supported
|
|
40h 6 BYTEs reserved (part of BPB above)
|
|
46h BYTE last track accessed
|
|
---removable media---
|
|
47h DWORD time of last access in clock ticks (FFFFFFFFh if never)
|
|
---fixed media---
|
|
47h WORD partition (FFFFh = primary, 0001h = extended)
|
|
always 0001h for DOS 5+
|
|
49h WORD absolute cylinder number of partition's start on physical drive
|
|
(FFFFh if primary partition in DOS 4.x)
|
|
------
|
|
4Bh 11 BYTEs volume label or "NO NAME " if none (apparently taken from
|
|
extended boot record rather than root directory)
|
|
56h BYTE terminating null for volume label
|
|
57h DWORD serial number
|
|
5Bh 8 BYTEs filesystem type ("FAT12 " or "FAT16 ")
|
|
63h BYTE terminating null for filesystem type
|
|
SeeAlso: #02601,#02602
|
|
|
|
Bitfields for flags describing drive:
|
|
Bit(s) Description (Table 02604)
|
|
0 fixed media
|
|
1 door lock ("changeline") supported
|
|
2 current BPB locked
|
|
3 all sectors in a track are the same size
|
|
4 physical drive has multiple logical units
|
|
5 current logical drive for shared physical drive
|
|
6 disk change detected
|
|
7 device parameters were changed (set DASD before formatting)
|
|
(see #01560 at INT 21/AX=440Dh"DOS 3.2+")
|
|
8 disk reformatted (BPB of current media was changed)
|
|
9 access flag (fixed media only, disables reads and writes)
|
|
(see #01566 at INT 21/AX=440Dh"DOS 3.2+")
|
|
--------f-2F1000-----------------------------
|
|
INT 2F - SHARE - INSTALLATION CHECK
|
|
AX = 1000h
|
|
Return: AL = status
|
|
00h not installed, OK to install
|
|
01h not installed, not OK to install
|
|
FFh installed
|
|
Notes: supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
|
|
if DOS 4.01 SHARE was automatically loaded, file sharing is in an
|
|
inactive state (due to the undocumented /NC flag used by the autoload
|
|
code) until this call is made
|
|
DR DOS 5.0 SHARE 1.00 only checks for AH=10h and in this case does not
|
|
chain to a previous handler, DR DOS 6.0 SHARE 1.02+ properly chains
|
|
for any values other than AX=1000h and the private FDOS hook
|
|
AX=1001h. However, under DR PalmDOS and Novell DOS 7+, the
|
|
SHARE 2.00+ only tests for the AX=1000h install check, since it no
|
|
longer uses AX=1001h to hook into the system.
|
|
DOS 5+ chains to the previous handler if AL <> 00h on entry
|
|
Windows Enhanced mode hooks this call and reports that SHARE is
|
|
installed even when it is not
|
|
BUGS: values of AL other than 00h put DOS 3.x SHARE into an infinite loop
|
|
(08E9: OR AL,AL
|
|
08EB: JNZ 08EB) <- the buggy instruction (DOS 3.3)
|
|
values of AL other than described here put PC-DOS 4.00 into the same
|
|
loop (the buggy instructions are the same)
|
|
SeeAlso: AX=1080h,INT 21/AH=52h,INT 21/AX=4457h/DX=FFFFh
|
|
--------d-2F1001-----------------------------
|
|
INT 2F U - DR DOS 6.0+ FDOS EXTENSIONS - INSTALL FDOS HOOK (SHARE / DELWATCH)
|
|
AX = 1001h
|
|
DX:BX -> new FDOS stub entry function
|
|
Return: nothing
|
|
Notes: the default handler for the pointer set by this call under DELWATCH
|
|
simply returns with CF set
|
|
In Digital Research terminology FDOS is the part of the BDOS kernel
|
|
(IBMDOS.COM) responsible for the file system and related tasks, and
|
|
its functionality is also used by the BDOS kernel itself. However,
|
|
for reasons of performance and code size, it uses direct calling.
|
|
This interrupt allows external components like SHARE file locking or
|
|
DELWATCH delete tracking software to hook into the internal backdoor
|
|
INT 2F/AH=10h/AL<=09h chain in the kernel, so that they can actually
|
|
allows the kernel to ensure that several conditions are met when
|
|
passing control to these registered components including proper
|
|
maintaining A20, re-enterancy, or critical section mutexing
|
|
(e.g. getting the disk sub-system queue "MXdisk").
|
|
The default handler in the BDOS just sets the carry flag and returns.
|
|
Currently known clients to this shared interface are DR DOS 6.0
|
|
SHARE 1.xx, DR DOS 6.0+ DELWATCH 1.00+, which both chain onto
|
|
the same call far address, and the version of AddStor's SuperStor
|
|
which is bundled with DR DOS 6.0
|
|
However, the DR PalmDOS, and Novell DOS 7 - DR-DOS 7.03 SHARE 2.00-2.05
|
|
do not use this function to hook into the system. Instead they fix up
|
|
the share stubs directly. DR PalmDOS SHARE 2.00 uses the stubs at
|
|
Table !!! INT 21/AH=52h, while Novell DOS 7 - DR-DOS 7.03
|
|
SHARE 2.01-2.05 use the private set of share stubs at Table !!! at
|
|
INT 21/AX=4458h). Future releases may possibly again fix up the
|
|
share stubs at INT 21/AH=52h.
|
|
SeeAlso: AX=1000h,AX=F800h
|
|
--------D-2F1002CHFF-------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - READ BUFFERS
|
|
AX = 1002h
|
|
CH = FFh (pre-read required)
|
|
CL = buffer type (here FAT, DIR, or DATA, see below)
|
|
AH:DX = 24 bit sector number
|
|
Return: ES:SI -> buffer control block
|
|
Notes: This private function is called internally by the OS kernel to
|
|
ask the FDOS to find the corresponding buffer. By using the
|
|
INT 2F/AX=1001h FDOS hook, the call can be intercepted by external
|
|
system components such as the DELWATCH TSR.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1003h,AX=1008h,AX=1009h,AX=10FEh
|
|
|
|
Bitfields for Novell DOS 7 FDOS buffer type:
|
|
Bit(s) Description (Table 04099)
|
|
7 remote (on a network drive)
|
|
6 dirty (modified)
|
|
3 data sector
|
|
2 directory sector
|
|
1 FAT sector
|
|
--------D-2F1003-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - FLUSH BUFFERS
|
|
AX = 1003h
|
|
BL = drive???
|
|
BH = buffer type to flush (BF_ISFAT+BF_ISDIR+BF_ISDATA)
|
|
Return: nothing???
|
|
Notes: This private function is called internally by the OS kernel to
|
|
ask the FDOS to flush all buffer. By using the INT 2F/AX=1001h FDOS
|
|
hook, the call can be intercepted by external system components such
|
|
as the DELWATCH TSR.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1004h,AX=10FEh
|
|
--------D-2F1004-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - FREE FAT CHAIN
|
|
AX = 1004h
|
|
BX = first block to release on current drive
|
|
Return: nothing
|
|
Notes: This private function is called internally by the OS kernel to
|
|
ask the FDOS to release the FAT chain. By using the INT 2F/AX=1001h
|
|
FDOS hook, the call can be intercepted by external system components
|
|
such as the DELWATCH TSR.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1005h,AX=10FEh
|
|
--------D-2F1005-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - ALLOCATE CLUSTER
|
|
AX = 1005h
|
|
BX = block from which to start search (e.g. current end of file)
|
|
0000h = start of disk
|
|
Return: AX or BX??? = allocated cluster (already marked as End of Chain)
|
|
or 0000h if none available
|
|
Notes: This private function is called internally by the OS kernel to
|
|
ask the FDOS to allocate disk space. By using the
|
|
INT 2F/AX=1001h FDOS hook, the call can be intercepted by external
|
|
system components such as the DELWATCH TSR.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1004h,AX=1007h,AX=10FEh
|
|
--------D-2F1006-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - NEXT CLUSTER / READ FAT???
|
|
AX = 1006h
|
|
BX = current cluster number
|
|
Return: AX or BX??? = next cluster in chain
|
|
Notes: This private function is called internally by the OS kernel to
|
|
ask the FDOS to get the next cluster in a file. By using the
|
|
INT 2F/AX=1001h FDOS hook, the call can be intercepted by external
|
|
system components such as the DELWATCH TSR.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1005h,AX=1007h,AX=10FEh
|
|
--------D-2F1007-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - UPDATE FAT ENTRY / WRITE FAT???
|
|
AX = 1007h
|
|
BX = FAT entry to change
|
|
DX = new value
|
|
Return: nothing
|
|
Notes: This private function is called internally by the OS kernel to
|
|
ask the FDOS to update the FAT. By using the INT 2F/AX=1001h FDOS
|
|
hook, the call can be intercepted by external system components such
|
|
as the DELWATCH TSR.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1005h,AX=1006h,AX=1008h,AX=10FEh
|
|
--------D-2F1008-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - FIXUP CHECKSUMS / DIR UPDATE???
|
|
AX = 1008h
|
|
BX = segment of directory buffer
|
|
CX = cluster to fixup (0 = root)
|
|
DI = directory entry index (truncated to cluster if subdirectory)
|
|
BX:SI -> directory entry (single entry for hashing)
|
|
Return: nothing
|
|
Notes: This private function is called internally by the OS kernel to
|
|
ask the FDOS to fixup hashing/checksums. By using the
|
|
INT 2F/AX=1001h FDOS hook, the call can be intercepted by external
|
|
system components such as the DELWATCH TSR.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1007h,AX=1009h,AX=10FEh
|
|
--------D-2F1009-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - DIRECTORY BUFFER INFO
|
|
AX = 1009h
|
|
Return: ES:DI -> 128-byte directory record buffer
|
|
ES:SI -> directory BCB structure (see #04101)
|
|
Notes: This private function is called internally by the OS kernel. By using
|
|
the INT 2F/AX=1001h FDOS hook, the call can be intercepted by
|
|
external system components such as the DELWATCH TSR.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=10FEh
|
|
|
|
Format of Novell DOS 7+ FDOS directory BCB:
|
|
Offset Size Description (Table 04101)
|
|
00h BYTE drive (FFh = invalid)
|
|
01h BYTE low byte of record number
|
|
02h BYTE middle byte of record number
|
|
03h BYTE high byte of record number
|
|
--------d-2F1010CX0000-----------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - SUPERSTOR - QUERY PHYS FREE SPACE
|
|
AX = 1010h
|
|
CX = 0000h
|
|
Return: CX = free space
|
|
0000h if no physical space left on the drive
|
|
else there is still space available
|
|
Notes: This private function is internally called by the FDOS part of the
|
|
OS kernel on "out of disk space" conditions. It allows optimized
|
|
behaviour of DELWATCH delete tracking software in conjunction with
|
|
disk compression, and was implemented for SuperStor (but it would
|
|
also work with other disk compression if they hook this function).
|
|
If there truly is no physical space left on the drive, the FDOS asks
|
|
DELWATCH to purge files in its queue until enough space has been
|
|
freed, or there actually is no free disk space any more.
|
|
By using the INT 2F/AX=1001h FDOS hook, the call can be intercepted by
|
|
external system components such as SuperStor, bundled with DR DOS
|
|
"Panther" and Novell DOS 7 BETAs.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=10FEh
|
|
--------y-2F1020-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - CREATE PASSWORD ENTRY
|
|
AX = 1020h
|
|
???
|
|
Return: ???
|
|
Notes: This private function is called internally by the OS kernel to an
|
|
optional SECURITY TSR. By using the INT 2F/AX=1001h FDOS hook, it
|
|
can be intercepted by external system components such as
|
|
Multiuser SECURITY, bundled with DR DOS "Panther" Beta 1.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1021h,AX=1022h,AX=10FEh
|
|
--------y-2F1021-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - CHANGE PASSWORD ENTRY
|
|
AX = 1021h
|
|
CL > 05h ???
|
|
BX -> matching directory entry???
|
|
AL = directory attributes???
|
|
Return: ???
|
|
CF set on error (password change not allowed)
|
|
Notes: This private function is called internally by the OS kernel to an
|
|
optional SECURITY TSR. By using the INT 2F/AX=1001h FDOS hook, it
|
|
can be intercepted by external system components such as
|
|
Multiuser SECURITY, bundled with DR DOS "Panther" Beta 1.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1020h,AX=1022h,AX=10FEh
|
|
--------y-2F1022-----------------------------
|
|
INT 2F CU - Novell DOS 7+ FDOS EXTENSIONS - CHECK PASSWORD ENTRY
|
|
AX = 1022h
|
|
???
|
|
Return: ???
|
|
Notes: This private function is called internally by the OS kernel to an
|
|
optional SECURITY TSR. By using the INT 2F/AX=1001h FDOS hook, it
|
|
can be intercepted by external system components such as
|
|
Multiuser SECURITY, bundled with DR DOS "Panther" Beta 1.
|
|
This function must under no circumstances be called by applications!
|
|
SeeAlso: INT 2F/AX=1001h,AX=1020h,AX=1021h,AX=10FEh
|
|
--------f-2F1040-----------------------------
|
|
INT 2F U - DOS 4 only SHARE internal - ???
|
|
AX = 1040h
|
|
???
|
|
Return: AL = FFh???
|
|
SeeAlso: AX=1000h
|
|
--------f-2F1080-----------------------------
|
|
INT 2F U - DOS 4 only SHARE internal - TURN ON FILE SHARING CHECKS
|
|
AX = 1080h
|
|
Return: AL = status
|
|
F0h successful
|
|
FFh checking was already on
|
|
Note: DOS 4.x SHARE has dual functions: FCB support for large (>32M) media
|
|
and file sharing checks. The undocumented commandline flag /NC can
|
|
be used to disable the sharing code.
|
|
SeeAlso: AX=1000h,AX=1081h
|
|
--------f-2F1081-----------------------------
|
|
INT 2F U - DOS 4 only SHARE internal - TURN OFF FILE SHARING CHECKS
|
|
AX = 1081h
|
|
Return: AL = status
|
|
F0h successful
|
|
FFh checking was already off
|
|
Note: (see AX=1080h)
|
|
SeeAlso: AX=1000h,AX=1080h
|
|
--------O-2F10FE-----------------------------
|
|
INT 2F U - DR DOS 6.0+ DELWATCH.EXE - INSTALLATION CHECK
|
|
AX = 10FEh
|
|
Return: AL = FFh if installed and active
|
|
AH = internal version number
|
|
10h for DR DOS 6.0 DELWATCH 1.0 / 1.1 (through 1993/03/19)
|
|
20h for Novell DOS 7+ DELWATCH 2.0+
|
|
DX:BX -> private entry point (see #02605)
|
|
Notes: The DR DOS 6.0 DELWATCH 1.x used to store information about deleted
|
|
files in a hidden file named @DLWATCH.DAT, however the Novell DOS 7+
|
|
DELWATCH 2.0+ stores all the info in previously unused fields in
|
|
the files' directory entries. (See table !!! at INT 21h/11h for
|
|
details). This, however, now causes problems on systems also running
|
|
Windows 9x since Microsoft decided to use a rather similar but
|
|
incompatible method to store long filenames etc. in these entries.
|
|
Running DELWATCH 2.x on a system which previously used DELWATCH 1.x,
|
|
the @DLWATCH.DAT file will be abandoned and converted to the new
|
|
method.
|
|
SeeAlso: #01352,INT 21/AX=4306h,INT 21/AX=5704h,INT 2F/AX=1001h
|
|
|
|
(Table 02605)
|
|
Call DELWATCH private entry point with:
|
|
AH = function
|
|
00h (OS hook) installation check
|
|
AL = 00h required for DELWATCH 1.x
|
|
Return: CF clear
|
|
AX = 0000h
|
|
CX = 0004h (unsupported function)
|
|
01h (DELWATCH 1.x) New Disk
|
|
???
|
|
01h (DELWATCH 2.0+) disable DELWATCH on drive
|
|
AL = drive number (00h = A:)
|
|
Return: AX = status (0000h if failed, FFFFh if successful)
|
|
02h (OS hook) Delete File
|
|
AL = drive number (00h = A:)
|
|
DX = directory cluster number (0000h for root directory)
|
|
CX = directory entry number
|
|
DS:BX -> directory entry
|
|
ES,DS must be valid selectors if called in protected mode
|
|
Return: DS:BX -> updated directory entry
|
|
CF set if file is to be deleted by the OS
|
|
CF clear if DELWATCH has placed the file in its queue
|
|
Note: deletes the directory entry
|
|
03h (OS hook) Free Clusters
|
|
AL = drive number (00h = A:)
|
|
CX = number of clusters currently free (do not free if > 1)
|
|
DX = preferred 'search from cluster' (ignored by DELWATCH 2.0)
|
|
Return: CF clear if clusters freed
|
|
CF set if no clusters freed
|
|
DX = new 'search from' cluster (one before first free)
|
|
04h (OS hook) free root directory entry
|
|
AL = drive number (00h = A:)
|
|
Return: CF set if no directory entry freed
|
|
05h (OS hook) return free space
|
|
AL = drive number (00h = A:)
|
|
CX = number of free clusters
|
|
Return: CX = updated number of free clusters
|
|
Notes: adds space used by "deleted" files to free space
|
|
call is chained
|
|
06h enable DELWATCH on drive
|
|
AL = drive number with bit 7 set (80h = A:, etc.)
|
|
(DELWATCH 2.0+: set bit 6 for removable drives)
|
|
BX = maximum files of same name in one directory to save
|
|
CX = maximum files to save on this disk
|
|
DS:DX -> MEMDESC??? for drive data (see #04104)
|
|
DS:SI -> MEMDESC??? for DWLIST (see #04104)
|
|
ES,DS must contain valid selectors if called in protected mode
|
|
Return: AX = status
|
|
0000h failed
|
|
FFFFh successful
|
|
CX = error code on failure (see #04102)
|
|
(0004h "wrong version" if AL < 80h on entry)
|
|
07h (DELWATCH 1.x) disable DELWATCH on drive
|
|
???
|
|
07h (DELWATCH 2.0+) (OS hook) new disk
|
|
AL = drive (00h = A:, etc.)
|
|
ES:BX -> DOS DDSC structure
|
|
CF set if not enabled
|
|
Return: ???
|
|
08h set file extensions list
|
|
AL = sense (00h exclude named extensions, 01h only named ext.)
|
|
DS:BX -> 31-byte ASCIZ extension list (three blank-padded bytes
|
|
per extension)
|
|
Return: AX = FFFFh (successful)
|
|
09h adjust pending delete space
|
|
AL = drive number (00h = A:)
|
|
CX = number of clusters being freed
|
|
Return: AX = 0000h if drive not enabled
|
|
0Ah remove DELWATCH entry
|
|
AL = drive number (00h = A:)
|
|
DX = directory cluster number (0000h if root directory)
|
|
CX = directory entry number
|
|
BX:SI -> filename
|
|
ES,DS must contain valid selectors if called in protected mode
|
|
Return: AX > 0000h if entry found in DWLIST
|
|
0Bh enable NEWDISK
|
|
Return: AX > 0000h if successful (FFFFh for DELWATCH 2.0)
|
|
see also function 0Dh
|
|
0Ch (DELWATCH 1.x) drive status
|
|
AL = drive number (00h = A:, etc.)
|
|
Return: AX = drive data segment, 0000h if not enabled
|
|
CX = pending delete space, if drive enabled
|
|
0Ch (DELWATCH 2.0+) check if drive enabled
|
|
AL = drive number with bit 7 set (80h = A:, etc.)
|
|
DS:DX -> MEMDESC for drive data (see #04104)
|
|
(DX = 0000h if not required)
|
|
DS:SI -> MEMDESC for DWLIST (see #04104)
|
|
(SI = 0000h if not required)
|
|
ES,DS must contain valid selectors if called in protected mode
|
|
Return: AX = drive status (see also #04103)
|
|
0000h disabled or error
|
|
CX = error code (see #04102)
|
|
0001h drive enabled
|
|
CX = pending delete space, FFFFh if NEWDISK
|
|
not yet called
|
|
0Dh disable NEWDISK
|
|
BX = segment address of bitmap buffer
|
|
Return: AX > 0000h if successful (FFFFh for DELWATCH 2.0)
|
|
see also function 0Bh
|
|
0Eh (DELWATCH 2.0+) (OS hook) purge file
|
|
AL = drive number (00h = A:)
|
|
DX = directory cluster number (0000h if root directory)
|
|
CX = directory entry number
|
|
Return: CF set if drive not enabled
|
|
CF clear
|
|
AX = status
|
|
0000h successfully purged
|
|
else error code (see #04102)
|
|
0Fh (DELWATCH 2.0+) (OS hook) undelete file
|
|
AL = drive number (00h = A:)
|
|
DX = directory cluster number (0000h if root directory)
|
|
CX = directory entry number
|
|
Return: CF set if drive not enabled
|
|
CF clear
|
|
AX = status
|
|
0000h successfully undeleted
|
|
else error code (see #04102)
|
|
Return: AX = 0000h, CX = 0001h (see #04102) if DELWATCH busy
|
|
registers unchanged if AH > 0Fh on entry
|
|
Notes: functions marked "OS hook" must under no circumstances by called by
|
|
external applications, as this would bypass the serialization
|
|
performed by the kernel and cause problems at least in multitasking
|
|
environments.
|
|
two functions have been swapped between DELWATCH 1.x and DELWATCH 2.0
|
|
to ensure that DELWATCH 1.x calls will not do anything under newer
|
|
versions of the OS; for the same reason, the drive number in AL
|
|
sometimes requires that bit 7 be set for DELWATCH 2.0+.
|
|
SeeAlso: AX=1001h,AX=1010h
|
|
|
|
(Table 04102)
|
|
Values for DELWATCH error codes:
|
|
0001h reentered (DELWATCH busy)
|
|
0002h not enabled
|
|
0003h not found
|
|
0004h wrong version of DELWATCH
|
|
0005h memory allocation
|
|
SeeAlso: #04103
|
|
|
|
(Table 04103)
|
|
Values for DELWATCH drive status:
|
|
0000h drive not enabled
|
|
0001h OK
|
|
0002h no bitmap
|
|
0003h zero files
|
|
0004h cross-linked files
|
|
SeeAlso: #04102
|
|
|
|
Format of DELWATCH MEMDESC structure:
|
|
Offset Size Description (Table 04104)
|
|
00h BYTE memory type
|
|
01h protected mode (DPMS)
|
|
02h XMS
|
|
03h upper (high) memory
|
|
04h low memory
|
|
01h DWORD location
|
|
(conventional memory) WORD: segment base address
|
|
(XMS) WORD: XMS handle
|
|
(DPMS) DWORD: DPMS memory 32-bit base address
|
|
05h DWORD length in bytes
|
|
09h DWORD allocation
|
|
(conventional memory) WORD: memory block segment
|
|
(XMS) WORD: XMS handle (same as location handle)
|
|
(DPMS) DWORD: DPMS 32-bit handle
|
|
--------O-2F10FF-----------------------------
|
|
INT 2F U - DR DOS 5.0 - FIXUP SHARE STUB TABLE???
|
|
AX = 10FFh
|
|
ES:BX -> new SHARE stub table to use???
|
|
Return: DS destroyed???
|
|
Notes: Sets a pointer in the kernel. ES:BX points to a structure in SHARE's
|
|
segment, which presumeably contains a number (4 or 11???) of entries
|
|
of 5 bytes each and is probably part of some kind of share stub
|
|
dispatcher that gets fixed up by this call.
|
|
This was seen called by DR DOS 5.0 SHARE 1.00 (when INT 2F/AX=1000h
|
|
revealed that SHARE was not installed) before it hooked INT 2Fh
|
|
via INT 21/AH=35h to provide its install check function. It preserved
|
|
the DS register before calling.
|
|
However, the DR DOS 6.0+ SHARE 1.02+ uses INT 2F/AX=1001h to hook
|
|
into the OS, DR PalmDOS SHARE 2.00 directly fixes up the share stubs
|
|
in table !!! at INT 21h/52h, and Novell DOS 7 - DR-DOS 7.03
|
|
SHARE 2.01-2.05 maintains the private set of share stubs in
|
|
Table !!! at INT 21/AX=4458h).
|
|
This function was probably used between 1990/02/09 and 1991/03/15.
|
|
SeeAlso: INT 2F/AX=1001h
|
|
--------N-2F1100-----------------------------
|
|
INT 2F C - NETWORK REDIRECTOR - INSTALLATION CHECK
|
|
AX = 1100h
|
|
Return: AL = status
|
|
00h not installed, OK to install
|
|
01h not installed, not OK to install
|
|
FFh installed
|
|
AH = product identifier (ad hoc by various manufacturers)
|
|
00h if PC Tools v8 DRIVEMAP
|
|
42h ('B') for Beame&Whiteside BWNFS v3.0a
|
|
6Eh ('n') for NetWare Lite v1.1 CLIENT
|
|
Notes: this function is called by the DOS 3.1+ kernel
|
|
in DOS 4.x only, the 11xx calls are all in IFSFUNC.EXE, not in the
|
|
PC LAN Program redirector; DOS 5+ moves the calls back into the
|
|
redirector
|
|
the PC Network 1.00 redirector (renamed to PC LAN Program in 1.1-1.3)
|
|
only supports AL=00h-27h
|
|
--------d-2F1100SFDADA-----------------------
|
|
INT 2F - MSCDEX (MS CD-ROM Extensions) - INSTALLATION CHECK
|
|
AX = 1100h subfn DADAh
|
|
STACK: WORD DADAh
|
|
Return: AL = status
|
|
00h not installed, OK to install
|
|
STACK unchanged
|
|
01h not installed, not OK to install
|
|
STACK unchanged
|
|
FFh installed
|
|
STACK: WORD ADADh if MSCDEX installed
|
|
DADBh if Lotus CD/Networker installed
|
|
Note: although MSCDEX sets the stack word to ADADh on return, any value other
|
|
than DADAh is considered to mean that MSCDEX is already installed;
|
|
Lotus CD/Networker v4+ uses this feature to fool MSCDEX into
|
|
thinking it is already installed when it is in fact CD/Networker
|
|
that is installed
|
|
Index: installation check;Lotus CD/Networker
|
|
Index: Lotus CD/Networker;installation check
|
|
--------N-2F1101-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - REMOVE REMOTE DIRECTORY
|
|
AX = 1101h
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified directory name
|
|
SDA CDS pointer -> current directory structure for drive with dir
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=1103h,AX=1105h,INT 21/AH=3Ah,INT 21/AH=60h
|
|
--------N-2F1102-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - REMOVE REMOTE DIRECTORY
|
|
AX = 1102h
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified directory name
|
|
SDA CDS pointer -> current directory structure for drive with dir
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
Note: appears to be identical to AX=1101h; MS internal documentation calls
|
|
this function "SEQ_RMDIR"
|
|
SeeAlso: AX=1101h
|
|
--------N-2F1103-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - MAKE REMOTE DIRECTORY
|
|
AX = 1103h
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified directory name
|
|
SDA CDS pointer -> current directory structure for drive with dir
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=1101h,AX=1105h,INT 21/AH=39h,INT 21/AH=60h
|
|
--------N-2F1104-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - MAKE REMOTE DIRECTORY
|
|
AX = 1104h
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified directory name
|
|
SDA CDS pointer -> current directory structure for drive with dir
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
Note: appears to be identical to AX=1103h
|
|
SeeAlso: AX=1103h
|
|
--------N-2F1105-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - CHDIR
|
|
AX = 1105h
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified directory name
|
|
SDA CDS pointer -> current directory structure for drive with dir
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
CDS updated with new path
|
|
Notes: this function is called by the DOS 3.1+ kernel
|
|
directory string in CDS should not have a terminating backslash unless
|
|
the current directory is the root
|
|
SeeAlso: AX=1101h,AX=1103h,INT 21/AH=3Bh,INT 21/AH=60h
|
|
--------N-2F1106-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - CLOSE REMOTE FILE
|
|
AX = 1106h
|
|
ES:DI -> filled-in SFT (assumed to point at SDA's current SFT field)
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
SFT updated (redirector must decrement open count, which may be
|
|
done with INT 2F/AX=1208h)
|
|
ES:DI must be preserved
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=1116h,AX=1201h,AX=1208h,AX=1227h,INT 21/AH=3Eh
|
|
--------N-2F1107-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - COMMIT REMOTE FILE
|
|
AX = 1107h
|
|
ES:DI -> filled-in SFT (assumed to point at SDA's current SFT field)
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
all buffers for file flushed
|
|
directory entry updated
|
|
ES:DI must be preserved
|
|
Desc: perform all the buffer flushing, directory updates, etc. that would be
|
|
performed on a file close, but do not decrement the SFT reference
|
|
count
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: INT 21/AH=68h,INT 21/AX=5D01h
|
|
--------N-2F1108-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - READ FROM REMOTE FILE
|
|
AX = 1108h
|
|
ES:DI -> SFT
|
|
SFT DPB field -> DPB of drive containing file
|
|
CX = number of bytes
|
|
SS = DOS DS
|
|
SDA DTA field -> user buffer
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
CX = number of bytes read (0000h = end of file)
|
|
SFT updated
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=1109h,AX=1229h,INT 21/AH=3Fh"DOS",INT 21/AX=5D06h
|
|
--------N-2F1109-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - WRITE TO REMOTE FILE
|
|
AX = 1109h
|
|
ES:DI -> SFT
|
|
SFT DPB field -> DPB of drive containing file
|
|
CX = number of bytes
|
|
SS = DOS DS
|
|
SDA DTA field -> user buffer
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
CX = number of bytes written
|
|
SFT updated
|
|
Notes: this function is called by the DOS 3.1+ kernel
|
|
PrintCache v3.1 PCACHE.EXE intercepts this function for SFTs where
|
|
the Device Driver Header field points at PCACHE, but does not
|
|
intercept any other network redirector functions
|
|
SeeAlso: AX=1107h,AX=1108h,INT 21/AH=40h,INT 21/AX=5D06h
|
|
--------N-2F110A-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - LOCK REGION OF FILE
|
|
AX = 110Ah
|
|
BX = file handle
|
|
CX:DX = starting offset
|
|
SI = high word of size
|
|
STACK: WORD low word of size
|
|
ES:DI -> SFT
|
|
SFT DPB field -> DPB of drive containing file
|
|
SS = DOS DS
|
|
Return: CF set on error
|
|
AL = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
STACK unchanged
|
|
Notes: this function is called by the DOS 3.10-3.31 kernel
|
|
the redirector is expected to resolve lock conflicts
|
|
SeeAlso: AX=110Bh,INT 21/AH=5Ch
|
|
--------N-2F110A-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR (DOS 4.0+) - LOCK/UNLOCK REGION OF FILE
|
|
AX = 110Ah
|
|
BL = function
|
|
00h lock
|
|
01h unlock
|
|
CX = number of lock/unlock parameters (0001h for DOS 4.0-6.1)
|
|
DS:DX -> parameter block (see #02606)
|
|
ES:DI -> SFT
|
|
SFT DPB field -> DPB of drive containing file
|
|
SS = DOS DS
|
|
Return: CF set on error
|
|
AL = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
Notes: this function is called by the DOS 4.0+ kernel
|
|
the redirector is expected to resolve lock conflicts
|
|
SeeAlso: AX=110Bh,INT 21/AH=5Ch
|
|
|
|
Format of parameter block entry [array, but currently limited to single entry]:
|
|
Offset Size Description (Table 02606)
|
|
00h DWORD start offset
|
|
04h DWORD size of region
|
|
--------N-2F110B-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR (DOS 3.x only) - UNLOCK REGION OF FILE
|
|
AX = 110Bh
|
|
BX = file handle
|
|
CX:DX = starting offset
|
|
SI = high word of size
|
|
STACK: WORD low word of size
|
|
ES:DI -> SFT for file
|
|
SFT DPB field -> DPB of drive containing file
|
|
Return: CF set on error
|
|
AL = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
STACK unchanged
|
|
Note: this function is called by the DOS 3.1-3.31 kernel; DOS 4.0+ calls
|
|
AX=110Ah instead
|
|
SeeAlso: AX=110Ah,INT 21/AH=5Ch
|
|
--------N-2F110C-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - GET DISK INFORMATION
|
|
AX = 110Ch
|
|
ES:DI -> current directory structure for desired drive
|
|
Return: CF clear if data valid
|
|
AL = sectors per cluster
|
|
AH = media ID byte
|
|
BX = total clusters
|
|
CX = bytes per sector
|
|
DX = number of available clusters
|
|
CF set if data invalid
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: INT 21/AH=36h
|
|
--------N-2F110D-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - SET REMOTE FILE'S ATTRIBUTES
|
|
AX = 110Dh
|
|
SDA first filename pointer -> name of file
|
|
???
|
|
Return: ???
|
|
Note: similar to AX=110Eh
|
|
SeeAlso: AX=110Eh
|
|
--------N-2F110E-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - SET REMOTE FILE'S ATTRIBUTES
|
|
AX = 110Eh
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified name of file
|
|
SDA CDS pointer -> current directory structure for drive with file
|
|
STACK: WORD new file attributes
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
STACK unchanged
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=110Dh,AX=110Fh,INT 21/AX=4301h,INT 21/AH=60h
|
|
--------N-2F110F-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - GET REMOTE FILE'S ATTRIBUTES AND SIZE
|
|
AX = 110Fh
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified name of file
|
|
SDA CDS pointer -> current directory structure for drive with file
|
|
(offset = FFFFh if null CDS [net direct request])
|
|
SDA search attributes = mask of attributes which may be included in
|
|
search for file
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
AX = file attributes
|
|
BX:DI = file size
|
|
CX = time stamp of file
|
|
DX = date stamp of file
|
|
Notes: this function is called by the DOS 3.1+ kernel
|
|
wildcards and device names are not permitted
|
|
SeeAlso: AX=110Eh,INT 21/AX=4300h,INT 21/AH=60h
|
|
--------N-2F1110-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GET REMOTE FILE'S ATTRIBUTES AND SIZE
|
|
AX = 1110h
|
|
SDA first filename pointer -> name of file
|
|
???
|
|
Return: ???
|
|
Note: appears to be similar to AX=110Fh
|
|
SeeAlso: AX=110Eh
|
|
--------N-2F1111-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - RENAME REMOTE FILE
|
|
AX = 1111h
|
|
SS = DS = DOS DS
|
|
SDA first filename pointer = offset of fully-qualified old name
|
|
SDA second filename pointer = offset of fully-qualified new name
|
|
SDA CDS pointer -> current directory structure for drive with file
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=1112h,INT 21/AH=56h,INT 21/AH=60h
|
|
--------N-2F1112-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - RENAME REMOTE FILE
|
|
AX = 1112h
|
|
SS = DS = DOS DS
|
|
SDA first filename pointer -> name of file
|
|
???
|
|
Return: ???
|
|
Note: similar to AX=1111h
|
|
SeeAlso: AX=1111h
|
|
--------N-2F1113-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - DELETE REMOTE FILE
|
|
AX = 1113h
|
|
SS = DS = DOS DS
|
|
SDA first filename pointer -> fully-qualified filename in DOS DS
|
|
SDA CDS pointer -> current directory structure for drive with file
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
Notes: this function is called by the DOS 3.1+ kernel
|
|
the filespec may contain wildcards
|
|
SeeAlso: AX=1114h,INT 21/AH=41h,INT 21/AH=60h
|
|
--------N-2F1114-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - DELETE REMOTE FILE
|
|
AX = 1114h
|
|
SDA first filename pointer -> name of file
|
|
???
|
|
Return: ???
|
|
Note: similar to AX=1113h
|
|
SeeAlso: AX=1113h
|
|
--------N-2F1115-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - OPEN REMOTE FILE
|
|
AX = 1115h
|
|
SS = DOS DS
|
|
ES:DI -> SFT ???
|
|
???
|
|
Return: ???
|
|
Note: similar to AX=1116h
|
|
SeeAlso: AX=1116h,AX=112Eh
|
|
--------N-2F1116-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - OPEN EXISTING REMOTE FILE
|
|
AX = 1116h
|
|
ES:DI -> uninitialized SFT
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified name of file to open
|
|
STACK: WORD file access and sharing modes (see #01402 at INT 21/AH=3Dh)
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
SFT filled (except handle count, which DOS manages itself)
|
|
STACK unchanged
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=1106h,AX=1115h,AX=1117h,AX=1118h,AX=112Eh,INT 21/AH=3Dh
|
|
SeeAlso: INT 21/AH=60h
|
|
--------N-2F1117-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE REMOTE FILE
|
|
AX = 1117h
|
|
ES:DI -> uninitialized SFT
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified name of file to open
|
|
SDA CDS pointer -> current directory structure for drive with file
|
|
STACK: WORD file creation mode
|
|
low byte = file attributes (see #01401 at INT 21/AH=3Ch)
|
|
high byte = 00h normal create, 01h create new file
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
SFT filled (except handle count, which DOS manages itself)
|
|
STACK unchanged
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=1106h,AX=1116h,AX=1118h,AX=112Eh,INT 21/AH=3Ch,INT 21/AH=60h
|
|
--------N-2F1118-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - CREATE/TRUNCATE FILE WITHOUT CDS
|
|
AX = 1118h
|
|
ES:DI -> uninitialized SFT
|
|
SS = DOS DS
|
|
SDA first filename pointer -> fully-qualified name of file
|
|
STACK: WORD file creation mode
|
|
low byte = file attributes
|
|
high byte = 00h normal create, 01h create new file
|
|
Return: ???
|
|
STACK unchanged
|
|
Note: this function is called by the DOS 3.1+ kernel when creating a file
|
|
on a drive for which the SDA CDS pointer has offset FFFFh
|
|
SeeAlso: AX=1106h,AX=1116h,AX=1117h,AX=112Eh,INT 21/AH=60h
|
|
--------N-2F1119-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - FIND FIRST FILE WITHOUT CDS
|
|
AX = 1119h
|
|
SS = DS = DOS DS
|
|
[DTA] = uninitialized 21-byte findfirst search data
|
|
(see #01626 at INT 21/AH=4Eh)
|
|
SDA first filename pointer -> fully-qualified search template
|
|
SDA search attribute = attribute mask for search
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
[DTA] = updated findfirst search data
|
|
(bit 7 of first byte must be set)
|
|
[DTA+15h] = standard directory entry for file (see #01352)
|
|
Notes: this function is called by the DOS 3.1+ kernel
|
|
DOS 4.x IFSFUNC returns CF set, AX=0003h
|
|
SeeAlso: AX=111Ah,AX=111Bh,INT 21/AH=1Ah
|
|
--------N-2F111A-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - FIND NEXT FILE WITHOUT CDS
|
|
AX = 111Ah
|
|
???
|
|
Return: CF set
|
|
AX = error code (03h for DOS 4.01 IFSFUNC)
|
|
Note: use AX=111Ch for DOS 5+
|
|
SeeAlso: AX=1119h,AX=111Ch
|
|
--------N-2F111B-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - FINDFIRST
|
|
AX = 111Bh
|
|
SS = DS = DOS DS
|
|
[DTA] = uninitialized 21-byte findfirst search data
|
|
(see #01626 at INT 21/AH=4Eh)
|
|
SDA first filename pointer -> fully-qualified search template
|
|
SDA CDS pointer -> current directory structure for drive with file
|
|
SDA search attribute = attribute mask for search
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
[DTA] = updated findfirst search data
|
|
(bit 7 of first byte must be set)
|
|
[DTA+15h] = standard directory entry for file (see #01352)
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=1119h,AX=111Ch,INT 21/AH=1Ah,INT 21/AH=4Eh,INT 21/AH=60h
|
|
--------N-2F111C-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - FINDNEXT
|
|
AX = 111Ch
|
|
SS = DS = DOS DS
|
|
ES:DI -> CDS
|
|
ES:DI -> DTA (MSDOS v5.0)
|
|
[DTA] = 21-byte findfirst search data
|
|
(see #01626 at INT 21/AH=4Eh)
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
[DTA] = updated findfirst search data
|
|
(bit 7 of first byte must be set)
|
|
[DTA+15h] = standard directory entry for file (see #01352)
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: AX=1119h,AX=111Bh,INT 21/AH=1Ah,INT 21/AH=4Fh
|
|
--------N-2F111D-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - CLOSE ALL REMOTE FILES FOR PROCESS (ABORT)
|
|
AX = 111Dh
|
|
SS = DOS DS
|
|
SDA PSP segment field = PSP of terminating process
|
|
Return: nothing
|
|
Notes: used when a process is aborted; the process being terminated is
|
|
indicated by the "sharing PSP" field in the SDA (offset 1Ah/1Ch)
|
|
this function is called by the DOS 3.1+ kernel
|
|
closes all FCBs opened by process
|
|
SeeAlso: INT 21/AX=5D04h
|
|
--------N-2F111E-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - DO REDIRECTION
|
|
AX = 111Eh
|
|
SS = DOS DS
|
|
STACK: WORD function to execute
|
|
5F00h get redirection mode
|
|
BL = type (03h printer, 04h disk)
|
|
Return: BH = state (00h off, 01h on)
|
|
5F01h set redirection mode
|
|
BL = type (03h printer, 04h disk)
|
|
BH = state (00h off, 01h on)
|
|
5F02h get redirection list entry
|
|
BX = redirection list index
|
|
DS:SI -> 16-byte local device name buffer
|
|
ES:DI -> 128-byte network name buffer
|
|
Return: must set user's BX to device type and CX to
|
|
stored parameter value, using AX=1218h to get
|
|
stack frame address
|
|
5F03h redirect device
|
|
BL = device type (see INT 21/AX=5F03h)
|
|
CX = stored parameter value
|
|
DS:SI -> ASCIZ source device name
|
|
ES:DI -> destination ASCIZ network path + ASCIZ passwd
|
|
5F04h cancel redirection
|
|
DS:SI -> ASCIZ device name or network path
|
|
5F05h get redirection list extended entry
|
|
BX = redirection list index
|
|
DS:SI -> buffer for ASCIZ source device name
|
|
ES:DI -> buffer for destination ASCIZ network path
|
|
Return: BH = status flag
|
|
BL = type (03h printer, 04h disk)
|
|
CX = stored parameter value
|
|
BP = NETBIOS local session number
|
|
5F06h similar to 5F05h???
|
|
Return: CF set on error
|
|
AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
STACK unchanged
|
|
Notes: this function is called by the DOS 3.1+ kernel on INT 21/AH=5Fh
|
|
(including LAN Manager calls)
|
|
the PC Network 1.00 redirector does not support function 5F06h
|
|
SeeAlso: INT 21/AX=5F00h,INT 21/AX=5F01h,INT 21/AX=5F02h,INT 21/AX=5F03h
|
|
SeeAlso: INT 21/AX=5F04h,INT 21/AX=5F05h,INT 21/AX=5F06h
|
|
--------N-2F111F-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - PRINTER SETUP
|
|
AX = 111Fh
|
|
STACK: WORD function
|
|
5E02h set printer setup
|
|
5E03h get printer setup
|
|
5E04h set printer mode
|
|
5E05h get printer mode
|
|
Return: CF set on error
|
|
AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
STACK unchanged
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: INT 21/AX=5E02h,INT 21/AX=5E03h,INT 21/AX=5E04h,INT 21/AX=5E05h
|
|
--------N-2F1120-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - FLUSH ALL DISK BUFFERS
|
|
AX = 1120h
|
|
DS = DOS DS
|
|
???
|
|
Return: CF clear (successful)
|
|
Notes: this function is called by the DOS 3.1+ kernel
|
|
uses CDS array pointer and LASTDRIVE= entries in DOS list of lists
|
|
SeeAlso: INT 21/AH=0Dh,INT 21/AX=5D01h
|
|
--------N-2F1121-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - SEEK FROM END OF REMOTE FILE
|
|
AX = 1121h
|
|
CX:DX = offset (in bytes) from end
|
|
ES:DI -> SFT
|
|
SFT DPB field -> DPB of drive with file
|
|
SS = DOS DS
|
|
Return: CF set on error
|
|
AL = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
DX:AX = new file position
|
|
Note: this function is called by the DOS 3.1+ kernel, but only when seeking
|
|
from the end of a file opened with sharing modes set in such a
|
|
manner that another process is able to change the size of the file
|
|
while it is already open
|
|
SeeAlso: AX=1228h,INT 21/AH=42h
|
|
--------N-2F1122-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - PROCESS TERMINATION HOOK
|
|
AX = 1122h
|
|
SS = DOS DS
|
|
DS = PSP of process about to terminate
|
|
Return: ???
|
|
Notes: this function is called by the DOS 3.1+ kernel
|
|
after calling this function, the kernel calls INT 2F/AX=111Dh
|
|
SeeAlso: AX=111Dh,INT 21/AH=4Ch,INT 60/DI=0601h
|
|
--------N-2F1123-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - QUALIFY REMOTE FILENAME
|
|
AX = 1123h
|
|
DS:SI -> ASCIZ filename to canonicalize
|
|
ES:DI -> 128-byte buffer for qualified name
|
|
Return: CF set if not resolved
|
|
Notes: called by MS-DOS 3.1+ kernel, but not called by DR DOS 5.0 unless the
|
|
filename matches the name of a character device
|
|
called first when DOS attempts to resolve a filename (unless inside an
|
|
AX=5D00h server call); if this fails, DOS resolves the name locally
|
|
SeeAlso: AX=1221h,INT 21/AH=60h
|
|
--------N-2F1124-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - TURN OFF REMOTE PRINTER
|
|
AX = 1124h
|
|
ES:DI -> SFT
|
|
SS = DOS DS
|
|
???
|
|
Return: CX = ???
|
|
Note: this function is called by the DOS 3.1+ kernel if AX=1126h
|
|
returns CF set
|
|
SeeAlso: AX=1126h
|
|
--------N-2F1125-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - REDIRECTED PRINTER MODE
|
|
AX = 1125h
|
|
STACK: WORD subfunction
|
|
5D07h get print stream state
|
|
Return: DL = current state
|
|
5D08h set print stream state
|
|
DL = new state
|
|
5D09h finish print job
|
|
Return: CF set on error
|
|
AX = error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
STACK unchanged
|
|
Note: this function is called by the DOS 3.1+ kernel
|
|
SeeAlso: INT 21/AX=5D07h,INT 21/AX=5D08h,INT 21/AX=5D09h
|
|
--------N-2F1126-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR - REMOTE PRINTER ECHO ON/OFF
|
|
AX = 1126h
|
|
ES:DI -> SFT for file handle 4???
|
|
SS = DOS DS???
|
|
???
|
|
Return: CF set on error
|
|
Notes: this function is called by the DOS 3.1+ kernel
|
|
called when print echoing (^P, ^PrtSc) changes state and STDPRN has
|
|
bit 11 of the device information word in the SFT set
|
|
SeeAlso: AX=1124h
|
|
--------N-2F1127-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
|
|
AX = 1127h
|
|
Return: CF set
|
|
AX = 0001h (invalid function) (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
--------N-2F1127BX4E57-----------------------
|
|
INT 2F - NetWare 4.0 - REMOTE FILE COPY
|
|
AX = 1127h
|
|
BX = 4E57h ('NW') (signature identifying this as a NetWare call)
|
|
SI = source file handle
|
|
DI = destination file handle
|
|
DX:CX = number of bytes to copy, starting at current file position
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (05h,06h,0Bh,11h,3Bh) (see #01680)
|
|
DX:CX = number of bytes successfully copied (file position updated)
|
|
Notes: this is the only call which may be made directly to the NetWare
|
|
redirector from an application
|
|
COMMAND.COM's COPY and DOS's XCOPY reportedly call INT 21/AX=1127h in
|
|
order to speed up copies between files on the same network server;
|
|
if error code 11h (not same device) is returned, the copy is
|
|
performed in the usual manner. However, no such calls appear to
|
|
be present in MS-DOS 6.22.
|
|
From the DR DOS "Panther" BETA COMMAND.COM (1992/06/22) up to some of
|
|
the Novell DOS 7 COMMAND.COM updates (1994/09/12), the shell made
|
|
calls to INT 2F/AX=11F0h to attempt "remote server COPYing". However,
|
|
this was removed from later releases of the shell because it stopped
|
|
Performance Technologies' PowerLAN 3.1 working. (A successor of
|
|
the DR-DOS 7.03 COMMAND.COM may possibly reintroduce this remote
|
|
copy feature. Probably it would then try both INT 2F/AX=1127h and
|
|
INT 2F/AX=11F0h.)
|
|
SeeAlso: INT 2F/AX=11F0h
|
|
--------N-2F1128-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
|
|
AX = 1128h
|
|
Return: CF set
|
|
AX = 0001h (invalid function) (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
--------N-2F1129-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - UNUSED
|
|
AX = 1129h
|
|
Return: CF set
|
|
AX = 0001h (invalid function) (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
--------N-2F112A-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - CLOSE ALL FILES FOR PROCESS
|
|
AX = 112Ah
|
|
DS = DOS DS
|
|
???
|
|
Return: ???
|
|
Note: does something to each IFS driver
|
|
--------N-2F112B-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GENERIC IOCTL
|
|
AX = 112Bh
|
|
SS = DOS DS
|
|
CX = function/category
|
|
DS:DX -> parameter block
|
|
STACK: WORD value of AX on entry to INT 21 (440Ch or 440Dh)
|
|
???
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
Note: this function is called by the DOS 4.0 kernel
|
|
--------N-2F112C-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR (DOS 4.0+) - "UPDATE_CB" - ???
|
|
AX = 112Ch
|
|
SS = DOS DS
|
|
SDA current SFT pointer -> SFT for file
|
|
???
|
|
Return: CF set on error
|
|
Note: called by SHARE in DOS 5.0-6.0
|
|
--------N-2F112D-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - EXTENDED ATTRIBUTES
|
|
AX = 112Dh
|
|
BL = subfunction (value of AL on INT 21)
|
|
02h get extended attributes
|
|
03h get extended attribute properties
|
|
04h set extended attributes
|
|
Return: CF clear
|
|
else ???
|
|
Return: CX = ??? (00h or 02h for DOS 4.01)
|
|
ES:DI -> SFT for file
|
|
SS = DOS DS
|
|
Return: DS = DOS DS
|
|
Note: this function is called by the DOS 4.0 kernel on INT 21/AX=5702h,
|
|
INT 21/AX=5703h, and INT 21/AX=5704h
|
|
SeeAlso: INT 21/AX=5702h,INT 21/AX=5703h,INT 21/AX=5704h,INT 21/AH=6Eh
|
|
--------N-2F112E-----------------------------
|
|
INT 2F CU - NETWORK REDIRECTOR (DOS 4.0+) - EXTENDED OPEN/CREATE FILE
|
|
AX = 112Eh
|
|
SS = DS = DOS DS
|
|
ES:DI -> uninitialized SFT for file
|
|
STACK: WORD file attribute for created/truncated file
|
|
low byte = file attributes
|
|
high byte = 00h normal create/open, 01h create new file
|
|
SDA first filename pointer -> fully-qualified filename
|
|
SDA extended file open action = action code
|
|
(see #01770 at INT 21/AX=6C00h)
|
|
SDA extended file open mode = open mode for file (see INT 21/AX=6C00h)
|
|
Return: CF set on error
|
|
AX = error code
|
|
CF clear if successful
|
|
CX = result code
|
|
01h file opened
|
|
02h file created
|
|
03h file replaced (truncated)
|
|
SFT initialized (except handle count, which DOS manages itself)
|
|
Note: this function is called by the DOS 4.0+ kernel
|
|
BUG: this function is not called correctly under some DOS versions
|
|
(at least 5.0 and 6.2):
|
|
the file attribute on the stack is not correct if the action
|
|
code is 11h,
|
|
the result code in CX is not passed back to the application.
|
|
SeeAlso: AX=1115h,AX=1116h,AX=1117h,INT 21/AX=6C00h
|
|
--------N-2F112F-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - IFS IOCTL
|
|
AX = 112Fh
|
|
SS = DOS DS
|
|
STACK: WORD function in low byte
|
|
00h ???
|
|
DS:SI -> Current Directory Structure???
|
|
CL = drive (1=A:)
|
|
01h ???
|
|
DS:SI -> ???
|
|
CL = file handle???
|
|
02h ???
|
|
DS:SI -> Current Directory Structure???
|
|
DI = ???
|
|
CX = drive (1=A:)
|
|
???
|
|
Return: CF set on error
|
|
AX = DOS error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
Note: this function is called by the DOS 4.0 kernel
|
|
SeeAlso: INT 21/AH=6Bh
|
|
--------N-2F1130-----------------------------
|
|
INT 2F CU - IFSFUNC.EXE (DOS 4.x only) - GET IFSFUNC SEGMENT
|
|
AX = 1130h
|
|
Return: ES = CS of resident IFSFUNC
|
|
--------N-2F1180-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS Services - ???
|
|
AX = 1180h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1100h,AX=1181h,AX=118Eh
|
|
--------N-2F1181-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS Services - SET USER NAME???
|
|
AX = 1181h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1100h,AX=1180h
|
|
--------N-2F1182-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS Services - INSTALL SERVICE
|
|
AX = 1182h
|
|
???
|
|
Return: ???
|
|
SeeAlso: AX=1100h,AX=1180h
|
|
--------N-2F1184-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS - ???
|
|
AX = 1184h
|
|
???
|
|
Return: ???
|
|
--------N-2F1186-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS - DosReadAsynchNmPipe
|
|
AX = 1186h
|
|
DS:SI -> stack frame (see #02607)
|
|
Return: CF clear if successful
|
|
CF set if error
|
|
AX = error code
|
|
Note: LAN Manager enhance mode adds features beyond the standard redirector
|
|
file/printer services
|
|
SeeAlso: AX=118Fh,AX=1190h,AX=1191h,INT 21/AX=5F39h
|
|
|
|
Format of LAN Manager DosReadAsynchNmPipe stack frame:
|
|
Offset Size Description (Table 02607)
|
|
00h DWORD -> number of bytes read
|
|
04h WORD size of buffer
|
|
06h DWORD -> buffer
|
|
0Ah DWORD -> return code
|
|
0Eh DWORD function to call on completion as function( char far *buffer )
|
|
12h WORD handle
|
|
--------N-2F118A-----------------------------
|
|
INT 2F - LAN Manager 2.0+ DOS Enhanced ENCRYPT.EXE - STREAM ENCRYPTION SERVICE
|
|
AX = 118Ah
|
|
BX = function (0000h or 0001h)
|
|
Return: CF clear if successful
|
|
AX = 1100h success
|
|
CF set if error
|
|
AX = 0001h, etc.
|
|
SeeAlso: AX=1186h,AH=41h,AH=42h,AH=4Bh
|
|
--------N-2F118B-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS - ???
|
|
AX = 118Bh
|
|
???
|
|
Return: ???
|
|
--------N-2F118C-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS - ???
|
|
AX = 118Ch
|
|
???
|
|
Return: ???
|
|
--------N-2F118E-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS - ???
|
|
AX = 118Eh
|
|
???
|
|
Return: ???
|
|
--------N-2F118F-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS - DosWriteAsynchNmPipe
|
|
AX = 118Fh
|
|
DS:SI -> stack frame (see #02608)
|
|
Return: CF clear if successful
|
|
CF set if error
|
|
AX = error code
|
|
SeeAlso: AX=1186h,AX=1191h,INT 21/AX=5F3Ah
|
|
|
|
Format of LAN Manager DosReadAsynchNmPipe stack frame:
|
|
Offset Size Description (Table 02608)
|
|
00h DWORD -> number of bytes read
|
|
04h WORD Size of buffer
|
|
06h DWORD -> buffer
|
|
0Ah DWORD -> return code
|
|
0Eh DWORD function to call on completion as function( char far *buffer )
|
|
12h WORD handle
|
|
--------N-2F1190-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS - DosReadAsynchNmPipe2
|
|
AX = 1190h
|
|
DS:SI -> stack frame (see #02609)
|
|
Return: CF clear if successful
|
|
CF set if error
|
|
AX = error code
|
|
SeeAlso: AX=1186h,AX=1191h
|
|
|
|
Format of LAN Manager DosReadAsynchNmPipe2 stack frame:
|
|
Offset Size Description (Table 02609)
|
|
00h DWORD -> number of bytes read
|
|
04h WORD size of buffer
|
|
06h DWORD -> buffer
|
|
0Ah DWORD -> return code
|
|
0Eh DWORD function to call on completion as function( char far *buffer )
|
|
12h WORD handle
|
|
14h DWORD ???
|
|
--------N-2F1191-----------------------------
|
|
INT 2F - LAN Manager Enhanced DOS - DosWriteAsynchNmPipe2
|
|
AX = 1191h
|
|
DS:SI -> stack frame (see #02610)
|
|
Return: CF clear if successful
|
|
CF set if error
|
|
AX = error code
|
|
SeeAlso: AX=118Fh,AX=1190h,INT 21/AX=5F3Ah
|
|
|
|
Format of LAN Manager DosReadAsynchNmPipe2 stack frame:
|
|
Offset Size Description (Table 02610)
|
|
00h DWORD -> number of bytes read
|
|
04h WORD size of buffer
|
|
06h DWORD -> buffer
|
|
0Ah DWORD -> return code
|
|
0Eh DWORD function to call on completion as function( char far *buffer )
|
|
12h WORD handle
|
|
14h DWORD ???
|
|
--------N-2F11F0-----------------------------
|
|
INT 2F - Novell ??? - REMOTE FILE COPY
|
|
AX = 11F0h
|
|
SI = source file handle
|
|
DI = destination file handle
|
|
DX:CX = number of bytes to copy, starting at current file position
|
|
CF cleared
|
|
Return: CF clear:
|
|
AX = 11F0h "no network there"
|
|
AX <> 11F0h if successful
|
|
CF set on error "the request could not be handled"
|
|
AX = error code (05h,06h,0Bh,11h,3Bh) (see #01680)
|
|
DX:CX = number of bytes successfully copied (file position updated)
|
|
Notes: From the DR DOS "Panther" BETA COMMAND.COM (1992/06/22) up to some of
|
|
the Novell DOS 7 COMMAND.COM updates (1994/09/12), the shell made
|
|
calls to INT 2F/AX=11F0h to attempt "remote server COPYing". However,
|
|
this was removed from later releases of the shell because it
|
|
interfered with Performance Technologies' PowerLAN 3.1. (A successor
|
|
of the DR-DOS 7.03 COMMAND.COM may possibly reintroduce this remote
|
|
copy feature. Probably it would then try both INT 2F/AX=1127h and
|
|
INT 2F/AX=11F0h.)
|
|
SeeAlso: INT 2F/AX=1127h
|
|
--------D-2F1200-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - INSTALLATION CHECK
|
|
AX = 1200h
|
|
Return: AL = FFh (for compatibility with other INT 2F functions)
|
|
--------D-2F1201-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - CLOSE CURRENT FILE
|
|
AX = 1201h
|
|
SS = DOS DS = DOS kernel data seg (must be using a DOS internal stack)
|
|
SDA current SFT pointer -> SFT of file to close
|
|
Return: CF set on error
|
|
ES:DI -> SFT for file
|
|
CX undefined (new reference count of SFT in many versions)
|
|
BX destroyed
|
|
SeeAlso: AX=1106h,AX=1227h,INT 21/AH=3Eh
|
|
--------D-2F1202-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET INTERRUPT ADDRESS
|
|
AX = 1202h
|
|
STACK: WORD vector number
|
|
Return: ES:BX -> interrupt vector (DWORD containing handler's address)
|
|
STACK unchanged
|
|
--------D-2F1203-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET DOS DATA SEGMENT
|
|
AX = 1203h
|
|
Return: DS = data segment of IBMDOS.COM/MSDOS.SYS
|
|
Note: for DOS prior to version 5.0, the data segment is the same as the code
|
|
segment
|
|
--------D-2F1204-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - NORMALIZE PATH SEPARATOR
|
|
AX = 1204h
|
|
STACK: WORD character to normalize
|
|
Return: AL = normalized character (forward slash turned to backslash, all
|
|
others unchanged)
|
|
ZF set if path separator
|
|
STACK unchanged
|
|
--------D-2F1205-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - OUTPUT CHARACTER TO STANDARD OUTPUT
|
|
AX = 1205h
|
|
STACK: WORD character to output
|
|
Return: STACK unchanged
|
|
Note: can be called only from within DOS
|
|
--------D-2F1206-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - INVOKE CRITICAL ERROR
|
|
AX = 1206h
|
|
DI = error code
|
|
BP:SI -> device driver header (see #01646)
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
STACK: WORD value to be passed to INT 24 in AX
|
|
Return: AL = 0-3 for Abort, Retry, Ignore, Fail
|
|
STACK unchanged
|
|
SeeAlso: INT 24
|
|
--------D-2F1207-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - MAKE DISK BUFFER MOST-RECENTLY USED
|
|
AX = 1207h
|
|
DS:DI -> disk buffer
|
|
Return: nothing
|
|
Desc: move the indicated buffer to the end of the disk buffer chain (least-
|
|
recently used is first); under DOS 3.3, the buffer is then moved to
|
|
the start of the disk buffer chain if it was marked unused
|
|
Notes: can be called only from within DOS
|
|
this function is nearly the same as AX=120Fh
|
|
SeeAlso: AX=120Fh
|
|
--------D-2F1208-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - DECREMENT SFT REFERENCE COUNT
|
|
AX = 1208h
|
|
ES:DI -> SFT
|
|
Return: AX = original value of reference count
|
|
Notes: if the reference count was 1, it is set to FFFFh ("busy", since 0
|
|
indicates that the SFT is not in use). It is the caller's
|
|
responsibility to set the reference count to zero after cleaning up.
|
|
used by network redirectors such as MSCDEX
|
|
SeeAlso: AX=1106h
|
|
--------D-2F1209-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - FLUSH AND FREE DISK BUFFER
|
|
AX = 1209h
|
|
DS:DI -> disk buffer
|
|
Return: disk buffer marked unused, contents written to disk if buffer dirty
|
|
Note: can be called only from within DOS
|
|
SeeAlso: AX=120Eh,AX=1215h
|
|
--------D-2F120A-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - PERFORM CRITICAL ERROR INTERRUPT
|
|
AX = 120Ah
|
|
DS = SS = DOS DS (must be using a DOS internal stack)
|
|
STACK: WORD extended error code
|
|
Return: AL = user response (0=ignore, 1=retry, 2=abort, 3=fail)
|
|
CF clear if retry, set otherwise
|
|
STACK unchanged
|
|
Notes: can only be called during a DOS function call, as it uses various
|
|
fields in the SDA to set up the registers for the INT 24
|
|
reportedly sets current DPB's first root directory sector to 1
|
|
SeeAlso: INT 24
|
|
--------D-2F120B-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - SIGNAL SHARING VIOLATION TO USER
|
|
AX = 120Bh
|
|
ES:DI -> system file table entry for previous open of file
|
|
STACK: WORD extended error code (should be 20h--sharing violation)
|
|
Return: CF clear if operation should be retried
|
|
CF set if operation should not be retried
|
|
AX = error code (20h) (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
STACK unchanged
|
|
Notes: can only be called during a DOS function call
|
|
should only be called if an attempt was made to open an already-open
|
|
file contrary to the sharing rules
|
|
invokes INT 24 if SFT file opened via FCB or in compatibility mode with
|
|
inheritance allowed
|
|
--------D-2F120C-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - OPEN DEVICE AND SET SFT OWNER/MODE
|
|
AX = 120Ch
|
|
SDA current SFT pointer -> SFT for file
|
|
DS = DOS DS
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: ES, DI, AX destroyed
|
|
Notes: invokes "device open" call on device driver for SFT
|
|
changes owner of last-accessed SFT to calling process if it was opened
|
|
via FCB
|
|
called by network redirectors such as MSCDEX
|
|
--------D-2F120D-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET DATE AND TIME
|
|
AX = 120Dh
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: AX = current date in packed format (see #01666 at INT 21/AX=5700h)
|
|
DX = current time in packed format (see #01665 at INT 21/AX=5700h)
|
|
SeeAlso: INT 21/AH=2Ah,INT 21/AH=2Ch
|
|
--------D-2F120E-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - MARK ALL DISK BUFFERS UNREFERENCED
|
|
AX = 120Eh
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: DS:DI -> first disk buffer
|
|
Notes: clears "referenced" flag on all disk buffers
|
|
in DOS 5+, this has become essentially a NOP, invoking the same code
|
|
used by AX=1224h (SHARING DELAY)
|
|
SeeAlso: AX=1209h,AX=1210h,INT 21/AH=0Dh
|
|
--------D-2F120F-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - MAKE BUFFER MOST RECENTLY USED
|
|
AX = 120Fh
|
|
DS:DI -> disk buffer
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: DS:DI -> next buffer in buffer list
|
|
Desc: move the indicated buffer to the end of the disk buffer chain (least-
|
|
recently used is first); under DOS 3.3, the buffer is then moved to
|
|
the start of the disk buffer chain if it was marked unused
|
|
Note: this function is the same as AX=1207h except that it returns a
|
|
pointer to the buffer following the specified buffer in the buffer
|
|
chain
|
|
SeeAlso: AX=1207h
|
|
--------D-2F1210-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - FIND UNREFERENCED DISK BUFFER
|
|
AX = 1210h
|
|
DS:DI -> first disk buffer to check
|
|
Return: ZF clear if found
|
|
DS:DI -> first unreferenced disk buffer
|
|
ZF set if not found
|
|
Note: in DOS 5+, this has become essentially a NOP, invoking the same code
|
|
used by AX=1224h (SHARING DELAY)
|
|
SeeAlso: AX=120Eh
|
|
--------D-2F1211-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - NORMALIZE ASCIZ FILENAME
|
|
AX = 1211h
|
|
DS:SI -> ASCIZ filename to normalize
|
|
ES:DI -> buffer for normalized filename
|
|
Return: destination buffer filled with uppercase filename, with slashes turned
|
|
to backslashes
|
|
SeeAlso: AX=121Eh,AX=1221h
|
|
--------D-2F1212-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET LENGTH OF ASCIZ STRING
|
|
AX = 1212h
|
|
ES:DI -> ASCIZ string
|
|
Return: CX = length of string
|
|
SeeAlso: AX=1225h
|
|
--------D-2F1213-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - UPPERCASE CHARACTER
|
|
AX = 1213h
|
|
STACK: WORD character to convert to uppercase
|
|
Return: AL = uppercase character
|
|
STACK unchanged
|
|
--------D-2F1214-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - COMPARE FAR POINTERS
|
|
AX = 1214h
|
|
DS:SI = first pointer
|
|
ES:DI = second pointer
|
|
Return: ZF set if pointers are equal, ZF clear if not equal
|
|
CF clear if pointers equal, CF set if not
|
|
--------D-2F1215-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - FLUSH BUFFER
|
|
AX = 1215h
|
|
DS:DI -> disk buffer
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
STACK: WORD drives for which to skip buffer
|
|
ignore buffer if drive same as high byte, or bytes differ and
|
|
the buffer is for a drive OTHER than that given in low byte
|
|
Return: STACK unchanged
|
|
Note: can be called only from within DOS
|
|
SeeAlso: AX=1209h
|
|
--------D-2F1216-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET ADDRESS OF SYSTEM FILE TABLE ENTRY
|
|
AX = 1216h
|
|
BX = system file table entry number
|
|
Return: CF clear if successful
|
|
ES:DI -> system file table entry
|
|
BX = relative entry number in system file table containing entry
|
|
AX destroyed
|
|
CF set if BX greater than FILES=
|
|
Note: supported by DR DOS 5+
|
|
SeeAlso: AX=1220h
|
|
--------D-2F1217-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET CURRENT DIRECTORY STRUCTURE FOR DRIVE
|
|
AX = 1217h
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
STACK: WORD drive (0 = A:, 1 = B:, etc)
|
|
Return: CF set on error
|
|
(drive > LASTDRIVE)
|
|
CF clear if successful
|
|
DS:SI -> current directory structure for specified drive
|
|
STACK unchanged
|
|
SeeAlso: AX=1219h
|
|
--------D-2F1218-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET CALLER'S REGISTERS
|
|
AX = 1218h
|
|
Return: DS:SI -> saved caller's AX,BX,CX,DX,SI,DI,BP,DS,ES (on stack)
|
|
Note: only valid while within DOS
|
|
--------D-2F1219-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - SET DRIVE???
|
|
AX = 1219h
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
STACK: WORD drive (0 = default, 1 = A:, etc)
|
|
Return: ???
|
|
STACK unchanged
|
|
Notes: calls AX=1217h
|
|
builds a current directory structure if inside server call
|
|
(INT 21/AX=5D00h)
|
|
SeeAlso: AX=1217h,AX=121Fh
|
|
--------D-2F121A-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET FILE'S DRIVE
|
|
AX = 121Ah
|
|
DS:SI -> filename
|
|
Return: AL = drive (0 = default, 1 = A:, etc, FFh = invalid)
|
|
DS:SI -> filename without leading X: (if present)
|
|
SeeAlso: INT 21/AH=19h,INT 21/AH=60h
|
|
--------D-2F121B-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - SET YEAR/LENGTH OF FEBRUARY
|
|
AX = 121Bh
|
|
CL = year - 1980
|
|
Return: AL = number of days in February
|
|
Note: requires DS to be set to the DOS data segment
|
|
SeeAlso: INT 21/AH=2Bh"DATE"
|
|
--------D-2F121C-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - CHECKSUM MEMORY
|
|
AX = 121Ch
|
|
DS:SI -> start of memory to checksum
|
|
CX = number of bytes
|
|
DX = initial checksum
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: AX, CX destroyed
|
|
DX = checksum
|
|
DS:SI -> first byte after checksummed range
|
|
Notes: used by DOS to determine day count since 1980/1/1 given a date
|
|
supported by DR DOS 5.0+
|
|
SeeAlso: AX=121Dh
|
|
--------D-2F121D-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - SUM MEMORY
|
|
AX = 121Dh
|
|
DS:SI -> memory to add up
|
|
CX = 0000h
|
|
DX = limit
|
|
Return: AL = byte which exceeded limit
|
|
CX = number of bytes before limit exceeded
|
|
DX = remainder after adding first CX bytes
|
|
DS:SI -> byte beyond the one which exceeded the limit
|
|
Notes: used by DOS to determine year or month given day count since 1980/1/1
|
|
supported by DR DOS 5.0+
|
|
SeeAlso: AX=121Ch
|
|
--------D-2F121E-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - COMPARE FILENAMES
|
|
AX = 121Eh
|
|
DS:SI -> first ASCIZ filename
|
|
ES:DI -> second ASCIZ filename
|
|
Return: ZF set if filenames equivalent, ZF clear if not
|
|
Note: supported by DR DOS 5.0+
|
|
SeeAlso: AX=1211h,AX=1221h
|
|
--------D-2F121F-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - BUILD CURRENT DIRECTORY STRUCTURE
|
|
AX = 121Fh
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
STACK: WORD drive letter
|
|
Return: ES:DI -> current directory structure (will be overwritten by next call)
|
|
STACK unchanged
|
|
--------D-2F1220-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET JOB FILE TABLE ENTRY
|
|
AX = 1220h
|
|
BX = file handle
|
|
Return: CF set on error
|
|
AL = 6 (invalid file handle)
|
|
CF clear if successful
|
|
ES:DI -> JFT entry for file handle in current process
|
|
Notes: the byte pointed at by ES:DI contains the number of the SFT for the
|
|
file handle, or FFh if the handle is not open
|
|
supported by DR DOS 5.0+
|
|
SeeAlso: AX=1216h,AX=1229h
|
|
--------D-2F1221-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - CANONICALIZE FILE NAME
|
|
AX = 1221h
|
|
DS:SI -> file name to be fully qualified
|
|
ES:DI -> 128-byte buffer for resulting canonical file name
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: (see INT 21/AH=60h)
|
|
Note: identical to INT 21/AH=60h
|
|
SeeAlso: AX=1123h,INT 21/AH=60h
|
|
--------D-2F1222-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - SET EXTENDED ERROR INFO
|
|
AX = 1222h
|
|
SS = DOS data segment
|
|
SS:SI -> 4-byte records
|
|
BYTE error code, FFh = last record
|
|
BYTE error class, FFh = don't change
|
|
BYTE suggested action, FFh = don't change
|
|
BYTE error locus, FFh = don't change
|
|
SDA error code set
|
|
Return: SI destroyed
|
|
SDA error class, error locus, and suggested action fields set
|
|
Note: can be called only from within DOS
|
|
SeeAlso: AX=122Dh,INT 21/AH=59h/BX=0000h,INT 21/AX=5D0Ah
|
|
--------D-2F1223-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - CHECK IF CHARACTER DEVICE
|
|
AX = 1223h
|
|
DS = DOS DS
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
SDA+218h (DOS 3.10-3.30) = eight-character blank-padded name
|
|
SDA+22Bh (DOS 4.0-6.0) = eight-character blank-padded name
|
|
SDA file attribute field set
|
|
direction flag clear (i.e. CLD)
|
|
Return: CF set if no character device by that name found
|
|
CF clear if found
|
|
BH bits 4-0 copied from low byte of device attribute word
|
|
BH bit 5 set, bits 7-6 clear
|
|
Notes: can only be called from within DOS
|
|
the check is skipped (always says "not device") if the volume ID bit
|
|
of the file attribute field is set on entry
|
|
SeeAlso: INT 21/AX=5D06h,INT 21/AX=5D0Bh
|
|
--------D-2F1224-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - SHARING RETRY DELAY
|
|
AX = 1224h
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: after delay set by INT 21/AX=440Bh, unless in server call
|
|
(INT 21/AX=5D00h)
|
|
Note: delay is dependent on the processor speed, and is skipped entirely if
|
|
inside a server call
|
|
SeeAlso: INT 21/AX=440Bh,INT 21/AH=52h,INT 62/AX=0097h
|
|
--------D-2F1225-----------------------------
|
|
INT 2F U - DOS 3.0+ internal - GET LENGTH OF ASCIZ STRING
|
|
AX = 1225h
|
|
DS:SI -> ASCIZ string
|
|
Return: CX = length of string
|
|
Note: supported by DR DOS 5.0+
|
|
SeeAlso: AX=1212h
|
|
--------D-2F1226-----------------------------
|
|
INT 2F U - DOS 3.3+ internal - OPEN FILE
|
|
AX = 1226h
|
|
CL = access mode
|
|
DS:DX -> ASCIZ filename
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: CF set on error
|
|
AL = error code (see #01680 at INT 21/AH=59h/BX=0000h)
|
|
CF clear if successful
|
|
AX = file handle
|
|
Notes: can only be called from within DOS
|
|
equivalent to INT 21/AH=3Dh
|
|
used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
|
|
SeeAlso: AX=1227h,INT 21/AH=3Dh
|
|
--------D-2F1227-----------------------------
|
|
INT 2F U - DOS 3.3+ internal - CLOSE FILE
|
|
AX = 1227h
|
|
BX = file handle
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: CF set on error
|
|
AL = 06h invalid file handle
|
|
CF clear if successful
|
|
Notes: can only be called from within DOS
|
|
equivalent to INT 21/AH=3Eh
|
|
used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
|
|
SeeAlso: AX=1106h,AX=1201h,AX=1226h,INT 21/AH=3Eh
|
|
--------D-2F1228BP4200-----------------------
|
|
INT 2F U - DOS 3.3+ internal - MOVE FILE POINTER
|
|
AX = 1228h
|
|
BP = 4200h, 4201h, 4202h (see INT 21/AH=42h)
|
|
BX = file handle
|
|
CX:DX = offset in bytes
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: as for INT 21/AH=42h
|
|
Notes: equivalent to INT 21/AH=42h, but may only be called from inside a DOS
|
|
function call
|
|
sets user stack frame pointer to dummy buffer, moves BP to AX, performs
|
|
LSEEK, and restores frame pointer
|
|
used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
|
|
SeeAlso: INT 21/AH=42h
|
|
--------D-2F1229-----------------------------
|
|
INT 2F U - DOS 3.3+ internal - READ FROM FILE
|
|
AX = 1229h
|
|
BX = file handle
|
|
CX = number of bytes to read
|
|
DS:DX -> buffer
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
Return: as for INT 21/AH=3Fh"DOS"
|
|
Notes: equivalent to INT 21/AH=3Fh, but may only be called when already inside
|
|
a DOS function call
|
|
used by NLSFUNC to access COUNTRY.SYS when invoked by the DOS kernel
|
|
SeeAlso: AX=1226h,INT 21/AH=3Fh"DOS"
|
|
--------D-2F122A-----------------------------
|
|
INT 2F U - DOS 3.3+ internal - SET FASTOPEN ENTRY POINT
|
|
AX = 122Ah
|
|
BX = entry point to set (0001h or 0002h)
|
|
DS:SI -> FASTOPEN entry point (see #02611,#02612)
|
|
(entry point not set if SI = FFFFh for DOS 4.0+)
|
|
Return: CF set if specified entry point already set
|
|
Notes: entry point in BX is ignored under DOS 3.30
|
|
both entry points set to same handler by DOS 4.01
|
|
DOS 5.0 and 6.0 only set entry point 1
|
|
|
|
(Table 02611)
|
|
Values DOS 3.30+ FASTOPEN entry point is called with:
|
|
AL = 01h Lookup
|
|
CX = ??? seems to be offset
|
|
DI = ??? seems to be offset
|
|
SI = offset in DOS DS of filename
|
|
AL = 02h insert file into FASTOPEN cache
|
|
AL = 03h delete file from FASTOPEN cache
|
|
SI = offset in DOS DS of filename
|
|
AL = 04h purge FASTOPEN cache
|
|
AH = subfunction (00h,01h,02h)
|
|
ES:DI -> ???
|
|
CX = ??? (subfunctions 01h and 02h only)
|
|
Returns: CF set on error or not installed
|
|
Note: function 03h calls function 01h first
|
|
SeeAlso: #02612,#02613
|
|
|
|
(Table 02612)
|
|
Values PC-DOS 4.01 FASTOPEN is additionally called with:
|
|
AL = 04h ???
|
|
AH = 03h
|
|
???
|
|
AL = 05h ???
|
|
AL = 0Bh ???
|
|
AL = 0Ch ???
|
|
AL = 0Dh ???
|
|
AL = 0Eh ???
|
|
AL = 0Fh ???
|
|
AL = 10h ???
|
|
SeeAlso: #02611,#02613
|
|
|
|
(Table 02613)
|
|
Values MS-DOS 5.0-6.0 FASTOPEN is additionally called with:
|
|
AL = 04h purge FASTOPEN cache
|
|
AH = 03h
|
|
???
|
|
AL = 05h ???
|
|
DL = drive (00h = A:)
|
|
???
|
|
AL = 06h ???
|
|
???
|
|
SeeAlso: #02611,#02612
|
|
--------D-2F122B-----------------------------
|
|
INT 2F U - DOS 3.3+ internal - IOCTL
|
|
AX = 122Bh
|
|
BP = 44xxh
|
|
SS = DOS DS (must be using a DOS internal stack)
|
|
additional registers as appropriate for INT 21/AX=44xxh
|
|
Return: as for INT 21/AH=44h
|
|
Notes: equivalent to INT 21/AH=44h, but may only be called when already inside
|
|
a DOS function call
|
|
sets user stack frame pointer to dummy buffer, moves BP to AX, performs
|
|
IOCTL, and restores frame pointer
|
|
used by NLSFUNC in accessing COUNTRY.SYS when invoked by the DOS kernel
|
|
SeeAlso: INT 21/AH=44h
|
|
--------D-2F122C-----------------------------
|
|
INT 2F U - DOS 3.3+ internal - GET DEVICE CHAIN
|
|
AX = 122Ch
|
|
Return: BX:AX -> header of second device driver (NUL is first) in driver chain
|
|
Note: although this function exists in DR DOS 5.0 and Novell DOS 7, it
|
|
always returns 0000h:0000h prior to Novell DOS 7 Update 15
|
|
SeeAlso: INT 21/AH=52h
|
|
--------D-2F122D-----------------------------
|
|
INT 2F U - DOS 3.3+ internal - GET EXTENDED ERROR CODE
|
|
AX = 122Dh
|
|
SS = DOS DS
|
|
Return: AX = current extended error code
|
|
SeeAlso: AX=1222h,INT 21/AH=59h/BX=0000h
|
|
--------D-2F122E-----------------------------
|
|
INT 2F U - DOS 4.0+ internal - GET OR SET ERROR TABLE ADDRESSES
|
|
AX = 122Eh
|
|
DL = subfunction
|
|
00h get standard DOS error table (see #02614)
|
|
Return: ES:DI -> error table
|
|
(DOS 4: errors 00h-12h,50h-5Bh)
|
|
(DOS 5: errors 00h-26h,4Fh,51h-59h)
|
|
01h set standard DOS error table
|
|
ES:DI -> error table
|
|
02h get parameter error table (errors 00h-0Ah)
|
|
Return: ES:DI -> error table
|
|
03h set parameter error table
|
|
ES:DI -> error table
|
|
04h get critical/SHARE error table (errors 13h-2Bh)
|
|
Return: ES:DI -> error table
|
|
05h set critical/SHARE error table
|
|
ES:DI -> error table
|
|
06h get ??? error table
|
|
Return: ES:DI -> error table or 0000h:0000h
|
|
07h set ??? error table
|
|
ES:DI -> error table
|
|
08h get error message retriever (see #02615)
|
|
Return: ES:DI -> FAR procedure to fetch error message
|
|
09h set ??? error table
|
|
ES:DI -> error table
|
|
Notes: if the returned segment on a "get" is 0001h, then the offset specifies
|
|
the offset of the error message table within COMMAND.COM, and the
|
|
procedure returned by DL=08h should be called
|
|
DOS 5+ COMMAND.COM does not allow setting any of the addresses (calls
|
|
with DL odd are ignored); they are always returned with segment 0001h
|
|
for DOS 5.0, the standard and critical/SHARE error tables are combined
|
|
into a single error table
|
|
SeeAlso: AX=0500h,INT 21/AH=59h/BX=0000h
|
|
|
|
Format of DOS 4.x error table:
|
|
Offset Size Description (Table 02614)
|
|
00h BYTE FFh
|
|
01h 2 BYTEs 04h,00h (DOS version???)
|
|
03h BYTE number of error headers following
|
|
04h 2N WORDs table of all error headers for table
|
|
Offset Size Description
|
|
00h WORD error message number
|
|
02h WORD offset of error message from start of header
|
|
error messages are count byte followed by msg
|
|
Note: DOS 5 error tables consist of one word per error number; each word
|
|
contains either the offset of a counted string or 0000h
|
|
|
|
(Table 02615)
|
|
Call error retrieval function with:
|
|
AX = error number (see #02616)
|
|
DI = offset of error table
|
|
Return: ES:DI -> error message (counted string)
|
|
Notes: this function needs to access COMMAND.COM if the messages were not
|
|
loaded into memory permanently with /MSG; the caller should assume
|
|
that the returned message will be overwritten by the next call of
|
|
the function
|
|
supported by DR DOS 5.0
|
|
|
|
(Table 02616)
|
|
Values for parameter errors:
|
|
01h Too many parameters
|
|
02h Required Parameter missing
|
|
03h Invalid switch
|
|
04h Invalid keyword
|
|
06h Parameter value not in allowed range
|
|
07h Parameter value not allowed
|
|
08h Parameter value not allowed
|
|
09h Parameter format not correct
|
|
0Ah Invalid parameter
|
|
0Bh Invalid parameter combination
|
|
--------D-2F122F-----------------------------
|
|
INT 2F U - DOS 4.x internal - SET DOS VERSION NUMBER TO RETURN
|
|
AX = 122Fh
|
|
DX = DOS version number (0000h = return true DOS version)
|
|
Notes: not available under DR DOS 5.0 or 6.0, or Novell DOS 7
|
|
supported by FREEVER.COM, a freeware DOS version faking TSR by Matthias
|
|
Paul
|
|
SeeAlso: INT 21/AH=30h,INT 21/AX=3306h,INT 2F/AX=E000h"SETDRVER"
|
|
----------2F1230-----------------------------
|
|
INT 2F U - Windows95 - FIND SFT ENTRY IN INTERNAL FILE TABLES
|
|
AX = 1230h
|
|
ES:DI -> SFT entry
|
|
Return: CF clear if SFT found in internal table
|
|
CF set if SFT not in any internal file table
|
|
AX = 0000h
|
|
SI:CX = 32-bit starting cluster number for directory
|
|
DX = directory entry number
|
|
BX = index into new file system table
|
|
Notes: the new file system table from which the return values are taken is
|
|
reported to be statically allocated with 20 entries, and used only
|
|
for FCB calls
|
|
this function is not supported by DR-DOS 7.03 or earlier, by S/DOS 1.0,
|
|
or by PTS-DOS 6.51
|
|
BUG: Win95-OSR2 is reported to have a bug that can potentially corrupt
|
|
memory if SFT tables are "arranged poorly"
|
|
SeeAlso: AX=1231h,AX=1200h
|
|
----------2F1231-----------------------------
|
|
INT 2F U - Windows95 - SET/CLEAR "REPORT WINDOWS TO DOS PROGRAMS" FLAG
|
|
AX = 1231h
|
|
DL = function
|
|
00h set byte after "IsWIN386" to 01h
|
|
01h set "IsWIN386" bit 1
|
|
02h clear "IsWIN386" bit 1
|
|
else
|
|
Return: CF set
|
|
AX = 0001h
|
|
Return: CF clear
|
|
AX = 0000h
|
|
Note: this function is not supported by DR-DOS 7.03 or earlier, by S/DOS 1.0,
|
|
or by PTS-DOS 6.51
|
|
BUG: Windows98 will crash the system if DL>02h on entry due to an off-by-1
|
|
conditional jump; if the jump were correct, the function would return
|
|
CF set/AX=0001h as for Windows95
|
|
SeeAlso: AX=1230h,AX=1200h
|
|
--------O-2F1250-----------------------------
|
|
INT 2F U - PTS-DOS - SET MACHINE ID
|
|
AX = 1250h
|
|
???
|
|
Return: ???
|
|
Note: This is known to be supported by Paragon Technology Systems PTS-DOS
|
|
sometime before 6.51, but is known not to be supported by S/DOS 1.0
|
|
(which derived from PTS-DOS 6.51)
|
|
SeeAlso: AX=1251h
|
|
--------O-2F1251-----------------------------
|
|
INT 2F U - PTS-DOS - GET MACHINE ID
|
|
AX = 1251h
|
|
???
|
|
Return: ???
|
|
Note: This is known to be supported by Paragon Technology Systems PTS-DOS
|
|
sometime before 6.51, but is known not to be supported by S/DOS 1.0
|
|
(which derived from PTS-DOS 6.51)
|
|
SeeAlso: AX=1250h
|
|
--------O-2F1252-----------------------------
|
|
INT 2F U - PTS-DOS 6.51, S/DOS 1.0+ - SET SFT INCREMENT
|
|
AX = 1252h
|
|
BX = new SFT increment
|
|
Return: ???
|
|
Note: This function is known to be supported by Paragon Technology Systems
|
|
PTS-DOS 6.51 and S/DOS 1.0 and probably was also supported
|
|
in earlier releases.
|
|
SeeAlso: AX=1253h
|
|
--------O-2F1253-----------------------------
|
|
INT 2F U - PTS-DOS 6.51, S/DOS 1.0+ - GET SFT INCREMENT
|
|
AX = 1253h
|
|
Return: BX = current SFT increment
|
|
AX = ???
|
|
Note: This function is known to be supported by Paragon Technology Systems
|
|
PTS-DOS 6.51 and S/DOS 1.0 and probably was also supported
|
|
in earlier releases.
|
|
SeeAlso: AX=1252h
|
|
--------O-2F1260-----------------------------
|
|
INT 2F C - PTS-DOS 6.51, S/DOS 1.0+ - "EMPTY" (RESERVED FOR INPUT STRING)
|
|
AX = 1260h
|
|
ES:DI -> string buffer (see getstr)
|
|
DL = extended keystroke code or FFh if ENTER
|
|
Return: AX = 0000h (default handler in the kernel)
|
|
CF set if action done, all registers preserved
|
|
Notes: This function is known to be handled by Paragon Technology Systems
|
|
PTS-DOS 6.51 and S/DOS 1.0, and probably was also handled
|
|
in earlier releases.
|
|
The default handler in the kernel justs XORs AX,AX and returns.
|
|
This is reserved to be invoked in input string
|
|
--------O-2F1261-----------------------------
|
|
INT 2F - PTS-DOS 6.51, S/DOS 1.0+ - GET FIRST UMB
|
|
AX = 1261h
|
|
Return: AX = address of first UMB or 1 if invalid function.
|
|
Note: This function is known to be supported by Paragon Technology Systems
|
|
PTS-DOS 6.51 and S/DOS 1.0, and probably was also supported
|
|
in earlier releases.
|
|
--------O-2F1262-----------------------------
|
|
INT 2F - PTS-DOS 6.51, S/DOS 1.0+ - GET DOS COLOR
|
|
AX = 1262h
|
|
Return: AL = current video attribute used by DOS functions
|
|
Note: This function is known to be supported by Paragon Technology Systems
|
|
PTS-DOS 6.51 and S/DOS 1.0, and probably was also supported
|
|
in earlier releases.
|
|
SeeAlso: AX=1263h
|
|
--------O-2F1263-----------------------------
|
|
INT 2F - PTS-DOS 6.51, S/DOS 1.0+ - SET DOS COLOR
|
|
AX = 1263h
|
|
DL = new video attribute to be used by DOS functions
|
|
Return: ???
|
|
Note: This function is known to be supported by Paragon Technology Systems
|
|
PTS-DOS 6.51 and S/DOS 1.0, and probably was also supported
|
|
in earlier releases.
|
|
SeeAlso: AX=1262h
|
|
--------O-2F1270-----------------------------
|
|
INT 2F - PTS-DOS 6.51, S/DOS 1.0+ - "SYSBELL" - EMIT A BEEP
|
|
AX = 1270h
|
|
Return: ???
|
|
Note: This function is known to be supported by Paragon Technology Systems
|
|
PTS-DOS 6.51 and S/DOS 1.0, and probably was also supported
|
|
in earlier releases.
|
|
SeeAlso: AX=1271h
|
|
--------O-2F1271-----------------------------
|
|
INT 2F C - PTS-DOS, S/DOS - RESERVED FOR BEEP
|
|
AX = 1271h
|
|
Return: ???
|
|
Note: According to the Paragon Technology Systems S/DOS 1.0 sources,
|
|
which derived from PTS-DOS 6.51, this is reserved for a "BEEP"
|
|
function. However, S/DOS 1.0 does not handle this function by
|
|
itself.
|
|
SeeAlso: AX=1270h
|
|
--------O-2F12F0-----------------------------
|
|
INT 2F - PTS-DOS 6.51, S/DOS 1.0+ - BACKDOOR INTERCEPT INT 2Fh CHAIN
|
|
AX = 12F0h
|
|
CX:DX -> user INT 2F handler
|
|
CF set
|
|
Return: CF clear if successful
|
|
CX:DX -> previous INT 2F handler
|
|
CF set on error
|
|
Notes: This function is known to be supported by Paragon Technology Systems
|
|
PTS-DOS 6.51 and S/DOS 1.0, and probably was also supported
|
|
in earlier releases. It is handled from within the kernel's
|
|
INT 2Fh dispatcher.
|
|
Resident system extensions should call INT 2Fh/12F0h to intercept
|
|
the INT 2Fh chain. The main idea of this call is to allow them to
|
|
be moved to the HMA and intercept INT 2Fh without querying A20 state
|
|
and without interception of the INT2Fh vector. This is why the
|
|
"Chain2F" variable must be instanced by placing it to the SDA.
|
|
On chain entry of the far procedure, CF must be set. All registers
|
|
except for AX, BP, and DS remain unchanged. If a handler cannot
|
|
process the call, it must set CF and do a far jump to the previous
|
|
one in the chain in order to indicate an error. If CF is still set
|
|
on exit, the call will be ignored.
|
|
--------O-2F12F1-----------------------------
|
|
INT 2F - PTS-DOS, S/DOS - RESERVED
|
|
AX = 12F1h-12FFh
|
|
Return: ???
|
|
Note: According to the Paragon Technology Systems S/DOS 1.0 sources,
|
|
which derived from PTS-DOS 6.51, these functions are reserved for
|
|
future use. However, S/DOS 1.0 does not make use of them itself.
|
|
--------O-2F12FFBL00-------------------------
|
|
INT 2F - FreeDOS - FDAK-DDT - INSTALLATION CHECK / STATUS CHECK
|
|
AX = 12FFh
|
|
BL = 00h
|
|
Return: AL = DDh if installed
|
|
BH = state (00h disabled, nonzero enabled)
|
|
BL = readonly flag (00h writable, nonzero read-only)
|
|
Program: FDAK-DDT is the FreeDOS Alternative Kernel Device Drivers Testing
|
|
release by Yury A. Semenov
|
|
SeeAlso: AX=12FFh/BL=07h
|
|
--------O-2F12FFBL01-------------------------
|
|
INT 2F - FreeDOS - FDAK-DDT - ENABLE FDAK DRIVERS
|
|
AX = 12FFh
|
|
BL = 01h
|
|
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=02h
|
|
--------O-2F12FFBL02-------------------------
|
|
INT 2F - FreeDOS - FDAK-DDT - DISABLE FDAK DRIVERS
|
|
AX = 12FFh
|
|
BL = 02h
|
|
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=01h
|
|
--------O-2F12FFBL03-------------------------
|
|
INT 2F - FreeDOS - FDAK-DDT - SWITCH BLOCK DEVICE TO READ-ONLY
|
|
AX = 12FFh
|
|
BL = 03h
|
|
???
|
|
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=04h
|
|
--------O-2F12FFBL04-------------------------
|
|
INT 2F - FreeDOS - FDAK-DDT - SWITCH BLOCK DEVICE TO READ-WRITE
|
|
AX = 12FFh
|
|
BL = 04h
|
|
???
|
|
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=03h
|
|
--------O-2F12FFBL05-------------------------
|
|
INT 2F - FreeDOS - FDAK-DDT - TURN ACTIVITY INDICATOR ON
|
|
AX = 12FFh
|
|
BL = 05h
|
|
Note: not yet implemented as of January 1996
|
|
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=06h
|
|
--------O-2F12FFBL06-------------------------
|
|
INT 2F - FreeDOS - FDAK-DDT - TURN ACTIVITY INDICATOR OFF
|
|
AX = 12FFh
|
|
BL = 06h
|
|
Note: not yet implemented as of January 1996
|
|
SeeAlso: AX=12FFh/BL=00h,AX=12FFh/BL=05h
|
|
--------O-2F12FFBL07-------------------------
|
|
INT 2F - FreeDOS - FDAK-DDT - UNINSTALL
|
|
AX = 12FFh
|
|
BL = 07h
|
|
Return: ES = segment of FDAK memory block
|
|
Note: the caller must free the memory block returned in ES
|
|
(via INT 21/AH=49h)
|
|
SeeAlso: AX=12FFh/BL=00h
|
|
--------O-2F12FFBX0000-----------------------
|
|
INT 2F U - DR DOS 6.0+ IBMBIO.COM - QUERY SIZE OF THE BDOS
|
|
AX = 12FFh
|
|
BX = 0000h
|
|
Return: AX = 0000h if supported
|
|
DX = size of the BDOS in paragraphs
|
|
Flags trashed
|
|
ES,CL destroyed (DR PalmDOS)
|
|
Note: This API is provided by IBMBIO.COM for the initialization phase
|
|
of drivers loaded via DEVICE=/HIDEVICE=/DEVICEHIGH= directives and
|
|
is only available during these short time intervals. It is called
|
|
by DR DOS 6.0 EMM386.SYS and Novell DOS 7+ EMM386.EXE to query the
|
|
size of the BDOS kernel (the resident code of IBMDOS.COM).
|
|
SeeAlso: AX=12FFh/BX=0001h,AX=12FFh/BX=0002h
|
|
--------O-2F12FFBX0001-----------------------
|
|
INT 2F U - DR DOS 6.0+ IBMBIO.COM - RELOCATE THE BDOS
|
|
AX = 12FFh
|
|
BX = 0001h
|
|
CX = 0000h (DR PalmDOS)
|
|
DX = segment to relocate to (FFFFh for HMA)
|
|
Return: AX = 0000h if supported
|
|
Flags trashed
|
|
BX,CX,DX,DI,SI,DS,ES destroyed (DR PalmDOS)
|
|
Notes: This API is provided by IBMBIO.COM for the initialization phase
|
|
of drivers loaded via DEVICE=/HIDEVICE=/DEVICEHIGH= directives and
|
|
is only available during these short time intervals. It is initiated
|
|
by DR DOS 6.0 EMM386.SYS and Novell DOS 7+ EMM386.EXE to relocate
|
|
the BDOS kernel (e.g. into the HMA).
|
|
This call is also issued by DR PalmDOS IBMBIO.COM which explicitly
|
|
clears CX.
|
|
Under Novell DOS 7+ the actual relocation takes place at a later
|
|
stage, but under DR PalmDOS the BDOS is relocated immediately.
|
|
SeeAlso: AX=12FFh/BX=0000h,AX=12FFh/BX=0003h
|
|
--------O-2F12FFBX0002-----------------------
|
|
INT 2F U - DR DOS 6.0+ IBMBIO.COM - QUERY SIZE OF THE BIOS
|
|
AX = 12FFh
|
|
BX = 0002h
|
|
Return: AX = 0000h if supported
|
|
DX = size of the DOS BIOS in paragraphs
|
|
CL and flags trashed
|
|
Note: This API is provided by IBMBIO.COM for the initialization phase
|
|
of drivers loaded via DEVICE=/HIDEVICE=/DEVICEHIGH= directives and
|
|
is only available during these short time intervals. It is called
|
|
by DR DOS 6.0 EMM386.SYS and Novell DOS 7 EMM386.EXE to query the
|
|
size of the DOS BIOS (the resident code of IBMBIO.COM).
|
|
SeeAlso: AX=12FFh/BX=0000h,AX=12FFh/BX=0003h
|
|
--------O-2F12FFBX0003-----------------------
|
|
INT 2F U - DR DOS 6.0+ IBMBIO.COM - RELOCATE THE BIOS
|
|
AX = 12FFh
|
|
BX = 0003h
|
|
CX = 0000h (DR PalmDOS)
|
|
DX = segment to relocate to (FFFFh for HMA)
|
|
Return: AX = 0000h if supported
|
|
Flags trashed
|
|
Notes: This API is provided by IBMBIO.COM for the initialization phase
|
|
is only available during these short time intervals. It is initiated
|
|
by DR DOS 6.0 EMM386.SYS and Novell DOS 7 EMM386.EXE to relocate the
|
|
resident part of the DOS BIOS. The actual relocation takes place at
|
|
a later stage.
|
|
This call is also issued by DR PalmDOS IBMBIO.COM which explicitly
|
|
clears CX.
|
|
SeeAlso: AX=12FFh/BX=0001h,AX=12FFh/BX=0002h
|
|
--------O-2F12FFBX0005-----------------------
|
|
INT 2F U - DR DOS 6.0+ - BOOT PHASE BROADCASTS FOR MEMORYMAX/RPLOADER/SECURITY
|
|
AX = 12FFh
|
|
BX = 0005h
|
|
CX = 0000h
|
|
DX = function
|
|
0000h MemoryMAX cleanup broadcast
|
|
0001h RPLOADER broadcast
|
|
!!! details to follow
|
|
Note: called at three separate points inside IBMBIO.COM
|
|
--------m-2F12FFBX0006-----------------------
|
|
INT 2F U - DR DOS 6+, Novell DOS 7+ - EMM386.EXE - VIDEO MEMORY SPACE CONTROL
|
|
AX = 12FFh
|
|
BX = 0006h
|
|
DX = 0000h
|
|
CX = function
|
|
0000h get status of video memory space (MEMMAX /V)
|
|
0001h map memory into video memory space (MEMMAX +V)
|
|
0002h unmap memory from video memory space (MEMMAX -V)
|
|
Return: CF clear if successful
|
|
AX = 0000h (successful)
|
|
BX = segment of reserved video RAM
|
|
CX = segment of used video RAM
|
|
DX = segment of first upper MCB
|
|
Notes: this functionality is provided by EMM386, and partially supported by
|
|
HIDOS.SYS
|
|
BL specifies which program handles the call, BH is the function number
|
|
BUG: 4DOS 5.51(a) often hangs the system (reported to be reproducable), if
|
|
MEMMAX +V is issued from the 4DOS prompt. To avoid this, one should
|
|
temporary load COMMAND.COM followed by MEMMAX +v , starting the
|
|
application, MEMMAX -v and EXIT. 4DOS 5.5c does not show this
|
|
phenomena on the same systems where 5.51a hangs.
|
|
SeeAlso: AX=D201h/BX=4849h
|
|
|
|
(Table 04105)
|
|
Values for DR DOS memory space control error code:
|
|
00h successful
|
|
80h video memory already unmapped
|
|
81h video memory already mapped
|
|
82h no video memory reserved (/VIDEO not specified)
|
|
83h video memory in use (graphics mode or non-standard text mode)
|
|
84h mapped video memory contains allocated arena(s)
|
|
85h hardware error
|
|
86h driver requires protected mode but is permanently in real mode
|
|
("EMM386 OFF")
|
|
--------O-2F12FFBX0007-----------------------
|
|
INT 2F U - Novell DOS 7 - SCRIPT.EXE - GET ???
|
|
AX = 12FFh
|
|
BX = 0007h
|
|
CX = 0000h
|
|
Return: CF clear if installed
|
|
AX = 0000h
|
|
BX = ??? (4426h)
|
|
CX = ??? (0068h)
|
|
DX = PSP segment of resident code???
|
|
SI = ??? (4AFAh)
|
|
ES = resident code segment
|
|
--------O-2F12FFBX0009-----------------------
|
|
INT 2F - DR DOS 6.0+ IBMBIO.COM - REGISTER ROOT OF UPPER MEMORY LINK
|
|
AX = 12FFh
|
|
BX = 0009h
|
|
DX = new value for root segment of upper memory link
|
|
Return: AX = 0000h if supported
|
|
ES:BX modified
|
|
Notes: the DX value is stored at offset 66h in SYSVARS (see INT 21h/AH=52h)
|
|
and offset 18h in the Novell DOS 7 internal variable table
|
|
(see INT 21/AX=4458h)
|
|
This API is provided by IBMBIO.COM for the initialization phase
|
|
of drivers loaded via DEVICE=/HIDEVICE=/DEVICEHIGH= directives and
|
|
is only available during these short time intervals. It is probably
|
|
initiated by the Novell DOS 7+ EMM386.EXE.
|
|
this function has apparently been supported since DR DOS 6.0 "Buxton"
|
|
of 1991/03/19
|
|
for Novell DOS 7, ES:BX points at the internal variable table DRDAT,
|
|
but this may change in future releases
|
|
--------m-2F12FFBX0106-----------------------
|
|
INT 2F U - Novell DOS 7+ - MEMORYMAX INSTALLATION CHECK
|
|
AX = 12FFh
|
|
BX = 0106h
|
|
Return: CF clear if successful
|
|
AX = 0000h (successful)
|
|
BX = EDC0h (signature "European Development Centre")
|
|
CL = memory manager variant
|
|
00h if HIMEM.SYS present
|
|
01h if EMMXMA.SYS present
|
|
02h if EMM386.EXE present (DPMI/VCPI disabled)
|
|
03h if multitasking EMM386.EXE present (DPMI/VCPI loaded)
|
|
CH = ??? (00h)
|
|
DX = binary driver version, DH is major, DL is minor
|
|
ES = segment of EMM386 device driver header (low-memory stub)
|
|
CF set on error
|
|
AX = 0001h
|
|
Notes: BL specifies which program handles the call, BH is the function number
|
|
if the word at ES:0012h is nonzero, if contains the offset within
|
|
segment ES of the CEMM-compatible entry point (see #02617)
|
|
if no other program has hooked INT 67, an alternate installation
|
|
check is to test for the string
|
|
"NOVELL EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
|
|
handler's segment; the word immediately preceding this string
|
|
contains the offset of the API entry point if it is nonzero
|
|
Index: entry point;Novell EMM386
|
|
|
|
(Table 02617)
|
|
Call Novell EMM386.EXE entry point with:
|
|
AH = 00h get memory manager's status???
|
|
???
|
|
AH = 01h set memory manager's status???
|
|
???
|
|
AH = 02h Weitek coprocessor support???
|
|
AL = subfunction???
|
|
more functions???
|
|
SeeAlso: #01513 at INT 21/AX=4402h/SF=02h,#03666 at INT 67/AX=FFA5h
|
|
--------m-2F12FFBX0206-----------------------
|
|
INT 2F - Novell DOS 7+ - MEMORYMAX GET PAGE TABLE ENTRY
|
|
AX = 12FFh
|
|
BX = 0206h
|
|
ESI = linear address
|
|
Return: CF clear if successful
|
|
AX = 0000h (successful)
|
|
CX = 0000h
|
|
EDI = page table entry
|
|
CF set on error
|
|
AX = function status
|
|
0000h function supported
|
|
CX error code
|
|
80h if linear address has no mapping
|
|
0001h (AX > 0) function not supported
|
|
CX undefined
|
|
Note: This function is supported by Novell DOS 7+ EMM386.EXE 3.0+ and
|
|
possibly by HIMEM.SYS 2.3+.
|
|
SeeAlso: AX=12FFh/BX=0306h
|
|
--------m-2F12FFBX0306-----------------------
|
|
INT 2F - Novell DOS 7+ - MEMORYMAX SET PAGE TABLE ENTRY
|
|
AX = 12FFh
|
|
BX = 0306h
|
|
ESI = linear address
|
|
EDI = page table entry
|
|
Return: CF clear if successful
|
|
AX = 0000h (successful)
|
|
CX = 0000h
|
|
CF set on error
|
|
AX = function status
|
|
0000h function supported
|
|
CX error code
|
|
80h if linear address has no mapping
|
|
0001h (AX > 0) function not supported
|
|
CX undefined
|
|
Note: This function is supported by Novell DOS 7+ EMM386.EXE 3.0+ and
|
|
possibly by HIMEM.SYS 2.3+.
|
|
SeeAlso: AX=12FFh/BX=0206h
|
|
--------m-2F12FFBX0406-----------------------
|
|
INT 2F - Novell DOS 7+ - MEMORYMAX CREATE ACCESS KEY
|
|
AX = 12FFh
|
|
BX = 0406h
|
|
Return: CF clear if successful
|
|
AX = 0000h (successful)
|
|
CX = 0000h
|
|
SI:DI = access key
|
|
CF set on error
|
|
AX = function status
|
|
0000h function supported
|
|
CX error code
|
|
80h if access key already exists
|
|
0001h (AX > 0) function not supported
|
|
CX undefined
|
|
Note: This function is supported by Novell DOS 7+ EMM386.EXE 3.0+ and
|
|
possibly by HIMEM.SYS 2.3+.
|
|
SeeAlso: AX=12FFh/BX=0506h
|
|
--------m-2F12FFBX0506-----------------------
|
|
INT 2F - Novell DOS 7+ - MEMORYMAX DESTROY ACCESS KEY
|
|
AX = 12FFh
|
|
BX = 0506h
|
|
SI:DI = access key
|
|
Return: CF clear if successful
|
|
AX = 0000h (successful)
|
|
CX = 0000h
|
|
CF set on error
|
|
AX = function status
|
|
0000h function supported
|
|
CX error code
|
|
80h if invalid access key
|
|
81h if no access key exists
|
|
0001h (AX > 0) function not supported
|
|
CX undefined
|
|
Note: This function is supported by Novell DOS 7+ EMM386.EXE 3.0+ and
|
|
possibly by HIMEM.SYS 2.3+.
|
|
SeeAlso: AX=12FFh/BX=0406h
|
|
--------m-2F12FFBL06-------------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - ???
|
|
AX = 12FFh
|
|
BL = 06h
|
|
BH = function (06h-09h)
|
|
???
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = function status
|
|
0000h function supported
|
|
CX error code
|
|
0001h (AX > 0) function not supported
|
|
CX undefined
|
|
--------O-2F12FFBX0EDC-----------------------
|
|
INT 2F U - Novell DOS 7 - EMM386.EXE - CHECK IF MULTITASKING SUPPORT LOADED???
|
|
AX = 12FFh
|
|
BX = 0EDCh ('EDC' = Novell European Development Center)
|
|
Return: AX = 0000h if ??? loaded
|
|
CF clear
|
|
BX = 0000h
|
|
Notes: called by Novell DOS 7 TaskMgr
|
|
if this function returns with AX=0000h, then the code necessary to
|
|
support the API on INT 2F/AX=2780h is loaded and that API becomes
|
|
available for use
|
|
because the request is handled on the initial trap to the memory
|
|
manager caused by INT instructions, this function must be invoked
|
|
with an actual INT 2F instruction instead of some simulation such
|
|
as a far call to the address in the interrupt vector table
|
|
SeeAlso: AX=2780h/CL=01h,AX=2780h/CL=02h,AX=2780h/CL=03h,AX=2780h/CL=04h
|
|
--------D-2F13-------------------------------
|
|
INT 2F U - DOS 3.2+ - SET DISK INTERRUPT HANDLER
|
|
AH = 13h
|
|
DS:DX -> interrupt handler disk driver calls on read/write
|
|
ES:BX = address to restore INT 13 to on system halt (exit from root
|
|
shell) or warm boot (INT 19)
|
|
Return: DS:DX set by previous invocation of this function
|
|
ES:BX set by previous invocation of this function
|
|
Notes: IO.SYS hooks INT 13 and inserts one or more filters ahead of the
|
|
original INT 13 handler. The first is for disk change detection
|
|
on floppy drives, the second is for tracking formatting calls and
|
|
correcting DMA boundary errors, the third is for working around
|
|
problems in a particular version of IBM's ROM BIOS
|
|
before the first call, ES:BX points at the original BIOS INT 13; DS:DX
|
|
also points there unless IO.SYS has installed a special filter for
|
|
hard disk reads (on systems with model byte FCh and BIOS date
|
|
"01/10/84" only), in which case it points at the special filter
|
|
most DOS 3.2+ disk access is via the vector in DS:DX, although a few
|
|
functions are still invoked via an INT 13 instruction
|
|
during Windows 3.1 startup this function seems to be used to
|
|
temporarily point DOS to a dummy handler in WDCTRL.386 which always
|
|
halts the system with a fatal error message. If DS hasn't changed
|
|
on return from the function, Windows will display the error message
|
|
"Invalid DOS version".
|
|
this is a dangerous security loophole for any virus-monitoring software
|
|
which does not trap this call ("INT13", "Nomenklatura", and many
|
|
Bulgarian viruses are known to use it to get the original ROM entry
|
|
point)
|
|
the preloadable Novell DOS 7+ SECURITY.BIN driver $SECURE$ traps
|
|
this call.
|
|
BUG: Novell DOS 7 IBMBIO.COM before 1995-05-08 trashed AX on return from
|
|
this function. VGACOPY by Thomas M�nkemeier's VGA Software GmbH
|
|
crashed due to this. Later releases of Novell DOS 7 preserved the
|
|
contents of the AX register.
|
|
SeeAlso: INT 13/AH=01h,INT 19,INT 9D"VIRUS"
|
|
--------N-2F13-------------------------------
|
|
INT 2F U - MS-NET - ???
|
|
AH = 13h
|
|
???
|
|
Return: ???
|
|
Note: supposedly used to move (or control the movement of) NCBs
|
|
--------U-2F1400-----------------------------
|
|
INT 2F C - NLSFUNC.COM - INSTALLATION CHECK
|
|
AX = 1400h
|
|
BX <> 0EDCh
|
|
Return: AL = status
|
|
00h not installed, OK to install
|
|
01h not installed, not OK to install
|
|
FFh installed
|
|
Notes: this function is called by the DOS v3.3+ kernel
|
|
supported by OS/2 v1.3+ compatibility box, which always returns AL=FFh
|
|
supported by DR DOS 5.0+ NLSFUNC v3.0+
|
|
documented for MS-DOS 5+, but undocumented in prior versions
|
|
DR DOS 5.0+ NLSFUNC 3.00+ returns CF set and AX=0001h, if AL was not
|
|
00h, FEh, or FFh on entry.
|
|
SeeAlso: AX=1400h/BX=0EDCh,AX=1401h"NLSFUNC",AX=1402h"NLSFUNC"
|
|
----------2F1400BX0EDC-----------------------
|
|
INT 2Fh - DR-DOS NLSFUNC 4.01+ - ENHANCED INSTALLATION CHECK
|
|
AX = 1400h
|
|
BX = 0EDCh
|
|
Return: AL = status
|
|
00h not installed, OK to install
|
|
01h not installed, not OK to install
|
|
(for example under a multitasker)
|
|
FFh installed
|
|
ES:DI -> version signature ("4.01$".."4.04$" for 4.01..4.04)
|
|
flags may be destroyed
|
|
Program: NLSFUNC 4.01+ is currently an independent project under
|
|
development by Matthias Paul. It is not yet publically available,
|
|
but as NLSFUNC 4.00 did, it will probably become available with
|
|
future DR-DOS releases.
|
|
Notes: If BX <> 0EDCh on entry, DR-DOS NLSFUNC 4.01+ performs the standard
|
|
installation check (INT 2F/AX=1400h), and does not change ES:DI.
|
|
DR DOS 5.0+ NLSFUNC 3.00+ returns CF set and AX=0001h, if AL was not
|
|
00h, FEh, or FFh on entry.
|
|
NLSFUNC 4.01+ will use the ES:DI enhancement to check the driver
|
|
version and calculate displacements into the resident driver for
|
|
runtime updates of internal structures like the local NLS database
|
|
filespec, etc.
|
|
If the returned ES points into the HMA (ES=FFFEh) care should be taken
|
|
to actually access the HMA while checking the version signature and
|
|
updating resident data (mutex with local A20 enable/disable).
|
|
While previous issues of NLSFUNC installed under a multitasker,
|
|
DR-DOS NLSFUNC 4.01+ will actually adapt to work properly in this
|
|
environment.
|
|
SeeAlso: AX=1400h"NLSFUNC.COM",AX=14FEh,AX=14FFh,INT 21/AH=65h
|
|
--------D-2F1400-----------------------------
|
|
INT 2F - European MS-DOS 4.0 POPUP - "CheckPu" - INSTALLATION CHECK
|
|
AX = 1400h
|
|
Return: AX = FFFFh if installed
|
|
BX = maximum memory required to save screen and keyboard info
|
|
CF clear if successful
|
|
CF set on error
|
|
AX = error code
|
|
0002h invalid function
|
|
0004h unknown error
|
|
Note: the POPUP interface is used by background programs (see INT 21/AH=80h)
|
|
to communicate with the user
|
|
SeeAlso: AX=1401h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
|
|
--------U-2F1401-----------------------------
|
|
INT 2F CU - NLSFUNC.COM - CHANGE CODE PAGE
|
|
AX = 1401h
|
|
DS:SI -> internal code page structure (see #02618)
|
|
BX = new code page (see #01757 at INT 21/AX=6602h)
|
|
DX = country code???
|
|
Return: AL = status
|
|
00h successful
|
|
else DOS error code
|
|
Note: this function is called by the DOS v3.3+ kernel
|
|
SeeAlso: AX=1400h"NLSFUNC",AX=1402h"NLSFUNC",INT 21/AH=66h
|
|
|
|
Format of DOS 3.30 internal code page structure:
|
|
Offset Size Description (Table 02618)
|
|
00h 8 BYTEs ???
|
|
08h 64 BYTEs name of country information file (see #02619)
|
|
48h WORD system code page (see #01757 at INT 21/AX=6602h)
|
|
4Ah WORD number of supported subfunctions
|
|
4Ch 5 BYTEs data to return for INT 21/AX=6502h
|
|
51h 5 BYTEs data to return for INT 21/AX=6504h
|
|
56h 5 BYTEs data to return for INT 21/AX=6505h
|
|
5Bh 5 BYTEs data to return for INT 21/AX=6506h
|
|
60h 41 BYTEs data to return for INT 21/AX=6501h
|
|
|
|
Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS file:
|
|
Offset Size Description (Table 02619)
|
|
00h BYTE ID tag (FFh)
|
|
01h 7 BYTEs ASCII "COUNTRY"
|
|
08h 8 BYTEs ??? (00h)
|
|
10h BYTE ??? (01h)
|
|
11h BYTE ??? (00h)
|
|
12h BYTE ??? (01h)
|
|
13h DWORD offset of first entry in file (see #02620)
|
|
SeeAlso: #02623
|
|
|
|
Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS entry:
|
|
Offset Size Description (Table 02620)
|
|
00h WORD number of country-codepage entries following
|
|
02h N Country-Codepage entries:
|
|
Offset Size Description
|
|
00h WORD length of entry, not counting this word (000Ch)
|
|
02h WORD country ID
|
|
04h WORD codepage ID
|
|
06h WORD ??? (0000h)
|
|
08h WORD ??? (0000h)
|
|
0Ah DWORD offset of country-subfunction-header in file
|
|
(see #02621)
|
|
Notes: multiple codepages for a country are stored consecutively
|
|
PTS/DOS places a copyright string immediately following this structure,
|
|
though a copyright at the end of the file is preferable
|
|
SeeAlso: #02619
|
|
|
|
Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS country-subfunc header:
|
|
Offset Size Description (Table 02621)
|
|
00h WORD number of subfunction entries following
|
|
02h N subfunction entries
|
|
Offset Size Description
|
|
00h WORD length of subfunction entry, not counting this
|
|
word (usually 06h)
|
|
02h WORD subfunction ID
|
|
(value passed to INT 21/AH=65h in AL)
|
|
04h DWORD offset within file of subfunction data entry
|
|
(see #02622)
|
|
SeeAlso: #02620
|
|
|
|
Format of MS-DOS/PC-DOS/OS2/WinNT/PTS-DOS COUNTRY.SYS country-subfunc data::
|
|
Offset Size Description (Table 02622)
|
|
00h BYTE ID-tag (FFh)
|
|
01h 7 BYTEs table-type signature (blank-padded)
|
|
"CTYINFO" general country info (subfn 01h)
|
|
"UCASE " uppercase table (subfn 02h)
|
|
"LCASE " lowercase table (subfn 03h) (DOS 6.2_)
|
|
"FUCASE " filename uppercase table (subfn 04h)
|
|
"FCHAR " filename terminator table (subfn 05h)
|
|
"COLLATE" collating sequence (subfn 06h)
|
|
"DBCS " double-byte character table (subfn 07h)
|
|
08h WORD length of following table in bytes
|
|
(if 0000h for DBCS table, there will still be a word of 0000h)
|
|
---country info (01h)---
|
|
0Ah WORD country ID (see #01400 at AH=38h)
|
|
0Ch WORD code page (see #01757)
|
|
0Eh 34 BYTEs country-dependent info (see #01399 at AH=38h)
|
|
---uppercase table (02h)---
|
|
0Ah 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
|
|
---lowercase table (03h)---
|
|
0Ah 256 BYTEs lowercase equivalents (if any) of chars 00h to FFh
|
|
---filename uppercase table (04h)---
|
|
0Ah 128 BYTEs uppercase equivalents (if any) of chars 80h to FFh
|
|
---filename terminator table (05h)---
|
|
0Ah BYTE ??? (01h for MS-DOS 3.30-6.00)
|
|
0Bh BYTE lowest permissible character value for filename
|
|
0Ch BYTE highest permissible character value for filename
|
|
0Dh BYTE ??? (00h for MS-DOS 3.30-6.00)
|
|
0Eh BYTE first excluded character in range \ all characters in this
|
|
0Fh BYTE last excluded character in range / range are illegal
|
|
10h BYTE ??? (02h for MS-DOS 3.30-6.00)
|
|
11h BYTE number of illegal (terminator) characters
|
|
12h N BYTEs characters which terminate a filename: ."/\[]:|<>+=;,
|
|
---collating sequence (06h)---
|
|
0Ah 256 BYTEs values used to sort characters 00h to FFh
|
|
---DBCS table (07h)---
|
|
0Ah 2N BYTEs start/end for N lead byte ranges
|
|
WORD 0000h (end of table)
|
|
SeeAlso: #02621,#01750,#01751,#01753,#01754,#01755,#01756
|
|
|
|
Format of DR DOS/Novell DOS/OpenDOS COUNTRY.SYS file:
|
|
Offset Size Description (Table 02623)
|
|
00h 126 BYTEs copyright notice (terminated with Ctrl-Z; NUL-padded)
|
|
the copyright notice starts with the signature
|
|
"COUNTRY.SYS Rx.xx" where "x.xx" indicates the file format
|
|
revision, which is checked by the OS (revision is 2.00 for
|
|
DR DOS 3.41 and 2.01 for all newer versions of DR DOS,
|
|
Novell DOS, and OpenDOS)
|
|
7Eh WORD signature of file format revision
|
|
0EDCh = 2.00 (DR DOS 3.41)
|
|
EDC1h = 2.01 (all newer versions)
|
|
80h var country pointer records (see #02624)
|
|
(packed array of variable-size records)
|
|
SeeAlso: #02619
|
|
|
|
Format of DR DOS/Novell DOS/OpenDOS COUNTRY.SYS country pointer record::
|
|
Offset Size Description (Table 02624)
|
|
00h WORD country code (0000h if end of array)
|
|
02h WORD code page (see #01757)
|
|
04h WORD ??? (0000h)
|
|
06h 7 WORDs offsets in file for INT 21/AH=65h subfunctions 01h to 07h, or
|
|
0000h if no table for that subfunction
|
|
14h var country information
|
|
Notes: the end-of-file marker is a country pointer record filled entirely with
|
|
zeros
|
|
the data at which the pointers point is in the same format as the
|
|
tables returned by INT 21/AH=65h, except that the general-info
|
|
table for subfunction 01h does not contain the length word at the
|
|
beginning
|
|
SeeAlso: #02623
|
|
--------D-2F1401-----------------------------
|
|
INT 2F - European MS-DOS 4.0 POPUP - "PostPu" - OPEN/CLOSE POPUP SCREEN
|
|
AX = 1401h
|
|
DL = function (00h open, 01h close)
|
|
DH = wait flag
|
|
00h block until screen opens
|
|
01h return error if screen is not available
|
|
02h urgent--always open screen immediately
|
|
Return: CF clear if successful
|
|
BX = amount of memory needed to save screen and keyboard info,
|
|
0000h if default save location can be used (only if DH was 02h)
|
|
CF set on error
|
|
Note: the application using the screen is frozen until the popup screen is
|
|
closed
|
|
SeeAlso: AX=1400h"POPUP",AX=1402h"POPUP",AX=1403h"POPUP"
|
|
--------U-2F1402-----------------------------
|
|
INT 2F CU - NLSFUNC.COM - GET EXTENDED COUNTRY INFO
|
|
AX = 1402h
|
|
BP = subfunction (same as AL for INT 21/AH=65h)
|
|
BX = code page (see #01757 at INT 21/AX=6602h)
|
|
DX = country code (see #01400 at INT 21/AH=38h)
|
|
DS:SI -> internal code page structure (see #02618)
|
|
ES:DI -> user buffer
|
|
CX = size of user buffer
|
|
Return: AL = status
|
|
00h successful
|
|
else DOS error code
|
|
Notes: this function is called by the DOS v3.3+ kernel on INT 21/AH=65h
|
|
code page structure apparently only needed for COUNTRY.SYS pathname
|
|
SeeAlso: AX=1401h"NLSFUNC",AX=1403h"NLSFUNC",AX=1404h,INT 21/AH=65h
|
|
--------D-2F1402-----------------------------
|
|
INT 2F - European MS-DOS 4.0 POPUP - "SavePu" - SAVE POPUP SCREEN
|
|
AX = 1402h
|
|
ES:DI -> save buffer (0000h:0000h for default buffer in POPUP)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02625)
|
|
SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1403h"POPUP"
|
|
|
|
(Table 02625)
|
|
Values for POPUP error code:
|
|
0001h process does not own screen
|
|
0004h unknown error
|
|
0005h invalid pointer
|
|
--------U-2F1403-----------------------------
|
|
INT 2F CU - NLSFUNC.COM - SET CODE PAGE
|
|
AX = 1403h
|
|
DS:SI -> internal code page structure (see #02618)
|
|
BX = code page (see #01757 at INT 21/AX=6602h)
|
|
DX = country code (see #01400 at INT 21/AH=38h)
|
|
Return: AL = status
|
|
???
|
|
Note: this function is called by the DOS v3.3+ kernel on INT 21/AH=38h
|
|
SeeAlso: AX=1402h"NLSFUNC",AX=1404h,INT 21/AH=38h"SET"
|
|
--------D-2F1403-----------------------------
|
|
INT 2F - European MS-DOS 4.0 POPUP - "RestorePu" - RESTORE SCREEN
|
|
AX = 1403h
|
|
ES:DI -> buffer containing saved screen
|
|
(0000h:0000h for default buffer in POPUP)
|
|
Return: CF clear if successful
|
|
CF set on error
|
|
AX = error code (see #02625)
|
|
SeeAlso: AX=1400h"POPUP",AX=1401h"POPUP",AX=1402h"POPUP"
|
|
--------U-2F1404-----------------------------
|
|
INT 2F CU - NLSFUNC.COM - GET COUNTRY INFO
|
|
AX = 1404h
|
|
BX = code page (see #01757 at INT 21/AX=6602h)
|
|
DX = country code (see #01400 at INT 21/AH=38h)
|
|
DS:SI -> internal code page structure (see #02618)
|
|
ES:DI -> user buffer
|
|
Return: AL = status
|
|
???
|
|
Notes: this function is called by the DOS v3.3+ kernel on INT 21/AH=38h
|
|
code page structure apparently only needed for COUNTRY.SYS pathname
|
|
SeeAlso: AX=1402h,AX=1403h,INT 21/AH=38h"GET"
|
|
--------U-2F14FE-----------------------------
|
|
INT 2F U - DR DOS 5.0 NLSFUNC - GET EXTENDED COUNTRY INFORMATION
|
|
AX = 14FEh
|
|
BX = code page (FFFFh=global code page) (see #01757 at INT 21/AX=6602h)
|
|
DX = country ID (FFFFh=current country) (see #01400 at INT 21/AH=38h)
|
|
ES:DI -> country information buffer
|
|
CL = info ID
|
|
01h get general internationalization info
|
|
02h get pointer to uppercase table
|
|
04h get pointer to filename uppercase table
|
|
05h get pointer to filename terminator table
|
|
06h get pointer to collating sequence table
|
|
07h get pointer to Double-Byte Character Set table
|
|
CF set (used to return error if not installed)
|
|
Return: CF clear if successful
|
|
DS:SI -> requested information
|
|
CF set on error
|
|
Notes: DR DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
|
|
or FFh on entry.
|
|
the DR DOS kernel calls this function on INT 21/AX=6501h
|
|
the value in CL is not range-checked by the DR DOS 5.0 NLSFUNC
|
|
SeeAlso: #02626,AX=14FFh,INT 21/AH=65h
|
|
|
|
Format of DR DOS COUNTRY.SYS file:
|
|
Offset Size Description (Table 02626)
|
|
00h 126 BYTEs copyright notice (terminated with Ctrl-Z, padded with NULs)
|
|
7Eh WORD signature EDC1h
|
|
80h var country pointer records
|
|
Offset Size Description
|
|
00h WORD country code (0000h if end of array)
|
|
02h WORD code page (see #01757 at INT 21/AX=6602h)
|
|
04h WORD ??? (0000h)
|
|
06h 7 WORDs offsets in file for data tables for subfunctions
|
|
01h-07h
|
|
var var country information
|
|
--------U-2F14FF-----------------------------
|
|
INT 2F U - DR DOS 5.0+ NLSFUNC - PREPARE CODE PAGE
|
|
AX = 14FFh
|
|
BX = code page (see #01757 at INT 21/AX=6602h)
|
|
Return: AX = ???
|
|
ZF set if AX=0000h
|
|
Notes: DR DOS 5.0 NLSFUNC returns CF set and AX=0001h if AL was not 00h, FEh,
|
|
or FFh on entry.
|
|
passes codepage preparation request to each character device supporting
|
|
the generic IOCTL call
|
|
BUG: DR DOS 5.0 NLSFUNC 3.00 - Novell DOS 7 NLSFUNC 3.03, and OpenDOS 7.01 -
|
|
DR-OpenDOS 7.02 NLSFUNC 3.02 requires DF cleared on entry, otherwise
|
|
the system may crash. However, since this function is called only by
|
|
the BDOS, the problem never actually occurs. DR-DOS 7.02/7.03
|
|
NLSFUNC 4.00+ always clears DF by itself.
|
|
SeeAlso: AX=1400h/BX=0EDCh,AX=14FEh,INT 21/AX=440Ch,INT 21/AX=6602h
|
|
--------U-2F1500-----------------------------
|
|
INT 2F - DOS 4.00 GRAPHICS.COM - INSTALLATION CHECK
|
|
AX = 1500h
|
|
Return: AX = FFFFh
|
|
ES:DI -> ??? (graphics data?)
|
|
Note: this installation check conflicts with the CD-ROM Extensions
|
|
installation check; moved to AX=AC00h in later versions
|
|
SeeAlso: AX=AC00h
|
|
--------d-2F1500BX0000-----------------------
|
|
INT 2F - CD-ROM - INSTALLATION CHECK
|
|
AX = 1500h
|
|
BX = 0000h
|
|
Return: BX = number of CD-ROM drive letters used
|
|
CX = starting drive letter (0=A:)
|
|
AX = 15FFh (Novell DOS 7 NWCDEX only!)
|
|
Notes: this installation check DOES NOT follow the format used by other
|
|
software
|
|
this installation check conflicts with the DOS 4.00 GRAPHICS.COM
|
|
installation check
|
|
BUG: this function may return an incorrect starting drive letter when
|
|
INTERLNK is installed
|
|
SeeAlso: AX=150Ch,AX=15FFh,INT 2F/AX=D000h"Lotus"
|
|
--------c-2F1500CH90-------------------------
|
|
INT 2F U - CDBLITZ v2.11 - INSTALLATION CHECK
|
|
AX = 1500h
|
|
CH = 90h (function number)
|
|
BX = 1234h (magic value for CDBLITZ)
|
|
Return: CX = 1234h if installed
|
|
CF clear
|
|
DX = BCD version number (DH = major, DL = minor)
|
|
Program: CDBLITZ is a CD-ROM cache by Blitz 'n' Software, Inc.
|
|
SeeAlso: AX=1500h/CH=99h
|
|
--------c-2F1500CH91-------------------------
|
|
INT 2F U - CDBLITZ v2.11 - GET STATISTICS
|
|
AX = 1500h
|
|
CH = 91h (function number)
|
|
BX = 1234h (magic value for CDBLITZ)
|
|
Return: CF clear
|
|
ES:BX -> statistics record (see #02627)
|
|
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=97h
|
|
|
|
Format of CDBLITZ statistics record:
|
|
Offset Size Description (Table 02627)
|
|
00h WORD cache mode (see also AX=1500h/CH=94h)
|
|
0001h 'min', 0002h 'max'
|
|
02h DWORD number of read calls???
|
|
06h DWORD total number of sectors read
|
|
0Ah DWORD unused??? (zero)
|
|
0Eh DWORD number of cache hit sectors
|
|
12h WORD cache size in KB
|
|
14h WORD unused??? (zero)
|
|
16h WORD cache state (0000h disabled, 0001h enabled)
|
|
--------c-2F1500CH92-------------------------
|
|
INT 2F U - CDBLITZ v2.11 - ENABLE CACHE
|
|
AX = 1500h
|
|
CH = 92h (function number)
|
|
BX = 1234h (magic value for CDBLITZ)
|
|
Return: CF clear
|
|
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=93h,AX=1500h/CH=94h
|
|
--------c-2F1500CH93-------------------------
|
|
INT 2F U - CDBLITZ v2.11 - DISABLE CACHE
|
|
AX = 1500h
|
|
CH = 93h (function number)
|
|
BX = 1234h (magic value for CDBLITZ)
|
|
Return: CF clear
|
|
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=92h,AX=1500h/CH=95h
|
|
--------c-2F1500CH94-------------------------
|
|
INT 2F U - CDBLITZ v2.11 - SET 'MAX' MODE (CACHE BOTH DIRECTORIES AND DATA)
|
|
AX = 1500h
|
|
CH = 94h (function number)
|
|
BX = 1234h (magic value for CDBLITZ)
|
|
Return: CF clear
|
|
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=92h,AX=1500h/CH=95h
|
|
--------c-2F1500CH95-------------------------
|
|
INT 2F U - CDBLITZ v2.11 - SET 'MIN' MODE (CACHE ONLY DIRECTORY ENTRIES)
|
|
AX = 1500h
|
|
CH = 95h (function number)
|
|
BX = 1234h (magic value for CDBLITZ)
|
|
Return: CF clear
|
|
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=94h
|
|
--------c-2F1500CH96-------------------------
|
|
INT 2F U - CDBLITZ v2.11 - FLUSH CACHE
|
|
AX = 1500h
|
|
CH = 96h (function number)
|
|
BX = 1234h (magic value for CDBLITZ)
|
|
Return: CF clear
|
|
Note: this function resets the counts for number of sectors read and number
|
|
of cache hits, but no other values in the statistics record
|
|
(see #02627)
|
|
SeeAlso: AX=1500h/CH=90h
|
|
--------c-2F1500CH97-------------------------
|
|
INT 2F U - CDBLITZ v2.11 - GET CACHE STATISTICS
|
|
AX = 1500h
|
|
CH = 97h (function number)
|
|
BX = 1234h (magic value for CDBLITZ)
|
|
Return: CF clear
|
|
AL = cache mode (01h 'min', 02h 'max') (see also AX=1500h/CH=94h)
|
|
AH = cache state (00h disabled, 01h enabled)
|
|
BX = cache size in KB
|
|
DX:CX = total number of reads
|
|
DI:SI = number of cache hits
|
|
SeeAlso: AX=1500h/CH=90h,AX=1500h/CH=91h
|
|
--------c-2F1500CH99-------------------------
|
|
INT 2F U - CDBLITZ v2.11 - UNINSTALL
|
|
AX = 1500h
|
|
CH = 99h (function number)
|
|
BX = 1234h (magic value for CDBLITZ)
|
|
Return: CF clear
|
|
???
|
|
Program: CDBLITZ is a CD-ROM cache by Blitz 'n' Software, Inc.
|
|
SeeAlso: AX=1500h/CH=90h
|
|
--------d-2F1501-----------------------------
|
|
INT 2F - CD-ROM - GET DRIVE DEVICE LIST
|
|
AX = 1501h
|
|
ES:BX -> buffer to hold drive letter list (5 bytes per drive letter)
|
|
Return: buffer filled, for each drive letter
|
|
BYTE subunit number in driver
|
|
DWORD address of device driver header (see #01646)
|
|
Note: reportedly returns AX=0000h and an invalid address under Windows95;
|
|
other reports say it works fine
|
|
SeeAlso: AX=1510h
|
|
--------d-2F1502-----------------------------
|
|
INT 2F - CD-ROM - GET COPYRIGHT FILE NAME
|
|
AX = 1502h
|
|
ES:BX -> 38-byte buffer for name of copyright file
|
|
CX = drive number (0=A:)
|
|
Return: CF set if drive is not a CD-ROM drive
|
|
AX = 000Fh (invalid drive)
|
|
CF clear if successful
|
|
SeeAlso: AX=1503h
|
|
--------d-2F1503-----------------------------
|
|
INT 2F - CD-ROM - GET ABSTRACT FILE NAME
|
|
AX = 1503h
|
|
ES:BX -> 38-byte buffer for name of abstract file
|
|
CX = drive number (0=A:)
|
|
Return: CF set if drive is not a CD-ROM drive
|
|
AX = 000Fh (invalid drive)
|
|
CF clear if successful
|
|
SeeAlso: AX=1502h,AX=1504h
|
|
--------d-2F1504-----------------------------
|
|
INT 2F - CD-ROM - GET BIBLIOGRAPHIC DOC FILE NAME
|
|
AX = 1504h
|
|
ES:BX -> 38-byte buffer for name of bibliographic documentation file
|
|
CX = drive number (0=A:)
|
|
Return: CF set if drive is not a CD-ROM drive
|
|
AX = 000Fh (invalid drive)
|
|
CF clear if successful
|
|
SeeAlso: AX=1502h,AX=1503h
|
|
--------d-2F1505-----------------------------
|
|
INT 2F - CD-ROM - READ VTOC
|
|
AX = 1505h
|
|
ES:BX -> 2048-byte buffer
|
|
CX = drive number (0=A:)
|
|
DX = sector index (0=first volume descriptor,1=second,...)
|
|
Return: CF set on error
|
|
AX = error code (15=invalid drive,21=not ready)
|
|
CF clear if successful
|
|
AX = volume descriptor type (1=standard,FFh=terminator,0=other)
|
|
Note: This function was not supported by Novell DOS 7 NWCDEX prior to the
|
|
08/16/94 update
|
|
--------d-2F1506-----------------------------
|
|
INT 2F - CD-ROM - TURN DEBUGGING ON
|
|
AX = 1506h
|
|
BX = debugging function to enable
|
|
Note: reserved for development
|
|
SeeAlso: AX=1507h
|
|
--------d-2F1507-----------------------------
|
|
INT 2F - CD-ROM - TURN DEBUGGING OFF
|
|
AX = 1507h
|
|
BX = debugging function to disable
|
|
Note: reserved for development
|
|
SeeAlso: AX=1506h
|
|
--------d-2F1508-----------------------------
|
|
INT 2F - CD-ROM - ABSOLUTE DISK READ
|
|
AX = 1508h
|
|
ES:BX -> buffer
|
|
CX = drive number (0=A:)
|
|
SI:DI = starting sector number
|
|
DX = number of sectors to read
|
|
Return: CF set on error
|
|
AL = error code (0Fh invalid drive,15h not ready)
|
|
CF clear if successful
|
|
Note: returns error 15h (not ready) under Windows95 if the starting sector
|
|
number is less than 10h
|
|
SeeAlso: AX=1509h
|
|
--------d-2F1509-----------------------------
|
|
INT 2F - CD-ROM - ABSOLUTE DISK WRITE
|
|
AX = 1509h
|
|
ES:BX -> buffer
|
|
CX = drive number (0=A:)
|
|
SI:DI = starting sector number
|
|
DX = number of sectors to write
|
|
Note: corresponds to INT 26h and is currently reserved and nonfunctional,
|
|
but could be implemented for CD-R and CD-RW drives
|
|
SeeAlso: AX=1508h
|
|
--------d-2F150A-----------------------------
|
|
INT 2F - CD-ROM - RESERVED
|
|
AX = 150Ah
|
|
--------d-2F150B-----------------------------
|
|
INT 2F - CD-ROM v2.00+ - DRIVE CHECK
|
|
AX = 150Bh
|
|
CX = drive number (0=A:)
|
|
Return: BX = ADADh if MSCDEX.EXE installed
|
|
AX = support status
|
|
0000h if drive not supported
|
|
nonzero if supported
|
|
SeeAlso: AX=150Dh
|
|
--------d-2F150CBX0000-----------------------
|
|
INT 2F - CD-ROM v2.00+ - GET MSCDEX.EXE VERSION (GET VERSION)
|
|
AX = 150Ch
|
|
BX = 0000h
|
|
Return: BH = major version
|
|
BL = minor version
|
|
Notes: MSCDEX.EXE versions prior to 2.00 leave BX unchanged, thus BX should
|
|
be 0000h on entry
|
|
Corel's CORELCDX.COM v1.01d returns 2.20, v1.12a returns 2.21
|
|
Meridian Data's CDNETEX.EXE returns its own version number, e.g. 4.70
|
|
J.M.A. Hall's CDEMU2.COM returns 2.10 (it is an MSCDEX emulator for
|
|
networked CD-ROM drives)
|
|
Windows95 returns v2.95
|
|
Novell DOS 7 NWCDEX.EXE returns the same version number reported in
|
|
its startup message
|
|
SeeAlso: AX=1500h"CD-ROM",AX=15FFh"CORELCDX"
|
|
--------d-2F150D-----------------------------
|
|
INT 2F - CD-ROM v2.00+ - GET CD-ROM DRIVE LETTERS
|
|
AX = 150Dh
|
|
ES:BX -> buffer for drive letter list (1 byte per drive)
|
|
Return: buffer filled with drive numbers (0=A:). Each byte corresponds
|
|
to the drive in the same position for function 1501h
|
|
SeeAlso: AX=150Bh
|
|
--------d-2F150E-----------------------------
|
|
INT 2F - CD-ROM v2.00+ - GET/SET VOLUME DESCRIPTOR PREFERENCE
|
|
AX = 150Eh
|
|
BX = subfunction
|
|
00h get preference
|
|
DX = 0000h
|
|
Return: DX = preference settings
|
|
01h set preference
|
|
DH = volume descriptor preference
|
|
01h = primary volume descriptor
|
|
02h = supplementary volume descriptor
|
|
DL = supplementary volume descriptor preference
|
|
01h = shift-Kanji
|
|
CX = drive number (0=A:)
|
|
Return: CF set on error
|
|
AX = error code (15=invalid drive,1=invalid function)
|
|
CF clear if successful
|
|
--------d-2F150F-----------------------------
|
|
INT 2F - CD-ROM v2.00+ - GET DIRECTORY ENTRY
|
|
AX = 150Fh
|
|
CL = drive number (0=A:)
|
|
CH bit 0 = copy flag
|
|
clear if direct copy
|
|
set if copy to structure which removes ISO/High Sierra diffs
|
|
ES:BX -> ASCIZ path name
|
|
SI:DI -> buffer for directory entry (see #02628,#02629)
|
|
must be 255 bytes for direct copy, 285 bytes for canonical
|
|
Return: CF set on error
|
|
AX = error code
|
|
CF clear if successful
|
|
AX = disk format (0=High Sierra,1=ISO 9660)
|
|
Note: this function was not supported by Novell DOS 7 NWCDEX prior to the
|
|
08/16/94 update
|
|
|
|
Format of CD-ROM directory entry (direct copy):
|
|
Offset Size Description (Table 02628)
|
|
00h BYTE length of directory entry
|
|
01h BYTE length of XAR in Logical Block Numbers
|
|
02h DWORD LBN of data, Intel (little-endian) format
|
|
06h DWORD LBN of data, Motorola (big-endian) format
|
|
0Ah DWORD length of file, Intel format
|
|
0Eh DWORD length of file, Motorola format
|
|
---High Sierra---
|
|
12h 6 BYTEs date and time
|
|
18h BYTE bit flags
|
|
19h BYTE reserved
|
|
---ISO 9660---
|
|
12h 7 BYTEs date and time
|
|
(seventh byte is offset from GMT in 15-minute increments)
|
|
19h BYTE bit flags
|
|
---both formats---
|
|
1Ah BYTE interleave size
|
|
1Bh BYTE interleave skip factor
|
|
1Ch WORD volume set sequence number, Intel format
|
|
1Eh WORD volume set sequence number, Motorola format
|
|
20h BYTE length of file name
|
|
21h N BYTEs file name
|
|
BYTE (optional) padding if filename is odd length
|
|
N BYTEs system data
|
|
SeeAlso: #02629,#01352
|
|
|
|
Format of CD-ROM directory entry (canonicalized):
|
|
Offset Size Description (Table 02629)
|
|
00h BYTE length of XAR in Logical Block Numbers
|
|
01h DWORD Logical Block Number of file start
|
|
05h WORD size of disk in logical blocks
|
|
07h DWORD file length in bytes
|
|
0Bh 7 BYTEs date and time
|
|
12h BYTE bit flags
|
|
13h BYTE interleave size
|
|
14h BYTE interleave skip factor
|
|
15h WORD volume set sequence number
|
|
17h BYTE length of file name
|
|
18h 38 BYTEs ASCIZ filename
|
|
3Eh WORD file version number
|
|
40h BYTE number of bytes of system use data
|
|
41h 220 BYTEs system use data
|
|
SeeAlso: #02628
|
|
--------d-2F1510-----------------------------
|
|
INT 2F - CD-ROM v2.10+ - SEND DEVICE DRIVER REQUEST
|
|
AX = 1510h
|
|
CX = CD-ROM drive letter (0 = A, 1 = B, etc)
|
|
ES:BX -> CD-ROM device driver request header (see #02597 at AX=0802h)
|
|
Return: CF clear if device driver has been called (check the request header's
|
|
status word to determine whether an error has occurred)
|
|
ES:BX request header updated
|
|
CF set if device driver has not been called
|
|
AX = error code (000Fh = invalid drive, 0001h = invalid function)
|
|
ES:BX request header unchanged
|
|
Notes: MSCDEX initializes the device driver request header's subunit field
|
|
based on the drive number specified in CX
|
|
MSCDEX v2.21 through v2.25 (at least) return error code AX=0001h if
|
|
nested calls are attempted
|
|
BUGS: Novell DOS 7 NWCDEX prior to the 12/13/94 update did not initialize
|
|
the subunit field
|
|
Windows95 sets CF if CX isn't a CD-ROM drive but leaves CF unchanged
|
|
if the drive is in fact a CD-ROM
|
|
SeeAlso: AX=0802h
|
|
--------d-2F15FFBX0000-----------------------
|
|
INT 2F - CD-ROM - CORELCDX - INSTALLATION CHECK
|
|
AX = 15FFh
|
|
BX = 0000h
|
|
Return: BX = ABCDh if CORELCDX loaded
|
|
Note: Corel's CORELCDX.COM is a replacement for MSCDEX.EXE; it also supports
|
|
the standard MSCDEX installation check calls AX=1500h and AX=150Ch
|
|
SeeAlso: AX=1500h"CD-ROM",AX=150Ch
|
|
--------!---Section--------------------------
|